gmod-addons/addons/arabic_phone/lua/entities/chev_ied/shared.lua

115 lines
No EOL
2.8 KiB
Lua

ENT.Type = "anim"
ENT.PrintName = "IED"
ENT.Author = ""
ENT.Contact = ""
ENT.Purpose = ""
ENT.Instructions = ""
ENT.Spawnable = false
ENT.AdminOnly = true
ENT.DoNotDuplicate = true
ENT.DisableDuplicator = true
if SERVER then
AddCSLuaFile("shared.lua")
function ENT:Initialize()
local soundtables = {["song02"] = 23.61, ["song03"] = 37.26, ["song04"] = 13.5, ["song05"] = 14.91, ["song06"] = 19.88}
local rlength, rsound = table.Random(soundtables)
self.MUSIC_VOLUME = 0.6
self.NokiaMusic = CreateSound(self, "chev/arabicnokiaphone/"..rsound..".ogg")
if self.NokiaMusic then
self.NokiaMusic:PlayEx(self.MUSIC_VOLUME, 100)
timer.Create("LoopNokiaSound", rlength, 0, function()
if self.NokiaMusic then
self.NokiaMusic:Stop()
self.NokiaMusic:PlayEx(self.MUSIC_VOLUME, 100)
end
end)
end
self.CanTool = false
self.Owner = self.Entity.Owner
self.Entity:SetModel("models/props_junk/cardboard_box004a.mdl")
self.Entity:PhysicsInit(SOLID_VPHYSICS)
self.Entity:SetMoveType(MOVETYPE_VPHYSICS)
self.Entity:SetSolid(SOLID_VPHYSICS)
self.Entity:DrawShadow(false)
self.Entity:SetCollisionGroup(COLLISION_GROUP_WEAPON)
self.Entity.Boom = false
local phys = self.Entity:GetPhysicsObject()
if (phys:IsValid()) then
phys:Wake()
end
end
function ENT:Think()
if not IsValid(self) then return end
if not IsValid(self.Entity) then return end
if self.Entity.Boom then
self:Explosion()
end
self.Entity:NextThink(CurTime())
return true
end
function ENT:Explosion()
if not IsValid(self) then return end
if not IsValid(self.Owner) then
timer.Remove("LoopNokiaSound")
self.NokiaMusic:Stop()
self.Entity:Remove()
return
end
local effectdata = EffectData()
effectdata:SetOrigin(self.Entity:GetPos())
effectdata:SetNormal(Vector(0,0,1))
effectdata:SetEntity(self.Entity)
effectdata:SetScale(1)
effectdata:SetRadius(67)
effectdata:SetMagnitude(18)
util.Effect("arabicboom", effectdata)
util.Effect("HelicopterMegaBomb", effectdata)
util.Effect("ThumperDust", effectdata)
util.BlastDamage(self.Entity, self.Owner, self.Entity:GetPos(), 500, 170)
util.ScreenShake(self.Entity:GetPos(), 3000, 255, 2.25, 2000)
self.Entity:EmitSound("ambient/explosions/explode_" .. math.random(1, 4) .. ".wav", 100, 100, 1, CHAN_AUTO)
local scorchstart = self.Entity:GetPos() + ((Vector(0,0,1)) * 5)
local scorchend = self.Entity:GetPos() + ((Vector(0,0,-1)) * 5)
timer.Remove("LoopNokiaSound")
self.NokiaMusic:Stop()
self.Entity:Remove()
util.Decal("Scorch", scorchstart, scorchend)
end
function ENT:OnTakeDamage( dmginfo )
if (dmginfo:GetInflictor() != self.Entity)
and (dmginfo:GetInflictor():GetClass() != "chev_ied") then
local GoodLuck = math.random(1,10)
if GoodLuck == 1 then
self:Explosion()
end
end
end
end
if CLIENT then
function ENT:Draw()
self.Entity:DrawModel()
end
end