]> icculus.org git repositories - divverent/nexuiz.git/blob - qcsrc/items.qc
Fixed two minor bugs.
[divverent/nexuiz.git] / qcsrc / items.qc
1
2 void Item_Respawn (void)
3 {
4         self.model = self.mdl;          // restore original model
5         self.solid = SOLID_TRIGGER;     // allow it to be touched again
6         sound (self, CHAN_VOICE, "misc/itemrespawn.wav", 1, ATTN_NORM); // play respawn sound
7         setorigin (self, self.origin);
8 }
9
10 void Item_Touch (void)
11 {
12         entity  oldself;
13
14         if (self.solid != SOLID_TRIGGER)
15                 return;
16
17         if (other.classname != "player" && other.classname != "bot")
18                 return;
19         if (other.health <= 0)
20                 return;
21                 
22         if (self.ammo_shells){
23                 other.ammo_shells = min (other.ammo_shells + self.ammo_shells, 100);
24                 sound (self, CHAN_BODY, "misc/itempickup.wav", 1, ATTN_NORM); }
25         if (self.ammo_nails){
26                 other.ammo_nails = min (other.ammo_nails + self.ammo_nails, 200);
27                 sound (self, CHAN_BODY, "misc/itempickup.wav", 1, ATTN_NORM); }
28         if (self.ammo_rockets){
29                 other.ammo_rockets = min (other.ammo_rockets + self.ammo_rockets, 100);
30                 sound (self, CHAN_BODY, "misc/itempickup.wav", 1, ATTN_NORM); }
31         if (self.ammo_cells) {
32                 other.ammo_cells = min (other.ammo_cells + self.ammo_cells, 100);
33                 sound (self, CHAN_BODY, "misc/itempickup.wav", 1, ATTN_NORM); }
34                 
35         if (self.flags & FL_WEAPON)
36         {
37                 sound (self, CHAN_BODY, "weapons/weaponpickup.wav", 1, ATTN_NORM);
38                 if (self.items & IT_UZI)                                        W_GiveWeapon (other, IT_UZI);
39                 else if (self.items & IT_SHOTGUN)                       W_GiveWeapon (other, IT_SHOTGUN);
40                 else if (self.items & IT_GRENADE_LAUNCHER)      W_GiveWeapon (other, IT_GRENADE_LAUNCHER);
41                 else if (self.items & IT_ELECTRO)                       W_GiveWeapon (other, IT_ELECTRO);
42                 else if (self.items & IT_NEX)                           W_GiveWeapon (other, IT_NEX);
43                 else if (self.items & IT_HAGAR)                         W_GiveWeapon (other, IT_HAGAR);
44                 else if (self.items & IT_ROCKET_LAUNCHER)       W_GiveWeapon (other, IT_ROCKET_LAUNCHER);
45                 else if (self.items & IT_CRYLINK)                       W_GiveWeapon (other, IT_CRYLINK);
46         }
47                 
48         if (self.max_health){
49                 other.health = min (other.health + self.max_health, 250);
50                 sound (self, CHAN_BODY, self.noise, 1, ATTN_NORM);}
51         
52         if (other.classname == "player")
53         {
54                 sprint (other, "You got the ");
55                 sprint (other, self.netname);
56                 sprint (other, "\n");
57         }
58         
59         oldself = self;
60         self = other;
61         
62         W_UpdateWeapon ();
63         W_UpdateAmmo ();
64         
65         self = oldself;
66         
67
68         if (self.norespawn)
69         {
70                 remove (self);
71         }
72         else
73         {
74                 self.solid = SOLID_NOT;
75                 self.model = string_null;
76                 self.nextthink = time + self.respawntime;
77                 self.think = Item_Respawn;
78         }
79 }
80
81 void StartItem (void)
82 {
83         self.flags = self.flags | FL_ITEM;
84         setmodel (self, self.mdl);
85         setsize (self, '-8 -8 -8', '8 8 8');
86         self.movetype = MOVETYPE_TOSS;
87         self.solid = SOLID_TRIGGER;
88         self.touch = Item_Touch;
89 }
90
91 void StartWeapon (void)
92 {
93         if (game & (GAME_INSTAGIB | GAME_ROCKET_ARENA))
94         {
95                 remove (self);
96                 return;
97         }
98
99         self.flags = FL_ITEM | FL_WEAPON;
100         setmodel (self, self.mdl);
101         setsize (self, '-12 -12 -12', '12 12 12');
102         self.movetype = MOVETYPE_TOSS;
103         self.solid = SOLID_TRIGGER;
104         self.touch = Item_Touch;
105 }
106
107 void weapon_uzi (void)
108 {
109         self.mdl = "models/weapons/g_uzi.md3";
110         self.items = IT_UZI;
111         self.ammo_nails = 50;
112         self.netname = "Uzi";
113         self.respawntime = 30;
114         StartWeapon ();
115 }
116
117 void weapon_shotgun (void)
118 {
119         self.mdl = "models/weapons/g_shotgun.md3";
120         self.items = IT_SHOTGUN;
121         self.ammo_shells = 10;
122         self.netname = "Shotgun";
123         self.respawntime = 30;
124         StartWeapon ();
125 }
126
127 void weapon_grenadelauncher (void)
128 {
129         self.mdl = "models/weapons/g_gl.md3";
130         self.items = IT_GRENADE_LAUNCHER;
131         self.ammo_rockets = 3;
132         self.netname = "Grenade Launcher";
133         self.respawntime = 30;
134         StartWeapon ();
135 }
136
137 void weapon_electro (void)
138 {
139         self.mdl = "models/weapons/g_electro.md3";
140         self.items = IT_ELECTRO;
141         self.ammo_cells = 10;
142         self.netname = "Electro";
143         self.respawntime = 30;
144         StartWeapon ();
145 }
146
147 void weapon_crylink (void)
148 {
149         self.mdl = "models/weapons/g_crylink.md3";
150         self.items = IT_CRYLINK;
151         self.ammo_cells = 10;
152         self.netname = "Crylink";
153         self.respawntime = 30;
154         StartWeapon ();
155 }
156
157 void weapon_nex (void)
158 {
159         self.mdl = "models/weapons/g_nex.md3";
160         self.items = IT_NEX;
161         self.ammo_cells = 10;
162         self.netname = "Nex Gun";
163         self.respawntime = 30;
164         StartWeapon ();
165 }
166
167 void weapon_hagar (void)
168 {
169         self.mdl = "models/weapons/g_hagar.md3";
170         self.items = IT_HAGAR;
171         self.ammo_rockets = 6;
172         self.netname = "Hagar";
173         self.respawntime = 30;
174         StartWeapon ();
175 }
176
177 void weapon_rocketlauncher (void)
178 {
179         self.mdl = "models/weapons/g_rl.md3";
180         self.items = IT_ROCKET_LAUNCHER;
181         self.ammo_rockets = 5;
182         self.netname = "Rocket Launcher";
183         self.respawntime = 30;
184         StartWeapon ();
185 }
186
187 void item_rockets (void)
188 {
189         if (game & (GAME_INSTAGIB | GAME_ROCKET_ARENA))
190         {
191                 remove (self);
192                 return;
193         }
194
195         self.mdl = "models/items/a_rockets.md3";
196         self.ammo_rockets = 25;
197         self.netname = "rockets";
198         self.respawntime = 30;
199         StartItem ();
200 }
201
202 void item_bullets (void)
203 {
204         if (game & (GAME_INSTAGIB | GAME_ROCKET_ARENA))
205         {
206                 remove (self);
207                 return;
208         }
209
210         self.mdl = "models/items/a_bullets.zym";
211         self.ammo_nails = 100;
212         self.netname = "bullets";
213         self.respawntime = 30;
214         StartItem ();
215 }
216
217 void item_cells (void)
218 {
219         if (game & (GAME_INSTAGIB | GAME_ROCKET_ARENA))
220         {
221                 remove (self);
222                 return;
223         }
224
225         self.mdl = "models/items/a_cells.md3";
226         self.ammo_cells = 50;
227         self.netname = "cells";
228         self.respawntime = 30;
229         StartItem ();
230 }
231
232 void item_shells (void)
233 {
234         if (game & (GAME_INSTAGIB | GAME_ROCKET_ARENA))
235         {
236                 remove (self);
237                 return;
238         }
239
240         self.mdl = "models/items/a_shells.md3";
241         self.ammo_shells = 50;
242         self.netname = "shells";
243         self.respawntime = 30;
244         StartItem ();
245 }
246
247 void item_strength (void)
248 {
249         self.mdl = "models/items/g_strength.zym";
250         self.items = IT_STRENGTH;
251         self.netname = "Strength Powerup";
252         self.respawntime = 120;
253         StartItem ();
254 }
255
256 void item_invincible (void)
257 {
258         self.mdl = "models/items/g_invincible.zym";
259         self.items = IT_INVINCIBLE;
260         self.netname = "Invulnerability";
261         self.respawntime = 120;
262         StartItem ();
263 }
264
265 void item_speed (void)
266 {
267         self.mdl = "models/items/g_speed.zym";
268         self.items = IT_SPEED;
269         self.netname = "Speed Powerup";
270         self.respawntime = 120;
271         StartItem ();
272 }
273
274 void item_slowmo (void)
275 {
276         self.mdl = "models/items/g_slowmo.zym";
277         self.items = IT_SLOWMO;
278         self.netname = "Slow Motion!";
279         self.respawntime = 120;
280         StartItem ();
281 }
282
283 void item_armor1 (void)
284 {
285         self.mdl = "models/items/g_a1.md3";
286         self.armorvalue = 1;
287         self.netname = "Armor Shard";
288         self.respawntime = 120;
289         StartItem ();
290 }
291
292 void item_armor25 (void)
293 {
294         self.mdl = "models/items/g_a25.md3";
295         self.armorvalue = 25;
296         self.netname = "Armor";
297         self.respawntime = 120;
298         StartItem ();
299 }
300
301 void item_health1 (void)
302 {
303         self.mdl = "models/items/g_h1.md3";
304         self.max_health = 1;
305         self.netname = "1 health";
306         self.respawntime = 120;
307         StartItem ();
308 }
309
310 void item_health25 (void)
311 {
312         self.mdl = "models/items/g_h25.md3";
313         self.noise = "misc/mediumhealth.wav";
314         self.max_health = 25;
315         self.netname = "25 health";
316         self.respawntime = 120;
317         StartItem ();
318 }
319
320 void item_health100 (void)
321 {
322         self.mdl = "models/items/g_h100.md3";
323         self.noise = "misc/megahealth.wav";
324         self.max_health = 100;
325         self.netname = "100 health";
326         self.respawntime = 120;
327         StartItem ();
328 }
329
330 void misc_models (void)
331 {
332         precache_model (self.model);
333         setmodel (self, self.model);
334         setsize (self, self.mins, self.maxs);
335 }
336
337