]> icculus.org git repositories - divverent/nexuiz.git/blob - qcsrc/impulse.qc
Re-add all files from scratch. Using fresh source from betaa.rar
[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         setsize (self, PL_MIN, PL_MAX);
60         self.event_damage = PlayerDamage;
61         DummyThink();
62         self = oldself;
63 }
64
65 void ImpulseCommands (void)
66 {
67         if (self.impulse >= 1 && self.impulse <= 9)
68                 W_SwitchWeapon (self.impulse);
69
70         else if (self.impulse == 10)
71                 W_NextWeapon ();
72         else if (self.impulse == 12)
73                 W_PreviousWeapon ();
74         else if (self.impulse == 13 && cvar("sv_cheats"))
75         {
76                 makevectors (self.v_angle);
77                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 1);
78         }
79         else if (self.impulse == 14 && cvar("sv_cheats"))
80         {
81                 makevectors (self.v_angle);
82                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 2);
83         }
84         else if (self.impulse == 15 && cvar("sv_cheats"))
85         {
86                 makevectors (self.v_angle);
87                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 3);
88         }
89         else if (self.impulse == 16 && cvar("sv_cheats"))
90         {
91                 makevectors (self.v_angle);
92                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 4);
93         }
94         else if (self.impulse == 17 && cvar("sv_cheats"))
95         {
96                 makevectors (self.v_angle);
97                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 5);
98         }
99         else if (self.impulse == 18 && cvar("sv_cheats"))
100         {
101                 makevectors (self.v_angle);
102                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 6);
103         }
104         else if (self.impulse == 19 && cvar("sv_cheats"))
105         {
106                 makevectors (self.v_angle);
107                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 7);
108         }
109         else if (self.impulse == 20 && cvar("sv_cheats"))
110         {
111                 makevectors (self.v_angle);
112                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 8);
113         }
114         else if (self.impulse == 21 && cvar("sv_cheats"))
115         {
116                 makevectors (self.v_angle);
117                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 9);
118         }
119         else if (self.impulse == 22 && cvar("sv_cheats"))
120         {
121                 makevectors (self.v_angle);
122                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 10);
123         }
124         else if (self.impulse == 23 && cvar("sv_cheats"))
125         {
126                 makevectors (self.v_angle);
127                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 11);
128         }
129         else if (self.impulse == 24 && cvar("sv_cheats"))
130         {
131                 makevectors (self.v_angle);
132                 CreateDummy (self.origin + self.view_ofs + v_forward * 64, 12);
133         }
134         else if (self.impulse == 25)
135         {
136                 setmodel (self, "models/player/marine.zym");
137                 setsize (self, PL_MIN, PL_MAX);
138         }
139         else if (self.impulse == 26)
140         {
141                 setmodel (self, "models/player/grunt.zym");
142                 setsize (self, PL_MIN, PL_MAX);
143         }
144         else if (self.impulse == 27)
145         {
146                 setmodel (self, "models/player/specop.zym");
147                 setsize (self, PL_MIN, PL_MAX);
148         }
149         else if (self.impulse == 28)
150         {
151                 setmodel (self, "models/player/pyria.zym");
152                 setsize (self, PL_MIN, PL_MAX);
153         }
154         else if (self.impulse == 29)
155         {
156                 setmodel (self, "models/player/lurk.zym");
157                 setsize (self, PL_MIN, PL_MAX);
158         }
159         else if (self.impulse == 30)
160         {
161                 setmodel (self, "models/player/headhunter.zym");
162                 setsize (self, PL_MIN, PL_MAX);
163         }
164         else if (self.impulse == 31)
165         {
166                 setmodel (self, "models/player/visitant.zym");
167                 setsize (self, PL_MIN, PL_MAX);
168         }
169         else if (self.impulse == 32)
170         {
171                 setmodel (self, "models/player/jeandarc.zym");
172                 setsize (self, PL_MIN, PL_MAX);
173         }
174         else if (self.impulse == 33)
175         {
176                 setmodel (self, "models/player/mulder.zym");
177                 setsize (self, PL_MIN, PL_MAX);
178         }
179         else if (self.impulse == 34)
180         {
181                 setmodel (self, "models/player/insurrectionist.zym");
182                 setsize (self, PL_MIN, PL_MAX);
183         }
184         else if (self.impulse == 35)
185         {
186                 setmodel (self, "models/player/robot.zym");
187                 setsize (self, PL_MIN, PL_MAX);
188         }
189         else if (self.impulse == 36)
190         {
191                 setmodel (self, "models/player/lycanthrope.zym");
192                 setsize (self, PL_MIN, PL_MAX);
193         }
194         else if (self.impulse == 99)
195         {
196                 self.items = IT_LASER | IT_UZI | IT_SHOTGUN | IT_GRENADE_LAUNCHER | IT_ELECTRO | IT_CRYLINK | IT_NEX | IT_HAGAR | IT_ROCKET_LAUNCHER;
197                 self.ammo_shells = 100;
198                 self.ammo_nails = 100;
199                 self.ammo_rockets = 100;
200                 self.ammo_cells = 100;
201         }
202         TetrisImpulses();
203         self.impulse = 0;
204 }