Files
call-of-duty-tdm/lua/entities/mg_arrow_emp/init.lua
2026-03-30 10:39:52 +03:00

81 lines
3.8 KiB
Lua

AddCSLuaFile("cl_init.lua")
AddCSLuaFile("shared.lua")
include("shared.lua")
ENT.Model = Model("models/viper/mw/attachments/crossbow/attachment_vm_sn_crossbow_mag_empbolt.mdl")
ENT.AoeEntity = nil
local BaseClass = baseclass.Get(ENT.Base)
local customInputs = {
["npc_turret_floor"] = function(npc) npc:Fire("SelfDestruct") end,
["npc_rollermine"] = function(npc) npc:Fire("PowerDown") end,
["npc_cscanner"] = function(npc) npc:SetHealth(0) npc:ClearSchedule() end,--SCHED_SCANNER_ATTACK_DIVEBOMB,
["npc_clawscanner"] = function(npc) npc:SetHealth(0) npc:ClearSchedule() end,--SCHED_SCANNER_ATTACK_DIVEBOMB,
["npc_manhack"] = function(npc) npc:MoveStop() npc:SetHealth(0) npc:MoveStart() end,
["npc_turret_ceiling"] = function(npc) npc:SetHealth(0) npc:TakeDamage(1000, npc, npc) end,
["npc_combine_camera"] = function(npc) npc:SetHealth(0) npc:TakeDamage(1000, npc, npc) end,
["npc_dog"] = function(npc) npc:TakeDamage(10000, npc, npc) end,
["npc_hunter"] = function(npc) npc:Fire("Dodge") end,
["combine_mine"] = function(npc) npc:SetSaveValue("m_iMineState", "3") npc:Fire("Disarm") npc:EmitSound("npc/roller/mine/rmine_tossed1.wav", 75, math.random(95, 105), 1, CHAN_BODY) end,
["item_healthcharger"] = function(npc) npc:SetSaveValue("m_iJuice", "0") npc:Use(Entity(1)) npc:EmitSound("items/medshotno1.wav", 75, math.random(95, 105), 1, CHAN_BODY) end,
["item_suitcharger"] = function(npc) npc:SetSaveValue("m_iJuice", "0") npc:Use(Entity(1)) npc:EmitSound("items/suitchargeno1.wav", 75, math.random(95, 105), 1, CHAN_BODY) end,
["prop_thumper"] = function(npc) npc:Fire("Disable") end,
["grenade_helicopter"] = function(npc) npc:SetSaveValue("m_flLifeTime", "10000000") Entity(1):SimulateGravGunPickup(npc)
--npc:SetSaveValue("spawnflags", ""..bit.bor(npc:GetSpawnFlags(), 16)) end --dud, doesn't get read runtime?
end,
["item_battery"] = function(npc) npc:AddFlags(FL_DONTTOUCH) end,
["weapon_striderbuster"] = function(npc) npc:Fire("Break") end, --the amount of effort required to make this thing detonate... nah
["npc_grenade_frag"] = function(npc)
for _, c in pairs(npc:GetChildren()) do
c:Fire("Disable")
end
npc:Fire("SetTimer", "9999")
npc:SetSaveValue("m_flNextBlipTime", "9999") end --aware that if you pick it up it's gonna restart
--wanted to give player satisfaction of disabling it and then using it to fuck em up
}
function ENT:Impact(tr, phys, bHull)
BaseClass.Impact(self, tr, phys, bHull)
if (tr.HitSky) then
return
end
sound.Play("^viper/shared/emp_expl.ogg", tr.HitPos, 0, 150, 1, CHAN_BODY) --snd scripts dont work lol!
local angle = tr.HitNormal:Angle()
angle:RotateAroundAxis(angle:Right(), 270)
ParticleEffect("Generic_explo_emp", tr.HitPos, angle, nil, 0)
util.ScreenShake(self:GetPos(), 3500, 1111, 1, self.EMPRadius * 2)
util.Decal("Scorch", tr.HitPos, tr.HitPos - tr.HitNormal * 10, self)
for _, e in pairs(ents.FindInSphere(tr.HitPos, self.EMPRadius)) do
if (e:IsPlayer()) then
e:SetNWFloat("MW19_EMPEffect", CurTime() + 4)
e:SetArmor(0)
continue
end
if (customInputs[e:GetClass()] != nil) then
timer.Simple(math.Rand(0, 0.2), function()
if (!IsValid(e)) then
return
end
customInputs[e:GetClass()](e)
end)
local ef = EffectData()
ef:SetEntity(e)
ef:SetMagnitude(30)
ef:SetScale(20)
util.Effect("TeslaHitboxes", ef)
else
--if someone wants to latch onto this functionality
if (e.OnModernWarfareEMP != nil) then
e.OnModernWarfareEMP(self, tr)
end
end
end
end