Replace TargetAndAttack with a global aircraft attack function
This commit is contained in:
@@ -240,35 +240,7 @@ ProduceAircraft = function()
|
||||
Trigger.AfterDelay(DateTime.Minutes(1), ProduceAircraft)
|
||||
end
|
||||
|
||||
TargetAndAttack(yak)
|
||||
end)
|
||||
end
|
||||
|
||||
TargetAndAttack = function(yak, target)
|
||||
if yak.IsDead then
|
||||
return
|
||||
end
|
||||
|
||||
if not target or target.IsDead or (not target.IsInWorld) then
|
||||
local enemies = Utils.Where(Map.ActorsInWorld, function(self) return self.Owner == player and self.HasProperty("Health") and yak.CanTarget(self) end)
|
||||
|
||||
if #enemies > 0 then
|
||||
target = Utils.Random(enemies)
|
||||
end
|
||||
end
|
||||
|
||||
if target and yak.AmmoCount() > 0 and yak.CanTarget(target) then
|
||||
yak.Attack(target)
|
||||
else
|
||||
yak.ReturnToBase()
|
||||
end
|
||||
|
||||
yak.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(yak, target)
|
||||
end)
|
||||
InitializeAttackAircraft(yak, player)
|
||||
end)
|
||||
end
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ Player:
|
||||
|
||||
World:
|
||||
LuaScript:
|
||||
Scripts: allies04.lua, allies04-AI.lua
|
||||
Scripts: campaign-global.lua, allies04.lua, allies04-AI.lua
|
||||
MissionData:
|
||||
Briefing: Soviet forces are trying to retake the pass you cleared for our convoys.\n\nDon't let this happen. Hold the pass and prevent the Soviets from taking this vital area.\n\nDestroy all Soviet units and buildings in this region.
|
||||
BriefingVideo: ally4.vqa
|
||||
|
||||
@@ -259,34 +259,7 @@ ProduceAircraft = function()
|
||||
Trigger.AfterDelay(DateTime.Minutes(1), ProduceAircraft)
|
||||
end
|
||||
|
||||
TargetAndAttack(yak)
|
||||
end)
|
||||
end
|
||||
|
||||
TargetAndAttack = function(yak, target)
|
||||
if yak.IsDead then
|
||||
return
|
||||
end
|
||||
|
||||
if not target or target.IsDead or (not target.IsInWorld) then
|
||||
local enemies = Utils.Where(Map.ActorsInWorld, function(self) return self.Owner == greece and self.HasProperty("Health") and yak.CanTarget(self) end)
|
||||
if #enemies > 0 then
|
||||
target = Utils.Random(enemies)
|
||||
end
|
||||
end
|
||||
|
||||
if target and yak.AmmoCount() > 0 and yak.CanTarget(target) then
|
||||
yak.Attack(target)
|
||||
else
|
||||
yak.ReturnToBase()
|
||||
end
|
||||
|
||||
yak.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(yak, target)
|
||||
end)
|
||||
InitializeAttackAircraft(yak, greece)
|
||||
end)
|
||||
end
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
World:
|
||||
LuaScript:
|
||||
Scripts: allies05a.lua, allies05a-AI.lua
|
||||
Scripts: campaign-global.lua, allies05a.lua, allies05a-AI.lua
|
||||
MissionData:
|
||||
Briefing: Rescue Tanya.\n\nOnce disguised, your spy can move past any enemy unit, except dogs, without being detected. Direct him into the weapons factory located at a nearby Soviet Base where he will hijack a truck and free Tanya.\n\nWith Tanya's help, take out the air defenses on the island and a Chinook will arrive to rescue her.\n\nThen destroy all remaining Soviet buildings and units.
|
||||
BriefingVideo: ally5.vqa
|
||||
|
||||
@@ -154,34 +154,7 @@ ProduceAircraft = function()
|
||||
Trigger.AfterDelay(DateTime.Seconds(BuildDelays), ProduceAircraft)
|
||||
end
|
||||
|
||||
TargetAndAttack(yak)
|
||||
end)
|
||||
end
|
||||
|
||||
TargetAndAttack = function(yak, target)
|
||||
if yak.IsDead then
|
||||
return
|
||||
end
|
||||
|
||||
if not target or target.IsDead or (not target.IsInWorld) then
|
||||
local enemies = Utils.Where(Map.ActorsInWorld, function(self) return self.Owner == player and self.HasProperty("Health") and yak.CanTarget(self) end)
|
||||
if #enemies > 0 then
|
||||
target = Utils.Random(enemies)
|
||||
end
|
||||
end
|
||||
|
||||
if target and yak.AmmoCount() > 0 and yak.CanTarget(target) then
|
||||
yak.Attack(target)
|
||||
else
|
||||
yak.ReturnToBase()
|
||||
end
|
||||
|
||||
yak.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(yak, target)
|
||||
end)
|
||||
InitializeAttackAircraft(yak, player)
|
||||
end)
|
||||
end
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ Player:
|
||||
|
||||
World:
|
||||
LuaScript:
|
||||
Scripts: allies06a.lua, allies06a-AI.lua
|
||||
Scripts: campaign-global.lua, allies06a.lua, allies06a-AI.lua
|
||||
MissionData:
|
||||
Briefing: Priority one is to establish a base and get your spy into one of the Soviet Tech Centers in the base across the gulf.\nData on the Iron Curtain is in there and we need it.\n\nOnce you get the data complete your mission...\nWipe out everything.
|
||||
BriefingVideo: ally6.vqa
|
||||
|
||||
@@ -166,34 +166,7 @@ ProduceAircraft = function()
|
||||
Trigger.AfterDelay(DateTime.Seconds(BuildDelays / 2), ProduceAircraft)
|
||||
end
|
||||
|
||||
TargetAndAttack(yak)
|
||||
end)
|
||||
end
|
||||
|
||||
TargetAndAttack = function(yak, target)
|
||||
if yak.IsDead then
|
||||
return
|
||||
end
|
||||
|
||||
if not target or target.IsDead or (not target.IsInWorld) then
|
||||
local enemies = Utils.Where(Map.ActorsInWorld, function(self) return self.Owner == player and self.HasProperty("Health") and yak.CanTarget(self) end)
|
||||
if #enemies > 0 then
|
||||
target = Utils.Random(enemies)
|
||||
end
|
||||
end
|
||||
|
||||
if target and yak.AmmoCount() > 0 and yak.CanTarget(target) then
|
||||
yak.Attack(target)
|
||||
else
|
||||
yak.ReturnToBase()
|
||||
end
|
||||
|
||||
yak.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(yak, target)
|
||||
end)
|
||||
InitializeAttackAircraft(yak, player)
|
||||
end)
|
||||
end
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ Player:
|
||||
|
||||
World:
|
||||
LuaScript:
|
||||
Scripts: allies06b.lua, allies06b-AI.lua
|
||||
Scripts: campaign-global.lua, allies06b.lua, allies06b-AI.lua
|
||||
MissionData:
|
||||
BriefingVideo: ally6.vqa
|
||||
WinVideo: allymorf.vqa
|
||||
|
||||
@@ -131,34 +131,7 @@ ProduceAircraft = function()
|
||||
Trigger.AfterDelay(DateTime.Seconds(ProductionInterval[Map.LobbyOption("difficulty")] / 2), ProduceAircraft)
|
||||
end
|
||||
|
||||
TargetAndAttack(yak)
|
||||
end)
|
||||
end
|
||||
|
||||
TargetAndAttack = function(yak, target)
|
||||
if yak.IsDead then
|
||||
return
|
||||
end
|
||||
|
||||
if not target or target.IsDead or (not target.IsInWorld) then
|
||||
local enemies = Utils.Where(Map.ActorsInWorld, function(self) return self.Owner == greece and self.HasProperty("Health") and yak.CanTarget(self) end)
|
||||
if #enemies > 0 then
|
||||
target = Utils.Random(enemies)
|
||||
end
|
||||
end
|
||||
|
||||
if target and yak.AmmoCount() > 0 and yak.CanTarget(target) then
|
||||
yak.Attack(target)
|
||||
else
|
||||
yak.ReturnToBase()
|
||||
end
|
||||
|
||||
yak.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(yak, target)
|
||||
end)
|
||||
InitializeAttackAircraft(yak, greece)
|
||||
end)
|
||||
end
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ Player:
|
||||
|
||||
World:
|
||||
LuaScript:
|
||||
Scripts: allies07.lua, allies07-AI.lua
|
||||
Scripts: campaign-global.lua, allies07.lua, allies07-AI.lua
|
||||
MissionData:
|
||||
Briefing: LANDCOM 16 HQS.\nTOP SECRET.\nTO: FIELD COMMANDER A9\n\nINTERCEPTION OF SOVIET COMMUNIQUE INDICATES THEIR IRON CURTAIN RESEARCH WAS SET BACK BY ESPIONAGE. EXCELLENT WORK, COMMANDER!\n\nCOMMUNIQUE WAS TRACED BACK TO SECRET SOVIET BASE IN BORNHOLM. INVESTIGATE POSSIBLE CONNECTION WITH IRON CURTAIN RESEARCH. CAPTURE RADAR CENTER AND DESTROY SUB PRODUCTION CAPABILITY.\n\nCONFIRMATION CODE 1138.\n\nTRANSMISSION ENDS.\n
|
||||
StartVideo: shorbom1.vqa
|
||||
|
||||
@@ -125,36 +125,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
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ Player:
|
||||
|
||||
World:
|
||||
LuaScript:
|
||||
Scripts: allies08a.lua, allies08a-AI.lua
|
||||
Scripts: campaign-global.lua, allies08a.lua, allies08a-AI.lua
|
||||
MissionData:
|
||||
Briefing: Our latest technology, the Chronosphere, is housed in this research station. The timer represents the appointed time for the completion of a vital experiment. The Soviets have learned of this and are moving in. \n\nProtect the Chronosphere and the Advanced-Tech research center. Make sure the base is fully powered at the appointed time. If not, all will be lost!
|
||||
BriefingVideo: ally8.vqa
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ Player:
|
||||
|
||||
World:
|
||||
LuaScript:
|
||||
Scripts: allies08b.lua, allies08b-AI.lua
|
||||
Scripts: campaign-global.lua, allies08b.lua, allies08b-AI.lua
|
||||
MissionData:
|
||||
Briefing: Our latest technology, the Chronosphere, is housed in this research station. The timer represents the appointed time for the completion of a vital experiment. The Soviets have learned of this and are moving in. \n\nProtect the Chronosphere and the Advanced-Tech research center. Make sure the base is fully powered at the appointed time. If not, all will be lost!
|
||||
BriefingVideo: ally8.vqa
|
||||
|
||||
Reference in New Issue
Block a user