diff --git a/mods/ra/maps/sarin-gas-1-crackdown/crackdown-AI.lua b/mods/ra/maps/sarin-gas-1-crackdown/crackdown-AI.lua new file mode 100644 index 0000000000..0d4d3d2539 --- /dev/null +++ b/mods/ra/maps/sarin-gas-1-crackdown/crackdown-AI.lua @@ -0,0 +1,118 @@ +--[[ + Copyright 2007-2018 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. +]] +IdlingUnits = { } +AttackGroup = { } +AttackGroupSize = 10 +BGAttackGroup = { } +BGAttackGroupSize = 8 +SovietInfantry = { "e1", "e2", "e4" } +SovietVehicles = { "ttnk", "3tnk", "3tnk", "v2rl" } +ProductionInterval = +{ + easy = DateTime.Seconds(25), + normal = DateTime.Seconds(15), + hard = DateTime.Seconds(5) +} + +GroundAttackUnits = { { "ttnk", "ttnk", "e2", "e2", "e2" }, { "3tnk", "v2rl", "e4", "e4", "e4" } } +GroundAttackPaths = +{ + { EscapeSouth5.Location, Patrol1.Location }, + { EscapeNorth10.Location, EscapeNorth7.Location } +} +GroundWavesDelays = +{ + easy = 4, + normal = 3, + hard = 2 +} + +IdleHunt = function(unit) if not unit.IsDead then Trigger.OnIdle(unit, unit.Hunt) end end + +SendBGAttackGroup = function() + if #BGAttackGroup < BGAttackGroupSize then + return + end + + Utils.Do(BGAttackGroup, function(unit) + if not unit.IsDead then + Trigger.OnIdle(unit, unit.Hunt) + end + end) + + BGAttackGroup = { } +end + +ProduceBadGuyInfantry = function() + if BadGuyRax.IsDead or BadGuyRax.Owner ~= badguy then + return + end + + badguy.Build({ Utils.Random(SovietInfantry) }, function(units) + table.insert(BGAttackGroup, units[1]) + SendBGAttackGroup() + Trigger.AfterDelay(ProductionInterval[Map.LobbyOption("difficulty")], ProduceBadGuyInfantry) + end) +end + +SendAttackGroup = function() + if #AttackGroup < AttackGroupSize then + return + end + + Utils.Do(AttackGroup, function(unit) + if not unit.IsDead then + Trigger.OnIdle(unit, unit.Hunt) + end + end) + + AttackGroup = { } +end + +ProduceUSSRInfantry = 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")], ProduceUSSRInfantry) + 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 + +GroundWaves = function() + Reinforcements.Reinforce(ussr, Utils.Random(GroundAttackUnits), Utils.Random(GroundAttackPaths), 0, function(unit) + unit.Hunt() + end) + + Trigger.AfterDelay(DateTime.Minutes(GroundWavesDelays), GroundWaves) +end + +ActivateAI = function() + local difficulty = Map.LobbyOption("difficulty") + GroundWavesDelays = GroundWavesDelays[difficulty] + + ProduceBadGuyInfantry() + ProduceUSSRInfantry() + Trigger.AfterDelay(DateTime.Minutes(1), ProduceVehicles) + Trigger.AfterDelay(DateTime.Minutes(4), GroundWaves) +end diff --git a/mods/ra/maps/sarin-gas-1-crackdown/crackdown.lua b/mods/ra/maps/sarin-gas-1-crackdown/crackdown.lua new file mode 100644 index 0000000000..eecd8e3d7a --- /dev/null +++ b/mods/ra/maps/sarin-gas-1-crackdown/crackdown.lua @@ -0,0 +1,198 @@ +--[[ + Copyright 2007-2018 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. +]] +MammothPath = { Patrol1.Location, Patrol2.Location, Patrol3.Location, Patrol4.Location } +ConvoyTrucks = { Truck1, Truck2, Truck3, Truck4, Truck5, IntroTruck1, IntroTruck2 } +IntroTrucks = { IntroTruck1, IntroTruck2 } +TruckEscapeNorth = { EscapeNorth1, EscapeNorth2, EscapeNorth3, EscapeNorth4, EscapeNorth5, EscapeNorth6, EscapeNorth7, EscapeNorth8, EscapeNorth9, EscapeNorth10 } +TruckEscapeSouth = { EscapeSouth1, EscapeSouth2, EscapeSouth3, EscapeSouth4, EscapeSouth5 } +SovAttackStart = { StartTank, StartRifle1, StartRifle2, StartRifle3, StartRifle4 } +SovAttackStart2 = { StartRifle5, StartRifle6, StartGren } +RunAway = { IntroTruck2, StartRifle3, StartRifle4 } +GreeceRifles = { GreeceRifle1, GreeceRifle2, GreeceRifle3, GreeceRifle4, GreeceRifle5 } +CombatTeam1 = { "mnly", "spy", "spy", "mcv" } +CombatTeam2 = +{ + easy = { "2tnk", "2tnk", "2tnk", "e3", "e3", "e3" }, + normal = { "e3", "e3", "e3", "2tnk", "1tnk" }, + hard = { "e3", "e3", "e3", "1tnk" } +} + +SetupTriggers = function() + Trigger.OnInfiltrated(RadarDome, function() + greece.MarkCompletedObjective(objRadarSpy) + Actor.Create("camera", true, { Owner = greece, Location = Cam1.Location }) + Actor.Create("camera", true, { Owner = greece, Location = Cam2.Location }) + Actor.Create("camera", true, { Owner = greece, Location = Cam3.Location }) + Actor.Create("camera", true, { Owner = greece, Location = Cam4.Location }) + end) + + Trigger.OnKilled(RadarDome, function() + if not greece.IsObjectiveCompleted(objRadarSpy) then + greece.MarkFailedObjective(objRadarSpy) + end + end) + + Trigger.OnAllKilled(ConvoyTrucks, function() + greece.MarkCompletedObjective(objDestroyAllTrucks) + end) + + Trigger.OnEnteredFootprint({ TruckEscapeCenter.Location }, function(actor, triggerlose1) + if actor.Owner == ussr and actor.Type == "truk" then + Trigger.RemoveProximityTrigger(triggerlose1) + actor.Destroy() + greece.MarkFailedObjective(objDestroyAllTrucks) + end + end) + + Trigger.OnEnteredFootprint({ EscapeNorth10.Location }, function(actor, triggerlose2) + if actor.Owner == ussr and actor.Type == "truk" then + Trigger.RemoveProximityTrigger(triggerlose2) + actor.Destroy() + greece.MarkFailedObjective(objDestroyAllTrucks) + end + end) + + Trigger.OnEnteredFootprint({ EscapeSouth5.Location }, function(actor, triggerlose3) + if actor.Owner == ussr and actor.Type == "truk" then + Trigger.RemoveProximityTrigger(triggerlose3) + actor.Destroy() + greece.MarkFailedObjective(objDestroyAllTrucks) + end + end) +end + +MissionStart = function() + Trigger.AfterDelay(DateTime.Seconds(1), function() + Reinforcements.Reinforce(greece, CombatTeam1, { TruckEscapeCenter.Location, DefaultCameraPosition.Location }) + local StartCamera = Actor.Create("camera", true, { Owner = greece, Location = DefaultCameraPosition.Location }) + Trigger.AfterDelay(DateTime.Seconds(10), function() + StartCamera.Destroy() + end) + end) + + Utils.Do(GreeceRifles, function(actor) + actor.Move(DefaultCameraPosition.Location) + end) + + Utils.Do(SovAttackStart, function(actor) + actor.AttackMove(DefaultCameraPosition.Location) + end) + + Utils.Do(IntroTrucks, function(truck) + truck.Move(TruckEscapeCenter.Location) + end) + + Trigger.AfterDelay(DateTime.Seconds(3), function() + Utils.Do(RunAway, function(actor) + if actor.IsDead then + return + else + actor.Stop() + actor.Move(Cam4.Location) + end + end) + end) + + Trigger.AfterDelay(DateTime.Seconds(10), function() + Utils.Do(SovAttackStart2, function(actor) + if actor.IsDead then + return + else + actor.AttackMove(DefaultCameraPosition.Location) + end + end) + end) + + Trigger.AfterDelay(DateTime.Minutes(1), function() + local difficulty = Map.LobbyOption("difficulty") + CombatTeam2 = CombatTeam2[difficulty] + Reinforcements.Reinforce(greece, CombatTeam2, { TruckEscapeCenter.Location, DefaultCameraPosition.Location }) + Media.PlaySpeechNotification(greece, "ReinforcementsArrived") + end) +end + +SendPatrol = function(mammoth) + mammoth.Patrol(MammothPath, true, 20) +end + +MoveTruckNorth = function(truck) + if truck.IsDead then + return + else + Media.DisplayMessage("Convoy truck attempting to escape!") + Media.PlaySoundNotification(greece, "AlertBleep") + Utils.Do(TruckEscapeNorth, function(waypoint) + truck.Move(waypoint.Location) + end) + end +end + +MoveTruckSouth = function(truck) + if truck.IsDead then + return + else + Media.DisplayMessage("Convoy truck attempting to escape!") + Media.PlaySoundNotification(greece, "AlertBleep") + Utils.Do(TruckEscapeSouth, function(waypoint) + truck.Move(waypoint.Location) + end) + end +end + +Tick = function() + ussr.Cash = 5000 + badguy.Cash = 5000 + + if ussr.HasNoRequiredUnits() and badguy.HasNoRequiredUnits() then + greece.MarkCompletedObjective(objKillAll) + end +end + +WorldLoaded = function() + greece = Player.GetPlayer("Greece") + ussr = Player.GetPlayer("USSR") + badguy = Player.GetPlayer("BadGuy") + + Trigger.OnObjectiveAdded(greece, function(p, id) + Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective") + end) + + objDestroyAllTrucks = greece.AddPrimaryObjective("Prevent Soviet convoy trucks from escaping.") + objKillAll = greece.AddPrimaryObjective("Clear the sector of all Soviet presence.") + objRadarSpy = greece.AddSecondaryObjective("Infiltrate the Soviet Radar Dome to reveal truck \necape routes.") + ussrObj = ussr.AddPrimaryObjective("Deny the Allies.") + + Trigger.OnObjectiveCompleted(greece, function(p, id) + Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed") + end) + Trigger.OnObjectiveFailed(greece, function(p, id) + Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed") + end) + + Trigger.OnPlayerLost(greece, function() + Media.PlaySpeechNotification(player, "Lose") + end) + Trigger.OnPlayerWon(greece, function() + Media.PlaySpeechNotification(player, "Win") + end) + + ActivateAI() + SetupTriggers() + MissionStart() + + Camera.Position = DefaultCameraPosition.CenterPosition + + Trigger.AfterDelay(DateTime.Minutes(5), function() SendPatrol(PatrolMammoth) end) + Trigger.AfterDelay(DateTime.Minutes(5), function() MoveTruckNorth(Truck1) end) + Trigger.AfterDelay(DateTime.Minutes(9), function() MoveTruckNorth(Truck2) end) + Trigger.AfterDelay(DateTime.Minutes(12), function() MoveTruckSouth(Truck3) end) + Trigger.AfterDelay(DateTime.Minutes(15), function() MoveTruckNorth(Truck4) end) + Trigger.AfterDelay(DateTime.Minutes(17), function() MoveTruckSouth(Truck5) end) + Trigger.AfterDelay(DateTime.Minutes(18), function() MoveTruckSouth(IntroTruck2) end) +end diff --git a/mods/ra/maps/sarin-gas-1-crackdown/map.bin b/mods/ra/maps/sarin-gas-1-crackdown/map.bin new file mode 100644 index 0000000000..dee5a4f99b Binary files /dev/null and b/mods/ra/maps/sarin-gas-1-crackdown/map.bin differ diff --git a/mods/ra/maps/sarin-gas-1-crackdown/map.png b/mods/ra/maps/sarin-gas-1-crackdown/map.png new file mode 100644 index 0000000000..29bfd56141 Binary files /dev/null and b/mods/ra/maps/sarin-gas-1-crackdown/map.png differ diff --git a/mods/ra/maps/sarin-gas-1-crackdown/map.yaml b/mods/ra/maps/sarin-gas-1-crackdown/map.yaml new file mode 100644 index 0000000000..e3c749e338 --- /dev/null +++ b/mods/ra/maps/sarin-gas-1-crackdown/map.yaml @@ -0,0 +1,1008 @@ +MapFormat: 11 + +RequiresMod: ra + +Title: Sarin Gas 1: Crackdown + +Author: Westwood Studios + +Tileset: TEMPERAT + +MapSize: 128,128 + +Bounds: 16,34,65,62 + +Visibility: MissionSelector + +Categories: Mission + +LockPreview: True + +Players: + PlayerReference@Neutral: + Name: Neutral + OwnsWorld: True + NonCombatant: True + Faction: allies + PlayerReference@Creeps: + Name: Creeps + NonCombatant: True + Faction: england + PlayerReference@USSR: + Name: USSR + Faction: soviet + Color: FF1400 + Allies: Ukraine, Turkey, BadGuy + Enemies: Greece + PlayerReference@BadGuy: + Name: BadGuy + Faction: soviet + Color: FF1400 + Allies: USSR, Ukraine, Turkey + Enemies: Greece + PlayerReference@Ukraine: + Name: Ukraine + Faction: soviet + Color: FFE695 + Allies: USSR, Turkey, BadGuy + Enemies: Greece + PlayerReference@Greece: + Name: Greece + AllowBots: False + Playable: True + Required: True + LockFaction: True + Faction: allies + LockColor: True + Color: ABB7E4 + LockSpawn: True + LockTeam: True + Enemies: USSR, BadGuy, Ukraine, Turkey + PlayerReference@Turkey: + Name: Turkey + Faction: soviet + Color: D2997D + Allies: USSR, Ukraine, BadGuy + Enemies: Greece + +Actors: + Actor0: brik + Location: 55,49 + Owner: USSR + Actor1: brik + Location: 56,49 + Owner: USSR + Actor2: brik + Location: 57,49 + Owner: USSR + Actor3: brik + Location: 58,49 + Owner: USSR + Actor4: brik + Location: 59,49 + Owner: USSR + Actor5: brik + Location: 63,49 + Owner: USSR + Actor6: brik + Location: 64,49 + Owner: USSR + Actor7: brik + Location: 65,49 + Owner: USSR + Actor8: brik + Location: 66,49 + Owner: USSR + Actor9: brik + Location: 67,49 + Owner: USSR + Actor10: brik + Location: 68,49 + Owner: USSR + Actor11: brik + Location: 54,50 + Owner: USSR + Actor12: brik + Location: 55,50 + Owner: USSR + Actor13: brik + Location: 56,50 + Owner: USSR + Actor14: brik + Location: 58,50 + Owner: USSR + Actor15: brik + Location: 59,50 + Owner: USSR + Actor16: brik + Location: 63,50 + Owner: USSR + Actor17: brik + Location: 64,50 + Owner: USSR + Actor18: brik + Location: 67,50 + Owner: USSR + Actor19: brik + Location: 68,50 + Owner: USSR + Actor20: brik + Location: 54,51 + Owner: USSR + Actor21: brik + Location: 55,51 + Owner: USSR + Actor22: brik + Location: 54,52 + Owner: USSR + Actor23: brik + Location: 54,53 + Owner: USSR + Actor24: brik + Location: 55,53 + Owner: USSR + Actor25: brik + Location: 54,54 + Owner: USSR + Actor26: brik + Location: 55,54 + Owner: USSR + Actor27: brik + Location: 54,58 + Owner: USSR + Actor28: brik + Location: 55,58 + Owner: USSR + Actor29: brik + Location: 54,59 + Owner: USSR + Actor30: brik + Location: 55,59 + Owner: USSR + Actor31: brik + Location: 54,60 + Owner: USSR + Actor32: brik + Location: 54,61 + Owner: USSR + Actor33: brik + Location: 54,62 + Owner: USSR + Actor34: brik + Location: 55,62 + Owner: USSR + Actor35: brik + Location: 54,63 + Owner: USSR + Actor36: brik + Location: 55,63 + Owner: USSR + Actor37: brik + Location: 63,66 + Owner: USSR + Actor38: brik + Location: 64,66 + Owner: USSR + Actor39: brik + Location: 55,67 + Owner: USSR + Actor40: brik + Location: 56,67 + Owner: USSR + Actor41: brik + Location: 58,67 + Owner: USSR + Actor42: brik + Location: 59,67 + Owner: USSR + Actor43: brik + Location: 63,67 + Owner: USSR + Actor44: brik + Location: 64,67 + Owner: USSR + Actor45: brik + Location: 55,68 + Owner: USSR + Actor46: brik + Location: 56,68 + Owner: USSR + Actor47: brik + Location: 57,68 + Owner: USSR + Actor48: brik + Location: 58,68 + Owner: USSR + Actor49: brik + Location: 59,68 + Owner: USSR + Actor50: brik + Location: 69,69 + Owner: USSR + Actor51: brik + Location: 70,69 + Owner: USSR + Actor52: brik + Location: 71,69 + Owner: USSR + Actor53: brik + Location: 69,70 + Owner: USSR + Actor54: brik + Location: 70,70 + Owner: USSR + Actor55: brik + Location: 71,70 + Owner: USSR + Actor56: brik + Location: 54,78 + Owner: BadGuy + Actor57: brik + Location: 55,78 + Owner: BadGuy + Actor58: brik + Location: 61,78 + Owner: BadGuy + Actor59: brik + Location: 62,78 + Owner: BadGuy + Actor60: brik + Location: 63,78 + Owner: BadGuy + Actor61: brik + Location: 64,78 + Owner: BadGuy + Actor62: brik + Location: 65,78 + Owner: BadGuy + Actor63: brik + Location: 66,78 + Owner: BadGuy + Actor64: brik + Location: 54,79 + Owner: BadGuy + Actor65: brik + Location: 55,79 + Owner: BadGuy + Actor66: brik + Location: 61,79 + Owner: BadGuy + Actor67: brik + Location: 62,79 + Owner: BadGuy + Actor68: brik + Location: 65,79 + Owner: BadGuy + Actor69: brik + Location: 66,79 + Owner: BadGuy + Actor70: brik + Location: 54,80 + Owner: BadGuy + Actor71: brik + Location: 54,81 + Owner: BadGuy + Actor72: brik + Location: 54,82 + Owner: BadGuy + Actor73: brik + Location: 55,82 + Owner: BadGuy + Actor74: brik + Location: 54,83 + Owner: BadGuy + Actor75: brik + Location: 55,83 + Owner: BadGuy + Actor76: tc02 + Location: 51,66 + Owner: Neutral + Actor77: tc04 + Location: 49,63 + Owner: Neutral + Actor78: tc01 + Location: 73,67 + Owner: Neutral + Actor79: tc01 + Location: 66,76 + Owner: Neutral + Actor80: tc04 + Location: 53,68 + Owner: Neutral + Actor81: t01 + Location: 24,40 + Owner: Neutral + Actor82: tc05 + Location: 17,33 + Owner: Neutral + Actor83: tc02 + Location: 51,85 + Owner: Neutral + Actor84: tc04 + Location: 34,45 + Owner: Neutral + Actor85: tc02 + Location: 33,48 + Owner: Neutral + Actor86: t16 + Location: 36,50 + Owner: Neutral + Actor87: t01 + Location: 25,93 + Owner: Neutral + Actor88: tc01 + Location: 23,89 + Owner: Neutral + Actor89: t16 + Location: 32,79 + Owner: Neutral + Actor90: tc02 + Location: 29,47 + Owner: Neutral + Actor91: t01 + Location: 19,72 + Owner: Neutral + Actor92: tc04 + Location: 37,64 + Owner: Neutral + Actor93: tc03 + Location: 36,53 + Owner: Neutral + Actor94: t01 + Location: 49,46 + Owner: Neutral + Actor95: tc02 + Location: 66,43 + Owner: Neutral + Actor96: tc01 + Location: 58,86 + Owner: Neutral + Actor97: tc05 + Location: 35,33 + Owner: Neutral + Actor98: tc04 + Location: 17,45 + Owner: Neutral + Actor99: tc02 + Location: 45,86 + Owner: Neutral + Actor100: tc04 + Location: 44,34 + Owner: Neutral + Actor101: tc03 + Location: 41,77 + Owner: Neutral + Actor102: t05 + Location: 51,37 + Owner: Neutral + Actor103: t06 + Location: 48,44 + Owner: Neutral + Actor104: t01 + Location: 39,88 + Owner: Neutral + Actor105: tc02 + Location: 33,84 + Owner: Neutral + Actor106: t03 + Location: 35,66 + Owner: Neutral + Actor107: t11 + Location: 32,43 + Owner: Neutral + Actor108: tc01 + Location: 48,68 + Owner: Neutral + Actor109: t01 + Location: 77,33 + Owner: Neutral + Actor110: tc04 + Location: 79,81 + Owner: Neutral + Actor111: tc01 + Location: 79,84 + Owner: Neutral + Actor112: tc04 + Location: 60,34 + Owner: Neutral + Actor113: tc02 + Location: 58,34 + Owner: Neutral + Actor114: t01 + Location: 50,43 + Owner: Neutral + Actor115: mine + Location: 30,79 + Owner: Neutral + Actor116: mine + Location: 26,76 + Owner: Neutral + Actor117: mine + Location: 17,51 + Owner: Neutral + Actor118: mine + Location: 29,52 + Owner: Neutral + Actor119: mine + Location: 22,93 + Owner: Neutral + Actor120: mine + Location: 24,92 + Owner: Neutral + Actor121: tc01 + Location: 71,46 + Owner: Neutral + Actor122: t16 + Location: 73,42 + Owner: Neutral + Actor123: t13 + Location: 76,40 + Owner: Neutral + Actor124: t01 + Location: 76,64 + Owner: Neutral + USSRRax: barr + Location: 57,58 + Owner: USSR + Actor126: apwr + Location: 72,63 + Owner: USSR + Actor127: powr + Location: 65,50 + Owner: USSR + Actor128: tsla + Location: 55,60 + Owner: USSR + USSRWarFactory: weap + Location: 56,51 + Owner: USSR + Actor130: kenn + Location: 57,84 + Owner: BadGuy + BadGuyRax: barr + Location: 61,80 + Owner: BadGuy + Actor132: ftur + Location: 59,79 + Owner: BadGuy + Actor133: bio + Location: 62,84 + Owner: BadGuy + Actor134: bio + Location: 59,84 + Owner: BadGuy + Actor135: bio + Location: 64,59 + Owner: USSR + Actor136: powr + Location: 65,83 + Owner: BadGuy + Actor137: tsla + Location: 57,67 + Owner: USSR + Actor138: fact + Location: 56,62 + Owner: USSR + Actor139: powr + Location: 71,66 + Owner: USSR + Actor140: powr + Location: 69,64 + Owner: USSR + Actor141: ftur + Location: 62,52 + Owner: USSR + Actor142: ftur + Location: 63,64 + Owner: USSR + Actor143: v02 + Location: 41,41 + Owner: Ukraine + Actor144: v03 + Location: 48,42 + Owner: Ukraine + Actor145: v04 + Location: 50,36 + Owner: Ukraine + Actor146: v05 + Location: 46,36 + Owner: Ukraine + Actor147: v07 + Location: 42,37 + Owner: Ukraine + Actor148: v08 + Location: 46,41 + Owner: Ukraine + Actor149: v10 + Location: 56,40 + Owner: Ukraine + Actor150: apwr + Location: 65,62 + Owner: USSR + Actor151: tsla + Location: 60,55 + Owner: USSR + Actor152: spen + Location: 69,54 + Owner: USSR + Actor153: brl3 + Location: 58,43 + Owner: USSR + Actor154: barl + Location: 59,42 + Owner: USSR + Actor155: v19 + Location: 59,43 + Owner: Neutral + Actor156: brl3 + Location: 52,42 + Owner: USSR + Actor157: v19 + Location: 51,42 + Owner: Neutral + Actor158: powr + Location: 64,80 + Owner: BadGuy + Actor159: minv + Location: 29,56 + Owner: Greece + Actor160: minv + Location: 28,57 + Owner: Greece + Actor161: minv + Location: 29,58 + Owner: Greece + Actor162: minv + Location: 27,56 + Owner: Greece + Actor163: minv + Location: 27,58 + Owner: Greece + RadarDome: dome + Location: 74,35 + Owner: Turkey + Truck4: truk + Location: 67,59 + Owner: USSR + Facing: 223 + Truck2: truk + Location: 65,58 + Owner: USSR + Facing: 31 + IntroTruck1: truk + Location: 33,57 + Owner: USSR + Facing: 63 + Truck1: truk + Location: 62,59 + Owner: USSR + Facing: 31 + IntroTruck2: truk + Location: 33,59 + Owner: USSR + Facing: 63 + Truck3: truk + Location: 62,83 + Owner: USSR + Facing: 223 + Actor171: v2rl + Location: 55,61 + Owner: USSR + Facing: 63 + Actor172: v2rl + Location: 70,68 + Owner: USSR + Facing: 159 + Actor173: 3tnk + Location: 58,54 + Owner: USSR + Facing: 159 + Actor174: 3tnk + Location: 60,47 + Owner: USSR + Facing: 31 + Actor175: 3tnk + Location: 63,68 + Owner: USSR + Facing: 127 + Actor176: 3tnk + Location: 52,53 + Owner: USSR + Facing: 63 + Actor177: 3tnk + Location: 45,70 + Owner: USSR + Facing: 95 + Actor178: 3tnk + Location: 59,69 + Owner: USSR + Facing: 127 + Actor179: v2rl + Location: 48,59 + Owner: BadGuy + Facing: 63 + Actor180: v2rl + Location: 55,81 + Owner: USSR + Facing: 31 + PatrolMammoth: 4tnk + Location: 20,86 + Owner: BadGuy + Actor182: ttnk + Location: 64,55 + Owner: USSR + Facing: 95 + Actor183: 3tnk + Location: 75,43 + Owner: USSR + Facing: 31 + StartTank: 3tnk + Location: 31,58 + Owner: BadGuy + Facing: 63 + StartRifle1: e1 + Location: 33,58 + Owner: BadGuy + SubCell: 2 + StartRifle2: e1 + Location: 33,58 + Owner: BadGuy + SubCell: 3 + StartRifle3: e1 + Location: 33,60 + Owner: BadGuy + SubCell: 3 + StartRifle4: e1 + Location: 33,60 + Owner: BadGuy + SubCell: 2 + StartRifle5: e1 + Location: 23,44 + Owner: USSR + Facing: 159 + SubCell: 4 + StartRifle6: e1 + Location: 24,73 + Owner: BadGuy + SubCell: 4 + StartGren: e2 + Location: 26,73 + Owner: BadGuy + SubCell: 3 + Truck5: truk + Location: 59,83 + Owner: USSR + Facing: 31 + Actor186: e1 + Location: 57,60 + Owner: USSR + SubCell: 0 + Actor187: e1 + Location: 58,60 + Owner: USSR + SubCell: 3 + Actor188: e1 + Location: 52,56 + Owner: USSR + SubCell: 1 + Actor189: e1 + Location: 61,47 + Owner: USSR + SubCell: 2 + Actor190: e2 + Location: 63,47 + Owner: USSR + SubCell: 1 + Actor191: e2 + Location: 62,46 + Owner: USSR + SubCell: 2 + Actor192: e2 + Location: 59,60 + Owner: USSR + SubCell: 0 + Actor193: e2 + Location: 60,70 + Owner: USSR + SubCell: 1 + Actor194: e2 + Location: 61,70 + Owner: USSR + SubCell: 0 + Actor195: e1 + Location: 63,70 + Owner: USSR + SubCell: 3 + Actor196: e1 + Location: 61,82 + Owner: BadGuy + SubCell: 3 + Actor197: e1 + Location: 62,82 + Owner: BadGuy + SubCell: 3 + Actor198: e2 + Location: 60,82 + Owner: BadGuy + SubCell: 2 + Actor199: e2 + Location: 63,82 + Owner: BadGuy + Facing: 159 + SubCell: 1 + Actor200: e4 + Location: 58,78 + Owner: BadGuy + SubCell: 2 + Actor201: e1 + Location: 56,77 + Owner: BadGuy + Facing: 95 + SubCell: 0 + Actor202: e1 + Location: 57,76 + Owner: BadGuy + Facing: 191 + SubCell: 2 + Actor203: e2 + Location: 60,77 + Owner: BadGuy + SubCell: 1 + Actor204: e2 + Location: 59,76 + Owner: BadGuy + SubCell: 0 + Actor207: e2 + Location: 45,60 + Owner: BadGuy + Facing: 95 + SubCell: 2 + Actor208: e2 + Location: 46,57 + Owner: BadGuy + Facing: 63 + SubCell: 3 + Actor209: e1 + Location: 52,60 + Owner: USSR + SubCell: 1 + Actor210: e1 + Location: 44,82 + Owner: USSR + Facing: 159 + SubCell: 0 + Actor211: e1 + Location: 46,83 + Owner: USSR + Facing: 63 + SubCell: 2 + Actor212: c1 + Location: 43,41 + Owner: Ukraine + SubCell: 2 + Actor213: c2 + Location: 46,38 + Owner: Ukraine + SubCell: 0 + Actor214: c3 + Location: 49,41 + Owner: Ukraine + SubCell: 4 + Actor215: c4 + Location: 41,37 + Owner: Ukraine + SubCell: 0 + Actor216: c4 + Location: 50,38 + Owner: Ukraine + SubCell: 3 + Actor217: c5 + Location: 47,42 + Owner: Ukraine + SubCell: 3 + Actor218: c6 + Location: 45,41 + Owner: Ukraine + SubCell: 3 + Actor219: c8 + Location: 49,37 + Owner: Ukraine + SubCell: 1 + Actor220: e1 + Location: 64,57 + Owner: USSR + SubCell: 3 + Actor221: e1 + Location: 63,58 + Owner: USSR + SubCell: 2 + Actor224: dog + Location: 49,55 + Owner: USSR + Facing: 95 + SubCell: 3 + Actor225: e2 + Location: 48,57 + Owner: USSR + Facing: 31 + SubCell: 2 + Actor226: e2 + Location: 50,58 + Owner: USSR + Facing: 159 + SubCell: 2 + Actor227: e2 + Location: 50,55 + Owner: USSR + Facing: 95 + SubCell: 1 + Actor231: e1 + Location: 72,36 + Owner: USSR + Facing: 63 + SubCell: 3 + Actor232: e1 + Location: 72,37 + Owner: USSR + Facing: 95 + SubCell: 3 + Actor233: dog + Location: 73,38 + Owner: USSR + Facing: 95 + SubCell: 1 + Actor234: dog + Location: 75,41 + Owner: USSR + Facing: 95 + SubCell: 3 + Actor235: ss + Location: 72,56 + Owner: Turkey + Facing: 191 + Actor236: ss + Location: 74,52 + Owner: Turkey + Facing: 159 + Actor237: ss + Location: 74,89 + Owner: Turkey + Facing: 63 + Actor238: ss + Location: 70,93 + Owner: Turkey + Facing: 31 + Actor239: ss + Location: 47,92 + Owner: Turkey + Facing: 191 + Actor240: ss + Location: 70,81 + Owner: Turkey + Facing: 159 + Actor241: ss + Location: 55,94 + Owner: Turkey + Facing: 159 + Actor242: ss + Location: 78,48 + Owner: Turkey + Facing: 95 + Actor243: ss + Location: 75,60 + Owner: Turkey + Facing: 159 + Actor320: apwr + Owner: Turkey + Location: 86,41 + GreeceRifle1: e1 + Owner: Greece + Location: 16,57 + SubCell: 3 + Facing: 191 + GreeceRifle2: e1 + Owner: Greece + Location: 16,57 + SubCell: 1 + Facing: 191 + GreeceRifle3: e1 + Owner: Greece + Location: 16,57 + SubCell: 2 + Facing: 191 + GreeceRifle4: e1 + Owner: Greece + Location: 16,57 + SubCell: 4 + Facing: 191 + GreeceRifle5: e1 + Owner: Greece + Location: 16,57 + SubCell: 5 + Facing: 191 + AttackSouth1: waypoint + Location: 61,75 + Owner: Neutral + AttackCenterMobilize: waypoint + Location: 61,56 + Owner: Neutral + AttackCenter: waypoint + Location: 46,59 + Owner: Neutral + TruckEscapeCenter: waypoint + Owner: Neutral + Location: 16,57 + EscapeSouth2: waypoint + Location: 54,75 + Owner: Neutral + EscapeSouth3: waypoint + Location: 41,83 + Owner: Neutral + EscapeSouth4: waypoint + Location: 34,90 + Owner: Neutral + EscapeSouth5: waypoint + Location: 34,95 + Owner: Neutral + EscapeNorth1: waypoint + Location: 61,46 + Owner: Neutral + EscapeNorth2: waypoint + Location: 58,46 + Owner: Neutral + EscapeNorth3: waypoint + Location: 52,40 + Owner: Neutral + EscapeNorth4: waypoint + Location: 43,40 + Owner: Neutral + EscapeNorth5: waypoint + Location: 41,38 + Owner: Neutral + EscapeNorth6: waypoint + Location: 27,38 + Owner: Neutral + EscapeNorth7: waypoint + Location: 27,43 + Owner: Neutral + EscapeNorth8: waypoint + Location: 20,43 + Owner: Neutral + EscapeNorth9: waypoint + Location: 20,38 + Owner: Neutral + EscapeNorth10: waypoint + Location: 16,38 + Owner: Neutral + EscapeSouth1: waypoint + Location: 58,75 + Owner: Neutral + Patrol4: waypoint + Location: 19,86 + Owner: Neutral + Patrol1: waypoint + Location: 25,73 + Owner: Neutral + Patrol2: waypoint + Location: 39,78 + Owner: Neutral + Patrol3: waypoint + Location: 33,88 + Owner: Neutral + Cam1: waypoint + Owner: Neutral + Location: 24,42 + Cam2: waypoint + Owner: Neutral + Location: 36,87 + Cam3: waypoint + Owner: Neutral + Location: 61,83 + Cam4: waypoint + Owner: Neutral + Location: 63,59 + DefaultCameraPosition: waypoint + Owner: Neutral + Location: 24,58 + +Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml diff --git a/mods/ra/maps/sarin-gas-1-crackdown/rules.yaml b/mods/ra/maps/sarin-gas-1-crackdown/rules.yaml new file mode 100644 index 0000000000..361de00fa2 --- /dev/null +++ b/mods/ra/maps/sarin-gas-1-crackdown/rules.yaml @@ -0,0 +1,119 @@ +World: + LuaScript: + Scripts: crackdown.lua, crackdown-AI.lua + MissionData: + Briefing: A Soviet convoy of Sarin nerve gas has stopped at a riverside outpost for refuelling. This is a perfect opportunity to destroy the Sarin shipment, and remove the Soviet threat in the area.\n\nUse your forces to destroy the convoy trucks and the base. It is imperative that none of the convoy trucks escape.\n\nThe Soviets keep their convoy information in their radar center. If a spy was to infiltrate the facility, it may help us locate the convoy escape routes. + WinVideo: allymorf.vqa + ScriptLobbyDropdown@difficulty: + ID: difficulty + Label: Difficulty + Values: + easy: Easy + normal: Normal + hard: Hard + Default: easy + +Player: + PlayerResources: + DefaultCash: 5000 + +APC: + Buildable: + Prerequisites: ~vehicles.allies + +E3: + Buildable: + Prerequisites: ~infantry.allies + +3TNK: + Buildable: + Prerequisites: ~vehicles.soviet + +V2RL: + Buildable: + Prerequisites: ~vehicles.soviet + +TTNK: + Buildable: + Prerequisites: tsla, ~vehicles.soviet + +2TNK: + Buildable: + Prerequisites: ~disabled + +ARTY: + Buildable: + Prerequisites: ~disabled + +MRJ: + Buildable: + Prerequisites: ~disabled + +THF: + Buildable: + Prerequisites: ~disabled + +MSUB: + Buildable: + Prerequisites: ~disabled + +CA: + Buildable: + Prerequisites: ~disabled + +ATEK: + Buildable: + Prerequisites: ~disabled + +APWR: + Buildable: + Prerequisites: ~disabled + +GAP: + Buildable: + Prerequisites: ~disabled + +PDOX: + Buildable: + Prerequisites: ~disabled + +MSLO: + Buildable: + Prerequisites: ~disabled + +AGUN: + Buildable: + Prerequisites: ~disabled + +HPAD: + Buildable: + Prerequisites: ~disabled + +TRUK: + Buildable: + Prerequisites: ~disabled + -SpawnActorOnDeath: + +MGG: + Buildable: + Prerequisites: ~disabled + +FTRK: + Buildable: + Prerequisites: ~disabled + +CTNK: + Buildable: + Prerequisites: ~disabled + +STNK: + Buildable: + Prerequisites: ~disabled + +E7: + Buildable: + Prerequisites: ~disabled + +SS: + AutoTarget: + InitialStanceAI: AttackAnything diff --git a/mods/ra/missions.yaml b/mods/ra/missions.yaml index 645baee65e..7e1051de8c 100644 --- a/mods/ra/missions.yaml +++ b/mods/ra/missions.yaml @@ -23,6 +23,7 @@ Soviet Campaign: ./mods/ra/maps/soviet-07 ./mods/ra/maps/soviet-08a Counterstrike: + ./mods/ra/maps/sarin-gas-1-crackdown ./mods/ra/maps/soviet-soldier-volkov-n-chitzkoi Aftermath: ./mods/ra/maps/monster-tank-madness