Add IsDead/aircraft checks to Soviet 11

This commit is contained in:
JovialFeline
2023-12-15 15:35:49 -05:00
committed by abcdefg30
parent 00857df990
commit ead78bc3a3
3 changed files with 76 additions and 93 deletions

View File

@@ -26,6 +26,7 @@ Players:
Faction: england Faction: england
PlayerReference@Greece: PlayerReference@Greece:
Name: Greece Name: Greece
Bot: campaign
Faction: allies Faction: allies
Color: E2E6F6 Color: E2E6F6
Enemies: USSR Enemies: USSR

View File

@@ -93,18 +93,15 @@ WesternBoatAttacks = function()
end end
local boats = Reinforcements.Reinforce(Greece, DestroyerSquad, { ShipEntry.Location }) local boats = Reinforcements.Reinforce(Greece, DestroyerSquad, { ShipEntry.Location })
Utils.Do(boats, function(dd) SendPatrol(boats, PatrolWay, false)
dd.Patrol(PatrolWay, false, 1)
IdleHunt(dd)
end)
Trigger.OnAllKilled(boats, function() Trigger.OnAllKilled(boats, function()
Trigger.AfterDelay(DateTime.Minutes(DestroyerDelays), WesternBoatAttacks) Trigger.AfterDelay(DateTime.Minutes(DestroyerDelays[Difficulty]), WesternBoatAttacks)
end) end)
end end
AlliedTransportReinforcements = function() AlliedTransportReinforcements = function()
local way = Utils.Random(TransportWays) local way = Utils.Random(TransportWays)
local group = Utils.Random(TransportUnits) local group = Utils.Random(TransportUnits[Difficulty])
local units = Reinforcements.ReinforceWithTransport(Greece, "lst", group, way, { way[2], way[1] } )[2] local units = Reinforcements.ReinforceWithTransport(Greece, "lst", group, way, { way[2], way[1] } )[2]
Utils.Do(units, function(a) Utils.Do(units, function(a)
Trigger.OnAddedToWorld(a, function() Trigger.OnAddedToWorld(a, function()
@@ -113,7 +110,7 @@ AlliedTransportReinforcements = function()
end) end)
end) end)
Trigger.AfterDelay(DateTime.Minutes(TransportDelays), AlliedTransportReinforcements) Trigger.AfterDelay(DateTime.Minutes(TransportDelays[Difficulty]), AlliedTransportReinforcements)
end end
BuildingsHealing = function() BuildingsHealing = function()
@@ -128,21 +125,23 @@ BuildingsHealing = function()
end end
StartPatrols = function() StartPatrols = function()
Utils.Do(FirstPatrolActors, function(a) SendPatrol(FirstPatrolActors, PatrolWay, false)
if not a.IsDead then SendPatrol(PatrolA, PatrolPathA, true, 20)
a.Patrol(PatrolWay, false, 1) SendPatrol(PatrolB, PatrolPathB, true, 20)
IdleHunt(a) SendPatrol(PatrolC, PatrolPathC, true, 20)
end end
end)
Utils.Do(PatrolA, function(a) SendPatrol = function(actors, path, loop, wait)
a.Patrol(PatrolPathA, true, 20) Utils.Do(actors, function(actor)
end) if actor.IsDead then
Utils.Do(PatrolB, function(b) return
b.Patrol(PatrolPathB, true, 20) end
end)
Utils.Do(PatrolC, function(c) actor.Patrol(path, loop or false, wait or 0)
c.Patrol(PatrolPathC, true, 20)
if not loop then
IdleHunt(actor)
end
end) end)
end end
@@ -151,14 +150,14 @@ ProduceShips = function()
return return
end end
Greece.Build(AlliedShips, function(ships) Greece.Build(AlliedShips[Difficulty], function(ships)
Utils.Do(ships, function(a) Utils.Do(ships, function(a)
a.AttackMove(ShipWaypoint5.Location) a.AttackMove(ShipWaypoint5.Location)
IdleHunt(a) IdleHunt(a)
end) end)
end) end)
Trigger.AfterDelay(DateTime.Minutes(ProductionDelays), ProduceShips) Trigger.AfterDelay(DateTime.Minutes(ProductionDelays[Difficulty]), ProduceShips)
end end
ProduceHelicopters = function() ProduceHelicopters = function()
@@ -174,27 +173,27 @@ ProduceHelicopters = function()
local alive = Utils.Where(Helis, function(y) return not y.IsDead end) local alive = Utils.Where(Helis, function(y) return not y.IsDead end)
if #alive < 2 then if #alive < 2 then
Trigger.AfterDelay(DateTime.Minutes(ProductionDelays), ProduceHelicopters) Trigger.AfterDelay(DateTime.Minutes(ProductionDelays[Difficulty]), ProduceHelicopters)
end end
InitializeAttackAircraft(heli, USSR) InitializeAttackAircraft(heli, USSR)
end) end)
end end
AlliedTransportAmbush = function() AlliedTransportAmbush = function(cargo, path)
Trigger.OnEnteredProximityTrigger(AmbushTrigger.CenterPosition, WDist.New(1024 * 7), function(a, id) Trigger.OnEnteredProximityTrigger(AmbushTrigger.CenterPosition, WDist.FromCells(7), function(a, id)
if a.Owner == USSR then if a.Owner ~= USSR or a.Type == "badr" or a.Type == "u2" or a.Type == "camera.spyplane" then
Trigger.RemoveProximityTrigger(id) return
local way = SurpriseTransportWay
local group = SurpriseTransportUnits
local units = Reinforcements.ReinforceWithTransport(Greece, "lst", group, way, { way[2], way[1] } )[2]
Utils.Do(units, function(a)
Trigger.OnAddedToWorld(a, function()
a.AttackMove(PlayerBase.Location)
IdleHunt(a)
end)
end)
end end
Trigger.RemoveProximityTrigger(id)
local units = Reinforcements.ReinforceWithTransport(Greece, "lst", cargo, path, { path[2], path[1] } )[2]
Utils.Do(units, function(u)
Trigger.OnAddedToWorld(u, function()
u.AttackMove(PlayerBase.Location)
IdleHunt(u)
end)
end)
end) end)
end end
@@ -218,15 +217,8 @@ BridgeTrigger = function()
end end
ActivateAI = function() ActivateAI = function()
TransportDelays = TransportDelays[Difficulty]
DestroyerDelays = DestroyerDelays[Difficulty]
TransportUnits = TransportUnits[Difficulty]
ProductionDelays = ProductionDelays[Difficulty]
AlliedShips = AlliedShips[Difficulty]
SurpriseTransportUnits = SurpriseTransportUnits[Difficulty]
BuildingsHealing() BuildingsHealing()
AlliedTransportAmbush() AlliedTransportAmbush(SurpriseTransportUnits[Difficulty], SurpriseTransportWay)
BridgeTrigger() BridgeTrigger()
NavalYard1.IsPrimaryBuilding = true NavalYard1.IsPrimaryBuilding = true

