mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 13:53:45 +03:00
102 lines
5.5 KiB
Lua
102 lines
5.5 KiB
Lua
|
|
--[[
|
||
|
|
| This file was obtained through the combined efforts
|
||
|
|
| of Madbluntz & Plymouth Antiquarian Society.
|
||
|
|
|
|
||
|
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||
|
|
| Maloy, DrPepper10 @ RIP, Atle!
|
||
|
|
|
|
||
|
|
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||
|
|
--]]
|
||
|
|
|
||
|
|
ENT.Base = "npc_vj_creature_base"
|
||
|
|
ENT.Type = "ai"
|
||
|
|
ENT.PrintName = "Combine Guard"
|
||
|
|
ENT.Author = "Zippy"
|
||
|
|
|
||
|
|
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
local laser2mat = Material("effects/blueblacklargebeam")
|
||
|
|
local laserwidth = 4
|
||
|
|
|
||
|
|
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
|
if CLIENT then
|
||
|
|
function ENT:ExpandLaser(time,size)
|
||
|
|
if self.ExpandingLaser then return end
|
||
|
|
self.ExpandingLaser = true
|
||
|
|
|
||
|
|
self.LaserWidth = 0
|
||
|
|
|
||
|
|
local reps = 33
|
||
|
|
timer.Create("VJ_Z_StriderLaserWidthTimer" .. self:EntIndex(), time/reps, reps, function() if IsValid(self) then
|
||
|
|
self.LaserWidth = math.Clamp( self.LaserWidth + size/reps , 0, size)
|
||
|
|
end end)
|
||
|
|
|
||
|
|
-- timer.Simple(time, function() if IsValid(self) then
|
||
|
|
-- self.ExpandingLaser = false
|
||
|
|
-- end end)
|
||
|
|
end
|
||
|
|
|
||
|
|
function ENT:Draw()
|
||
|
|
|
||
|
|
self:DrawModel()
|
||
|
|
|
||
|
|
if self:GetNWBool("VJCombGuardZGunCharging") == true then
|
||
|
|
if !self.LaserExpanded then
|
||
|
|
self:ExpandLaser(1, 20)
|
||
|
|
end
|
||
|
|
|
||
|
|
if !self.ClientFirePosUpdated then
|
||
|
|
self.ClientFirePos = self:GetNWVector("VJCombGuardZFirePos")
|
||
|
|
self.ClientFirePosUpdated = true
|
||
|
|
end
|
||
|
|
|
||
|
|
render.SetMaterial(laser2mat)
|
||
|
|
render.SetShadowsDisabled(true)
|
||
|
|
render.DrawBeam(self:GetAttachment(1).Pos, self.ClientFirePos, self.LaserWidth, 0, 1, Color(255,255,255))
|
||
|
|
|
||
|
|
else
|
||
|
|
self.LaserExpanded = false
|
||
|
|
self.ExpandingLaser = false
|
||
|
|
self.ClientFirePosUpdated = false
|
||
|
|
end
|
||
|
|
|
||
|
|
end
|
||
|
|
end
|
||
|
|
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
|
function ENT:SetUpGibesOnDeath(dmginfo,hitgroup)
|
||
|
|
if self.HasGibDeathParticles == true then -- Taken from black mesa SNPCs I think Xdddddd
|
||
|
|
local bloodeffect = EffectData()
|
||
|
|
bloodeffect:SetOrigin(self:GetPos() + self:OBBCenter())
|
||
|
|
bloodeffect:SetColor(VJ_Color2Byte(Color(130,19,10)))
|
||
|
|
bloodeffect:SetScale(200)
|
||
|
|
util.Effect("VJ_Blood1",bloodeffect)
|
||
|
|
end
|
||
|
|
|
||
|
|
self:CreateGibEntity("obj_vj_gib","models/gibs/humans/eye_gib.mdl",{Pos = self:LocalToWorld(Vector(0,0,55)),Ang = self:GetAngles() + Angle(0,-90,0),Vel = self:GetRight() * math.Rand(50,50) + self:GetForward() * math.Rand(-200,200)})
|
||
|
|
if self:GetModel() != "models/combine_super_soldier.mdl" && self:GetModel() != "models/vj_fassassin_z.mdl" then
|
||
|
|
self:CreateGibEntity("obj_vj_gib","models/gibs/humans/eye_gib.mdl",{Pos = self:LocalToWorld(Vector(0,0,55)),Ang = self:GetAngles() + Angle(0,-90,0),Vel = self:GetRight() * math.Rand(50,50) + self:GetForward() * math.Rand(-200,200)})
|
||
|
|
end
|
||
|
|
|
||
|
|
self:CreateGibEntity("obj_vj_gib","models/gibs/humans/brain_gib.mdl",{Pos = self:LocalToWorld(Vector(0,0,60)),Ang = self:GetAngles() + Angle(0,-90,0)})
|
||
|
|
self:CreateGibEntity("obj_vj_gib","models/gibs/humans/heart_gib.mdl",{Pos = self:LocalToWorld(Vector(0,0,40))})
|
||
|
|
self:CreateGibEntity("obj_vj_gib","models/gibs/humans/lung_gib.mdl",{Pos = self:LocalToWorld(Vector(0,0,40))})
|
||
|
|
self:CreateGibEntity("obj_vj_gib","models/gibs/humans/lung_gib.mdl",{Pos = self:LocalToWorld(Vector(0,0,40))})
|
||
|
|
self:CreateGibEntity("obj_vj_gib","models/gibs/humans/liver_gib.mdl",{Pos = self:LocalToWorld(Vector(0,0,35))})
|
||
|
|
for i = 1, 2 do
|
||
|
|
self:CreateGibEntity("obj_vj_gib","UseHuman_Small",{Pos = self:LocalToWorld(Vector(0,0,30))})
|
||
|
|
self:CreateGibEntity("obj_vj_gib","UseHuman_Small",{Pos = self:LocalToWorld(Vector(0,0,30))})
|
||
|
|
self:CreateGibEntity("obj_vj_gib","UseHuman_Small",{Pos = self:LocalToWorld(Vector(0,0,30))})
|
||
|
|
self:CreateGibEntity("obj_vj_gib","UseHuman_Big",{Pos = self:LocalToWorld(Vector(0,0,35))})
|
||
|
|
self:CreateGibEntity("obj_vj_gib","UseHuman_Big",{Pos = self:LocalToWorld(Vector(0,0,35))})
|
||
|
|
self:CreateGibEntity("obj_vj_gib","UseHuman_Big",{Pos = self:LocalToWorld(Vector(0,0,35))})
|
||
|
|
self:CreateGibEntity("obj_vj_gib","UseHuman_Big",{Pos = self:LocalToWorld(Vector(0,0,40))})
|
||
|
|
self:CreateGibEntity("obj_vj_gib","UseHuman_Big",{Pos = self:LocalToWorld(Vector(0,0,40))})
|
||
|
|
self:CreateGibEntity("obj_vj_gib","UseHuman_Big",{Pos = self:LocalToWorld(Vector(0,0,40))})
|
||
|
|
self:CreateGibEntity("obj_vj_gib","UseHuman_Big",{Pos = self:LocalToWorld(Vector(0,0,35))})
|
||
|
|
self:CreateGibEntity("obj_vj_gib","UseHuman_Big",{Pos = self:LocalToWorld(Vector(0,0,30))})
|
||
|
|
self:CreateGibEntity("obj_vj_gib","UseHuman_Big",{Pos = self:LocalToWorld(Vector(0,0,30))})
|
||
|
|
self:CreateGibEntity("obj_vj_gib","UseHuman_Big",{Pos = self:LocalToWorld(Vector(0,0,30))})
|
||
|
|
end
|
||
|
|
return true
|
||
|
|
end
|
||
|
|
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|