From 1103cef3a9a3816559f8bcf2ab47d7be0608981d Mon Sep 17 00:00:00 2001 From: Fesiug Date: Sun, 12 Nov 2023 04:56:24 -0500 Subject: [PATCH] Grenade functionality --- ...item_ammo.lua => benny_equipment_ammo.lua} | 0 .../{bgrenade => benny_grenade}/shared.lua | 16 +- .../entities/benny_grenade_claymore.lua | 22 +++ .../entities/entities/benny_grenade_emp.lua | 22 +++ .../entities/benny_grenade_flashbang.lua | 17 ++ .../entities/entities/benny_grenade_frag.lua | 22 +++ .../entities/entities/benny_grenade_gas.lua | 22 +++ .../entities/benny_grenade_molotov.lua | 22 +++ .../entities/entities/benny_grenade_prox.lua | 22 +++ .../entities/benny_grenade_scrambler.lua | 17 ++ .../entities/benny_grenade_semtex.lua | 22 +++ .../entities/benny_grenade_shockcharge.lua | 22 +++ .../entities/entities/benny_grenade_smoke.lua | 17 ++ .../entities/benny_grenade_thermobaric.lua | 22 +++ .../entities/benny_grenade_throwingknife.lua | 22 +++ .../entities/benny_grenade_tknife.lua | 22 +++ .../{bnpc_human.lua => benny_npc_human.lua} | 0 .../benny/entities/entities/bgrenade_frag.lua | 4 - .../benny/entities/weapons/benny/shared.lua | 10 +- .../gamemode/modules/weapons/sh_weapons.lua | 152 ++++++++++++++++-- 20 files changed, 444 insertions(+), 31 deletions(-) rename gamemodes/benny/entities/entities/{bitem_ammo.lua => benny_equipment_ammo.lua} (100%) rename gamemodes/benny/entities/entities/{bgrenade => benny_grenade}/shared.lua (59%) create mode 100644 gamemodes/benny/entities/entities/benny_grenade_claymore.lua create mode 100644 gamemodes/benny/entities/entities/benny_grenade_emp.lua create mode 100644 gamemodes/benny/entities/entities/benny_grenade_flashbang.lua create mode 100644 gamemodes/benny/entities/entities/benny_grenade_frag.lua create mode 100644 gamemodes/benny/entities/entities/benny_grenade_gas.lua create mode 100644 gamemodes/benny/entities/entities/benny_grenade_molotov.lua create mode 100644 gamemodes/benny/entities/entities/benny_grenade_prox.lua create mode 100644 gamemodes/benny/entities/entities/benny_grenade_scrambler.lua create mode 100644 gamemodes/benny/entities/entities/benny_grenade_semtex.lua create mode 100644 gamemodes/benny/entities/entities/benny_grenade_shockcharge.lua create mode 100644 gamemodes/benny/entities/entities/benny_grenade_smoke.lua create mode 100644 gamemodes/benny/entities/entities/benny_grenade_thermobaric.lua create mode 100644 gamemodes/benny/entities/entities/benny_grenade_throwingknife.lua create mode 100644 gamemodes/benny/entities/entities/benny_grenade_tknife.lua rename gamemodes/benny/entities/entities/{bnpc_human.lua => benny_npc_human.lua} (100%) delete mode 100644 gamemodes/benny/entities/entities/bgrenade_frag.lua diff --git a/gamemodes/benny/entities/entities/bitem_ammo.lua b/gamemodes/benny/entities/entities/benny_equipment_ammo.lua similarity index 100% rename from gamemodes/benny/entities/entities/bitem_ammo.lua rename to gamemodes/benny/entities/entities/benny_equipment_ammo.lua diff --git a/gamemodes/benny/entities/entities/bgrenade/shared.lua b/gamemodes/benny/entities/entities/benny_grenade/shared.lua similarity index 59% rename from gamemodes/benny/entities/entities/bgrenade/shared.lua rename to gamemodes/benny/entities/entities/benny_grenade/shared.lua index 4664b72..1306a06 100644 --- a/gamemodes/benny/entities/entities/bgrenade/shared.lua +++ b/gamemodes/benny/entities/entities/benny_grenade/shared.lua @@ -2,13 +2,14 @@ AddCSLuaFile() ENT.Type = "anim" +ENT.Model = "models/weapons/w_eq_fraggrenade_thrown.mdl" ENT.Fuse = 0 local size = Vector( 4, 4, 4 ) local sizem = -size function ENT:Initialize() - self:SetModel( "models/weapons/w_eq_fraggrenade_thrown.mdl" ) + self:SetModel( self.Model ) if SERVER then self:PhysicsInitBox( sizem, size, SOLID_VPHYSICS ) self:SetMoveType( MOVETYPE_VPHYSICS ) @@ -27,25 +28,14 @@ end function ENT:Think() if SERVER and self.Fuse <= CurTime() then self:Explode() - self:Remove() end return end local explosionflags = 0x2 + 0x4 + 0x80 function ENT:Explode() - local effectdata = EffectData() - effectdata:SetOrigin( self:GetPos() ) - effectdata:SetFlags( explosionflags ) - util.Effect( "Explosion", effectdata ) - - local dmg = DamageInfo() - dmg:SetDamage( 125 ) - dmg:SetAttacker( self:GetOwner() ) - util.BlastDamageInfo( dmg, self:GetPos(), 140 ) - return end function ENT:PhysicsCollide( data, phys ) - if ( data.Speed > 100 ) then phys:SetVelocity( data.OurNewVelocity/2 ) end + if ( data.Speed > 100 ) then phys:SetVelocity( (-data.HitNormal * data.OurNewVelocity:Length()) * 0.25 + (data.OurNewVelocity*0.5) ) phys:SetAngleVelocity( phys:GetAngleVelocity()*0.5 ) end end \ No newline at end of file diff --git a/gamemodes/benny/entities/entities/benny_grenade_claymore.lua b/gamemodes/benny/entities/entities/benny_grenade_claymore.lua new file mode 100644 index 0000000..0f87691 --- /dev/null +++ b/gamemodes/benny/entities/entities/benny_grenade_claymore.lua @@ -0,0 +1,22 @@ +AddCSLuaFile() + +ENT.Type = "anim" +ENT.Base = "benny_grenade" + +ENT.Model = "models/weapons/w_eq_fraggrenade_thrown.mdl" + +local explosionflags = 0x2 + 0x4 + 0x80 +function ENT:Explode() + local effectdata = EffectData() + effectdata:SetOrigin( self:GetPos() ) + effectdata:SetFlags( explosionflags ) + util.Effect( "Explosion", effectdata ) + + local dmg = DamageInfo() + dmg:SetDamage( 125 ) + dmg:SetAttacker( self:GetOwner() ) + util.BlastDamageInfo( dmg, self:GetPos(), 140 ) + + self:Remove() + return +end \ No newline at end of file diff --git a/gamemodes/benny/entities/entities/benny_grenade_emp.lua b/gamemodes/benny/entities/entities/benny_grenade_emp.lua new file mode 100644 index 0000000..0f87691 --- /dev/null +++ b/gamemodes/benny/entities/entities/benny_grenade_emp.lua @@ -0,0 +1,22 @@ +AddCSLuaFile() + +ENT.Type = "anim" +ENT.Base = "benny_grenade" + +ENT.Model = "models/weapons/w_eq_fraggrenade_thrown.mdl" + +local explosionflags = 0x2 + 0x4 + 0x80 +function ENT:Explode() + local effectdata = EffectData() + effectdata:SetOrigin( self:GetPos() ) + effectdata:SetFlags( explosionflags ) + util.Effect( "Explosion", effectdata ) + + local dmg = DamageInfo() + dmg:SetDamage( 125 ) + dmg:SetAttacker( self:GetOwner() ) + util.BlastDamageInfo( dmg, self:GetPos(), 140 ) + + self:Remove() + return +end \ No newline at end of file diff --git a/gamemodes/benny/entities/entities/benny_grenade_flashbang.lua b/gamemodes/benny/entities/entities/benny_grenade_flashbang.lua new file mode 100644 index 0000000..a5737f6 --- /dev/null +++ b/gamemodes/benny/entities/entities/benny_grenade_flashbang.lua @@ -0,0 +1,17 @@ +AddCSLuaFile() + +ENT.Type = "anim" +ENT.Base = "benny_grenade" + +ENT.Model = "models/weapons/w_eq_flashbang_thrown.mdl" + +local explosionflags = 0x2 + 0x4 + 0x80 +function ENT:Explode() + local effectdata = EffectData() + effectdata:SetOrigin( self:GetPos() ) + effectdata:SetFlags( explosionflags ) + util.Effect( "Explosion", effectdata ) + + self:Remove() + return +end \ No newline at end of file diff --git a/gamemodes/benny/entities/entities/benny_grenade_frag.lua b/gamemodes/benny/entities/entities/benny_grenade_frag.lua new file mode 100644 index 0000000..0f87691 --- /dev/null +++ b/gamemodes/benny/entities/entities/benny_grenade_frag.lua @@ -0,0 +1,22 @@ +AddCSLuaFile() + +ENT.Type = "anim" +ENT.Base = "benny_grenade" + +ENT.Model = "models/weapons/w_eq_fraggrenade_thrown.mdl" + +local explosionflags = 0x2 + 0x4 + 0x80 +function ENT:Explode() + local effectdata = EffectData() + effectdata:SetOrigin( self:GetPos() ) + effectdata:SetFlags( explosionflags ) + util.Effect( "Explosion", effectdata ) + + local dmg = DamageInfo() + dmg:SetDamage( 125 ) + dmg:SetAttacker( self:GetOwner() ) + util.BlastDamageInfo( dmg, self:GetPos(), 140 ) + + self:Remove() + return +end \ No newline at end of file diff --git a/gamemodes/benny/entities/entities/benny_grenade_gas.lua b/gamemodes/benny/entities/entities/benny_grenade_gas.lua new file mode 100644 index 0000000..0f87691 --- /dev/null +++ b/gamemodes/benny/entities/entities/benny_grenade_gas.lua @@ -0,0 +1,22 @@ +AddCSLuaFile() + +ENT.Type = "anim" +ENT.Base = "benny_grenade" + +ENT.Model = "models/weapons/w_eq_fraggrenade_thrown.mdl" + +local explosionflags = 0x2 + 0x4 + 0x80 +function ENT:Explode() + local effectdata = EffectData() + effectdata:SetOrigin( self:GetPos() ) + effectdata:SetFlags( explosionflags ) + util.Effect( "Explosion", effectdata ) + + local dmg = DamageInfo() + dmg:SetDamage( 125 ) + dmg:SetAttacker( self:GetOwner() ) + util.BlastDamageInfo( dmg, self:GetPos(), 140 ) + + self:Remove() + return +end \ No newline at end of file diff --git a/gamemodes/benny/entities/entities/benny_grenade_molotov.lua b/gamemodes/benny/entities/entities/benny_grenade_molotov.lua new file mode 100644 index 0000000..0f87691 --- /dev/null +++ b/gamemodes/benny/entities/entities/benny_grenade_molotov.lua @@ -0,0 +1,22 @@ +AddCSLuaFile() + +ENT.Type = "anim" +ENT.Base = "benny_grenade" + +ENT.Model = "models/weapons/w_eq_fraggrenade_thrown.mdl" + +local explosionflags = 0x2 + 0x4 + 0x80 +function ENT:Explode() + local effectdata = EffectData() + effectdata:SetOrigin( self:GetPos() ) + effectdata:SetFlags( explosionflags ) + util.Effect( "Explosion", effectdata ) + + local dmg = DamageInfo() + dmg:SetDamage( 125 ) + dmg:SetAttacker( self:GetOwner() ) + util.BlastDamageInfo( dmg, self:GetPos(), 140 ) + + self:Remove() + return +end \ No newline at end of file diff --git a/gamemodes/benny/entities/entities/benny_grenade_prox.lua b/gamemodes/benny/entities/entities/benny_grenade_prox.lua new file mode 100644 index 0000000..0f87691 --- /dev/null +++ b/gamemodes/benny/entities/entities/benny_grenade_prox.lua @@ -0,0 +1,22 @@ +AddCSLuaFile() + +ENT.Type = "anim" +ENT.Base = "benny_grenade" + +ENT.Model = "models/weapons/w_eq_fraggrenade_thrown.mdl" + +local explosionflags = 0x2 + 0x4 + 0x80 +function ENT:Explode() + local effectdata = EffectData() + effectdata:SetOrigin( self:GetPos() ) + effectdata:SetFlags( explosionflags ) + util.Effect( "Explosion", effectdata ) + + local dmg = DamageInfo() + dmg:SetDamage( 125 ) + dmg:SetAttacker( self:GetOwner() ) + util.BlastDamageInfo( dmg, self:GetPos(), 140 ) + + self:Remove() + return +end \ No newline at end of file diff --git a/gamemodes/benny/entities/entities/benny_grenade_scrambler.lua b/gamemodes/benny/entities/entities/benny_grenade_scrambler.lua new file mode 100644 index 0000000..8d47807 --- /dev/null +++ b/gamemodes/benny/entities/entities/benny_grenade_scrambler.lua @@ -0,0 +1,17 @@ +AddCSLuaFile() + +ENT.Type = "anim" +ENT.Base = "benny_grenade" + +ENT.Model = "models/weapons/w_eq_fraggrenade_thrown.mdl" + +local explosionflags = 0x2 + 0x4 + 0x80 +function ENT:Explode() + local effectdata = EffectData() + effectdata:SetOrigin( self:GetPos() ) + effectdata:SetFlags( explosionflags ) + util.Effect( "Explosion", effectdata ) + + self:Remove() + return +end \ No newline at end of file diff --git a/gamemodes/benny/entities/entities/benny_grenade_semtex.lua b/gamemodes/benny/entities/entities/benny_grenade_semtex.lua new file mode 100644 index 0000000..0f87691 --- /dev/null +++ b/gamemodes/benny/entities/entities/benny_grenade_semtex.lua @@ -0,0 +1,22 @@ +AddCSLuaFile() + +ENT.Type = "anim" +ENT.Base = "benny_grenade" + +ENT.Model = "models/weapons/w_eq_fraggrenade_thrown.mdl" + +local explosionflags = 0x2 + 0x4 + 0x80 +function ENT:Explode() + local effectdata = EffectData() + effectdata:SetOrigin( self:GetPos() ) + effectdata:SetFlags( explosionflags ) + util.Effect( "Explosion", effectdata ) + + local dmg = DamageInfo() + dmg:SetDamage( 125 ) + dmg:SetAttacker( self:GetOwner() ) + util.BlastDamageInfo( dmg, self:GetPos(), 140 ) + + self:Remove() + return +end \ No newline at end of file diff --git a/gamemodes/benny/entities/entities/benny_grenade_shockcharge.lua b/gamemodes/benny/entities/entities/benny_grenade_shockcharge.lua new file mode 100644 index 0000000..0f87691 --- /dev/null +++ b/gamemodes/benny/entities/entities/benny_grenade_shockcharge.lua @@ -0,0 +1,22 @@ +AddCSLuaFile() + +ENT.Type = "anim" +ENT.Base = "benny_grenade" + +ENT.Model = "models/weapons/w_eq_fraggrenade_thrown.mdl" + +local explosionflags = 0x2 + 0x4 + 0x80 +function ENT:Explode() + local effectdata = EffectData() + effectdata:SetOrigin( self:GetPos() ) + effectdata:SetFlags( explosionflags ) + util.Effect( "Explosion", effectdata ) + + local dmg = DamageInfo() + dmg:SetDamage( 125 ) + dmg:SetAttacker( self:GetOwner() ) + util.BlastDamageInfo( dmg, self:GetPos(), 140 ) + + self:Remove() + return +end \ No newline at end of file diff --git a/gamemodes/benny/entities/entities/benny_grenade_smoke.lua b/gamemodes/benny/entities/entities/benny_grenade_smoke.lua new file mode 100644 index 0000000..ba79bbd --- /dev/null +++ b/gamemodes/benny/entities/entities/benny_grenade_smoke.lua @@ -0,0 +1,17 @@ +AddCSLuaFile() + +ENT.Type = "anim" +ENT.Base = "benny_grenade" + +ENT.Model = "models/weapons/w_eq_smokegrenade_thrown.mdl" + +local explosionflags = 0x2 + 0x4 + 0x80 +function ENT:Explode() + local effectdata = EffectData() + effectdata:SetOrigin( self:GetPos() ) + effectdata:SetFlags( explosionflags ) + util.Effect( "Explosion", effectdata ) + + self:Remove() + return +end \ No newline at end of file diff --git a/gamemodes/benny/entities/entities/benny_grenade_thermobaric.lua b/gamemodes/benny/entities/entities/benny_grenade_thermobaric.lua new file mode 100644 index 0000000..0f87691 --- /dev/null +++ b/gamemodes/benny/entities/entities/benny_grenade_thermobaric.lua @@ -0,0 +1,22 @@ +AddCSLuaFile() + +ENT.Type = "anim" +ENT.Base = "benny_grenade" + +ENT.Model = "models/weapons/w_eq_fraggrenade_thrown.mdl" + +local explosionflags = 0x2 + 0x4 + 0x80 +function ENT:Explode() + local effectdata = EffectData() + effectdata:SetOrigin( self:GetPos() ) + effectdata:SetFlags( explosionflags ) + util.Effect( "Explosion", effectdata ) + + local dmg = DamageInfo() + dmg:SetDamage( 125 ) + dmg:SetAttacker( self:GetOwner() ) + util.BlastDamageInfo( dmg, self:GetPos(), 140 ) + + self:Remove() + return +end \ No newline at end of file diff --git a/gamemodes/benny/entities/entities/benny_grenade_throwingknife.lua b/gamemodes/benny/entities/entities/benny_grenade_throwingknife.lua new file mode 100644 index 0000000..0f87691 --- /dev/null +++ b/gamemodes/benny/entities/entities/benny_grenade_throwingknife.lua @@ -0,0 +1,22 @@ +AddCSLuaFile() + +ENT.Type = "anim" +ENT.Base = "benny_grenade" + +ENT.Model = "models/weapons/w_eq_fraggrenade_thrown.mdl" + +local explosionflags = 0x2 + 0x4 + 0x80 +function ENT:Explode() + local effectdata = EffectData() + effectdata:SetOrigin( self:GetPos() ) + effectdata:SetFlags( explosionflags ) + util.Effect( "Explosion", effectdata ) + + local dmg = DamageInfo() + dmg:SetDamage( 125 ) + dmg:SetAttacker( self:GetOwner() ) + util.BlastDamageInfo( dmg, self:GetPos(), 140 ) + + self:Remove() + return +end \ No newline at end of file diff --git a/gamemodes/benny/entities/entities/benny_grenade_tknife.lua b/gamemodes/benny/entities/entities/benny_grenade_tknife.lua new file mode 100644 index 0000000..0f87691 --- /dev/null +++ b/gamemodes/benny/entities/entities/benny_grenade_tknife.lua @@ -0,0 +1,22 @@ +AddCSLuaFile() + +ENT.Type = "anim" +ENT.Base = "benny_grenade" + +ENT.Model = "models/weapons/w_eq_fraggrenade_thrown.mdl" + +local explosionflags = 0x2 + 0x4 + 0x80 +function ENT:Explode() + local effectdata = EffectData() + effectdata:SetOrigin( self:GetPos() ) + effectdata:SetFlags( explosionflags ) + util.Effect( "Explosion", effectdata ) + + local dmg = DamageInfo() + dmg:SetDamage( 125 ) + dmg:SetAttacker( self:GetOwner() ) + util.BlastDamageInfo( dmg, self:GetPos(), 140 ) + + self:Remove() + return +end \ No newline at end of file diff --git a/gamemodes/benny/entities/entities/bnpc_human.lua b/gamemodes/benny/entities/entities/benny_npc_human.lua similarity index 100% rename from gamemodes/benny/entities/entities/bnpc_human.lua rename to gamemodes/benny/entities/entities/benny_npc_human.lua diff --git a/gamemodes/benny/entities/entities/bgrenade_frag.lua b/gamemodes/benny/entities/entities/bgrenade_frag.lua deleted file mode 100644 index 8083dde..0000000 --- a/gamemodes/benny/entities/entities/bgrenade_frag.lua +++ /dev/null @@ -1,4 +0,0 @@ -AddCSLuaFile() - -ENT.Type = "anim" -ENT.Base = "bgrenade" diff --git a/gamemodes/benny/entities/weapons/benny/shared.lua b/gamemodes/benny/entities/weapons/benny/shared.lua index d61d8ce..73e18d8 100644 --- a/gamemodes/benny/entities/weapons/benny/shared.lua +++ b/gamemodes/benny/entities/weapons/benny/shared.lua @@ -42,7 +42,7 @@ function SWEP:PrimaryAttack() return end if self:BClass().Fire then - if self:BClass( false ).Fire( self, false ) then return end + if self:BClass( false ).Fire( self, self:BClass( false ), self:BTable( false ) ) then return end end if self:GetDelay1() > CurTime() then return @@ -114,7 +114,7 @@ end function SWEP:Reload() if self:BTable( false ) and self:GetOwner():KeyPressed( IN_RELOAD ) then if self:BClass().Reload then - if self:BClass( false ).Reload( self, false ) then return end + if self:BClass( false ).Reload( self, self:BClass( false ), self:BTable( false ) ) then return end end if self:GetDelay1() > CurTime() then return false @@ -171,6 +171,12 @@ function SWEP:Think() elseif ht != "normal" and self:GetHoldType() == "normal" then self:TPDraw() end + + if self:BClass( false ) then + if self:BClass( false ).Think then + self:BClass( false ).Think( self, self:BClass( false ), self:BTable( false ) ) + end + end self:SetWeaponHoldType(ht) self:SetHoldType(ht) diff --git a/gamemodes/benny/gamemode/modules/weapons/sh_weapons.lua b/gamemodes/benny/gamemode/modules/weapons/sh_weapons.lua index 2256c44..645ace0 100644 --- a/gamemodes/benny/gamemode/modules/weapons/sh_weapons.lua +++ b/gamemodes/benny/gamemode/modules/weapons/sh_weapons.lua @@ -150,14 +150,14 @@ do -- Toolgun local ToolGunTools = { ["ammocrate"] = function( self, p, tr ) if SERVER then - local summon = ents.Create( "bitem_ammo" ) + local summon = ents.Create( "benny_equipment_ammo" ) summon:SetPos( tr.HitPos + tr.HitNormal ) summon:Spawn() end end, ["summon_human"] = function( self, p, tr ) if SERVER then - local summon = ents.Create( "bnpc_human" ) + local summon = ents.Create( "benny_npc_human" ) summon:SetPos( tr.HitPos + tr.HitNormal ) summon:Spawn() end @@ -882,7 +882,7 @@ end do -- Grenades, nothing here is guaranteed. - local function GrenadeFire( self ) + local function GrenadeFire( self, class, table ) local p = self:GetOwner() if self:GetDelay1() > CurTime() then return true @@ -893,15 +893,17 @@ do -- Grenades, nothing here is guaranteed. -- PROTO: See to getting this done better. Maybe it's spawned while priming the nade for low CL-SV/phys delay? if SERVER then - local GENT = ents.Create( "bgrenade_frag" ) + local GENT = ents.Create( class.GrenadeEnt ) GENT:SetOwner( p ) - GENT:SetPos( p:EyePos() + (p:EyeAngles():Forward()*16) ) - GENT:SetAngles( p:EyeAngles() + Angle( 0, 0, -90 ) ) - GENT.Fuse = CurTime() + 4 + local ang = p:EyeAngles() + ang.p = ang.p - 5 + GENT:SetPos( p:EyePos() + (ang:Forward()*16) ) + GENT:SetAngles( ang + Angle( 0, 0, -90 ) ) + GENT.Fuse = CurTime() + class.GrenadeFuse GENT:Spawn() - local velocity = p:EyeAngles():Forward() * 1500 - velocity:Mul( Lerp( math.TimeFraction( 90, 0, p:EyeAngles().p ), 0, 1 ) ) + local velocity = ang:Forward() * 1500 + velocity:Mul( Lerp( math.TimeFraction( 90, 0, ang.p ), 0, 1 ) ) -- velocity:Add( p:EyeAngles():Up() * 500 * Lerp( math.TimeFraction( 0, -90, p:EyeAngles().p ), 0, 1 ) ) GENT:GetPhysicsObject():SetVelocity( velocity ) @@ -910,8 +912,11 @@ do -- Grenades, nothing here is guaranteed. return true end - local function GrenadeThink() - -- print("yay") + local function GrenadeReload( self, class ) + return true + end + + local function GrenadeThink( self, class ) return true end @@ -921,8 +926,13 @@ do -- Grenades, nothing here is guaranteed. Type = "grenade", Fire = GrenadeFire, + Reload = GrenadeReload, + Think = GrenadeThink, + GrenadeEnt = "benny_grenade_frag", + GrenadeFuse = 4, + GrenadeCharge = true, - WModel = "models/weapons/w_eq_flashbang.mdl", + WModel = "models/weapons/w_eq_fraggrenade.mdl", HoldType = "grenade", GestureFire = { ACT_HL2MP_GESTURE_RANGE_ATTACK_GRENADE, 0 }, @@ -933,8 +943,17 @@ do -- Grenades, nothing here is guaranteed. Name = "SEMTEX GRENADE", Description = "Long, audible fuse, but sticks to whatever it touches.", Type = "grenade", + + Fire = GrenadeFire, + Reload = GrenadeReload, + Think = GrenadeThink, + GrenadeEnt = "benny_grenade_semtex", + GrenadeFuse = 4, + GrenadeCharge = true, WModel = "models/weapons/w_eq_flashbang.mdl", + HoldType = "grenade", + GestureFire = { ACT_HL2MP_GESTURE_RANGE_ATTACK_GRENADE, 0 }, Features = "grenade", } @@ -943,8 +962,17 @@ do -- Grenades, nothing here is guaranteed. Name = "MOLOTOV COCKTAIL", Description = "Alcoholic bottle of flame!", Type = "grenade", + + Fire = GrenadeFire, + Reload = GrenadeReload, + Think = GrenadeThink, + GrenadeEnt = "benny_grenade_molotov", + GrenadeFuse = 4, + GrenadeCharge = true, WModel = "models/weapons/w_eq_flashbang.mdl", + HoldType = "grenade", + GestureFire = { ACT_HL2MP_GESTURE_RANGE_ATTACK_GRENADE, 0 }, Features = "grenade", } @@ -953,8 +981,17 @@ do -- Grenades, nothing here is guaranteed. Name = "THROWING KNIFE", Description = "Lightweight knife to throw and pick back up.", Type = "grenade", + + Fire = GrenadeFire, + Reload = GrenadeReload, + Think = GrenadeThink, + GrenadeEnt = "benny_grenade_tknife", + GrenadeFuse = 4, + GrenadeCharge = true, WModel = "models/weapons/w_eq_flashbang.mdl", + HoldType = "grenade", + GestureFire = { ACT_HL2MP_GESTURE_RANGE_ATTACK_GRENADE, 0 }, Features = "grenade", } @@ -963,8 +1000,17 @@ do -- Grenades, nothing here is guaranteed. Name = "SMOKE GRENADE", Description = "Smoke bomb used to conceal a position, and makes enemies cough.", Type = "grenade", + + Fire = GrenadeFire, + Reload = GrenadeReload, + Think = GrenadeThink, + GrenadeEnt = "benny_grenade_smoke", + GrenadeFuse = 4, + GrenadeCharge = true, WModel = "models/weapons/w_eq_flashbang.mdl", + HoldType = "grenade", + GestureFire = { ACT_HL2MP_GESTURE_RANGE_ATTACK_GRENADE, 0 }, Features = "grenade", } @@ -973,8 +1019,17 @@ do -- Grenades, nothing here is guaranteed. Name = "FLASHBANG", Description = "Stun grenade that gives off a bright flash and a loud 'bang'.", Type = "grenade", + + Fire = GrenadeFire, + Reload = GrenadeReload, + Think = GrenadeThink, + GrenadeEnt = "benny_grenade_flashbang", + GrenadeFuse = 2, + GrenadeCharge = false, WModel = "models/weapons/w_eq_flashbang.mdl", + HoldType = "grenade", + GestureFire = { ACT_HL2MP_GESTURE_RANGE_ATTACK_GRENADE, 0 }, Features = "grenade", } @@ -983,8 +1038,17 @@ do -- Grenades, nothing here is guaranteed. Name = "GAS GRENADE", Description = "Short burst of gas that slows and disorient targets.", Type = "grenade", + + Fire = GrenadeFire, + Reload = GrenadeReload, + Think = GrenadeThink, + GrenadeEnt = "benny_grenade_gas", + GrenadeFuse = 4, + GrenadeCharge = true, WModel = "models/weapons/w_eq_flashbang.mdl", + HoldType = "grenade", + GestureFire = { ACT_HL2MP_GESTURE_RANGE_ATTACK_GRENADE, 0 }, Features = "grenade", } @@ -993,8 +1057,17 @@ do -- Grenades, nothing here is guaranteed. Name = "PROXIMITY MINE", Description = "Mine that bounces into the air.", Type = "grenade", + + Fire = GrenadeFire, + Reload = GrenadeReload, + Think = GrenadeThink, + GrenadeEnt = "benny_grenade_prox", + GrenadeFuse = 4, + GrenadeCharge = true, WModel = "models/weapons/w_eq_flashbang.mdl", + HoldType = "grenade", + GestureFire = { ACT_HL2MP_GESTURE_RANGE_ATTACK_GRENADE, 0 }, Features = "grenade", } @@ -1003,8 +1076,17 @@ do -- Grenades, nothing here is guaranteed. Name = "CLAYMORE", Description = "Mine that shoots shrapnel in a cone.", Type = "grenade", + + Fire = GrenadeFire, + Reload = GrenadeReload, + Think = GrenadeThink, + GrenadeEnt = "benny_grenade_claymore", + GrenadeFuse = 4, + GrenadeCharge = true, WModel = "models/weapons/w_eq_flashbang.mdl", + HoldType = "grenade", + GestureFire = { ACT_HL2MP_GESTURE_RANGE_ATTACK_GRENADE, 0 }, Features = "grenade", } @@ -1013,8 +1095,17 @@ do -- Grenades, nothing here is guaranteed. Name = "SCRAMBLER", Description = "Disrupts enemy radar based on proximity.", Type = "grenade", + + Fire = GrenadeFire, + Reload = GrenadeReload, + Think = GrenadeThink, + GrenadeEnt = "benny_grenade_scrambler", + GrenadeFuse = 4, + GrenadeCharge = true, WModel = "models/weapons/w_eq_flashbang.mdl", + HoldType = "grenade", + GestureFire = { ACT_HL2MP_GESTURE_RANGE_ATTACK_GRENADE, 0 }, Features = "grenade", } @@ -1023,8 +1114,17 @@ do -- Grenades, nothing here is guaranteed. Name = "EMP NADE", Description = "Disrupts enemy equipment based on proximity.", Type = "grenade", + + Fire = GrenadeFire, + Reload = GrenadeReload, + Think = GrenadeThink, + GrenadeEnt = "benny_grenade_emp", + GrenadeFuse = 4, + GrenadeCharge = true, WModel = "models/weapons/w_eq_flashbang.mdl", + HoldType = "grenade", + GestureFire = { ACT_HL2MP_GESTURE_RANGE_ATTACK_GRENADE, 0 }, Features = "grenade", } @@ -1033,8 +1133,36 @@ do -- Grenades, nothing here is guaranteed. Name = "SHOCK CHARGE", Description = "Charge that stuns and forces enemies to fire their weapons.", Type = "grenade", + + Fire = GrenadeFire, + Reload = GrenadeReload, + Think = GrenadeThink, + GrenadeEnt = "benny_grenade_shockcharge", + GrenadeFuse = 4, + GrenadeCharge = true, WModel = "models/weapons/w_eq_flashbang.mdl", + HoldType = "grenade", + GestureFire = { ACT_HL2MP_GESTURE_RANGE_ATTACK_GRENADE, 0 }, + + Features = "grenade", + } + + WEAPONS["g_thermobaric"] = { + Name = "THERMOBARIC GRENADE", + Description = "Burns through armor.", + Type = "grenade", + + Fire = GrenadeFire, + Reload = GrenadeReload, + Think = GrenadeThink, + GrenadeEnt = "benny_grenade_thermobaric", + GrenadeFuse = 4, + GrenadeCharge = true, + + WModel = "models/weapons/w_eq_flashbang.mdl", + HoldType = "grenade", + GestureFire = { ACT_HL2MP_GESTURE_RANGE_ATTACK_GRENADE, 0 }, Features = "grenade", }