From 38c4c10c730f031fccd6ad9c9cedb5d38753b924 Mon Sep 17 00:00:00 2001 From: abc013 Date: Sun, 24 Sep 2017 19:29:59 +0200 Subject: [PATCH] Added Allies-06b to the Red Alert mod --- OpenRA.sln | 2 + mods/ra/maps/allies-06b/allies06b-AI.lua | 248 +++++++ mods/ra/maps/allies-06b/allies06b.lua | 269 +++++++ mods/ra/maps/allies-06b/map.bin | Bin 0 -> 81937 bytes mods/ra/maps/allies-06b/map.png | Bin 0 -> 17580 bytes mods/ra/maps/allies-06b/map.yaml | 851 +++++++++++++++++++++++ mods/ra/maps/allies-06b/rules.yaml | 93 +++ mods/ra/missions.yaml | 1 + 8 files changed, 1464 insertions(+) create mode 100644 mods/ra/maps/allies-06b/allies06b-AI.lua create mode 100644 mods/ra/maps/allies-06b/allies06b.lua create mode 100644 mods/ra/maps/allies-06b/map.bin create mode 100644 mods/ra/maps/allies-06b/map.png create mode 100644 mods/ra/maps/allies-06b/map.yaml create mode 100644 mods/ra/maps/allies-06b/rules.yaml diff --git a/OpenRA.sln b/OpenRA.sln index 0e8fe23a49..41c2f0e55b 100644 --- a/OpenRA.sln +++ b/OpenRA.sln @@ -66,6 +66,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Red Alert Lua scripts", "Re mods\ra\maps\allies-05a\allies05a.lua = mods\ra\maps\allies-05a\allies05a.lua mods\ra\maps\allies-06a\allies06a-AI.lua = mods\ra\maps\allies-06a\allies06a-AI.lua mods\ra\maps\allies-06a\allies06a.lua = mods\ra\maps\allies-06a\allies06a.lua + mods\ra\maps\allies-06b\allies06b.lua = mods\ra\maps\allies-06b\allies06b.lua + mods\ra\maps\allies-06b\allies06b-AI.lua = mods\ra\maps\allies-06b\allies06b-AI.lua mods\ra\maps\desert-shellmap\desert-shellmap.lua = mods\ra\maps\desert-shellmap\desert-shellmap.lua mods\ra\maps\evacuation\evacuation.lua = mods\ra\maps\evacuation\evacuation.lua mods\ra\maps\exodus\exodus.lua = mods\ra\maps\exodus\exodus.lua diff --git a/mods/ra/maps/allies-06b/allies06b-AI.lua b/mods/ra/maps/allies-06b/allies06b-AI.lua new file mode 100644 index 0000000000..8af0df8b4b --- /dev/null +++ b/mods/ra/maps/allies-06b/allies06b-AI.lua @@ -0,0 +1,248 @@ +--[[ + Copyright 2007-2017 The OpenRA Developers (see AUTHORS) + This file is part of OpenRA, which is free software. It is made + available to you under the terms of the GNU General Public License + as published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. For more + information, see COPYING. +]] + +WTransWays = +{ + { WaterUnloadEntry1.Location, WaterUnload1.Location }, + { WaterUnloadEntry2.Location, WaterUnload2.Location }, + { WaterUnloadEntry3.Location, WaterUnload3.Location } +} + +WTransUnits = +{ + hard = { { "3tnk", "3tnk", "3tnk", "v2rl", "v2rl" }, { "v2rl", "v2rl", "e4", "e4", "3tnk" } }, + normal = { { "e1", "e1", "3tnk", "3tnk", "v2rl" }, { "e4", "e4", "e4", "e4", "v2rl" } }, + easy = { { "e1", "e1", "e1", "e2", "e2" }, { "e2", "e2", "3tnk" } } +} + +WTransDelays = +{ + easy = 4, + normal = 3, + hard = 1 +} + +BuildDelays = +{ + easy = 90, + normal = 60, + hard = 30 +} + +WaterAttacks = +{ + easy = 1, + normal = 2, + hard = 3 +} + +WaterAttackTypes = +{ + easy = { "ss" }, + normal = { "ss", "ss" }, + hard = { "ss", "ss", "ss" } +} + +VehicleTypes = { "v2rl", "3tnk", "3tnk", "3tnk", "3tnk", "harv" } + +InfTypes = +{ + { "e1", "e1", "e1", "e1", "e1"}, + { "e2", "e2", "e1", "e1", "e1"}, + { "e4", "e4", "e4", "e1", "e1"} +} + +AttackRallyPoints = +{ + { SovietSideAttack1.Location, SovietBaseAttack.Location }, + { SovietBaseAttack.Location }, + { SovietSideAttack2.Location, SovietBaseAttack.Location } +} + +ImportantBuildings = { WarFactory, Airfield1, Airfield2, Radar2, Refinery, SovietConyard } +SovietAircraftType = { "yak" } +Yaks = { } +IdlingUnits = { } +IdlingTanks = { tank1, tank2, tank3, tank4, tank5, tank6, tank7 } +IdlingNavalUnits = { } + +InitialiseAttack = function() + Utils.Do(ImportantBuildings, function(a) + Trigger.OnDamaged(a, function() + Utils.Do(IdlingTanks, function(unit) + if not unit.IsDead then + IdleHunt(unit) + end + end) + end) + Trigger.OnCapture(a, function() + Utils.Do(IdlingTanks, function(unit) + if not unit.IsDead then + IdleHunt(unit) + end + end) + end) + end) +end + +Attack = 0 +ProduceInfantry = function() + if SovietBarracks.IsDead or SovietBarracks.Owner ~= ussr then + return + end + + Attack = Attack + 1 + local toBuild = Utils.Random(InfTypes) + ussr.Build(toBuild, function(units) + if Attack == 2 and not AttackTank1.IsDead then + units[#units + 1] = AttackTank1 + elseif Attack == 4 and not AttackTank2.IsDead then + units[#units + 1] = AttackTank2 + end + + SendAttack(units, Utils.Random(AttackRallyPoints)) + Trigger.AfterDelay(DateTime.Seconds(BuildDelays), ProduceInfantry) + end) +end + +ProduceVehicles = function() + if WarFactory.IsDead or WarFactory.Owner ~= ussr then + return + end + ussr.Build(VehicleTypes, function(units) + Utils.Do(units, function(unit) + if unit.Type ~= "harv" then + IdlingTanks[#IdlingTanks + 1] = unit + end + end) + end) +end + +ProduceNaval = function() + if SubPen.IsDead or SubPen.Owner ~= ussr then + return + end + + if not shouldProduce and #Utils.Where(Map.ActorsInWorld, function(self) return self.Owner == player and self.Type == "syrd" end) < 1 then + Trigger.AfterDelay(DateTime.Minutes(1), ProduceNaval) + return + end + + shouldProduce = true + + ussr.Build(WaterAttackTypes, function(units) + Utils.Do(units, function(unit) + IdlingNavalUnits[#IdlingNavalUnits + 1] = unit + end) + + Trigger.AfterDelay(DateTime.Minutes(1) + DateTime.Seconds(40), ProduceNaval) + if #IdlingNavalUnits >= WaterAttacks then + Trigger.AfterDelay(DateTime.Seconds(20), function() + SendAttack(SetupNavalAttackGroup(), { SubPatrol1_2.Location }) + end) + end + end) +end + +ProduceAircraft = function() + if (Airfield1.IsDead or Airfield1.Owner ~= ussr) and (Airfield2.IsDead or Airfield2.Owner ~= ussr) then + return + end + + ussr.Build(SovietAircraftType, function(units) + local yak = units[1] + Yaks[#Yaks + 1] = yak + + Trigger.OnKilled(yak, ProduceAircraft) + + local alive = Utils.Where(Yaks, function(y) return not y.IsDead end) + if #alive < 2 then + Trigger.AfterDelay(DateTime.Seconds(BuildDelays / 2), ProduceAircraft) + end + + TargetAndAttack(yak) + end) +end + +TargetAndAttack = function(yak, target) + 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() + TargetAndAttack(yak, target) + end) +end + +IdleHunt = function(unit) if not unit.IsDead then Trigger.OnIdle(unit, unit.Hunt) end end + +SendAttack = function(units, path) + Utils.Do(units, function(unit) + unit.Patrol(path, false) + IdleHunt(unit) + end) +end + +SetupNavalAttackGroup = function() + local units = { } + for i = 0, 3 do + if #IdlingNavalUnits == 0 then + return units + end + + local number = Utils.RandomInteger(1, #IdlingNavalUnits + 1) + if IdlingNavalUnits[number] and not IdlingNavalUnits[number].IsDead then + units[i] = IdlingNavalUnits[number] + table.remove(IdlingNavalUnits, number) + end + end + + return units +end + +WTransWaves = function() + local way = Utils.Random(WTransWays) + local units = Utils.Random(WTransUnits) + local attackUnits = Reinforcements.ReinforceWithTransport(ussr, "lst", units , way, { way[2], way[1] })[2] + Utils.Do(attackUnits, function(a) + Trigger.OnAddedToWorld(a, function() + a.AttackMove(SovietBaseAttack.Location) + IdleHunt(a) + end) + end) + + Trigger.AfterDelay(DateTime.Minutes(WTransDelays), WTransWaves) +end + +ActivateAI = function() + local difficulty = Map.LobbyOption("difficulty") + WaterAttackTypes = WaterAttackTypes[difficulty] + WaterAttacks = WaterAttacks[difficulty] + WTransUnits = WTransUnits[difficulty] + WTransDelays = WTransDelays[difficulty] + BuildDelays = BuildDelays[difficulty] + + InitialiseAttack() + Trigger.AfterDelay(DateTime.Seconds(40), ProduceInfantry) + Trigger.AfterDelay(DateTime.Minutes(1) + DateTime.Seconds(10), ProduceAircraft) + Trigger.AfterDelay(DateTime.Minutes(2) + DateTime.Seconds(10), ProduceVehicles) + + WarFactory.RallyPoint = WeaponMeetPoint.Location + Trigger.AfterDelay(DateTime.Minutes(4) + DateTime.Seconds(10), ProduceNaval) + Trigger.AfterDelay(DateTime.Minutes(WTransDelays + 1) + DateTime.Seconds(30), WTransWaves) +end diff --git a/mods/ra/maps/allies-06b/allies06b.lua b/mods/ra/maps/allies-06b/allies06b.lua new file mode 100644 index 0000000000..63253c46a1 --- /dev/null +++ b/mods/ra/maps/allies-06b/allies06b.lua @@ -0,0 +1,269 @@ +--[[ + Copyright 2007-2017 The OpenRA Developers (see AUTHORS) + This file is part of OpenRA, which is free software. It is made + available to you under the terms of the GNU General Public License + as published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. For more + information, see COPYING. +]] +AlliedReinforcementsA = { "e1", "e1", "e1", "e1", "e1" } +AlliedReinforcementsB = { "e1", "e1", "e3", "e3", "e3" } +AlliedBoatReinforcements = { "pt", "pt" } +BadGuys = { BadGuy1, BadGuy2, BadGuy3, BadGuy4 } + +SovietDogPatrols = +{ + { Patrol_1_e1, Patrol_1_dog }, + { Patrol_2_e1, Patrol_2_dog }, + { Patrol_3_e1, Patrol_3_dog }, + { Patrol_4_e1, Patrol_4_dog } +} + +SovietDogPatrolPaths = +{ + { Patrol6.Location, Patrol7.Location, Patrol8.Location, Patrol1.Location, Patrol2.Location, Patrol3.Location, Patrol4.Location, Patrol5.Location }, + { Patrol8.Location, Patrol1.Location, Patrol2.Location, Patrol3.Location, Patrol4.Location, Patrol5.Location, Patrol6.Location, Patrol7.Location }, + { Patrol1.Location, Patrol2.Location, Patrol3.Location, Patrol4.Location, Patrol5.Location, Patrol6.Location, Patrol7.Location, Patrol8.Location }, + { Patrol2.Location, Patrol3.Location, Patrol4.Location, Patrol5.Location, Patrol6.Location, Patrol7.Location, Patrol8.Location, Patrol1.Location } +} + +Mammoths = { Mammoth1, Mammoth2, Mammoth3 } + +SovietMammothPaths = +{ + { TnkPatrol1.Location, TnkPatrol2.Location,TnkPatrol3.Location, TnkPatrol4.Location, TnkPatrol5.Location, TnkPatrol6.Location }, + { TnkPatrol5.Location, TnkPatrol6.Location, TnkPatrol1.Location, TnkPatrol2.Location, TnkPatrol3.Location, TnkPatrol4.Location }, + { TnkPatrol6.Location, TnkPatrol1.Location, TnkPatrol2.Location, TnkPatrol3.Location, TnkPatrol4.Location, TnkPatrol5.Location } +} + +SubPaths = { + { SubPatrol1_1.Location, SubPatrol1_2.Location }, + { SubPatrol2_1.Location, SubPatrol2_2.Location }, + { SubPatrol3_1.Location, SubPatrol3_2.Location }, + { SubPatrol4_1.Location, SubPatrol4_2.Location }, + { SubPatrol5_1.Location, SubPatrol5_2.Location } +} + +ParadropWaypoints = +{ + easy = { UnitBStopLocation }, + normal = { UnitBStopLocation, UnitAStopLocation }, + hard = { UnitBStopLocation, UnitCStopLocation, UnitAStopLocation } +} + +SovietTechLabs = { TechLab1, TechLab2 } + +TechLabCams = { TechCam1, TechCam2 } + +GroupPatrol = function(units, waypoints, delay) + local i = 1 + local stop = false + + Utils.Do(units, function(unit) + Trigger.OnIdle(unit, function() + if stop then + return + end + if unit.Location == waypoints[i] then + local bool = Utils.All(units, function(actor) return actor.IsIdle end) + if bool then + stop = true + i = i + 1 + if i > #waypoints then + i = 1 + end + Trigger.AfterDelay(delay, function() stop = false end) + end + else + unit.AttackMove(waypoints[i]) + end + end) + end) +end + +InitialSovietPatrols = function() + -- Dog Patrols + BeachDog.Patrol({ BeachPatrol1.Location, BeachPatrol2.Location, BeachPatrol3.Location }) + for i = 1, 4 do + GroupPatrol(SovietDogPatrols[i], SovietDogPatrolPaths[i], DateTime.Seconds(5)) + end + + -- Mammoth Patrols + for i = 1, 3 do + Trigger.AfterDelay(DateTime.Seconds(6 * (i - 1)), function() + Trigger.OnIdle(Mammoths[i], function() + Mammoths[i].Patrol(SovietMammothPaths[i]) + end) + end) + end + + -- Sub Patrols + Patrol1Sub.Patrol(SubPaths[1]) + Patrol2Sub.Patrol(SubPaths[2]) + Patrol3Sub.Patrol(SubPaths[3]) + Patrol4Sub.Patrol(SubPaths[4]) + Patrol5Sub.Patrol(SubPaths[5]) +end + +InitialAlliedReinforcements = function() + local camera = Actor.Create("Camera", true, { Owner = player, Location = DefaultCameraPosition.Location }) + Trigger.AfterDelay(DateTime.Seconds(30), camera.Destroy) + + Trigger.AfterDelay(DateTime.Seconds(1), function() + Reinforcements.Reinforce(player, AlliedReinforcementsA, { AlliedEntry3.Location, UnitCStopLocation.Location }, 2) + Reinforcements.Reinforce(player, AlliedReinforcementsB, { AlliedEntry2.Location, UnitAStopLocation.Location }, 2) + end) + Trigger.AfterDelay(DateTime.Seconds(3), function() + Reinforcements.Reinforce(player, { "mcv" }, { AlliedEntry1.Location, UnitBStopLocation.Location }) + Reinforcements.Reinforce(player, AlliedBoatReinforcements, { AlliedBoatEntry.Location, AlliedBoatStop.Location }) + end) +end + +CaptureRadarDome = function() + Trigger.OnKilled(Radar, function() + player.MarkFailedObjective(CaptureRadarDomeObj) + end) + + Trigger.OnCapture(Radar, function() + player.MarkCompletedObjective(CaptureRadarDomeObj) + Beacon.New(player, TechLab1.CenterPosition) + Beacon.New(player, TechLab2.CenterPosition) + Media.DisplayMessage("Coordinates of the Soviet tech centers discovered.") + if Map.LobbyOption("difficulty") ~= "hard" then + Utils.Do(TechLabCams, function(a) + Actor.Create("TECH.CAM", true, { Owner = player, Location = a.Location }) + end) + + if Map.LobbyOption("difficulty") == "easy" then + Actor.Create("Camera", true, { Owner = player, Location = Weapcam.Location }) + end + end + end) +end + +InfiltrateTechCenter = function() + Utils.Do(SovietTechLabs, function(a) + Trigger.OnInfiltrated(a, function() + if infiltrated then + return + end + infiltrated = true + DestroySovietsObj = player.AddPrimaryObjective("Destroy all Soviet buildings and units in the area.") + player.MarkCompletedObjective(InfiltrateTechCenterObj) + end) + + Trigger.OnCapture(a, function() + if not infiltrated then + Media.DisplayMessage("Do not capture the tech centers! Infiltrate one with a spy.") + end + end) + end) + + Trigger.OnAllKilledOrCaptured(SovietTechLabs, function() + if not player.IsObjectiveCompleted(InfiltrateTechCenterObj) then + player.MarkFailedObjective(InfiltrateTechCenterObj) + end + end) +end + +InfiltrateRef = function() + Trigger.OnInfiltrated(Refinery, function() + player.MarkCompletedObjective(InfiltrateRefObj) + end) + Trigger.OnCapture(Refinery, function() + player.MarkCompletedObjective(InfiltrateRefObj) + end) + Trigger.OnKilled(Refinery, function() + if not player.IsObjectiveCompleted(InfiltrateRefObj) then + player.MarkFailedObjective(InfiltrateRefObj) + end + end) +end + +Tick = function() + if player.HasNoRequiredUnits() then + player.MarkFailedObjective(InfiltrateTechCenterObj) + end + + if DestroySovietsObj and ussr.HasNoRequiredUnits() then + player.MarkCompletedObjective(DestroySovietsObj) + end +end + +WorldLoaded = function() + player = Player.GetPlayer("Greece") + ussr = Player.GetPlayer("USSR") + + 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") + end) + + Trigger.OnObjectiveFailed(player, function(p, id) + Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed") + end) + + Trigger.OnPlayerLost(player, function() + Media.PlaySpeechNotification(player, "MissionFailed") + end) + Trigger.OnPlayerWon(player, function() + Media.PlaySpeechNotification(player, "MissionAccomplished") + end) + + InfiltrateTechCenterObj = player.AddPrimaryObjective("Infiltrate one of the Soviet tech centers with a spy.") + CaptureRadarDomeObj = player.AddSecondaryObjective("Capture the Radar Dome at the shore.") + InfiltrateRefObj = player.AddSecondaryObjective("Infiltrate the Refinery for money.") + + Camera.Position = DefaultCameraPosition.CenterPosition + + if Map.LobbyOption("difficulty") ~= "hard" then + Trigger.OnEnteredProximityTrigger(SovietDefenseCam.CenterPosition, WDist.New(1024 * 7), function(a, id) + if a.Owner == player then + Trigger.RemoveProximityTrigger(id) + local cam1 = Actor.Create("TECH.CAM", true, { Owner = player, Location = SovietDefenseCam.Location }) + Trigger.AfterDelay(DateTime.Seconds(15), cam1.Destroy) + if not DefenseFlame1.IsDead then + local cam2 = Actor.Create("TECH.CAM", true, { Owner = player, Location = DefenseFlame1.Location }) + Trigger.AfterDelay(DateTime.Seconds(15), cam2.Destroy) + end + if not DefenseFlame2.IsDead then + local cam3 = Actor.Create("TECH.CAM", true, { Owner = player, Location = DefenseFlame2.Location }) + Trigger.AfterDelay(DateTime.Seconds(15), cam3.Destroy) + end + end + end) + + if Map.LobbyOption("difficulty") == "easy" then + Trigger.OnKilled(DefBrl1, function(a, b) + DefenseFlame1.Kill() + end) + Trigger.OnKilled(DefBrl2, function(a, b) + DefenseFlame2.Kill() + end) + end + end + + Utils.Do(BadGuys, function(a) + a.AttackMove(UnitCStopLocation.Location) + end) + + InitialAlliedReinforcements() + Trigger.AfterDelay(DateTime.Seconds(1), function() + InitialSovietPatrols() + end) + + Trigger.OnEnteredProximityTrigger(SovietMiniBaseCam.CenterPosition, WDist.New(1024 * 14), function(a, id) + if a.Owner == player then + Trigger.RemoveProximityTrigger(id) + local cam = Actor.Create("Camera", true, { Owner = player, Location = SovietMiniBaseCam.Location }) + Trigger.AfterDelay(DateTime.Seconds(15), cam.Destroy) + end + end) + CaptureRadarDome() + InfiltrateTechCenter() + InfiltrateRef() + Trigger.AfterDelay(0, ActivateAI) +end diff --git a/mods/ra/maps/allies-06b/map.bin b/mods/ra/maps/allies-06b/map.bin new file mode 100644 index 0000000000000000000000000000000000000000..36d149b4e7cbc957c85586d960538e09c34ac762 GIT binary patch literal 81937 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 Ee`x%D3;+NC literal 0 HcmV?d00001 diff --git a/mods/ra/maps/allies-06b/map.png b/mods/ra/maps/allies-06b/map.png new file mode 100644 index 0000000000000000000000000000000000000000..29bfd56141d446cc276292d22b5c68bcf60f7e55 GIT binary patch literal 17580 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