Frag grenade W.I.P.

This commit is contained in:
Fesiug 2023-11-11 21:08:06 -05:00
parent 5eb5fe978e
commit f6d084263d
3 changed files with 111 additions and 10 deletions

View File

@ -2,14 +2,50 @@ AddCSLuaFile()
ENT.Type = "anim" ENT.Type = "anim"
ENT.Fuse = 0
local size = Vector( 4, 4, 4 )
local sizem = -size
function ENT:Initialize() function ENT:Initialize()
self:SetModel( "models/weapons/w_eq_fraggrenade_thrown.mdl" )
if SERVER then
self:PhysicsInitBox( sizem, size, SOLID_VPHYSICS )
self:SetMoveType( MOVETYPE_VPHYSICS )
self:SetCollisionGroup( COLLISION_GROUP_PROJECTILE )
local phys = self:GetPhysicsObject()
if IsValid(phys) then
phys:SetMaterial("Brick")
phys:Wake()
end
else
self:SetModelScale( 2 )
end
return return
end end
function ENT:Think() function ENT:Think()
if SERVER and self.Fuse <= CurTime() then
self:Explode()
self:Remove()
end
return return
end end
local explosionflags = 0x2 + 0x4 + 0x80
function ENT:Explode() 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 return
end end
function ENT:PhysicsCollide( data, phys )
if ( data.Speed > 100 ) then phys:SetVelocity( data.OurNewVelocity/2 ) end
end

View File

@ -2,11 +2,3 @@ AddCSLuaFile()
ENT.Type = "anim" ENT.Type = "anim"
ENT.Base = "bgrenade" ENT.Base = "bgrenade"
function ENT:Think()
return
end
function ENT:Explode()
return
end

View File

@ -637,6 +637,54 @@ WEAPONS["spas12"] = {
Features = "firearm", Features = "firearm",
} }
WEAPONS["cqb70"] = {
Name = "CQB-70",
Description = "meow",
Type = "shotgun",
WModel = "models/weapons/w_shot_cs3.mdl",
HoldType = "rpg",
GestureFire = { ACT_HL2MP_GESTURE_RANGE_ATTACK_CROSSBOW, 0.5 },
Sound_Fire = "AA12.Fire",
Sound_DryFire = "Common.Dryfire.Rifle",
Sound_MagOut = "AA12.MagOut",
Sound_MagIn = "AA12.MagIn",
Delay = (60/120),
Firemodes = FIREMODE_SEMI,
Ammo = 4,
Damage = 10,
Pellets = 8,
Spread = 150/60,
Features = "firearm",
}
WEAPONS["m12ak"] = {
Name = "M12AK",
Description = "meow",
Type = "shotgun",
WModel = "models/weapons/w_shot_saiga.mdl",
HoldType = "rpg",
GestureFire = { ACT_HL2MP_GESTURE_RANGE_ATTACK_CROSSBOW, 0.5 },
Sound_Fire = "AA12.Fire",
Sound_DryFire = "Common.Dryfire.Rifle",
Sound_MagOut = "AA12.MagOut",
Sound_MagIn = "AA12.MagIn",
Delay = (60/160),
Firemodes = FIREMODE_SEMI,
Ammo = 5,
Damage = 10,
Pellets = 8,
Spread = 150/60,
Features = "firearm",
}
WEAPONS["aa12"] = { WEAPONS["aa12"] = {
Name = "AA-12", Name = "AA-12",
Description = "meow", Description = "meow",
@ -784,8 +832,31 @@ WEAPONS["qbblsw"] = {
-- Grenades -- Grenades
-- Nothing here is guaranteed. -- Nothing here is guaranteed.
local function GrenadeFire() local function GrenadeFire( self )
print("yay") local p = self:GetOwner()
if self:GetDelay1() > CurTime() then
return true
end
self:SetDelay1( CurTime() + 0.1 )
self:TPFire()
-- 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" )
GENT:SetOwner( p )
GENT:SetPos( p:EyePos() + (p:EyeAngles():Forward()*16) )
GENT:SetAngles( p:EyeAngles() + Angle( 0, 0, -90 ) )
GENT.Fuse = CurTime() + 4
GENT:Spawn()
local velocity = p:EyeAngles():Forward() * 1500
velocity:Mul( Lerp( math.TimeFraction( 90, 0, p:EyeAngles().p ), 0, 1 ) )
-- velocity:Add( p:EyeAngles():Up() * 500 * Lerp( math.TimeFraction( 0, -90, p:EyeAngles().p ), 0, 1 ) )
GENT:GetPhysicsObject():SetVelocity( velocity )
end
return true return true
end end
@ -802,6 +873,8 @@ WEAPONS["g_frag"] = {
Fire = GrenadeFire, Fire = GrenadeFire,
WModel = "models/weapons/w_eq_flashbang.mdl", WModel = "models/weapons/w_eq_flashbang.mdl",
HoldType = "grenade",
GestureFire = { ACT_HL2MP_GESTURE_RANGE_ATTACK_GRENADE, 0 },
Features = "grenade", Features = "grenade",
} }