- entity oldowner;
- oldowner = self.owner;
-
- vector temporigin;
- temporigin = self.origin;
-
- remove(self);
- local entity gren;
-
- gren = spawn ();
- gren.owner = oldowner;
- gren.classname = "grenade";
- gren.bot_dodge = TRUE;
- gren.bot_dodgerating = cvar("g_balance_grenadelauncher_primary_damage");
- gren.movetype = MOVETYPE_NONE;
- PROJECTILE_MAKETRIGGER(gren);
- gren.projectiledeathtype = WEP_GRENADE_LAUNCHER;
- setorigin(gren, temporigin);
- setsize(gren, '0 0 -3', '0 0 -3');
-
- gren.nextthink = time + cvar("g_balance_grenadelauncher_primary_lifetime2");
- gren.think = adaptor_think2use_hittype_splash;
- gren.use = W_Grenade_Explode;
+ self.use ();
+ }
+ else if (autocvar_g_balance_grenadelauncher_primary_type == 1) // bounce
+ {
+ float r;
+ r = random() * 6;
+ if(r < 1)
+ spamsound (self, CHAN_PROJECTILE, "weapons/grenade_bounce1.wav", VOL_BASE, ATTN_NORM);
+ else if(r < 2)
+ spamsound (self, CHAN_PROJECTILE, "weapons/grenade_bounce2.wav", VOL_BASE, ATTN_NORM);
+ else if(r < 3)
+ spamsound (self, CHAN_PROJECTILE, "weapons/grenade_bounce3.wav", VOL_BASE, ATTN_NORM);
+ else if(r < 4)
+ spamsound (self, CHAN_PROJECTILE, "weapons/grenade_bounce4.wav", VOL_BASE, ATTN_NORM);
+ else if(r < 5)
+ spamsound (self, CHAN_PROJECTILE, "weapons/grenade_bounce5.wav", VOL_BASE, ATTN_NORM);
+ else
+ spamsound (self, CHAN_PROJECTILE, "weapons/grenade_bounce6.wav", VOL_BASE, ATTN_NORM);
+ self.projectiledeathtype |= HITTYPE_BOUNCE;
+ self.gl_bouncecnt += 1;
+ }
+ else if(autocvar_g_balance_grenadelauncher_primary_type == 2 && (!other || (other.takedamage != DAMAGE_AIM && other.movetype == MOVETYPE_NONE))) // stick
+ {
+ spamsound (self, CHAN_PROJECTILE, "weapons/grenade_stick.wav", VOL_BASE, ATTN_NORM);