1 void() bombletts_ready_01;
\r
2 void() bombletts_fire1_01;
\r
3 void() bombletts_deselect_01;
\r
4 void() bombletts_select_01;
\r
6 float() bombletts_check =
\r
11 void(float req) w_bombletts =
\r
14 bombletts_ready_01();
\r
15 else if (req == WR_FIRE1)
\r
16 weapon_prepareattack(bombletts_check, bombletts_check, bombletts_fire1_01, cvar("g_balance_bombletts_refire"));
\r
17 else if (req == WR_RAISE)
\r
18 bombletts_select_01();
\r
19 else if (req == WR_UPDATECOUNTS)
\r
20 self.currentammo = 1;
\r
21 else if (req == WR_DROP)
\r
22 bombletts_deselect_01();
\r
23 else if (req == WR_SETUP)
\r
25 weapon_setup(WEP_BOMBLETTS, "w_bombletts.zym", IT_ROCKETS);
\r
26 //self.weaponentity.colormod = '0 4 0';
\r
27 //self.weaponentity.scale = 0.65;
\r
29 else if (req == WR_CHECKAMMO)
\r
30 weapon_hasammo = bombletts_check();
\r
33 void W_Bombletts_Explode (void)
\r
36 org2 = findbetterlocation (self.origin);
\r
37 te_explosion (org2);
\r
38 effect (org2, "models/sprites/grenadeexplosion.spr32", 0, 20, 30);
\r
39 sound (self, CHAN_BODY, "weapons/grenade_impact.wav", 1, ATTN_NORM);
\r
41 self.event_damage = SUB_Null;
\r
42 RadiusDamage (self, self.owner, cvar("g_balance_bombletts_damage"), cvar("g_balance_bombletts_edgedamage"), cvar("g_balance_bombletts_radius"), world, cvar("g_balance_bombletts_force"), WEP_BOMBLETTS);
\r
47 void W_Bombletts_Touch (void)
\r
49 sound (self, CHAN_IMPACT, "weapons/grenade_bounce.wav", 1, ATTN_NORM);
\r
50 self.velocity = self.velocity * cvar("g_balance_bombletts_bounce_speed");
\r
53 void W_Bombletts_Damage (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force)
\r
55 self.health = self.health - damage;
\r
56 if (self.health <= 0)
\r
57 W_Bombletts_Explode();
\r
60 void W_Bombletts_Think (void)
\r
62 self.nextthink = time;
\r
63 if (time > self.cnt)
\r
65 W_Bombletts_Explode ();
\r
70 if (self.owner.deadflag)
\r
72 else if (self.owner.wpn == WEP_BOMBLETTS && self.owner.button3)
\r
73 W_Bombletts_Explode ();
\r
77 void W_Bombletts_Attack (void)
\r
82 sound (self, CHAN_WEAPON, "weapons/grenade_fire.wav", 1, ATTN_NORM);
\r
83 self.punchangle_x = -4;
\r
84 org = self.origin + self.view_ofs + v_forward * 15 + v_right * 5 + v_up * -12;
\r
88 gren.classname = "grenade";
\r
89 gren.movetype = MOVETYPE_BOUNCE;
\r
90 gren.solid = SOLID_BBOX;
\r
91 setmodel(gren, "models/grenademodel.md3");
\r
92 setsize(gren, '-6 -6 -3', '6 6 3');
\r
93 setorigin(gren, org);
\r
95 gren.cnt = time + 1.5 + random()*0.5;
\r
96 gren.think = W_Bombletts_Think;
\r
97 gren.nextthink = time + 0.1;
\r
98 //gren.think = W_Bombletts_Explode;
\r
99 gren.touch = W_Bombletts_Touch;
\r
100 gren.takedamage = DAMAGE_YES;
\r
102 //gren.damageforcescale = 4;
\r
103 gren.event_damage = W_Bombletts_Damage;
\r
104 gren.velocity = v_forward * cvar("g_balance_bombletts_speed")
\r
105 + v_up * cvar("g_balance_bombletts_speed_up");
\r
106 gren.avelocity = '100 150 100';
\r
108 gren.angles = vectoangles (gren.velocity);
\r
111 gren.colormod = '1 .5 0'*4;//'0 0 1.9';
\r
113 self.clip_pipegrenades = self.clip_pipegrenades - 1;
\r
114 if (self.clip_pipegrenades <= 0)
\r
116 DoReload (4, 6); // weapon type 4 is Pipe Grenade, and reload 6 Grenades.
\r
122 void() bombletts_ready_01 = {weapon_thinkf(WFRAME_IDLE, 0.1, bombletts_ready_01); self.weaponentity.state = WS_READY;};
\r
123 void() bombletts_select_01 = {weapon_thinkf(-1, cvar("g_balance_weaponswitchdelay"), w_ready); weapon_boblayer1(PLAYER_WEAPONSELECTION_SPEED, '0 0 0');};
\r
124 void() bombletts_deselect_01 = {weapon_thinkf(-1, cvar("g_balance_weaponswitchdelay"), w_clear); weapon_boblayer1(PLAYER_WEAPONSELECTION_SPEED, PLAYER_WEAPONSELECTION_RANGE);};
\r
125 void() bombletts_fire1_01 =
\r
127 weapon_doattack(bombletts_check, bombletts_check, W_Bombletts_Attack);
\r
128 weapon_thinkf(WFRAME_FIRE1, 0.3, bombletts_ready_01);
\r