mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 13:53:45 +03:00
79 lines
1.9 KiB
Lua
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 ) |