]> icculus.org git repositories - divverent/nexuiz.git/blob - qcsrc/items.qc
I completely changed the physics. I did a bunch of other stuff that i forgot
[divverent/nexuiz.git] / qcsrc / items.qc
1
2
3
4 void Item_Touch (void)
5 {
6         entity  oldself;
7
8         if (other.classname != "player" && other.classname != "bot")
9                 return;
10         if (other.health <= 0)
11                 return;
12                 
13         if (self.ammo_shells)
14                 other.ammo_shells = min (other.ammo_shells + self.ammo_shells, 100);
15         if (self.ammo_nails)
16                 other.ammo_nails = min (other.ammo_nails + self.ammo_nails, 200);
17         if (self.ammo_rockets)
18                 other.ammo_rockets = min (other.ammo_rockets + self.ammo_rockets, 100);
19         if (self.ammo_cells)
20                 other.ammo_cells = min (other.ammo_cells + self.ammo_cells, 100);
21                 
22         if (self.flags & FL_WEAPON)
23         {
24                 if (self.items & IT_UZI)                                        W_GiveWeapon (other, IT_UZI);
25                 else if (self.items & IT_SHOTGUN)                       W_GiveWeapon (other, IT_SHOTGUN);
26                 else if (self.items & IT_GRENADE_LAUNCHER)      W_GiveWeapon (other, IT_GRENADE_LAUNCHER);
27                 else if (self.items & IT_ELECTRO)                       W_GiveWeapon (other, IT_ELECTRO);
28                 else if (self.items & IT_NEX)                           W_GiveWeapon (other, IT_NEX);
29                 else if (self.items & IT_HAGAR)                         W_GiveWeapon (other, IT_HAGAR);
30                 else if (self.items & IT_ROCKET_LAUNCHER)       W_GiveWeapon (other, IT_ROCKET_LAUNCHER);
31                 else if (self.items & IT_CRYLINK)                       W_GiveWeapon (other, IT_CRYLINK);
32         }
33                 
34         if (self.max_health)
35                 other.health = min (other.health + self.max_health, 250);
36         
37         if (other.classname == "player")
38         {
39                 sprint (other, "You got the ");
40                 sprint (other, self.netname);
41                 sprint (other, "\n");
42         }
43         
44         oldself = self;
45         self = other;
46         
47         W_UpdateWeapon ();
48         W_UpdateAmmo ();
49         
50         self = oldself;
51         
52         sound (self, CHAN_BODY, "weapons/WeaponPickup.wav", 1, ATTN_NORM);
53         
54         remove (self);
55 }
56
57 void StartItem (void)
58 {
59         self.flags = self.flags | FL_ITEM;
60         setmodel (self, self.mdl);
61         setsize (self, '-8 -8 -8', '8 8 8');
62         self.movetype = MOVETYPE_TOSS;
63         self.solid = SOLID_TRIGGER;
64         self.touch = Item_Touch;
65 }
66
67 void StartWeapon (void)
68 {
69         self.flags = FL_ITEM | FL_WEAPON;
70         setmodel (self, self.mdl);
71         setsize (self, '-12 -12 -12', '12 12 12');
72         self.movetype = MOVETYPE_TOSS;
73         self.solid = SOLID_TRIGGER;
74         self.touch = Item_Touch;
75 }
76
77 void weapon_uzi (void)
78 {
79         self.mdl = "models/weapons/g_uzi.md3";
80         self.items = IT_UZI;
81         self.ammo_nails = 50;
82         self.netname = "Uzi";
83         StartWeapon ();
84 }
85
86 void weapon_shotgun (void)
87 {
88         self.mdl = "models/weapons/g_shotgun.md3";
89         self.items = IT_SHOTGUN;
90         self.ammo_shells = 10;
91         self.netname = "Shotgun";
92         StartWeapon ();
93 }
94
95 void weapon_grenadelauncher (void)
96 {
97         self.mdl = "models/weapons/g_gl.md3";
98         self.items = IT_GRENADE_LAUNCHER;
99         self.ammo_rockets = 3;
100         self.netname = "Grenade Launcher";
101         StartWeapon ();
102 }
103
104 void weapon_electro (void)
105 {
106         self.mdl = "models/weapons/g_electro.md3";
107         self.items = IT_ELECTRO;
108         self.ammo_cells = 10;
109         self.netname = "Electro";
110         StartWeapon ();
111 }
112
113 void weapon_crylink (void)
114 {
115         self.mdl = "models/weapons/g_crylink.md3";
116         self.items = IT_CRYLINK;
117         self.ammo_cells = 10;
118         self.netname = "Crylink";
119         StartWeapon ();
120 }
121
122 void weapon_nex (void)
123 {
124         self.mdl = "models/weapons/g_nex.md3";
125         self.items = IT_NEX;
126         self.ammo_cells = 10;
127         self.netname = "Nex Gun";
128         StartWeapon ();
129 }
130
131 void weapon_hagar (void)
132 {
133         self.mdl = "models/weapons/g_hagar.md3";
134         self.items = IT_HAGAR;
135         self.ammo_rockets = 6;
136         self.netname = "Hagar";
137         StartWeapon ();
138 }
139
140 void weapon_rocketlauncher (void)
141 {
142         self.mdl = "models/weapons/g_rl.md3";
143         self.items = IT_ROCKET_LAUNCHER;
144         self.ammo_rockets = 5;
145         self.netname = "Rocket Launcher";
146         StartWeapon ();
147 }
148
149 void item_rockets (void)
150 {
151         self.mdl = "models/items/a_rockets.md3";
152         self.ammo_rockets = 25;
153         self.netname = "rockets";
154         StartItem ();
155 }
156
157 void item_bullets (void)
158 {
159         self.mdl = "models/items/a_bullets.zym";
160         self.ammo_nails = 100;
161         self.netname = "bullets";
162         StartItem ();
163 }
164
165 void item_cells (void)
166 {
167         self.mdl = "models/items/a_cells.md3";
168         self.ammo_cells = 50;
169         self.netname = "cells";
170         StartItem ();
171 }
172
173 void item_shells (void)
174 {
175         self.mdl = "models/items/a_shells.md3";
176         self.ammo_shells = 50;
177         self.netname = "shells";
178         StartItem ();
179 }
180
181 void item_strength (void)
182 {
183         self.mdl = "models/items/g_strength.zym";
184         self.items = IT_STRENGTH;
185         self.netname = "Strength Powerup";
186         StartItem ();
187 }
188
189 void item_invincible (void)
190 {
191         self.mdl = "models/items/g_invincible.zym";
192         self.items = IT_INVINCIBLE;
193         self.netname = "Invulnerability";
194         StartItem ();
195 }
196
197 void item_speed (void)
198 {
199         self.mdl = "models/items/g_speed.zym";
200         self.items = IT_SPEED;
201         self.netname = "Speed Powerup";
202         StartItem ();
203 }
204
205 void item_slowmo (void)
206 {
207         self.mdl = "models/items/g_slowmo.zym";
208         self.items = IT_SLOWMO;
209         self.netname = "Slow Motion!";
210         StartItem ();
211 }
212
213 void item_armor1 (void)
214 {
215         self.mdl = "models/items/g_a1.md3";
216         self.armorvalue = 1;
217         self.netname = "Armor Shard";
218         StartItem ();
219 }
220
221 void item_armor25 (void)
222 {
223         self.mdl = "models/items/g_a25.md3";
224         self.armorvalue = 25;
225         self.netname = "Armor";
226         StartItem ();
227 }
228
229 void item_health1 (void)
230 {
231         self.mdl = "models/items/g_h1.md3";
232         self.max_health = 1;
233         self.netname = "1 health";
234         StartItem ();
235 }
236
237 void item_health25 (void)
238 {
239         self.mdl = "models/items/g_h25.md3";
240         self.max_health = 25;
241         self.netname = "25 health";
242         StartItem ();
243 }
244
245 void item_health100 (void)
246 {
247         self.mdl = "models/items/g_h100.md3";
248         self.max_health = 100;
249         self.netname = "100 health";
250         StartItem ();
251 }
252
253 void misc_models (void)
254 {
255         precache_model (self.model);
256         setmodel (self, self.model);
257         setsize (self, self.mins, self.maxs);
258 }