]> icculus.org git repositories - divverent/nexuiz.git/blob - qcsrc/impulse.qc
Fixed two minor bugs.
[divverent/nexuiz.git] / qcsrc / impulse.qc
1
2 // changes by LordHavoc on 03/30/04
3 // cleaned up dummy code
4 // dummies are now removed eventually after being gibbed (norespawn = TRUE)
5 // dummy impulse now checks sv_cheats to prevent players from overwhelming server with dummies
6 // dummies now use player code where possible
7
8 void player_anim (void);
9 void DummyThink(void)
10 {
11         self.think = DummyThink;
12         self.nextthink = time;
13         SV_PlayerPhysics();
14         PlayerPreThink();
15         //player_anim();
16         PlayerPostThink();
17 }
18
19 void PlayerDamage (vector hitloc, float damage, entity inflictor, entity attacker, float deathtype);
20 void CreateDummy (vector org, float type)
21 {
22         entity oldself;
23         oldself = self;
24         self = spawn ();
25         self.norespawn = TRUE;
26         self.solid = SOLID_SLIDEBOX;
27         self.movetype = MOVETYPE_WALK;
28         self.classname = "corpse";
29         self.takedamage = DAMAGE_YES;
30         self.damageforcescale = oldself.damageforcescale;
31         self.health = 100;
32         self.weapon = IT_LASER;
33         setsize (self, oldself.mins, oldself.maxs);
34         setorigin (self, org);
35         if (type==1)
36                 setmodel (self, "models/player/marine.zym");
37         if (type==2)
38                 setmodel (self, "models/player/grunt.zym");
39         if (type==3)
40                 setmodel (self, "models/player/specop.zym");
41         if (type==4)
42                 setmodel (self, "models/player/pyria.zym");
43         if (type==5)
44                 setmodel (self, "models/player/lurk.zym");
45         if (type==6)
46                 setmodel (self, "models/player/visitant.zym");
47         if (type==7)
48                 setmodel (self, "models/player/headhunter.zym");
49         if (type==8)
50                 setmodel (self, "models/player/jeandarc.zym");
51         if (type==9)
52                 setmodel (self, "models/player/mulder.zym");
53         if (type==10)
54                 setmodel (self, "models/player/insurrectionist.zym");
55         if (type==11)
56                 setmodel (self, "models/player/robot.zym");
57         if (type==12)
58                 setmodel (self, "models/player/lycanthrope.zym");
59         if (type==13)
60                 setmodel (self, "models/player/fshock.zym");
61         setsize (self, PL_MIN, PL_MAX);
62         self.event_damage = PlayerDamage;
63         DummyThink();
64         self = oldself;
65 }
66
67 void ImpulseCommands (void)
68 {
69         if (self.impulse >= 1 && self.impulse <= 9)
70                 W_SwitchWeapon (self.impulse);
71
72         else if (self.impulse == 10)
73                 W_NextWeapon ();
74         else if (self.impulse == 12)
75                 W_PreviousWeapon ();
76         else if (self.impulse == 13 && cvar("sv_cheats"))
77         {
78                 makevectors (self.v_angle);
79                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 1);
80         }
81         else if (self.impulse == 14 && cvar("sv_cheats"))
82         {
83                 makevectors (self.v_angle);
84                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 2);
85         }
86         else if (self.impulse == 15 && cvar("sv_cheats"))
87         {
88                 makevectors (self.v_angle);
89                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 3);
90         }
91         else if (self.impulse == 16 && cvar("sv_cheats"))
92         {
93                 makevectors (self.v_angle);
94                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 4);
95         }
96         else if (self.impulse == 17 && cvar("sv_cheats"))
97         {
98                 makevectors (self.v_angle);
99                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 5);
100         }
101         else if (self.impulse == 18 && cvar("sv_cheats"))
102         {
103                 makevectors (self.v_angle);
104                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 6);
105         }
106         else if (self.impulse == 19 && cvar("sv_cheats"))
107         {
108                 makevectors (self.v_angle);
109                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 7);
110         }
111         else if (self.impulse == 20 && cvar("sv_cheats"))
112         {
113                 makevectors (self.v_angle);
114                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 8);
115         }
116         else if (self.impulse == 21 && cvar("sv_cheats"))
117         {
118                 makevectors (self.v_angle);
119                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 9);
120         }
121         else if (self.impulse == 22 && cvar("sv_cheats"))
122         {
123                 makevectors (self.v_angle);
124                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 10);
125         }
126         else if (self.impulse == 23 && cvar("sv_cheats"))
127         {
128                 makevectors (self.v_angle);
129                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 11);
130         }
131         else if (self.impulse == 24 && cvar("sv_cheats"))
132         {
133                 makevectors (self.v_angle);
134                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 12);
135         }
136         else if (self.impulse == 25 && cvar("sv_cheats"))
137         {
138                 makevectors (self.v_angle);
139                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 13);
140         }
141         else if (self.impulse == 26)
142         {
143                 setmodel (self, "models/player/marine.zym");
144                 setsize (self, PL_MIN, PL_MAX);
145         }
146         else if (self.impulse == 27)
147         {
148                 setmodel (self, "models/player/grunt.zym");
149                 setsize (self, PL_MIN, PL_MAX);
150         }
151         else if (self.impulse == 28)
152         {
153                 setmodel (self, "models/player/specop.zym");
154                 setsize (self, PL_MIN, PL_MAX);
155         }
156         else if (self.impulse == 29)
157         {
158                 setmodel (self, "models/player/pyria.zym");
159                 setsize (self, PL_MIN, PL_MAX);
160         }
161         else if (self.impulse == 30)
162         {
163                 setmodel (self, "models/player/lurk.zym");
164                 setsize (self, PL_MIN, PL_MAX);
165         }
166         else if (self.impulse == 31)
167         {
168                 setmodel (self, "models/player/headhunter.zym");
169                 setsize (self, PL_MIN, PL_MAX);
170         }
171         else if (self.impulse == 32)
172         {
173                 setmodel (self, "models/player/visitant.zym");
174                 setsize (self, PL_MIN, PL_MAX);
175         }
176         else if (self.impulse == 33)
177         {
178                 setmodel (self, "models/player/jeandarc.zym");
179                 setsize (self, PL_MIN, PL_MAX);
180         }
181         else if (self.impulse == 34)
182         {
183                 setmodel (self, "models/player/mulder.zym");
184                 setsize (self, PL_MIN, PL_MAX);
185         }
186         else if (self.impulse == 35)
187         {
188                 setmodel (self, "models/player/insurrectionist.zym");
189                 setsize (self, PL_MIN, PL_MAX);
190         }
191         else if (self.impulse == 36)
192         {
193                 setmodel (self, "models/player/robot.zym");
194                 setsize (self, PL_MIN, PL_MAX);
195         }
196         else if (self.impulse == 37)
197         {
198                 setmodel (self, "models/player/lycanthrope.zym");
199                 setsize (self, PL_MIN, PL_MAX);
200         }
201         else if (self.impulse == 38)
202         {
203                 setmodel (self, "models/player/fshock.zym");
204                 setsize (self, PL_MIN, PL_MAX);
205         }
206         else if (self.impulse == 97 && !self.crouch)
207         {
208                 self.crouch = TRUE;
209                 self.view_ofs_z = self.view_ofs_z - 20;
210         }
211         else if (self.impulse == 98 && self.crouch) {
212                 self.crouch = FALSE;
213                 self.view_ofs_z = self.view_ofs_z + 20;
214         }
215         else if (self.impulse == 99)
216         {
217                 self.items = IT_LASER | IT_UZI | IT_SHOTGUN | IT_GRENADE_LAUNCHER | IT_ELECTRO | IT_CRYLINK | IT_NEX | IT_HAGAR | IT_ROCKET_LAUNCHER;
218                 self.ammo_shells = 100;
219                 self.ammo_nails = 100;
220                 self.ammo_rockets = 100;
221                 self.ammo_cells = 100;
222         }
223         TetrisImpulses();
224         self.impulse = 0;
225 }