View File

@@ -96,18 +96,15 @@ DestroyerAttacks = function()
end end
local boats = Reinforcements.Reinforce(Greece, DestroyerSquad, { ShipEntry.Location }) local boats = Reinforcements.Reinforce(Greece, DestroyerSquad, { ShipEntry.Location })
Utils.Do(boats, function(dd) SendPatrol(boats, PatrolWay, false)
dd.Patrol(PatrolWay, false, 1)
IdleHunt(dd)
end)
Trigger.OnAllKilled(boats, function() Trigger.OnAllKilled(boats, function()
Trigger.AfterDelay(DateTime.Minutes(DestroyerDelays), DestroyerAttacks) Trigger.AfterDelay(DateTime.Minutes(DestroyerDelays[Difficulty]), DestroyerAttacks)
end) end)
end end
AlliedTransportReinforcements = function() AlliedTransportReinforcements = function()
local way = Utils.Random(TransportWays) local way = Utils.Random(TransportWays)
local group = Utils.Random(TransportUnits) local group = Utils.Random(TransportUnits[Difficulty])
local units = Reinforcements.ReinforceWithTransport(Greece, "lst", group, way, { way[2], way[1] } )[2] local units = Reinforcements.ReinforceWithTransport(Greece, "lst", group, way, { way[2], way[1] } )[2]
Utils.Do(units, function(a) Utils.Do(units, function(a)
Trigger.OnAddedToWorld(a, function() Trigger.OnAddedToWorld(a, function()
@@ -116,7 +113,7 @@ AlliedTransportReinforcements = function()
end) end)
end) end)
Trigger.AfterDelay(DateTime.Minutes(TransportDelays), AlliedTransportReinforcements) Trigger.AfterDelay(DateTime.Minutes(TransportDelays[Difficulty]), AlliedTransportReinforcements)
end end
BuildingsHealing = function() BuildingsHealing = function()
@@ -131,24 +128,24 @@ BuildingsHealing = function()
end end
StartPatrols = function() StartPatrols = function()
Utils.Do(FirstPatrolActors, function(a) SendPatrol(FirstPatrolActors, PatrolWay, false)
if not a.IsDead then SendPatrol(PatrolA, PatrolPathA, true, 20)
a.Patrol(PatrolWay, false, 1) SendPatrol(PatrolB, PatrolPathB, true, 20)
IdleHunt(a) SendPatrol(PatrolC, PatrolPathC, true, 20)
end SendPatrol(PatrolD, PatrolPathD, true, 20)
end) end
Utils.Do(PatrolA, function(a) SendPatrol = function(actors, path, loop, wait)
a.Patrol(PatrolPathA, true, 20) Utils.Do(actors, function(actor)
end) if actor.IsDead then
Utils.Do(PatrolB, function(b) return
b.Patrol(PatrolPathB, true, 20) end
end)
Utils.Do(PatrolC, function(c) actor.Patrol(path, loop or false, wait or 0)
c.Patrol(PatrolPathC, true, 20)
end) if not loop then
Utils.Do(PatrolD, function(d) IdleHunt(actor)
d.Patrol(PatrolPathD, true, 20) end
end) end)
end end
@@ -157,14 +154,14 @@ ProduceShips = function()
return return
end end
Greece.Build(AlliedShips, function(ships) Greece.Build(AlliedShips[Difficulty], function(ships)
Utils.Do(ships, function(a) Utils.Do(ships, function(a)
a.AttackMove(ShipWaypoint5.Location) a.AttackMove(ShipWaypoint5.Location)
IdleHunt(a) IdleHunt(a)
end) end)
end) end)
Trigger.AfterDelay(DateTime.Minutes(ProductionDelays), ProduceShips) Trigger.AfterDelay(DateTime.Minutes(ProductionDelays[Difficulty]), ProduceShips)
end end
ProduceHelicopters = function() ProduceHelicopters = function()
@@ -180,27 +177,27 @@ ProduceHelicopters = function()
local alive = Utils.Where(Helis, function(y) return not y.IsDead end) local alive = Utils.Where(Helis, function(y) return not y.IsDead end)
if #alive < 2 then if #alive < 2 then
Trigger.AfterDelay(DateTime.Minutes(ProductionDelays), ProduceHelicopters) Trigger.AfterDelay(DateTime.Minutes(ProductionDelays[Difficulty]), ProduceHelicopters)
end end
InitializeAttackAircraft(heli, USSR) InitializeAttackAircraft(heli, USSR)
end) end)
end end
AlliedTransportAmbush = function() AlliedTransportAmbush = function(cargo, path)
Trigger.OnEnteredProximityTrigger(AmbushTrigger.CenterPosition, WDist.FromCells(7), function(actor, id) Trigger.OnEnteredProximityTrigger(AmbushTrigger.CenterPosition, WDist.FromCells(7), function(a, id)
if actor.Owner == USSR and actor.Type ~= "badr" and actor.Type ~= "u2" and actor.Type ~= "camera.spyplane" then if a.Owner ~= USSR or a.Type == "badr" or a.Type == "u2" or a.Type == "camera.spyplane" then
Trigger.RemoveProximityTrigger(id) return
local way = SurpriseTransportWay
local group = SurpriseTransportUnits
local units = Reinforcements.ReinforceWithTransport(Greece, "lst", group, way, { way[2], way[1] } )[2]
Utils.Do(units, function(a)
Trigger.OnAddedToWorld(a, function()
a.AttackMove(PlayerBase.Location)
IdleHunt(a)
end)
end)
end end
Trigger.RemoveProximityTrigger(id)
local units = Reinforcements.ReinforceWithTransport(Greece, "lst", cargo, path, { path[2], path[1] } )[2]
Utils.Do(units, function(u)
Trigger.OnAddedToWorld(u, function()
u.AttackMove(PlayerBase.Location)
IdleHunt(u)
end)
end)
end) end)
end end
@@ -224,15 +221,8 @@ BridgeTrigger = function()
end end
ActivateAI = function() ActivateAI = function()
TransportDelays = TransportDelays[Difficulty]
DestroyerDelays = DestroyerDelays[Difficulty]
TransportUnits = TransportUnits[Difficulty]
ProductionDelays = ProductionDelays[Difficulty]
AlliedShips = AlliedShips[Difficulty]
SurpriseTransportUnits = SurpriseTransportUnits[Difficulty]
BuildingsHealing() BuildingsHealing()
AlliedTransportAmbush() AlliedTransportAmbush(SurpriseTransportUnits[Difficulty], SurpriseTransportWay)
BridgeTrigger() BridgeTrigger()
NavalYard1.IsPrimaryBuilding = true NavalYard1.IsPrimaryBuilding = true