AddCSLuaFile() ENT.Type = "ai" ENT.Base = "base_ai" ENT.AutomaticFrameAdvance = true local debug_show_ragdoll_targets = CreateConVar("zcnpci_debug_show_ragdoll_targets", 0, bit.bor(FCVAR_ARCHIVE, FCVAR_REPLICATED)) local function UpdateRelationship(ent, me) if !IsValid(ent) or !ent:IsNPC() then return end if ent:Disposition(me.dummy_entity) == D_HT then ent:AddEntityRelationship(me, D_HT) end end local function RemoveRelationship(ent, me) if !IsValid(ent) or !ent:IsNPC() then return end if ent:Disposition(me.dummy_entity) == D_HT then ent:AddEntityRelationship(me, D_NU) ent:ClearEnemyMemory(me) end end function ENT:Initialize() if SERVER then self:SetModel("models/maxofs2d/hover_basic.mdl") self:SetCollisionGroup(COLLISION_GROUP_DEBRIS) self:SetHullType(HULL_TINY_CENTERED) self:SetNoDraw(!debug_show_ragdoll_targets:GetBool()) self.dummy_entity = ents.Create(self.ragdoll_to_follow.class_in_previous_life) self.last_stop_targeting = debug_show_ragdoll_targets:GetBool() hook.Add("OnEntityCreated", "zcnpci-"..self:GetCreationID(), function(new_entity) if !IsValid(new_entity) or !new_entity:IsNPC() then return end if !self.last_stop_targeting then UpdateRelationship(new_entity, self) end end) for i,ent in ipairs(ents.GetAll()) do UpdateRelationship(ent, self) end end end function ENT:Think() if SERVER then local ragdoll = self.ragdoll_to_follow if !IsValid(ragdoll) then return end self:SetPos(ragdoll:GetPos()) self:SetNoDraw(!debug_show_ragdoll_targets:GetBool()) if !ragdoll.organism then return true end local should_stop_targeting = ( (ragdoll.organism.consciousness <= 0.4) or (ragdoll.organism.critical) ) if should_stop_targeting != self.last_stop_targeting then self.last_stop_targeting = should_stop_targeting if should_stop_targeting then self:SetColor(Color(255, 0, 0)) for i,ent in ipairs(ents.GetAll()) do RemoveRelationship(ent, self) end else self:SetColor(Color(0, 255, 0)) for i,ent in ipairs(ents.GetAll()) do UpdateRelationship(ent, self) end end end self:NextThink(CurTime()) end return true end function ENT:OnRemove() if SERVER then print("I AM DYING!!!!!!") for i,ent in ipairs(ents.GetAll()) do RemoveRelationship(ent, self) end hook.Remove("OnEntityCreated", "zcnpci-"..self:GetCreationID()) end end