1 void() glauncher_ready_01;
2 void() glauncher_fire1_01;
3 void() glauncher_fire2_01;
4 void() glauncher_deselect_01;
5 void() glauncher_select_01;
7 float() glauncher_check =
9 if (self.ammo_rockets >= 3)
14 void(float req) w_glauncher =
18 else if (req == WR_FIRE1)
19 weapon_prepareattack(glauncher_check, glauncher_check, glauncher_fire1_01, 0.8);
20 else if (req == WR_FIRE2)
21 weapon_prepareattack(glauncher_check, glauncher_check, glauncher_fire2_01, 1);
22 else if (req == WR_RAISE)
23 glauncher_select_01();
24 else if (req == WR_UPDATECOUNTS)
25 self.currentammo = self.ammo_rockets;
26 else if (req == WR_DROP)
27 glauncher_deselect_01();
28 else if (req == WR_SETUP)
29 weapon_setup(WEP_GRENADE_LAUNCHER, "w_gl.zym", IT_ROCKETS);
30 else if (req == WR_CHECKAMMO)
31 weapon_hasammo = glauncher_check();
34 void W_Grenade_Explode (void)
36 ImpactEffect (self, IT_GRENADE_LAUNCHER);
38 self.event_damage = nullfunction;
39 RadiusDamage (self, self.owner, cvar("g_balance_grenadelauncher_damage"), cvar("g_balance_grenadelauncher_edgedamage"), cvar("g_balance_grenadelauncher_radius"), world, cvar("g_balance_grenadelauncher_force"), IT_GRENADE_LAUNCHER);
44 void W_Grenade_Touch (void)
46 if (other.classname == "player" || other.classname == "corpse")
49 sound (self, CHAN_BODY, "weapons/grenade_bounce.wav", 1, ATTN_NORM);
52 void W_Grenade_Damage (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force)
54 self.health = self.health - damage;
59 void W_Grenade_Attack (void)
61 makevectors(self.v_angle);
62 sound (self, CHAN_WEAPON, "weapons/grenade_fire.wav", 1, ATTN_NORM);
63 self.punchangle_x = -4;
69 gren.classname = "grenade";
70 gren.movetype = MOVETYPE_BOUNCE;
71 gren.solid = SOLID_BBOX;
72 setmodel(gren, "models/grenademodel.md3");
73 setsize(gren, '-6 -6 -3', '6 6 3');
74 setorigin(gren, self.origin + self.view_ofs + v_forward * 15 + v_right * 5 + v_up * -12);
76 gren.takedamage = DAMAGE_YES;
77 gren.velocity = v_forward * cvar("g_balance_grenadelauncher_speed") + v_up * cvar("g_balance_grenadelauncher_speed_up");
78 gren.avelocity_x = random () * -500 - 500;
79 setsize (gren, gren.mins, gren.maxs);
80 gren.angles = vectoangles (gren.velocity);
81 gren.touch = W_Grenade_Explode;
82 gren.think = W_Grenade_Explode;
83 gren.nextthink = time + 30;
84 self.ammo_rockets = self.ammo_rockets - 3;
87 self.attack_finished = time + 0.8;
90 void W_Grenade_Attack2 (void)
94 makevectors(self.v_angle);
95 sound (self, CHAN_WEAPON, "weapons/grenade_fire.wav", 1, ATTN_NORM);
97 self.punchangle_x = -4;
101 gren.classname = "grenade";
103 gren.movetype = MOVETYPE_BOUNCE;
104 gren.solid = SOLID_BBOX;
106 gren.takedamage = DAMAGE_YES;
107 gren.damageforcescale = 4;
109 gren.event_damage = W_Grenade_Damage;
111 setmodel (gren, "models/grenademodel.md3");
112 setsize (gren, '-6 -6 -3', '6 6 3');
114 setorigin (gren, self.origin + self.view_ofs + v_forward * 15 + v_right * 5 + v_up * -12);
116 gren.velocity = v_forward * cvar("g_balance_grenadelauncher_speed2") + v_up * cvar("g_balance_grenadelauncher_speed2_up");
117 gren.angles = vectoangles (gren.velocity);
118 gren.avelocity = '100 150 100';
120 gren.touch = W_Grenade_Explode;
121 //gren.think = W_Grenade_FuseExplode;
122 //gren.nextthink = time + 5;
124 self.attack_finished = time + 1;
125 self.ammo_rockets = self.ammo_rockets - 3;
130 void() glauncher_ready_01 = {weapon_thinkf(WFRAME_IDLE, 0.1, glauncher_ready_01); self.weaponentity.state = WS_READY;};
131 void() glauncher_select_01 = {weapon_thinkf(-1, cvar("g_balance_weaponswitchdelay"), w_ready); weapon_boblayer1(PLAYER_WEAPONSELECTION_SPEED, '0 0 0');};
132 void() glauncher_deselect_01 = {weapon_thinkf(-1, cvar("g_balance_weaponswitchdelay"), w_clear); weapon_boblayer1(PLAYER_WEAPONSELECTION_SPEED, PLAYER_WEAPONSELECTION_RANGE);};
133 void() glauncher_fire1_01 =
135 weapon_doattack(glauncher_check, glauncher_check, W_Grenade_Attack);
136 weapon_thinkf(WFRAME_FIRE1, 0.3, glauncher_ready_01);
138 void() glauncher_fire2_01 =
140 weapon_doattack(glauncher_check, glauncher_check, W_Grenade_Attack2);
141 weapon_thinkf(WFRAME_FIRE2, 0.8, glauncher_ready_01);