add sborka
This commit is contained in:
91
garrysmod/addons/tacrp/lua/entities/tacrp_proj_nade_c4.lua
Normal file
91
garrysmod/addons/tacrp/lua/entities/tacrp_proj_nade_c4.lua
Normal file
@@ -0,0 +1,91 @@
|
||||
AddCSLuaFile()
|
||||
|
||||
ENT.Base = "tacrp_proj_base"
|
||||
ENT.PrintName = "C4"
|
||||
ENT.Spawnable = false
|
||||
|
||||
ENT.Model = "models/weapons/tacint/c4_charge-1.mdl"
|
||||
|
||||
ENT.Sticky = true
|
||||
|
||||
ENT.IsRocket = false // projectile has a booster and will not drop.
|
||||
|
||||
ENT.InstantFuse = false // projectile is armed immediately after firing.
|
||||
ENT.RemoteFuse = true // allow this projectile to be triggered by remote detonator.
|
||||
ENT.ImpactFuse = false // projectile explodes on impact.
|
||||
|
||||
ENT.ExplodeOnDamage = false // projectile explodes when it takes damage.
|
||||
ENT.ExplodeUnderwater = false
|
||||
|
||||
ENT.Defusable = true
|
||||
ENT.DefuseOnDamage = true
|
||||
|
||||
ENT.ImpactDamage = 0
|
||||
|
||||
ENT.Delay = 0.5
|
||||
|
||||
ENT.PickupAmmo = "ti_c4"
|
||||
|
||||
ENT.ExplodeSounds = {
|
||||
"TacRP/weapons/breaching_charge-1.wav"
|
||||
}
|
||||
|
||||
function ENT:Detonate()
|
||||
local attacker = self.Attacker or self:GetOwner() or self
|
||||
|
||||
local dmg = TacRP.ConVars["c4_damage"]:GetFloat()
|
||||
local rad = TacRP.ConVars["c4_radius"]:GetFloat()
|
||||
local p = self:GetPos() + self:GetForward() * 8
|
||||
|
||||
util.BlastDamage(self, attacker, p, rad / 2, dmg)
|
||||
util.BlastDamage(self, attacker, p, rad, dmg)
|
||||
|
||||
local fx = EffectData()
|
||||
fx:SetOrigin(p)
|
||||
|
||||
if self:WaterLevel() > 0 then
|
||||
util.Effect("WaterSurfaceExplosion", fx)
|
||||
else
|
||||
util.Effect("Explosion", fx)
|
||||
|
||||
if rad >= 400 then
|
||||
local count = 8
|
||||
for i = 1, count do
|
||||
local tr = util.TraceLine({
|
||||
start = p,
|
||||
endpos = p + Angle(0, i / count * 360, 0):Forward() * (rad - 200) * math.Rand(0.9, 1.1),
|
||||
mask = MASK_SHOT,
|
||||
filter = self,
|
||||
})
|
||||
fx:SetOrigin(tr.HitPos)
|
||||
util.Effect("HelicopterMegaBomb", fx)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
self:EmitSound(table.Random(self.ExplodeSounds), 125)
|
||||
|
||||
self:SetParent(NULL)
|
||||
for _, door in pairs(ents.FindInSphere(self:GetPos(), 256)) do
|
||||
if IsValid(door) and string.find(door:GetClass(), "door") and !door.TacRP_DoorBusted then
|
||||
local vel = (door:GetPos() - self:GetPos()):GetNormalized() * 200000
|
||||
for _, otherDoor in pairs(ents.FindInSphere(door:GetPos(), 72)) do
|
||||
if door != otherDoor and otherDoor:GetClass() == door:GetClass() then
|
||||
TacRP.DoorBust(otherDoor, vel, attacker)
|
||||
break
|
||||
end
|
||||
end
|
||||
TacRP.DoorBust(door, vel, attacker)
|
||||
end
|
||||
end
|
||||
|
||||
self:Remove()
|
||||
end
|
||||
|
||||
function ENT:Stuck()
|
||||
// you are already dead
|
||||
if IsValid(self:GetParent()) and self:GetParent():IsPlayer() and !IsValid(self:GetParent().nadescream) then
|
||||
self:GetParent().nadescream = self
|
||||
self:GetParent():EmitSound("vo/npc/male01/ohno.wav")
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user