]> icculus.org git repositories - divverent/nexuiz.git/blob - qcsrc/gamec/cl_impulse.c
Added water drowning
[divverent/nexuiz.git] / qcsrc / gamec / cl_impulse.c
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 (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force);
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 = 300;
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         else if (self.impulse == 10)
72                 W_NextWeapon ();
73         else if (self.impulse == 12)
74                 W_PreviousWeapon ();
75         else if (self.impulse == 13 && cvar("sv_cheats"))
76         {
77                 makevectors (self.v_angle);
78                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 1);
79         }
80         else if (self.impulse == 14 && cvar("sv_cheats"))
81         {
82                 makevectors (self.v_angle);
83                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 2);
84         }
85         else if (self.impulse == 15 && cvar("sv_cheats"))
86         {
87                 makevectors (self.v_angle);
88                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 3);
89         }
90         else if (self.impulse == 16 && cvar("sv_cheats"))
91         {
92                 makevectors (self.v_angle);
93                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 4);
94         }
95         else if (self.impulse == 17 && cvar("sv_cheats"))
96         {
97                 makevectors (self.v_angle);
98                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 5);
99         }
100         else if (self.impulse == 18 && cvar("sv_cheats"))
101         {
102                 makevectors (self.v_angle);
103                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 6);
104         }
105         else if (self.impulse == 19 && cvar("sv_cheats"))
106         {
107                 makevectors (self.v_angle);
108                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 7);
109         }
110         else if (self.impulse == 20 && cvar("sv_cheats"))
111         {
112                 makevectors (self.v_angle);
113                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 8);
114         }
115         else if (self.impulse == 21 && cvar("sv_cheats"))
116         {
117                 makevectors (self.v_angle);
118                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 9);
119         }
120         else if (self.impulse == 22 && cvar("sv_cheats"))
121         {
122                 makevectors (self.v_angle);
123                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 10);
124         }
125         else if (self.impulse == 23 && cvar("sv_cheats"))
126         {
127                 makevectors (self.v_angle);
128                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 11);
129         }
130         else if (self.impulse == 24 && cvar("sv_cheats"))
131         {
132                 makevectors (self.v_angle);
133                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 12);
134         }
135         else if (self.impulse == 25 && cvar("sv_cheats"))
136         {
137                 makevectors (self.v_angle);
138                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 13);
139         }
140         else if (self.impulse == 26)
141         {
142                 setmodel (self, "models/player/marine.zym");
143                 setsize (self, PL_MIN, PL_MAX);
144         }
145         else if (self.impulse == 27)
146         {
147                 setmodel (self, "models/player/grunt.zym");
148                 setsize (self, PL_MIN, PL_MAX);
149         }
150         else if (self.impulse == 28)
151         {
152                 setmodel (self, "models/player/specop.zym");
153                 setsize (self, PL_MIN, PL_MAX);
154         }
155         else if (self.impulse == 29)
156         {
157                 setmodel (self, "models/player/pyria.zym");
158                 setsize (self, PL_MIN, PL_MAX);
159         }
160         else if (self.impulse == 30)
161         {
162                 setmodel (self, "models/player/lurk.zym");
163                 setsize (self, PL_MIN, PL_MAX);
164         }
165         else if (self.impulse == 31)
166         {
167                 setmodel (self, "models/player/headhunter.zym");
168                 setsize (self, PL_MIN, PL_MAX);
169         }
170         else if (self.impulse == 32)
171         {
172                 setmodel (self, "models/player/visitant.zym");
173                 setsize (self, PL_MIN, PL_MAX);
174         }
175         else if (self.impulse == 33)
176         {
177                 setmodel (self, "models/player/jeandarc.zym");
178                 setsize (self, PL_MIN, PL_MAX);
179         }
180         else if (self.impulse == 34)
181         {
182                 setmodel (self, "models/player/mulder.zym");
183                 setsize (self, PL_MIN, PL_MAX);
184         }
185         else if (self.impulse == 35)
186         {
187                 setmodel (self, "models/player/insurrectionist.zym");
188                 setsize (self, PL_MIN, PL_MAX);
189         }
190         else if (self.impulse == 36)
191         {
192                 setmodel (self, "models/player/robot.zym");
193                 setsize (self, PL_MIN, PL_MAX);
194         }
195         else if (self.impulse == 37)
196         {
197                 setmodel (self, "models/player/lycanthrope.zym");
198                 setsize (self, PL_MIN, PL_MAX);
199         }
200         else if (self.impulse == 38)
201         {
202                 setmodel (self, "models/player/fshock.zym");
203                 setsize (self, PL_MIN, PL_MAX);
204         }
205         else if (self.impulse == 97 && !self.crouch)
206         {
207                 self.crouch = TRUE;
208                 self.view_ofs_z = self.view_ofs_z - 20;
209         }
210         else if (self.impulse == 98 && self.crouch) {
211                 self.crouch = FALSE;
212                 self.view_ofs_z = self.view_ofs_z + 20;
213         }
214         else if (self.impulse == 99)
215         {
216                 self.items = IT_LASER | IT_UZI | IT_SHOTGUN | IT_GRENADE_LAUNCHER | IT_ELECTRO | IT_CRYLINK | IT_NEX | IT_HAGAR | IT_ROCKET_LAUNCHER;
217                 self.ammo_shells = 100;
218                 self.ammo_nails = 200;
219                 self.ammo_rockets = 100;
220                 self.ammo_cells = 100;
221         }
222         //TetrisImpulses();
223         self.impulse = 0;
224 }