Replace TargetAndAttack with a global aircraft attack function

This commit is contained in:
Curtis Shmyr
2020-06-13 22:06:12 -06:00
committed by abcdefg30
parent 3c7f119bb1
commit 26d9ae88df
16 changed files with 54 additions and 208 deletions

View File

@@ -124,36 +124,7 @@ ProduceAircraft = function()
Trigger.AfterDelay(DateTime.Seconds(ProductionInterval[Map.LobbyOption("difficulty")] / 2), ProduceAircraft)
end
TargetAndAttack(mig)
end)
end
TargetAndAttack = function(mig, target)
if mig.IsDead then
return
end
if not target or target.IsDead or (not target.IsInWorld) then
local enemies = Utils.Where(greece.GetActors(), function(actor)
return actor.HasProperty("Health") and actor.Type ~= "brik" and mig.CanTarget(target)
end)
if #enemies > 0 then
target = Utils.Random(enemies)
end
end
if target and mig.AmmoCount() > 0 and mig.CanTarget(target) then
mig.Attack(target)
else
mig.ReturnToBase()
end
mig.CallFunc(function()
-- TODO: Replace this with an idle trigger once that works for aircraft
-- Add a delay of one tick to fix an endless recursive call
Trigger.AfterDelay(1, function()
TargetAndAttack(mig, target)
end)
InitializeAttackAircraft(mig, greece)
end)
end