3 void W_NapalmGlob_Think (void)
\r
10 self.nextthink = time + cvar("g_balance_napalm_glob_damagerate");
\r
12 RadiusDamage (self, self.owner, cvar("g_balance_napalm_glob_damage"), cvar("g_balance_napalm_glob_edgedamage"), cvar("g_balance_napalm_glob_radius"), world, cvar("g_balance_napalm_glob_force"), WEP_PYRO_SPECIAL);
\r
15 void W_NapalmGlob_Touch (void)
\r
20 self.movetype = MOVETYPE_NONE;
\r
25 void W_NapalmSpitGlob(vector org, vector vel)
\r
30 gren.owner = self.owner;
\r
31 gren.classname = "napalm";
\r
32 gren.movetype = MOVETYPE_TOSS;
\r
33 gren.solid = SOLID_BBOX;
\r
34 setmodel(gren, "models/plasma.mdl");
\r
35 setsize(gren, '0 0 0', '0 0 0');
\r
36 setorigin(gren, org);
\r
38 gren.nextthink = time + 0.1;
\r
39 gren.think = W_NapalmGlob_Think;
\r
40 gren.touch = W_NapalmGlob_Touch;
\r
41 gren.wait = time + cvar("g_balance_napalm_glob_duration");
\r
42 gren.gravity = cvar("g_balance_napalm_glob_gravity");
\r
43 gren.velocity = vel;
\r
44 gren.avelocity = '100 150 100';
\r
47 gren.angles = vectoangles (gren.velocity);
\r
50 gren.colormod = '5 0 0';
\r
51 //gren.glow_size = cvar("g_balance_napalm_glob_radius"); // glow at damage radius
\r
52 //gren.glow_color = 236;//250; // red
\r
55 void W_Napalm_Explode (void)
\r
57 vector org2, vel, vel2, vels, ang;
\r
60 setsize(self, '0 0 0', '0 0 0');
\r
62 org2 = findbetterlocation (self.origin);
\r
63 //te_explosion (org2);
\r
64 //effect (org2, "models/sprites/grenadeexplosion.spr32", 0, 20, 30);
\r
65 sound (self, CHAN_BODY, "misc/gib.wav", 1, ATTN_NORM);
\r
67 // RadiusDamage (self, self.owner, cvar("g_balance_napalm_damage"), cvar("g_balance_napalm_edgedamage"), cvar("g_balance_napalm_radius"), world, cvar("g_balance_napalm_force"), WEP_PYRO_SPECIAL);
\r
69 traceline(org2, org2 - '0 0 30', TRUE, self);
\r
70 if(trace_fraction < 1)
\r
75 num = cvar("g_balance_napalm_numglobs");
\r
76 angsize = 360 / (num - 1);
\r
77 ang_y = self.angles_y;
\r
86 ang_y = ang_y + angsize;
\r
88 vel_x = v_forward_x;
\r
89 vel_y = v_forward_y;
\r
90 //vel_x = vels_x + crandom()*0.8;
\r
91 //vel_y = vels_y + crandom()*0.8;
\r
93 vel2_z = vels_z + crandom()*0.8;
\r
94 vel = normalize(vel);
\r
95 vel2 = normalize(vel2);
\r
96 W_NapalmSpitGlob(org2, vel*cvar("g_balance_napalm_glob_speedh") + vel2*cvar("g_balance_napalm_glob_speedv"));
\r
105 if(self.special_time > time)
\r
107 self.special_time = time + cvar("g_balance_napalm_firerate");
\r
112 sound (self, CHAN_WEAPON, "weapons/grenade_fire.wav", 1, ATTN_NORM);
\r
113 self.punchangle_x = -4;
\r
114 org = self.origin + self.view_ofs + v_forward * 15 + v_right * 5 + v_up * -12;
\r
118 gren.classname = "grenade";
\r
119 gren.movetype = MOVETYPE_BOUNCE;
\r
120 gren.solid = SOLID_BBOX;
\r
121 setmodel(gren, "models/plasma.mdl");
\r
122 setsize(gren, '-6 -6 -3', '6 6 3');
\r
123 setorigin(gren, org);
\r
125 gren.nextthink = time + 5;
\r
126 gren.think = W_Napalm_Explode;
\r
127 gren.touch = W_Napalm_Explode;
\r
128 gren.velocity = v_forward * cvar("g_balance_napalm_speed")
\r
129 + v_up * cvar("g_balance_napalm_speed_up");
\r
130 gren.avelocity = '100 150 100';
\r
132 gren.angles = vectoangles (gren.velocity);
\r
135 gren.colormod = '5 0 0';
\r
139 void PyroGrenade(float req)
\r
141 if(req == WR_GRENADE1)
\r
143 if(W_ThrowGrenade(W_ConcussionGrenade))
\r
144 self.grenade_time = time + cvar("g_balance_grenade_concussion_refire");
\r
146 else if(req == WR_GRENADE2)
\r
148 if(W_ThrowGrenade(W_Firebomb))
\r
149 self.grenade_time = time + cvar("g_balance_grenade_firebomb_refire");
\r
153 void PyroPreThink()
\r
157 void PyroPostThink()
\r
161 void BecomePyro(float portion)
\r
163 self.max_health = cvar("g_balance_class_pyro_health") * portion;
\r
165 self.max_armor = cvar("g_balance_class_pyro_armor") * portion;
\r
167 self.mass = cvar("g_balance_class_pyro_mass");
\r
169 SetPlayerSpeed(self);
\r
171 self.items = IT_WEP1 | IT_WEP2 | IT_WEP3 | IT_WEP4;
\r
172 self.switchweapon = WEP2;//w_getbestweapon(self);
\r
173 self.ammo_shells = floor(20 * portion);
\r
174 self.ammo_nails = floor(150 * portion);
\r
175 self.ammo_rockets = floor(14 * portion);
\r
176 self.ammo_cells = floor(6 * portion);
\r
177 self.playerclass = 7; // TF P.C.
\r