CheckForBase = function() baseBuildings = Map.ActorsInBox(Map.TopLeft, CFBPoint.CenterPosition, function(actor) return actor.Type == "fact" or actor.Type == "powr" end) return #baseBuildings >= 2 end CheckForCYard = function() ConYard = Map.ActorsInBox(mcvGGLoadPoint.CenterPosition, ReinfEastPoint.CenterPosition, function(actor) return actor.Type == "fact" and actor.Owner == GoodGuy end) return #ConYard >= 1 end CheckForSPen = function() SPens = Map.ActorsInBox(Map.TopLeft, Map.BottomRight, function(actor) return actor.Type == "spen" end) return #SPens >=1 end RunInitialActivities = function() if Map.Difficulty == "Hard" then Expand() ExpansionCheck = true else ExpansionCheck = false end Trigger.AfterDelay(1, function() Harvester.FindResources() Helper.Destroy() IdlingUnits() Media.PlaySpeechNotification(player, "ReinforcementsArrived") local buildings = Map.ActorsInBox(NWIdlePoint.CenterPosition, Map.BottomRight, function(self) return self.Owner == Greece and self.HasProperty("StartBuildingRepairs") end) Utils.Do(buildings, function(actor) Trigger.OnDamaged(actor, function(building) if building.Owner == Greece and building.Health < building.MaxHealth * 3/4 then building.StartBuildingRepairs() end end) end) end) Reinforcements.Reinforce(player, SovietStartReinf, SovietStartToBasePath, 0, function(soldier) soldier.AttackMove(SovietBasePoint.Location) end) Actor.Create("camera", true, { Owner = player, Location = GreeceBasePoint.Location }) Actor.Create("camera", true, { Owner = player, Location = SovietBasePoint.Location }) startmcv.Move(MCVStartMovePoint.Location) Runner1.Move(RunnerPoint.Location) Runner2.Move(RunnerPoint.Location) Runner3.Move(RunnerPoint.Location) ProduceInfantry() Trigger.AfterDelay(DateTime.Minutes(2), ProduceShips) if Map.Difficulty == "Hard" or Map.Difficulty == "Medium" then Trigger.AfterDelay(DateTime.Seconds(25), ReinfInf) end Trigger.AfterDelay(DateTime.Minutes(2), ReinfInf) Trigger.AfterDelay(DateTime.Minutes(3), BringDDPatrol2) Trigger.AfterDelay(DateTime.Minutes(5), ReinfInf) Trigger.AfterDelay(DateTime.Minutes(6), BringDDPatrol1) end Expand = function() if ExpansionCheck then return elseif mcvtransport.IsDead then return elseif mcvGG.IsDead then return end mcvGG.Move(mcvGGLoadPoint.Location) mcvtransport.Move(lstBeachPoint.Location) Reinforcements.Reinforce(GoodGuy, { "dd", "dd" }, ShipArrivePath, 0, function(ddsquad) ddsquad.AttackMove(NearExpPoint.Location) end) ExpansionCheck = true Trigger.ClearAll(mcvGG) Trigger.ClearAll(mcvtransport) Trigger.AfterDelay(DateTime.Seconds(3), function() if mcvtransport.IsDead then return elseif mcvGG.IsDead then return end mcvGG.IsInWorld = false mcvtransport.LoadPassenger(mcvGG) mcvtransport.Move(GGUnloadPoint.Location) mcvtransport.UnloadPassengers() Trigger.AfterDelay(DateTime.Seconds(12), function() if mcvGG.IsDead then return end mcvGG.Move(MCVDeploy.Location) Trigger.AfterDelay(DateTime.Seconds(4), function() if not mcvGG.IsDead then mcvGG.Deploy() Trigger.AfterDelay(DateTime.Seconds(4), function() local fact = Map.ActorsInBox(mcvGGLoadPoint.CenterPosition, ReinfEastPoint.CenterPosition, function(actor) return actor.Type == "fact" and actor.Owner == GoodGuy end) if #fact == 0 then return else Trigger.OnDamaged(fact[1], function() if fact[1].Owner == GoodGuy and fact[1].Health < fact[1].MaxHealth * 3/4 then fact[1].StartBuildingRepairs() end end) end end) IslandTroops1() Trigger.AfterDelay(DateTime.Minutes(3), IslandTroops2) Trigger.AfterDelay(DateTime.Minutes(6), IslandTroops3) Trigger.AfterDelay(DateTime.Seconds(7), BuildBase) end if not mcvtransport.IsDead then mcvtransport.Move(ReinfNorthPoint.Location) mcvtransport.Destroy() end end) end) end) end Tick = function() if Greece.HasNoRequiredUnits() and GoodGuy.HasNoRequiredUnits() then player.MarkCompletedObjective(KillAll) player.MarkCompletedObjective(HoldObjective) end if player.HasNoRequiredUnits() then GoodGuy.MarkCompletedObjective(BeatUSSR) end if Greece.Resources >= Greece.ResourceCapacity * 0.75 then Greece.Cash = Greece.Cash + Greece.Resources - Greece.ResourceCapacity * 0.25 Greece.Resources = Greece.ResourceCapacity * 0.25 end if GoodGuy.Resources >= GoodGuy.ResourceCapacity * 0.75 then GoodGuy.Cash = GoodGuy.Cash + GoodGuy.Resources - GoodGuy.ResourceCapacity * 0.25 GoodGuy.Resources = GoodGuy.ResourceCapacity * 0.25 end if not baseEstablished and CheckForBase() then baseEstablished = true Para() end if not SPenEstablished and CheckForSPen() then SPenEstablished = true local units = Reinforcements.ReinforceWithTransport(Greece, "lst", ArtyReinf, SouthReinfPath, { ReinfEastPoint.Location })[2] Utils.Do(units, function(unit) IdleHunt(unit) end) if not ExpansionCheck then Expand() ExpansionCheck = true end end if not RCheck then RCheck = true if Map.Difficulty == "Easy" and ReinfCheck then Trigger.AfterDelay(DateTime.Minutes(6), ReinfArmor) elseif Map.Difficulty == "Medium" then Trigger.AfterDelay(DateTime.Minutes(4), ReinfArmor) else Trigger.AfterDelay(DateTime.Minutes(3), ReinfArmor) end end end WorldLoaded = function() player = Player.GetPlayer("USSR") GoodGuy = Player.GetPlayer("GoodGuy") Greece = Player.GetPlayer("Greece") RunInitialActivities() Trigger.OnObjectiveAdded(player, function(p, id) Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective") end) Trigger.OnObjectiveCompleted(player, function(p, id) Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed") Media.PlaySpeechNotification(player, "ObjectiveMet") end) Trigger.OnObjectiveFailed(player, function(p, id) Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed") end) CaptureObjective = player.AddPrimaryObjective("Capture the Radar Dome.") KillAll = player.AddPrimaryObjective("Defeat the Allied forces.") BeatUSSR = GoodGuy.AddPrimaryObjective("Defeat the Soviet forces.") Trigger.OnDamaged(mcvGG, Expand) Trigger.OnDamaged(mcvtransport, Expand) Trigger.OnKilled(Radar, function() player.MarkFailedObjective(CaptureObjective) end) Trigger.OnCapture(Radar, function(self, captor) if captor.Owner ~= player then return end HoldObjective = player.AddPrimaryObjective("Defend the Radar Dome.") player.MarkCompletedObjective(CaptureObjective) if not ExpansionCheck then Expand() ExpansionCheck = true end Reinforcements.Reinforce(Greece, ArmorReinfGreece, AlliedCrossroadsToRadarPath , 0, function(soldier) soldier.Hunt() end) Trigger.AfterDelay(1, function() local newRadar = Actor.Create("dome", true, { Owner = player, Location = Radar.Location }) newRadar.Health = Radar.Health Radar.Destroy() Trigger.OnKilled(newRadar, function() player.MarkFailedObjective(HoldObjective) end) end) end) Trigger.OnEnteredProximityTrigger(USSRExpansionPoint.CenterPosition, WRange.New(4 * 1024), function(unit, id) if unit.Owner == player and Radar.Owner == player then Trigger.RemoveProximityTrigger(id) Para2() ProduceInfantryGG() ProduceTanksGG() local units = Reinforcements.ReinforceWithTransport(player, "lst", SovietMCVReinf, { ReinfSouthPoint.Location, USSRlstPoint.Location }, { ReinfSouthPoint.Location })[2] Utils.Do(units, function(unit) Trigger.OnAddedToWorld(unit, function() if unit.Type == "mcv" then unit.Move(USSRExpansionPoint.Location) else unit.AttackMove(USSRExpansionPoint.Location) end end) end) Media.PlaySpeechNotification(player, "ReinforcementsArrived") end end) Trigger.OnPlayerLost(player, function() Media.PlaySpeechNotification(player, "Lose") end) Trigger.OnPlayerWon(player, function() Media.PlaySpeechNotification(player, "Win") end) Camera.Position = StartCamPoint.CenterPosition end