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
8 void player_anim (void);
11 self.think = DummyThink;
12 self.nextthink = time;
19 void PlayerDamage (vector hitloc, float damage, entity inflictor, entity attacker, float deathtype);
20 void CreateDummy (vector org, float type)
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;
32 self.weapon = IT_LASER;
33 setsize (self, oldself.mins, oldself.maxs);
34 setorigin (self, org);
36 setmodel (self, "models/player/marine.zym");
38 setmodel (self, "models/player/grunt.zym");
40 setmodel (self, "models/player/specop.zym");
42 setmodel (self, "models/player/pyria.zym");
44 setmodel (self, "models/player/lurk.zym");
46 setmodel (self, "models/player/visitant.zym");
48 setmodel (self, "models/player/headhunter.zym");
50 setmodel (self, "models/player/jeandarc.zym");
52 setmodel (self, "models/player/mulder.zym");
54 setmodel (self, "models/player/insurrectionist.zym");
56 setmodel (self, "models/player/robot.zym");
58 setmodel (self, "models/player/lycanthrope.zym");
60 setmodel (self, "models/player/fshock.zym");
61 setsize (self, PL_MIN, PL_MAX);
62 self.event_damage = PlayerDamage;
67 void ImpulseCommands (void)
69 if (self.impulse >= 1 && self.impulse <= 9)
70 W_SwitchWeapon (self.impulse);
71 else if (self.impulse == 10)
73 else if (self.impulse == 12)
75 else if (self.impulse == 13 && cvar("sv_cheats"))
77 makevectors (self.v_angle);
78 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 1);
80 else if (self.impulse == 14 && cvar("sv_cheats"))
82 makevectors (self.v_angle);
83 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 2);
85 else if (self.impulse == 15 && cvar("sv_cheats"))
87 makevectors (self.v_angle);
88 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 3);
90 else if (self.impulse == 16 && cvar("sv_cheats"))
92 makevectors (self.v_angle);
93 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 4);
95 else if (self.impulse == 17 && cvar("sv_cheats"))
97 makevectors (self.v_angle);
98 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 5);
100 else if (self.impulse == 18 && cvar("sv_cheats"))
102 makevectors (self.v_angle);
103 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 6);
105 else if (self.impulse == 19 && cvar("sv_cheats"))
107 makevectors (self.v_angle);
108 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 7);
110 else if (self.impulse == 20 && cvar("sv_cheats"))
112 makevectors (self.v_angle);
113 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 8);
115 else if (self.impulse == 21 && cvar("sv_cheats"))
117 makevectors (self.v_angle);
118 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 9);
120 else if (self.impulse == 22 && cvar("sv_cheats"))
122 makevectors (self.v_angle);
123 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 10);
125 else if (self.impulse == 23 && cvar("sv_cheats"))
127 makevectors (self.v_angle);
128 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 11);
130 else if (self.impulse == 24 && cvar("sv_cheats"))
132 makevectors (self.v_angle);
133 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 12);
135 else if (self.impulse == 25 && cvar("sv_cheats"))
137 makevectors (self.v_angle);
138 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 13);
140 else if (self.impulse == 26)
142 setmodel (self, "models/player/marine.zym");
143 setsize (self, PL_MIN, PL_MAX);
145 else if (self.impulse == 27)
147 setmodel (self, "models/player/grunt.zym");
148 setsize (self, PL_MIN, PL_MAX);
150 else if (self.impulse == 28)
152 setmodel (self, "models/player/specop.zym");
153 setsize (self, PL_MIN, PL_MAX);
155 else if (self.impulse == 29)
157 setmodel (self, "models/player/pyria.zym");
158 setsize (self, PL_MIN, PL_MAX);
160 else if (self.impulse == 30)
162 setmodel (self, "models/player/lurk.zym");
163 setsize (self, PL_MIN, PL_MAX);
165 else if (self.impulse == 31)
167 setmodel (self, "models/player/headhunter.zym");
168 setsize (self, PL_MIN, PL_MAX);
170 else if (self.impulse == 32)
172 setmodel (self, "models/player/visitant.zym");
173 setsize (self, PL_MIN, PL_MAX);
175 else if (self.impulse == 33)
177 setmodel (self, "models/player/jeandarc.zym");
178 setsize (self, PL_MIN, PL_MAX);
180 else if (self.impulse == 34)
182 setmodel (self, "models/player/mulder.zym");
183 setsize (self, PL_MIN, PL_MAX);
185 else if (self.impulse == 35)
187 setmodel (self, "models/player/insurrectionist.zym");
188 setsize (self, PL_MIN, PL_MAX);
190 else if (self.impulse == 36)
192 setmodel (self, "models/player/robot.zym");
193 setsize (self, PL_MIN, PL_MAX);
195 else if (self.impulse == 37)
197 setmodel (self, "models/player/lycanthrope.zym");
198 setsize (self, PL_MIN, PL_MAX);
200 else if (self.impulse == 38)
202 setmodel (self, "models/player/fshock.zym");
203 setsize (self, PL_MIN, PL_MAX);
205 else if (self.impulse == 97 && !self.crouch)
208 self.view_ofs_z = self.view_ofs_z - 20;
210 else if (self.impulse == 98 && self.crouch) {
212 self.view_ofs_z = self.view_ofs_z + 20;
214 else if (self.impulse == 99)
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 = 100;
219 self.ammo_rockets = 100;
220 self.ammo_cells = 100;