Files
wnsrc/lua/lvs_framework/autorun/sv_entityrelationship.lua
lifestorm ba1fc01b16 Upload
2024-08-04 23:12:27 +03:00

79 lines
1.9 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/
--]]
local function ApplyTeamRules( teamVeh, IsEnemy )
if teamVeh == 0 then
IsEnemy = false
end
if teamVeh == 3 then
IsEnemy = true
end
return IsEnemy
end
function LVS:SetNPCRelationship( NPC )
for _, lvsVeh in pairs( LVS:GetVehicles() ) do
local teamVeh = lvsVeh:GetAITEAM()
local IsEnemy = ApplyTeamRules( teamVeh, lvsVeh:IsEnemy( NPC ) )
local IsActive = (lvsVeh:GetAI() or #lvsVeh:GetEveryone() > 0) and not lvsVeh:IsDestroyed()
if IsActive and IsEnemy then
NPC:AddEntityRelationship( lvsVeh, D_HT, 25 )
NPC:UpdateEnemyMemory( lvsVeh, lvsVeh:GetPos() )
else
local D_, _ = NPC:Disposition( lvsVeh )
if D_ ~= D_NU then
NPC:AddEntityRelationship( lvsVeh, D_NU )
NPC:ClearEnemyMemory( lvsVeh )
end
end
end
end
function LVS:SetVehicleRelationship( lvsVeh )
local teamVeh = lvsVeh:GetAITEAM()
local Pos = lvsVeh:GetPos()
local IsActive = (lvsVeh:GetAI() or #lvsVeh:GetEveryone() > 0) and not lvsVeh:IsDestroyed()
for _, NPC in pairs( LVS:GetNPCs() ) do
local IsEnemy = ApplyTeamRules( teamVeh, lvsVeh:IsEnemy( NPC ) )
if IsActive and IsEnemy then
NPC:AddEntityRelationship( lvsVeh, D_HT, 25 )
NPC:UpdateEnemyMemory( lvsVeh, Pos )
else
local D_, _ = NPC:Disposition( lvsVeh )
if D_ ~= D_NU then
NPC:AddEntityRelationship( lvsVeh, D_NU )
NPC:ClearEnemyMemory( lvsVeh )
end
end
end
end
hook.Add( "LVS.UpdateRelationship", "!!!!lvsEntityRelationship", function( ent )
timer.Simple(0.1, function()
if not IsValid( ent ) then return end
if isfunction( ent.IsNPC ) and ent:IsNPC() then
LVS:SetNPCRelationship( ent )
else
LVS:SetVehicleRelationship( ent )
end
end)
end )