mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-16 13:23:46 +03:00
92 lines
4.0 KiB
Lua
92 lines
4.0 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/
|
|
--]]
|
|
|
|
/*--------------------------------------------------
|
|
*** Copyright (c) 2012-2023 by DrVrej, All rights reserved. ***
|
|
No parts of this code or any of its contents may be reproduced, copied, modified or adapted,
|
|
without the prior written consent of the author, unless otherwise indicated for stand-alone materials.
|
|
--------------------------------------------------*/
|
|
AddCSLuaFile()
|
|
|
|
ENT.Base = "obj_vj_spawner_base"
|
|
ENT.Type = "anim"
|
|
ENT.PrintName = "Portal (Xen)"
|
|
ENT.Author = "DrVrej"
|
|
ENT.Contact = "http://steamcommunity.com/groups/vrejgaming"
|
|
ENT.Purpose = "Spawn it and fight with it!"
|
|
ENT.Instructions = "Click on the spawnicon to spawn it."
|
|
ENT.Category = "VJ Base Spawners"
|
|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
if !SERVER then return end
|
|
|
|
ENT.SingleSpawner = true -- If set to true, it will spawn the entities once then remove itself
|
|
ENT.VJBaseSpawnerDisabled = true -- If set to true, it will stop spawning the entities
|
|
|
|
-- Custom
|
|
ENT.HLRSpawner_Type = 0
|
|
-- 0 = Xen
|
|
-- 1 = Race X
|
|
ENT.HLRSpawner_ClassType = "CLASS_XEN" -- Type of class the spawner should when triggering the portal
|
|
ENT.HLRSpawner_Distance = 400
|
|
|
|
local xenEnts = {"npc_vj_hlr1_alienslave","npc_vj_hlr1_aliengrunt","npc_vj_hlr1_bullsquid","npc_vj_hlr1_houndeye","npc_vj_hlr1_panthereye"}
|
|
local racexEnts = {"npc_vj_hlrof_shocktrooper","npc_vj_hlrof_pitdrone","npc_vj_hlrof_voltigore","npc_vj_hlrof_voltigore_baby"}
|
|
---------------------------------------------------------------------------------------------------------------------------------------------
|
|
local vec45z = Vector(0, 0, 45)
|
|
--
|
|
function ENT:CustomOnInitialize()
|
|
timer.Simple(0.02, function()
|
|
if IsValid(self) then
|
|
self:SetPos(self:GetPos() + vec45z)
|
|
if IsValid(self:GetCreator()) && self:GetCreator():IsPlayer() then
|
|
self:GetCreator():ChatPrint("Portal entity created with activation distance " .. tostring(self.HLRSpawner_Distance) .. " WU.")
|
|
end
|
|
end
|
|
end)
|
|
local enttbl = xenEnts
|
|
if self.HLRSpawner_Type == 1 then
|
|
enttbl = racexEnts
|
|
self.HLRSpawner_ClassType = "CLASS_RACE_X"
|
|
end
|
|
self.EntitiesToSpawn = {{Entities = enttbl}}
|
|
end
|
|
---------------------------------------------------------------------------------------------------------------------------------------------
|
|
function ENT:HLR_ActivateSpawner(eneEnt)
|
|
self:SetAngles(Angle(self:GetAngles().x, ((eneEnt:GetPos()) - self:GetPos()):Angle().y, self:GetAngles().z)) -- Make sure it spawns the entity facing the enemy
|
|
local effectTeleport = VJ_HLR_Effect_PortalSpawn(self:GetPos())
|
|
effectTeleport:Fire("Kill", "", 1)
|
|
|
|
local dynLight = ents.Create("light_dynamic")
|
|
dynLight:SetKeyValue("brightness", "2")
|
|
dynLight:SetKeyValue("distance", "200")
|
|
dynLight:SetPos(self:GetPos())
|
|
dynLight:SetLocalAngles(self:GetAngles())
|
|
dynLight:Fire("Color","33 255 0")
|
|
dynLight:Spawn()
|
|
dynLight:Activate()
|
|
dynLight:Fire("TurnOn","",0)
|
|
dynLight:Fire("Kill", "", 0.3)
|
|
|
|
self.VJBaseSpawnerDisabled = false
|
|
for k, v in ipairs(self.EntitiesToSpawn) do
|
|
self:SpawnAnEntity(k, v, true)
|
|
end
|
|
end
|
|
---------------------------------------------------------------------------------------------------------------------------------------------
|
|
function ENT:CustomOnThink() // !self.Dead &&
|
|
if self.VJBaseSpawnerDisabled && GetConVar("ai_disabled"):GetInt() == 0 then
|
|
for _, v in ipairs(ents.FindInSphere(self:GetPos(), self.HLRSpawner_Distance)) do
|
|
if (v:IsNPC() or (v:IsPlayer() && !VJ_CVAR_IGNOREPLAYERS)) && !v:IsFlagSet(FL_NOTARGET) && self:Visible(v) && (!v.VJ_NPC_Class or !VJ_HasValue(v.VJ_NPC_Class, self.HLRSpawner_ClassType)) then
|
|
self:HLR_ActivateSpawner(v)
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end |