46 lines
1.4 KiB
Lua
46 lines
1.4 KiB
Lua
|
INC_SERVER()
|
||
|
|
||
|
function SWEP.BulletCallback(attacker, tr, dmginfo)
|
||
|
if attacker:IsValid() and attacker:IsPlayer() and attacker:Team() == TEAM_HUMAN then
|
||
|
local pos = tr.HitPos
|
||
|
for ent, dmg in pairs(util.BlastDamageExAlloc(attacker:GetActiveWeapon(), attacker, pos, 82, dmginfo:GetDamage() * 0.75, DMG_ALWAYSGIB)) do
|
||
|
if math.random(4) == 1 and ent:IsValidLivingPlayer() and (ent:Team() == TEAM_UNDEAD or ent == attacker) then
|
||
|
ent:Ignite(dmg / 14)
|
||
|
for __, fire in pairs(ents.FindByClass("entityflame")) do
|
||
|
if fire:IsValid() and fire:GetParent() == ent then
|
||
|
fire:SetOwner(attacker)
|
||
|
fire:SetPhysicsAttacker(attacker)
|
||
|
fire.AttackerForward = attacker
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
local effectdata = EffectData()
|
||
|
effectdata:SetOrigin(pos)
|
||
|
util.Effect("Explosion", effectdata, true, true)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function SWEP:PrimaryAttack()
|
||
|
if not self:CanPrimaryAttack() then return end
|
||
|
|
||
|
self:SetNextPrimaryFire(CurTime() + self:GetFireDelay())
|
||
|
|
||
|
self:EmitFireSound()
|
||
|
self:TakeAmmo()
|
||
|
self:ShootBullets(self.Primary.Damage, self.Primary.NumShots, self:GetCone())
|
||
|
self.IdleAnimation = CurTime() + self:SequenceDuration()
|
||
|
|
||
|
local owner = self:GetOwner()
|
||
|
if owner:IsValid() then
|
||
|
local pos = owner:GetPos()
|
||
|
|
||
|
util.BlastDamagePlayer(self, owner, pos, 50, 55, DMG_ALWAYSGIB)
|
||
|
|
||
|
local effectdata = EffectData()
|
||
|
effectdata:SetOrigin(pos)
|
||
|
util.Effect("Explosion", effectdata, true, true)
|
||
|
end
|
||
|
end
|