diff --git a/mods/ra/maps/fall-of-greece-2-evacuation/evacuation-AI.lua b/mods/ra/maps/fall-of-greece-2-evacuation/evacuation-AI.lua new file mode 100644 index 0000000000..d21f732df4 --- /dev/null +++ b/mods/ra/maps/fall-of-greece-2-evacuation/evacuation-AI.lua @@ -0,0 +1,130 @@ +--[[ + Copyright 2007-2021 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. +]] +AttackGroup = { } +SovietInfantry = { "e1", "e2" } +SovietVehicles = { "3tnk", "3tnk", "v2rl" } +SovietAircraftType = { "yak" } +Yaks = { } +AttackPaths = { AttackRight, AttackLeft } + +AttackGroupSizes = +{ + easy = 8, + normal = 9, + hard = 10 +} + +ProductionInterval = +{ + easy = DateTime.Seconds(20), + normal = DateTime.Seconds(10), + hard = DateTime.Seconds(5) +} + +SendAttackGroup = function() + if #AttackGroup < AttackGroupSize then + return + end + + local path = Utils.Random(AttackPaths) + Utils.Do(AttackGroup, function(unit) + if not unit.IsDead then + unit.AttackMove(path.Location) + Trigger.OnIdle(unit, unit.Hunt) + end + end) + + AttackGroup = { } +end + +ProduceInfantry = function() + if USSRRax.IsDead or USSRRax.Owner ~= USSR then + return + end + + USSR.Build({ Utils.Random(SovietInfantry) }, function(units) + table.insert(AttackGroup, units[1]) + SendAttackGroup() + Trigger.AfterDelay(ProductionInterval[Map.LobbyOption("difficulty")], ProduceInfantry) + end) +end + +ProduceVehicles = function() + if USSRWarFactory.IsDead or USSRWarFactory.Owner ~= USSR then + return + end + + USSR.Build({ Utils.Random(SovietVehicles) }, function(units) + table.insert(AttackGroup, units[1]) + SendAttackGroup() + Trigger.AfterDelay(ProductionInterval[Map.LobbyOption("difficulty")], ProduceVehicles) + end) +end + +ProduceAircraft = function() + if Airfield.IsDead or Airfield.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(ProductionInterval[Map.LobbyOption("difficulty")] / 2), ProduceAircraft) + end + + InitializeAttackAircraft(yak, Allies) + end) +end + +ParadropDelays = +{ + easy = { DateTime.Minutes(1), DateTime.Minutes(2) }, + normal = { DateTime.Seconds(45), DateTime.Seconds(105) }, + hard = { DateTime.Seconds(30), DateTime.Seconds(90) } +} + +ParadropLZs = { ParaLZ1.CenterPosition, ParaLZ2.CenterPosition, ParaLZ3.CenterPosition, ParaLZ4.CenterPosition } + +Paradrop = function() + if Airfield.IsDead or Airfield.Owner ~= USSR then + return + end + + local aircraft = StandardDrop.TargetParatroopers(Utils.Random(ParadropLZs)) + Utils.Do(aircraft, function(a) + Trigger.OnPassengerExited(a, function(t, p) + IdleHunt(p) + end) + end) + + Trigger.AfterDelay(Utils.RandomInteger(ParadropDelay[1], ParadropDelay[2]), Paradrop) +end + +ActivateAI = function() + local buildings = Utils.Where(Map.ActorsInWorld, function(self) return self.Owner == USSR and self.HasProperty("StartBuildingRepairs") end) + Utils.Do(buildings, function(actor) + Trigger.OnDamaged(actor, function(building) + if building.Owner == USSR and building.Health < building.MaxHealth * 3/4 then + building.StartBuildingRepairs() + end + end) + end) + + ParadropDelay = ParadropDelays[Difficulty] + AttackGroupSize = AttackGroupSizes[Difficulty] + Trigger.AfterDelay(DateTime.Seconds(30), ProduceInfantry) + Trigger.AfterDelay(DateTime.Minutes(3), ProduceVehicles) + Trigger.AfterDelay(DateTime.Minutes(4), Paradrop) + Trigger.AfterDelay(DateTime.Minutes(5), ProduceAircraft) +end diff --git a/mods/ra/maps/fall-of-greece-2-evacuation/evacuation.lua b/mods/ra/maps/fall-of-greece-2-evacuation/evacuation.lua new file mode 100644 index 0000000000..3a319dc840 --- /dev/null +++ b/mods/ra/maps/fall-of-greece-2-evacuation/evacuation.lua @@ -0,0 +1,278 @@ +--[[ + Copyright 2007-2021 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. +]] +Difficulty = Map.LobbyOption("difficulty") +AlliedReinforcementsA = { "jeep", "jeep" } +AlliedReinforcementsB = { "e1", "e1", "e1", "e3", "e3" } +AlliedReinforcementsC = { "jeep", "mcv" } +IslandPatrol = { SubPatrol1.Location, SubPatrol2.Location, SubPatrol3.Location, SubPatrol4.Location } +Submarines = { Sub1, Sub2, Sub3, Sub4, Sub5, Sub6, Sub7, Sub8 } +RifleSquad = { Rifle1, Rifle2, Rifle3 } +NWVillageTrigger = { CPos.New(31, 64), CPos.New(32, 64), CPos.New(34, 51), CPos.New(35, 51), CPos.New(36, 51) } +SWVillageTrigger = { CPos.New(44, 97), CPos.New(45, 97), CPos.New(46, 97), CPos.New(47, 97) } +MiddleVillageTrigger = { CPos.New(52, 70), CPos.New(53, 70), CPos.New(54, 70) } +EastVillageTrigger = { CPos.New(78, 61), CPos.New(79, 61), CPos.New(80, 61), CPos.New(81, 61), CPos.New(82, 61) } +CivilianTypes = { "c2", "c3", "c4", "c5", "c6", "c8", "c9", "c10", "c11" } +NWVillage = { NWChurch, NWHouse1, NWHouse2, NWHouse3 } +SWVillage = { SWChurch, SWHouse1, SWHouse2, SWHouse3, SWHouse4 } +MiddleVillage = { MiddleChurch, MiddleHouse1, MiddleHouse2, MiddleHouse3, MiddleHouse4 } +EastVillage = { EastChurch, EastHouse1, EastHouse2, EastHouse3 } +IdleHunt = function(unit) if not unit.IsDead then Trigger.OnIdle(unit, unit.Hunt) end end + +MissionStart = function() + Reinforcements.Reinforce(Allies, AlliedReinforcementsA, { AlliedSpawn.Location, AlliedBase.Location }, 5) + Trigger.AfterDelay(DateTime.Seconds(2), function() + AlliesArrived = true + Reinforcements.Reinforce(Allies, AlliedReinforcementsB, { AlliedSpawn.Location, AlliedBase.Location }, 2) + Utils.Do(RifleSquad, function(actor) + if not actor.IsDead then + actor.AttackMove(AlliedBase.Location) + actor.Hunt() + end + end) + end) + + Sub1.Patrol(IslandPatrol, true, 1) + + Trigger.AfterDelay(DateTime.Seconds(5), function() + Reinforcements.Reinforce(Allies, AlliedReinforcementsC, { AlliedSpawn.Location, AlliedBase.Location }, 5) + end) + + Trigger.OnKilled(NWChurch, function() + if not NWChurchEmpty then + CiviliansKilled = CiviliansKilled + 5 + end + end) + Trigger.OnKilled(EastChurch, function() + if not EastChurchEmpty then + CiviliansKilled = CiviliansKilled + 5 + end + end) + Trigger.OnKilled(MiddleChurch, function() + if not MiddleChurchEmpty then + CiviliansKilled = CiviliansKilled + 5 + end + end) + Trigger.OnKilled(SWChurch, function() + if not SWChurchEmpty then + CiviliansKilled = CiviliansKilled + 5 + end + end) + + Trigger.OnAllKilled(Submarines, function() + Allies.MarkCompletedObjective(ClearWaterway) + end) +end + +VillageSetup = function() + local foot1Triggered + Trigger.OnEnteredFootprint(NWVillageTrigger, function(actor, id) + if actor.Owner == Allies and not foot1Triggered then + Trigger.RemoveFootprintTrigger(id) + foot1Triggered = true + + Utils.Do(NWVillage, function(building) + building.Owner = Allies + end) + + Civs1 = Reinforcements.Reinforce(Allies, Utils.Take(5, Utils.Shuffle(CivilianTypes)), { ChurchNorthwest.Location, VillageNorthwest.Location }, 0) + if not NWChurch.IsDead then + Utils.Do(Civs1, function(civ) + Trigger.OnKilled(civ, function() + CiviliansKilled = CiviliansKilled + 1 + end) + end) + NWChurchEmpty = true + end + end + + Trigger.AfterDelay(DateTime.Seconds(30), function() + local nwAttackers = Reinforcements.Reinforce(USSR, { "3tnk", "3tnk", "3tnk" }, { NWVillageAttack.Location, VillageNorthwest.Location }, 20) + Utils.Do(nwAttackers, IdleHunt) + end) + end) + + local foot2Triggered + Trigger.OnEnteredFootprint(EastVillageTrigger, function(actor, id) + if actor.Owner == Allies and not foot2Triggered then + Trigger.RemoveFootprintTrigger(id) + foot2Triggered = true + + Utils.Do(EastVillage, function(building) + building.Owner = Allies + end) + + Civs2 = Reinforcements.Reinforce(Allies, Utils.Take(5, Utils.Shuffle(CivilianTypes)), { ChurchEast.Location, VillageEast.Location }, 0) + if not EastChurch.IsDead then + Utils.Do(Civs2, function(civ) + Trigger.OnKilled(civ, function() + CiviliansKilled = CiviliansKilled + 1 + end) + end) + EastChurchEmpty = true + end + + local villageDrop = FlamerDrop.TargetParatroopers(VillageEast.CenterPosition, Angle.North) + Utils.Do(villageDrop, function(a) + Trigger.OnPassengerExited(a, function(t, p) + IdleHunt(p) + end) + end) + end + end) + + local foot3Triggered + Trigger.OnEnteredFootprint(MiddleVillageTrigger, function(actor, id) + if actor.Owner == Allies and not foot3Triggered then + Trigger.RemoveFootprintTrigger(id) + foot3Triggered = true + + Utils.Do(MiddleVillage, function(building) + building.Owner = Allies + end) + + Civs3 = Reinforcements.Reinforce(Allies, Utils.Take(5, Utils.Shuffle(CivilianTypes)), { ChurchMiddle.Location, VillageMiddle.Location }, 0) + if not MiddleChurch.IsDead then + Utils.Do(Civs3, function(civ) + Trigger.OnKilled(civ, function() + CiviliansKilled = CiviliansKilled + 1 + end) + end) + MiddleChurchEmpty = true + end + + local proxy = Actor.Create("powerproxy.parabombs", false, { Owner = USSR }) + proxy.TargetAirstrike(ChurchMiddle.CenterPosition, Angle.NorthWest) + end + end) + + local foot4Triggered + Trigger.OnEnteredFootprint(SWVillageTrigger, function(actor, id) + if actor.Owner == Allies and not foot4Triggered then + Trigger.RemoveFootprintTrigger(id) + foot4Triggered = true + + Utils.Do(SWVillage, function(building) + building.Owner = Allies + end) + + Civs4 = Reinforcements.Reinforce(Allies, Utils.Take(5, Utils.Shuffle(CivilianTypes)), { ChurchSouthwest.Location, VillageSouthwest.Location }, 0) + if not SWChurch.IsDead then + Utils.Do(Civs4, function(civ) + Trigger.OnKilled(civ, function() + CiviliansKilled = CiviliansKilled + 1 + end) + end) + SWChurchEmpty = true + end + end + + Trigger.AfterDelay(DateTime.Seconds(30), function() + local swAttackers = Reinforcements.Reinforce(USSR, { "3tnk", "3tnk", "3tnk", "ttnk", "e4", "e4", "e4" }, { SWVillageAttack.Location, VillageSouthwest.Location }, 20) + Utils.Do(swAttackers, IdleHunt) + end) + end) +end + +CiviliansEvacuatedThreshold = +{ + hard = 20, + normal = 15, + easy = 10 +} +CiviliansKilledThreshold = +{ + hard = 1, + normal = 6, + easy = 11 +} +CiviliansEvacuated = 0 +CiviliansKilled = 0 +EvacuateCivilians = function() + Trigger.OnInfiltrated(SafeHouse, function() + CiviliansEvacuated = CiviliansEvacuated + 1 + UserInterface.SetMissionText(CiviliansEvacuated .. "/" .. CiviliansEvacuatedThreshold .. " civilians evacuated.", TextColor) + end) + + Trigger.OnKilled(SafeHouse, function() + USSR.MarkCompletedObjective(SovietObj) + end) + + local enemyBase = Utils.Where(USSR.GetActors(), function(actor) + return + actor.HasProperty("Sell") and + actor.Type ~= "brik" + end) + + Trigger.OnAllKilled(enemyBase, function() + Media.PlaySoundNotification(Allies, "AlertBleep") + Media.DisplayMessage("Alfa Niner this is Pegasus. We are on site and ready to assist with the evacuation.", "Chinook pilot") + Reinforcements.Reinforce(Allies, { "tran" }, { ChinookEntry.Location, ChinookLZ.Location }) + end) +end + +Tick = function() + USSR.Cash = 10000 + if CiviliansEvacuated >= CiviliansEvacuatedThreshold then + Allies.MarkCompletedObjective(RescueCivilians) + end + + if CiviliansKilled >= CiviliansKilledThreshold then + Allies.MarkFailedObjective(RescueCivilians) + end + + if AlliesArrived and Allies.HasNoRequiredUnits() then + USSR.MarkCompletedObjective(SovietObj) + end +end + +WorldLoaded = function() + Allies = Player.GetPlayer("Allies") + USSR = Player.GetPlayer("USSR") + + Trigger.OnObjectiveAdded(Allies, function(p, id) + Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective") + end) + + if Map.LobbyOption("difficulty") == "easy" then + RescueCivilians = Allies.AddObjective("Evacuate at least half of the civilians to the island\nshelter.") + elseif Map.LobbyOption("difficulty") == "normal" then + RescueCivilians = Allies.AddObjective("Evacuate at least three quarters of the civilians to\nthe island shelter.") + else + RescueCivilians = Allies.AddObjective("Evacuate all civilians to the island shelter.") + end + + ClearWaterway = Allies.AddObjective("Clear the area of enemy submarine activity.", "Secondary", false) + SovietObj = USSR.AddObjective("Defeat Allies.") + + Trigger.OnObjectiveCompleted(Allies, function(p, id) + Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed") + end) + Trigger.OnObjectiveFailed(Allies, function(p, id) + Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed") + end) + + Trigger.OnPlayerLost(Allies, function() + Media.PlaySpeechNotification(Allies, "Lose") + end) + Trigger.OnPlayerWon(Allies, function() + Media.PlaySpeechNotification(Allies, "Win") + end) + + CiviliansEvacuatedThreshold = CiviliansEvacuatedThreshold[Difficulty] + CiviliansKilledThreshold = CiviliansKilledThreshold[Difficulty] + TextColor = Allies.Color + UserInterface.SetMissionText(CiviliansEvacuated .. "/" .. CiviliansEvacuatedThreshold .. " civilians evacuated.", TextColor) + StandardDrop = Actor.Create("paradrop", false, { Owner = USSR }) + FlamerDrop = Actor.Create("flamerdrop", false, { Owner = USSR }) + Camera.Position = DefaultCameraPosition.CenterPosition + MissionStart() + VillageSetup() + EvacuateCivilians() + ActivateAI() +end diff --git a/mods/ra/maps/fall-of-greece-2-evacuation/map.bin b/mods/ra/maps/fall-of-greece-2-evacuation/map.bin new file mode 100644 index 0000000000..dc9bb6f4f4 Binary files /dev/null and b/mods/ra/maps/fall-of-greece-2-evacuation/map.bin differ diff --git a/mods/ra/maps/fall-of-greece-2-evacuation/map.png b/mods/ra/maps/fall-of-greece-2-evacuation/map.png new file mode 100644 index 0000000000..29bfd56141 Binary files /dev/null and b/mods/ra/maps/fall-of-greece-2-evacuation/map.png differ diff --git a/mods/ra/maps/fall-of-greece-2-evacuation/map.yaml b/mods/ra/maps/fall-of-greece-2-evacuation/map.yaml new file mode 100644 index 0000000000..c9bb43b9d9 --- /dev/null +++ b/mods/ra/maps/fall-of-greece-2-evacuation/map.yaml @@ -0,0 +1,1046 @@ +MapFormat: 11 + +RequiresMod: ra + +Title: Fall of Greece 2: Evacuation + +Author: Westwood Studios + +Tileset: TEMPERAT + +MapSize: 128,128 + +Bounds: 29,23,70,82 + +Visibility: MissionSelector + +Categories: Mission + +LockPreview: True + +Players: + PlayerReference@Neutral: + Name: Neutral + OwnsWorld: True + NonCombatant: True + Faction: england + PlayerReference@England: + Name: England + Faction: allies + Color: A0F08C + Allies: Allies + Enemies: USSR + PlayerReference@Allies: + Name: Allies + AllowBots: False + Playable: True + Required: True + LockFaction: True + Faction: allies + LockColor: True + Color: ABB7E4 + LockSpawn: True + LockTeam: True + Allies: England + Enemies: USSR + PlayerReference@Greece: + Name: Greece + Faction: allies + Allies: England + Enemies: USSR + PlayerReference@USSR: + Name: USSR + Faction: soviet + Color: FF1400 + Enemies: Allies, England + +Actors: + Actor0: v16 + Location: 85,52 + Owner: Neutral + Actor1: v17 + Location: 86,52 + Owner: Neutral + Actor2: v16 + Location: 87,52 + Owner: Neutral + Actor3: v16 + Location: 36,54 + Owner: Neutral + Actor4: v17 + Location: 37,54 + Owner: Neutral + Actor5: v17 + Location: 38,54 + Owner: Neutral + Actor6: v18 + Location: 85,54 + Owner: Neutral + Actor7: v18 + Location: 86,54 + Owner: Neutral + Actor8: v17 + Location: 87,54 + Owner: Neutral + Actor9: v16 + Location: 36,55 + Owner: Neutral + Actor10: v15 + Location: 38,55 + Owner: Neutral + Actor11: brik + Location: 77,82 + Owner: USSR + Actor12: brik + Location: 78,82 + Owner: USSR + Actor13: brik + Location: 70,83 + Owner: USSR + Actor14: brik + Location: 71,83 + Owner: USSR + Actor15: brik + Location: 72,83 + Owner: USSR + Actor16: brik + Location: 73,83 + Owner: USSR + Actor17: brik + Location: 74,83 + Owner: USSR + Actor18: brik + Location: 75,83 + Owner: USSR + Actor19: brik + Location: 76,83 + Owner: USSR + Actor20: brik + Location: 77,83 + Owner: USSR + Actor21: brik + Location: 78,83 + Owner: USSR + Actor22: brik + Location: 79,83 + Owner: USSR + Actor23: brik + Location: 67,84 + Owner: USSR + Actor24: brik + Location: 68,84 + Owner: USSR + Actor25: brik + Location: 70,84 + Owner: USSR + Actor26: brik + Location: 78,84 + Owner: USSR + Actor27: brik + Location: 79,84 + Owner: USSR + Actor28: brik + Location: 67,85 + Owner: USSR + Actor29: brik + Location: 68,85 + Owner: USSR + Actor30: brik + Location: 69,85 + Owner: USSR + Actor31: brik + Location: 70,85 + Owner: USSR + Actor32: brik + Location: 87,87 + Owner: USSR + Actor33: brik + Location: 88,87 + Owner: USSR + Actor34: brik + Location: 86,88 + Owner: USSR + Actor35: brik + Location: 87,88 + Owner: USSR + Actor36: brik + Location: 88,88 + Owner: USSR + Actor37: brik + Location: 67,89 + Owner: USSR + Actor38: brik + Location: 68,89 + Owner: USSR + Actor39: brik + Location: 69,89 + Owner: USSR + Actor40: brik + Location: 86,89 + Owner: USSR + Actor41: brik + Location: 67,90 + Owner: USSR + Actor42: brik + Location: 69,90 + Owner: USSR + Actor43: brik + Location: 77,90 + Owner: USSR + Actor44: brik + Location: 78,90 + Owner: USSR + Actor45: brik + Location: 79,90 + Owner: USSR + Actor46: brik + Location: 80,90 + Owner: USSR + Actor47: brik + Location: 81,90 + Owner: USSR + Actor48: brik + Location: 82,90 + Owner: USSR + Actor49: brik + Location: 86,90 + Owner: USSR + Actor50: brik + Location: 67,91 + Owner: USSR + Actor51: brik + Location: 68,91 + Owner: USSR + Actor52: brik + Location: 69,91 + Owner: USSR + Actor53: brik + Location: 77,91 + Owner: USSR + Actor54: brik + Location: 82,91 + Owner: USSR + Actor55: brik + Location: 83,91 + Owner: USSR + Actor56: brik + Location: 84,91 + Owner: USSR + Actor57: brik + Location: 85,91 + Owner: USSR + Actor58: brik + Location: 86,91 + Owner: USSR + Actor59: brik + Location: 77,92 + Owner: USSR + Actor60: brik + Location: 78,92 + Owner: USSR + Actor61: brik + Location: 72,93 + Owner: USSR + Actor62: brik + Location: 73,93 + Owner: USSR + Actor63: brik + Location: 77,93 + Owner: USSR + Actor64: brik + Location: 78,93 + Owner: USSR + Actor65: brik + Location: 72,94 + Owner: USSR + Actor66: brik + Location: 73,94 + Owner: USSR + Actor67: brik + Location: 72,95 + Owner: USSR + Actor68: brik + Location: 72,96 + Owner: USSR + Actor69: brik + Location: 72,97 + Owner: USSR + Actor70: brik + Location: 73,97 + Owner: USSR + Actor71: brik + Location: 66,98 + Owner: USSR + Actor72: brik + Location: 67,98 + Owner: USSR + Actor73: brik + Location: 72,98 + Owner: USSR + Actor74: brik + Location: 73,98 + Owner: USSR + Actor75: brik + Location: 66,99 + Owner: USSR + Actor76: brik + Location: 67,99 + Owner: USSR + Actor77: brik + Location: 66,100 + Owner: USSR + Actor78: brik + Location: 66,101 + Owner: USSR + Actor79: brik + Location: 66,102 + Owner: USSR + Actor82: brik + Location: 66,103 + Owner: USSR + Actor83: brik + Location: 67,103 + Owner: USSR + Actor84: brik + Location: 66,104 + Owner: USSR + Actor85: brik + Location: 67,104 + Owner: USSR + Actor80: v16 + Location: 35,103 + Owner: Neutral + Actor81: v17 + Location: 36,103 + Owner: Neutral + Actor86: tc02 + Location: 81,29 + Owner: Neutral + Actor87: t17 + Location: 88,37 + Owner: Neutral + Actor88: tc01 + Location: 74,35 + Owner: Neutral + Actor89: t16 + Location: 74,36 + Owner: Neutral + Actor90: t16 + Location: 91,33 + Owner: Neutral + Actor91: mine + Location: 32,43 + Owner: Neutral + Actor92: mine + Location: 52,26 + Owner: Neutral + Actor93: tc03 + Location: 61,29 + Owner: Neutral + Actor94: tc02 + Location: 37,31 + Owner: Neutral + Actor95: t16 + Location: 30,25 + Owner: Neutral + Actor96: tc01 + Location: 52,29 + Owner: Neutral + Actor97: tc02 + Location: 88,50 + Owner: Neutral + Actor98: tc04 + Location: 80,49 + Owner: Neutral + Actor99: tc03 + Location: 74,51 + Owner: Neutral + Actor100: tc05 + Location: 74,54 + Owner: Neutral + Actor101: t01 + Location: 83,61 + Owner: Neutral + Actor102: tc02 + Location: 84,60 + Owner: Neutral + Actor103: tc03 + Location: 64,42 + Owner: Neutral + Actor104: tc04 + Location: 40,52 + Owner: Neutral + Actor105: tc03 + Location: 39,55 + Owner: Neutral + Actor106: tc02 + Location: 29,51 + Owner: Neutral + Actor107: tc01 + Location: 34,60 + Owner: Neutral + Actor108: t16 + Location: 29,56 + Owner: Neutral + Actor109: tc04 + Location: 84,64 + Owner: Neutral + Actor110: tc05 + Location: 79,66 + Owner: Neutral + Actor111: tc01 + Location: 75,67 + Owner: Neutral + Actor112: tc02 + Location: 74,73 + Owner: Neutral + Actor113: tc02 + Location: 97,60 + Owner: Neutral + Actor114: tc02 + Location: 33,97 + Owner: Neutral + Actor115: tc04 + Location: 38,94 + Owner: Neutral + Actor116: tc03 + Location: 32,94 + Owner: Neutral + Actor117: tc02 + Location: 42,96 + Owner: Neutral + Actor118: tc05 + Location: 41,103 + Owner: Neutral + Actor119: tc01 + Location: 32,103 + Owner: Neutral + Actor120: t15 + Location: 30,101 + Owner: Neutral + Actor121: mine + Location: 62,48 + Owner: Neutral + Actor122: mine + Location: 32,27 + Owner: Neutral + Actor123: mine + Location: 36,90 + Owner: Neutral + Actor124: tc02 + Location: 64,99 + Owner: Neutral + Actor125: tc02 + Location: 57,95 + Owner: Neutral + Actor126: t01 + Location: 55,101 + Owner: Neutral + Actor127: tc04 + Location: 55,69 + Owner: Neutral + Actor128: tc02 + Location: 57,70 + Owner: Neutral + Actor129: tc04 + Location: 61,72 + Owner: Neutral + Actor130: tc05 + Location: 60,74 + Owner: Neutral + Actor131: tc02 + Location: 49,79 + Owner: Neutral + Actor132: tc01 + Location: 49,75 + Owner: Neutral + Actor133: t17 + Location: 49,73 + Owner: Neutral + Actor134: t06 + Location: 50,77 + Owner: Neutral + Actor135: tc03 + Location: 50,70 + Owner: Neutral + Actor136: tc04 + Location: 55,79 + Owner: Neutral + Actor137: tc04 + Location: 61,77 + Owner: Neutral + Actor138: tc01 + Location: 58,79 + Owner: Neutral + Actor139: mine + Location: 33,85 + Owner: Neutral + Actor140: tc04 + Location: 36,80 + Owner: Neutral + Actor141: tc01 + Location: 33,79 + Owner: Neutral + Actor142: tc02 + Location: 29,93 + Owner: Neutral + Actor143: t07 + Location: 30,87 + Owner: Neutral + Actor144: tc02 + Location: 70,53 + Owner: Neutral + Actor145: tc01 + Location: 67,55 + Owner: Neutral + Actor146: tc03 + Location: 54,59 + Owner: Neutral + Actor147: tc02 + Location: 29,72 + Owner: Neutral + Actor148: tc01 + Location: 60,76 + Owner: Neutral + Actor149: mine + Location: 39,71 + Owner: Neutral + Actor150: t01 + Location: 63,29 + Owner: Neutral + Actor151: mine + Location: 31,42 + Owner: Neutral + Actor152: mine + Location: 35,25 + Owner: Neutral + Actor153: mine + Location: 56,25 + Owner: Neutral + Actor154: mine + Location: 69,59 + Owner: Neutral + Actor155: mine + Location: 80,72 + Owner: Neutral + Actor156: mine + Location: 53,101 + Owner: Neutral + Actor157: mine + Location: 51,96 + Owner: Neutral + SafeHouse: miss + Location: 84,31 + Owner: England + EastHouse1: v03 + Location: 77,53 + Owner: Greece + EastHouse3: v05 + Location: 82,56 + Owner: Greece + EastHouse2: v07 + Location: 77,57 + Owner: Greece + EastChurch: v01 + Location: 82,52 + Owner: Greece + SubPen1: spen + Location: 79,99 + Owner: USSR + SubPen2: spen + Location: 83,100 + Owner: USSR + NWChurch: v01 + Location: 32,55 + Owner: Greece + NWHouse2: v02 + Location: 33,57 + Owner: Greece + NWHouse1: v07 + Location: 29,59 + Owner: Greece + NWHouse3: v05 + Location: 33,60 + Owner: Greece + Actor169: tsla + Location: 76,82 + Owner: USSR + Actor170: fact + Location: 79,91 + Owner: USSR + Actor171: apwr + Location: 87,89 + Owner: USSR + Actor172: apwr + Location: 85,92 + Owner: USSR + Actor173: tsla + Location: 89,87 + Owner: USSR + USSRWarFactory: weap + Location: 74,84 + Owner: USSR + Actor175: ftur + Location: 80,83 + Owner: USSR + Actor176: ftur + Location: 86,86 + Owner: USSR + Actor177: silo + Location: 80,96 + Owner: USSR + Actor178: silo + Location: 81,96 + Owner: USSR + Actor179: silo + Location: 79,96 + Owner: USSR + Actor181: apwr + Location: 74,97 + Owner: USSR + Actor182: apwr + Location: 71,102 + Owner: USSR + USSRRax: barr + Location: 71,84 + Owner: USSR + Actor184: tsla + Location: 86,97 + Owner: USSR + Actor185: proc + Location: 69,93 + Owner: USSR + SWChurch: v01 + Location: 31,98 + Owner: Greece + SWHouse2: v03 + Location: 35,99 + Owner: Greece + SWHouse1: v04 + Location: 33,101 + Owner: Greece + SWHouse3: v07 + Location: 38,99 + Owner: Greece + SWHouse4: v09 + Location: 38,103 + Owner: Greece + Actor192: tsla + Location: 78,91 + Owner: USSR + Actor193: ftur + Location: 69,86 + Owner: USSR + Actor194: apwr + Location: 74,94 + Owner: USSR + Actor195: tsla + Location: 67,100 + Owner: USSR + Actor196: tsla + Location: 68,90 + Owner: USSR + Actor197: powr + Location: 83,93 + Owner: USSR + Actor198: apwr + Location: 68,102 + Owner: USSR + Actor199: ftur + Location: 67,95 + Owner: USSR + MiddleChurch: v01 + Location: 53,74 + Owner: Greece + MiddleHouse3: v02 + Location: 54,77 + Owner: Greece + MiddleHouse2: v05 + Location: 56,73 + Owner: Greece + MiddleHouse1: v04 + Location: 51,72 + Owner: Greece + MiddleHouse4: v07 + Location: 57,77 + Owner: Greece + Actor205: kenn + Location: 75,91 + Owner: USSR + Actor206: harv + Location: 70,97 + Owner: USSR + Facing: 380 + Actor207: 3tnk + Location: 78,86 + Owner: USSR + Facing: 636 + Actor208: 3tnk + Location: 75,87 + Owner: USSR + Facing: 380 + Actor209: v2rl + Location: 77,84 + Owner: USSR + Actor210: v2rl + Location: 67,101 + Owner: USSR + Facing: 252 + Actor211: v2rl + Location: 80,84 + Owner: USSR + Facing: 892 + Actor212: 3tnk + Location: 83,80 + Owner: USSR + Actor213: 3tnk + Location: 64,86 + Owner: USSR + Facing: 124 + Actor214: 3tnk + Location: 67,75 + Owner: USSR + Facing: 124 + Actor215: 3tnk + Location: 62,93 + Owner: USSR + Facing: 380 + Actor216: 3tnk + Location: 48,95 + Owner: USSR + Facing: 124 + Actor217: 3tnk + Location: 53,84 + Owner: USSR + Facing: 380 + Actor218: 3tnk + Location: 41,62 + Owner: USSR + Facing: 892 + Actor219: 3tnk + Location: 43,63 + Owner: USSR + Facing: 892 + Actor220: 3tnk + Location: 71,64 + Owner: USSR + Facing: 380 + Actor221: e1 + Location: 71,86 + Owner: USSR + Facing: 380 + SubCell: 0 + Actor222: e1 + Location: 70,87 + Owner: USSR + Facing: 508 + SubCell: 2 + Actor223: e1 + Location: 71,87 + Owner: USSR + Facing: 636 + SubCell: 0 + Actor224: e2 + Location: 72,86 + Owner: USSR + Facing: 636 + SubCell: 3 + Actor225: e2 + Location: 72,87 + Owner: USSR + Facing: 508 + SubCell: 0 + Actor226: e2 + Location: 84,82 + Owner: USSR + Facing: 892 + SubCell: 2 + Actor227: e1 + Location: 83,81 + Owner: USSR + Facing: 764 + SubCell: 4 + Actor228: e4 + Location: 82,81 + Owner: USSR + SubCell: 4 + Actor229: e4 + Location: 65,93 + Owner: USSR + Facing: 252 + SubCell: 4 + Actor230: e4 + Location: 65,94 + Owner: USSR + Facing: 380 + SubCell: 3 + Actor231: e1 + Location: 68,75 + Owner: USSR + Facing: 764 + SubCell: 2 + Actor232: e1 + Location: 69,76 + Owner: USSR + Facing: 636 + SubCell: 3 + Actor233: e1 + Location: 67,76 + Owner: USSR + Facing: 380 + SubCell: 0 + Actor234: e1 + Location: 54,83 + Owner: USSR + Facing: 380 + SubCell: 4 + Actor235: e1 + Location: 53,85 + Owner: USSR + Facing: 636 + SubCell: 3 + Actor236: e4 + Location: 52,83 + Owner: USSR + Facing: 380 + SubCell: 4 + Actor237: e4 + Location: 46,95 + Owner: USSR + SubCell: 4 + Actor238: e1 + Location: 49,94 + Owner: USSR + Facing: 380 + SubCell: 4 + Actor239: e1 + Location: 45,95 + Owner: USSR + Facing: 124 + SubCell: 2 + Actor240: e1 + Location: 65,85 + Owner: USSR + SubCell: 2 + Actor241: e2 + Location: 63,92 + Owner: USSR + SubCell: 4 + Actor242: e2 + Location: 66,86 + Owner: USSR + SubCell: 3 + Actor243: dog + Location: 69,76 + Owner: USSR + Facing: 636 + SubCell: 2 + Actor244: e2 + Location: 46,56 + Owner: USSR + SubCell: 4 + Actor245: e2 + Location: 47,57 + Owner: USSR + SubCell: 2 + Actor246: e1 + Location: 62,49 + Owner: USSR + SubCell: 4 + Rifle1: e1 + Location: 52,50 + Owner: USSR + SubCell: 3 + Rifle2: e1 + Location: 51,51 + Owner: USSR + SubCell: 2 + Rifle3: e1 + Location: 51,50 + Owner: USSR + SubCell: 3 + Actor250: e2 + Location: 68,79 + Owner: USSR + SubCell: 3 + Actor251: e1 + Location: 67,80 + Owner: USSR + SubCell: 1 + Actor252: e1 + Location: 72,63 + Owner: USSR + Facing: 892 + SubCell: 4 + Actor253: e1 + Location: 72,66 + Owner: USSR + Facing: 380 + SubCell: 2 + Actor254: e4 + Location: 75,64 + Owner: USSR + Facing: 380 + SubCell: 2 + Actor255: e1 + Location: 53,67 + Owner: USSR + Facing: 892 + SubCell: 1 + Actor256: e1 + Location: 51,67 + Owner: USSR + Facing: 252 + SubCell: 1 + Actor257: e2 + Location: 52,67 + Owner: USSR + Facing: 508 + SubCell: 3 + Sub7: ss + Location: 82,100 + Owner: USSR + Facing: 508 + Sub8: ss + Location: 77,104 + Owner: USSR + Facing: 764 + Sub5: ss + Location: 88,99 + Owner: USSR + Facing: 892 + Sub3: ss + Location: 89,75 + Owner: USSR + Facing: 764 + Sub4: ss + Location: 95,87 + Owner: USSR + Sub2: ss + Location: 92,60 + Owner: USSR + Facing: 892 + Sub1: ss + Location: 85,44 + Owner: USSR + Facing: 252 + Sub6: ss + Location: 89,102 + Owner: USSR + Facing: 892 + Actor318: sam + Owner: USSR + Location: 73,92 + TurretFacing: 368 + Actor319: sam + Owner: USSR + Location: 83,92 + TurretFacing: 368 + Actor320: sam + Owner: USSR + Location: 78,85 + TurretFacing: 368 + Actor327: camera + Owner: Allies + Location: 83,32 + Actor328: dome + Owner: USSR + Location: 80,87 + Actor329: powr + Owner: USSR + Location: 77,94 + Actor330: dog + Owner: USSR + Location: 54,84 + SubCell: 3 + Facing: 368 + Actor331: dog + Owner: USSR + Location: 47,95 + SubCell: 3 + Facing: 368 + Actor332: dog + Owner: USSR + Location: 74,65 + SubCell: 3 + Facing: 368 + Airfield: afld + Owner: USSR + Location: 83,89 + DefaultCameraPosition: waypoint + Location: 45,26 + Owner: Neutral + ChurchEast: waypoint + Location: 82,53 + Owner: Neutral + VillageEast: waypoint + Location: 80,55 + Owner: Neutral + ChurchNorthwest: waypoint + Location: 32,56 + Owner: Neutral + VillageNorthwest: waypoint + Location: 31,58 + Owner: Neutral + ChurchSouthwest: waypoint + Location: 31,99 + Owner: Neutral + VillageSouthwest: waypoint + Location: 35,101 + Owner: Neutral + ChurchMiddle: waypoint + Location: 53,75 + Owner: Neutral + VillageMiddle: waypoint + Location: 56,76 + Owner: Neutral + AlliedSpawn: waypoint + Owner: Neutral + Location: 45,23 + AlliedBase: waypoint + Location: 45,33 + Owner: Neutral + SWVillageAttack: waypoint + Owner: Neutral + Location: 29,101 + NWVillageAttack: waypoint + Owner: Neutral + Location: 29,79 + ChinookEntry: waypoint + Owner: Neutral + Location: 83,23 + ChinookLZ: waypoint + Location: 80,32 + Owner: Neutral + AttackRight: waypoint + Location: 68,76 + Owner: Neutral + AttackLeft: waypoint + Location: 45,77 + Owner: Neutral + ParaLZ1: waypoint + Location: 33,26 + Owner: Neutral + ParaLZ2: waypoint + Location: 32,42 + Owner: Neutral + ParaLZ3: waypoint + Location: 61,36 + Owner: Neutral + ParaLZ4: waypoint + Location: 60,50 + Owner: Neutral + SubPatrol1: waypoint + Location: 71,41 + Owner: Neutral + SubPatrol2: waypoint + Location: 69,26 + Owner: Neutral + SubPatrol3: waypoint + Location: 95,25 + Owner: Neutral + SubPatrol4: waypoint + Location: 93,44 + Owner: Neutral + +Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml diff --git a/mods/ra/maps/fall-of-greece-2-evacuation/rules.yaml b/mods/ra/maps/fall-of-greece-2-evacuation/rules.yaml new file mode 100644 index 0000000000..9864804293 --- /dev/null +++ b/mods/ra/maps/fall-of-greece-2-evacuation/rules.yaml @@ -0,0 +1,107 @@ +Player: + PlayerResources: + DefaultCash: 3500 + +World: + LuaScript: + Scripts: campaign-global.lua, evacuation.lua, evacuation-AI.lua + MissionData: + WinVideo: allymorf.vqa + LossVideo: snstrafe.vqa + Briefing: Soviet forces are moving into rural Athens, threatening the civilian population. Evacuate civilians from each of the four towns to the island in the northeast. \n\nThe civilians are hiding in the town churches, and will only come out when you enter the town. Get in, get them out of the town, and to the island.\n\nThe civilians are your primary objective here -- removing the Soviet threat is optional. + ScriptLobbyDropdown@difficulty: + ID: difficulty + Label: Difficulty + Values: + easy: Easy + normal: Normal + hard: Hard + Default: easy + +PARADROP: + ParatroopersPower: + DropItems: E1, E1, E1, E2, E2 + AlwaysVisible: + +FLAMERDROP: + ParatroopersPower: + DropItems: E2, E2, E4, E4, E4 + AlwaysVisible: + +^CivInfantry: + Infiltrates: + Types: CivilianEntry + ValidRelationships: Ally + +TECN: + -Infiltrates: + +TECN2: + -Infiltrates: + +GNRL: + -Infiltrates: + +MISS: + Targetable: + TargetTypes: GroundActor, C4, DetonateAttack, Structure, CivilianEntry + +QTNK: + Buildable: + Prerequisites: ~disabled + +ATEK: + Buildable: + Prerequisites: ~disabled + +STEK: + Buildable: + Prerequisites: ~disabled + +E7: + Buildable: + Prerequisites: ~disabled + +E7.noautotarget: + Buildable: + Prerequisites: ~disabled + +PDOX: + Buildable: + Prerequisites: ~disabled + +MSLO: + Buildable: + Prerequisites: ~disabled + +MCV: + Buildable: + Prerequisites: ~disabled + +TRUK: + Buildable: + Prerequisites: ~disabled + +MRJ: + Buildable: + Prerequisites: ~disabled + +HPAD: + Buildable: + Prerequisites: ~disabled + +TTNK: + Buildable: + Prerequisites: ~disabled + +CA: + Buildable: + Prerequisites: ~disabled + +GAP: + Buildable: + Prerequisites: ~disabled + +3TNK: + Buildable: + Prerequisites: ~vehicles.soviet diff --git a/mods/ra/missions.yaml b/mods/ra/missions.yaml index 067a104625..d706088760 100644 --- a/mods/ra/missions.yaml +++ b/mods/ra/missions.yaml @@ -35,6 +35,7 @@ Counterstrike Allied Missions: sarin-gas-2-down-under sarin-gas-3-controlled-burn fall-of-greece-1-personal-war + fall-of-greece-2-evacuation siberian-conflict-1-fresh-tracks siberian-conflict-3-wasteland Counterstrike Soviet Missions: