diff --git a/mods/ra/maps/siberian-conflict-3-wasteland/map.bin b/mods/ra/maps/siberian-conflict-3-wasteland/map.bin new file mode 100644 index 0000000000..72202c32ac Binary files /dev/null and b/mods/ra/maps/siberian-conflict-3-wasteland/map.bin differ diff --git a/mods/ra/maps/siberian-conflict-3-wasteland/map.png b/mods/ra/maps/siberian-conflict-3-wasteland/map.png new file mode 100644 index 0000000000..29bfd56141 Binary files /dev/null and b/mods/ra/maps/siberian-conflict-3-wasteland/map.png differ diff --git a/mods/ra/maps/siberian-conflict-3-wasteland/map.yaml b/mods/ra/maps/siberian-conflict-3-wasteland/map.yaml new file mode 100644 index 0000000000..63300330c8 --- /dev/null +++ b/mods/ra/maps/siberian-conflict-3-wasteland/map.yaml @@ -0,0 +1,1018 @@ +MapFormat: 11 + +RequiresMod: ra + +Title: Siberian Conflict 3: Wasteland + +Author: Westwood Studios + +Tileset: SNOW + +MapSize: 128,128 + +Bounds: 17,16,78,84 + +Visibility: MissionSelector + +Categories: Mission + +LockPreview: True + +Players: + PlayerReference@Neutral: + Name: Neutral + OwnsWorld: True + NonCombatant: True + Faction: allies + PlayerReference@USSR: + Name: USSR + Faction: soviet + Color: FF1400 + Allies: BadGuy + Enemies: USSR, Allies + PlayerReference@BadGuy: + Name: BadGuy + Faction: soviet + Color: FF1400 + Allies: USSR + Enemies: BadGuy, Allies + PlayerReference@Allies: + Name: Allies + AllowBots: False + Playable: True + Required: True + LockFaction: True + Faction: allies + LockColor: True + Color: ABB7E4 + LockSpawn: True + LockTeam: True + Enemies: USSR, BadGuy + +Actors: + Actor1: brik + Location: 41,73 + Owner: USSR + Actor2: brik + Location: 42,73 + Owner: USSR + Actor3: brik + Location: 43,73 + Owner: USSR + Actor4: brik + Location: 44,73 + Owner: USSR + Actor5: brik + Location: 45,73 + Owner: USSR + Actor6: brik + Location: 57,73 + Owner: USSR + Actor7: brik + Location: 58,73 + Owner: USSR + Actor8: brik + Location: 59,73 + Owner: USSR + Actor9: brik + Location: 60,73 + Owner: USSR + Actor10: brik + Location: 66,73 + Owner: USSR + Actor11: brik + Location: 67,73 + Owner: USSR + Actor12: brik + Location: 71,73 + Owner: USSR + Actor13: brik + Location: 72,73 + Owner: USSR + Actor14: brik + Location: 73,73 + Owner: USSR + Actor15: brik + Location: 24,74 + Owner: USSR + Actor16: brik + Location: 25,74 + Owner: USSR + Actor17: brik + Location: 26,74 + Owner: USSR + Actor18: brik + Location: 27,74 + Owner: USSR + Actor19: brik + Location: 28,74 + Owner: USSR + Actor20: brik + Location: 34,74 + Owner: USSR + Actor21: brik + Location: 35,74 + Owner: USSR + Actor22: brik + Location: 36,74 + Owner: USSR + Actor23: brik + Location: 37,74 + Owner: USSR + Actor24: brik + Location: 41,74 + Owner: USSR + Actor25: brik + Location: 42,74 + Owner: USSR + Actor26: brik + Location: 44,74 + Owner: USSR + Actor27: brik + Location: 45,74 + Owner: USSR + Actor28: brik + Location: 54,74 + Owner: USSR + Actor29: brik + Location: 55,74 + Owner: USSR + Actor30: brik + Location: 56,74 + Owner: USSR + Actor31: brik + Location: 57,74 + Owner: USSR + Actor32: brik + Location: 59,74 + Owner: USSR + Actor33: brik + Location: 60,74 + Owner: USSR + Actor34: brik + Location: 66,74 + Owner: USSR + Actor35: brik + Location: 67,74 + Owner: USSR + Actor36: brik + Location: 68,74 + Owner: USSR + Actor37: brik + Location: 69,74 + Owner: USSR + Actor38: brik + Location: 70,74 + Owner: USSR + Actor39: brik + Location: 71,74 + Owner: USSR + Actor40: brik + Location: 73,74 + Owner: USSR + Actor41: brik + Location: 74,74 + Owner: USSR + Actor42: brik + Location: 75,74 + Owner: USSR + Actor43: brik + Location: 76,74 + Owner: USSR + Actor44: brik + Location: 77,74 + Owner: USSR + Actor45: brik + Location: 78,74 + Owner: USSR + Actor46: brik + Location: 79,74 + Owner: USSR + Actor47: brik + Location: 80,74 + Owner: USSR + Actor48: brik + Location: 24,75 + Owner: USSR + Actor49: brik + Location: 25,75 + Owner: USSR + Actor50: brik + Location: 26,75 + Owner: USSR + Actor51: brik + Location: 27,75 + Owner: USSR + Actor52: brik + Location: 28,75 + Owner: USSR + Actor53: brik + Location: 34,75 + Owner: USSR + Actor54: brik + Location: 35,75 + Owner: USSR + Actor55: brik + Location: 37,75 + Owner: USSR + Actor56: brik + Location: 38,75 + Owner: USSR + Actor57: brik + Location: 39,75 + Owner: USSR + Actor58: brik + Location: 40,75 + Owner: USSR + Actor59: brik + Location: 41,75 + Owner: USSR + Actor60: brik + Location: 50,75 + Owner: USSR + Actor61: brik + Location: 51,75 + Owner: USSR + Actor62: brik + Location: 52,75 + Owner: USSR + Actor63: brik + Location: 53,75 + Owner: USSR + Actor64: brik + Location: 54,75 + Owner: USSR + Actor65: brik + Location: 79,75 + Owner: USSR + Actor66: brik + Location: 80,75 + Owner: USSR + Actor67: brik + Location: 50,76 + Owner: USSR + Actor68: brik + Location: 51,76 + Owner: USSR + Actor69: brik + Location: 81,78 + Owner: USSR + Actor70: brik + Location: 82,78 + Owner: USSR + Actor71: brik + Location: 83,78 + Owner: USSR + Actor72: brik + Location: 84,78 + Owner: USSR + Actor73: brik + Location: 85,78 + Owner: USSR + Actor74: brik + Location: 86,78 + Owner: USSR + Actor75: brik + Location: 87,78 + Owner: USSR + Actor76: brik + Location: 88,78 + Owner: USSR + Actor77: brik + Location: 89,78 + Owner: USSR + Actor78: brik + Location: 81,79 + Owner: USSR + Actor79: brik + Location: 82,79 + Owner: USSR + Actor80: brik + Location: 88,79 + Owner: USSR + Actor81: brik + Location: 89,79 + Owner: USSR + Actor82: brik + Location: 89,80 + Owner: USSR + Actor83: brik + Location: 89,81 + Owner: USSR + Actor84: brik + Location: 89,82 + Owner: USSR + Actor85: brik + Location: 89,83 + Owner: USSR + Actor86: brik + Location: 88,84 + Owner: USSR + Actor87: brik + Location: 89,84 + Owner: USSR + Actor88: brik + Location: 88,85 + Owner: USSR + Actor89: brik + Location: 89,85 + Owner: USSR + Actor90: tc01 + Location: 76,72 + Owner: Neutral + Actor91: tc02 + Location: 93,73 + Owner: Neutral + Actor92: mine + Location: 28,95 + Owner: Neutral + Actor93: tc03 + Location: 17,72 + Owner: Neutral + Actor94: tc01 + Location: 50,73 + Owner: Neutral + Actor95: mine + Location: 83,62 + Owner: Neutral + Actor96: mine + Location: 22,67 + Owner: Neutral + Actor97: t01 + Location: 24,23 + Owner: Neutral + Actor98: tc03 + Location: 77,16 + Owner: Neutral + Actor99: tc02 + Location: 81,16 + Owner: Neutral + Actor100: t03 + Location: 48,19 + Owner: Neutral + Actor101: t10 + Location: 66,27 + Owner: Neutral + Actor102: t10 + Location: 52,56 + Owner: Neutral + Actor103: tc05 + Location: 30,55 + Owner: Neutral + Actor104: t11 + Location: 46,43 + Owner: Neutral + Actor105: tc03 + Location: 54,65 + Owner: Neutral + Actor106: tc02 + Location: 64,57 + Owner: Neutral + Actor107: t17 + Location: 76,39 + Owner: Neutral + Actor108: t12 + Location: 42,46 + Owner: Neutral + Actor109: t13 + Location: 37,61 + Owner: Neutral + Actor110: tc05 + Location: 92,16 + Owner: Neutral + Actor111: tc03 + Location: 90,28 + Owner: Neutral + Actor112: t11 + Location: 35,16 + Owner: Neutral + Actor113: t10 + Location: 29,15 + Owner: Neutral + Actor114: t07 + Location: 17,31 + Owner: Neutral + Actor115: mine + Location: 88,59 + Owner: Neutral + Actor116: tc01 + Location: 73,32 + Owner: Neutral + Actor117: tc02 + Location: 66,43 + Owner: Neutral + Actor118: t14 + Location: 77,48 + Owner: Neutral + Actor119: t08 + Location: 78,34 + Owner: Neutral + Actor120: tc02 + Location: 46,77 + Owner: Neutral + Actor121: tc04 + Location: 69,36 + Owner: Neutral + Actor122: tc03 + Location: 74,61 + Owner: Neutral + Actor123: t16 + Location: 74,62 + Owner: Neutral + Actor124: tc03 + Location: 17,90 + Owner: Neutral + Actor125: mine + Location: 80,26 + Owner: Neutral + Actor126: mine + Location: 76,24 + Owner: Neutral + Actor127: mine + Location: 87,27 + Owner: Neutral + Actor128: mine + Location: 86,57 + Owner: Neutral + Actor129: mine + Location: 90,53 + Owner: Neutral + Actor130: t01 + Location: 81,73 + Owner: Neutral + Actor131: tc02 + Location: 83,76 + Owner: Neutral + Actor132: tc03 + Location: 72,88 + Owner: Neutral + Actor133: t16 + Location: 72,89 + Owner: Neutral + Actor134: t01 + Location: 17,74 + Owner: Neutral + Actor135: t02 + Location: 19,76 + Owner: Neutral + Actor136: t03 + Location: 19,79 + Owner: Neutral + Actor137: t06 + Location: 22,77 + Owner: Neutral + Actor138: t07 + Location: 21,82 + Owner: Neutral + Actor139: fact + Location: 68,80 + Owner: USSR + Actor140: proc + Location: 83,83 + Owner: USSR + Actor141: apwr + Location: 75,79 + Owner: USSR + Actor142: apwr + Location: 77,82 + Owner: USSR + Actor143: apwr + Location: 75,76 + Owner: USSR + USSRWarFactory: weap + Location: 58,76 + Owner: USSR + Actor145: ftur + Location: 64,80 + Owner: USSR + Actor146: sam + Location: 73,82 + Owner: USSR + Actor147: stek + Location: 59,81 + Owner: USSR + USSRBarracks: barr + Location: 66,76 + Owner: USSR + Actor149: kenn + Location: 66,81 + Owner: USSR + Actor150: tsla + Location: 62,81 + Owner: USSR + Actor151: tsla + Location: 78,75 + Owner: USSR + Actor152: ftur + Location: 76,84 + Owner: USSR + Actor153: ftur + Location: 64,76 + Owner: USSR + Actor154: silo + Location: 87,82 + Owner: USSR + Actor155: silo + Location: 86,81 + Owner: USSR + ForwardCommandUSSR: fcom + Location: 83,79 + Owner: USSR + Actor157: silo + Location: 86,79 + Owner: USSR + Actor158: silo + Location: 87,80 + Owner: USSR + Actor159: tsla + Location: 72,82 + Owner: USSR + Actor160: apwr + Location: 55,81 + Owner: USSR + Actor161: apwr + Location: 53,78 + Owner: USSR + Actor162: apwr + Location: 50,78 + Owner: USSR + Actor163: ftur + Location: 58,86 + Owner: USSR + Actor164: ftur + Location: 52,82 + Owner: USSR + Actor165: ftur + Location: 67,84 + Owner: USSR + Actor166: tsla + Location: 72,74 + Owner: USSR + Actor167: tsla + Location: 58,74 + Owner: USSR + Actor168: sam + Location: 53,82 + Owner: USSR + Actor169: sam + Location: 54,76 + Owner: USSR + Actor170: tsla + Location: 28,78 + Owner: BadGuy + Actor171: tsla + Location: 36,75 + Owner: BadGuy + BadGuyWarFactory: weap + Location: 35,76 + Owner: BadGuy + BadGuyRax: barr + Location: 29,78 + Owner: BadGuy + Airfield1: afld + Location: 41,76 + Owner: BadGuy + Airfield2: afld + Location: 40,78 + Owner: BadGuy + Actor176: apwr + Location: 26,84 + Owner: BadGuy + Actor177: apwr + Location: 25,77 + Owner: BadGuy + Actor178: kenn + Location: 35,82 + Owner: BadGuy + Actor179: apwr + Location: 23,85 + Owner: BadGuy + Actor180: apwr + Location: 24,81 + Owner: BadGuy + Actor181: proc + Location: 39,84 + Owner: BadGuy + Actor182: sam + Location: 27,81 + Owner: BadGuy + Facing: 892 + Actor183: sam + Location: 39,76 + Owner: BadGuy + Facing: 124 + Actor184: ftur + Location: 39,89 + Owner: BadGuy + Actor185: ftur + Location: 21,88 + Owner: BadGuy + Actor186: sam + Location: 62,85 + Owner: USSR + Actor187: sam + Location: 84,82 + Owner: USSR + Actor188: sam + Location: 71,76 + Owner: USSR + ForwardCommandBG: fcom + Location: 37,81 + Owner: BadGuy + Actor190: silo + Location: 43,86 + Owner: BadGuy + Actor191: silo + Location: 43,85 + Owner: BadGuy + Actor192: silo + Location: 44,87 + Owner: BadGuy + Actor193: ftur + Location: 31,75 + Owner: BadGuy + Actor194: apwr + Location: 71,78 + Owner: USSR + Actor195: tsla + Location: 32,81 + Owner: BadGuy + Actor196: powr + Location: 49,81 + Owner: USSR + Actor197: v19 + Location: 71,42 + Owner: USSR + Actor198: v19 + Location: 73,42 + Owner: USSR + PumpJack: v19 + Location: 72,43 + Owner: USSR + Actor200: v19 + Location: 71,44 + Owner: USSR + Actor201: v19 + Location: 73,44 + Owner: USSR + Actor202: brl3 + Location: 72,42 + Owner: USSR + Actor203: brl3 + Location: 71,43 + Owner: USSR + MoneyBarrel: brl3 + Location: 72,44 + Owner: USSR + Actor205: barl + Location: 73,43 + Owner: USSR + Actor206: proc + Location: 54,84 + Owner: USSR + Actor207: brl3 + Location: 77,54 + Owner: USSR + Actor208: barl + Location: 76,54 + Owner: USSR + Actor209: v19 + Location: 76,53 + Owner: Neutral + Actor210: v19 + Location: 74,64 + Owner: Neutral + Actor211: brl3 + Location: 75,64 + Owner: USSR + Actor212: barl + Location: 76,64 + Owner: USSR + Actor213: barl + Location: 75,63 + Owner: USSR + Actor214: v19 + Location: 77,68 + Owner: Neutral + Actor215: brl3 + Location: 76,68 + Owner: USSR + Actor216: barl + Location: 78,68 + Owner: USSR + Actor217: barl + Location: 77,69 + Owner: USSR + Actor218: v19 + Location: 76,90 + Owner: Neutral + Actor219: brl3 + Location: 77,90 + Owner: USSR + Actor220: barl + Location: 75,91 + Owner: USSR + Actor221: barl + Location: 78,90 + Owner: USSR + Actor222: brl3 + Location: 76,91 + Owner: USSR + Actor223: v19 + Location: 70,89 + Owner: USSR + Actor224: v19 + Location: 71,88 + Owner: USSR + Actor225: v19 + Location: 73,87 + Owner: USSR + Actor226: brl3 + Location: 74,87 + Owner: USSR + Actor227: barl + Location: 75,87 + Owner: USSR + Actor228: brl3 + Location: 73,86 + Owner: USSR + Actor229: barl + Location: 72,87 + Owner: USSR + Actor230: brl3 + Location: 71,87 + Owner: USSR + Actor231: barl + Location: 70,88 + Owner: USSR + Actor232: brl3 + Location: 71,89 + Owner: USSR + Actor233: barl + Location: 69,89 + Owner: USSR + Actor234: fact + Location: 41,80 + Owner: BadGuy + Actor235: v2rl + Location: 87,79 + Owner: USSR + Facing: 892 + Actor236: v2rl + Location: 70,75 + Owner: USSR + Facing: 892 + Actor239: mcv + Location: 21,20 + Owner: Allies + Facing: 636 + StartV2: v2rl + Location: 41,35 + Owner: USSR + Facing: 124 + Actor241: jeep + Location: 23,20 + Owner: Allies + Facing: 636 + Actor242: jeep + Location: 21,22 + Owner: Allies + Facing: 636 + Actor243: arty + Location: 19,18 + Owner: Allies + Facing: 636 + Actor244: 3tnk + Location: 23,88 + Owner: BadGuy + Facing: 380 + Actor245: v2rl + Location: 43,74 + Owner: BadGuy + Facing: 124 + Actor246: v2rl + Location: 55,75 + Owner: BadGuy + Facing: 124 + Actor247: v2rl + Location: 29,82 + Owner: BadGuy + Facing: 892 + Actor248: v2rl + Location: 35,79 + Owner: BadGuy + Facing: 380 + Actor249: 3tnk + Location: 37,78 + Owner: BadGuy + Facing: 636 + Actor250: 3tnk + Location: 60,78 + Owner: USSR + Facing: 636 + Actor251: 3tnk + Location: 58,79 + Owner: USSR + Facing: 508 + Actor252: 3tnk + Location: 51,55 + Owner: USSR + Facing: 380 + Actor253: 3tnk + Location: 74,35 + Owner: USSR + Facing: 380 + Actor254: 3tnk + Location: 89,88 + Owner: USSR + Facing: 380 + Actor255: 3tnk + Location: 87,88 + Owner: USSR + Facing: 380 + Actor256: 3tnk + Location: 62,71 + Owner: USSR + Facing: 124 + Actor257: 3tnk + Location: 77,61 + Owner: USSR + Facing: 124 + StartTeam1: e1 + Location: 39,34 + Owner: USSR + SubCell: 4 + StartTeam2: e1 + Location: 41,33 + Owner: USSR + SubCell: 3 + StartTeam3: e2 + Location: 40,34 + Owner: USSR + SubCell: 4 + Actor262: e1 + Location: 29,77 + Owner: BadGuy + Facing: 508 + SubCell: 1 + Actor263: e1 + Location: 30,80 + Owner: BadGuy + Facing: 636 + SubCell: 3 + Actor264: e2 + Location: 29,80 + Owner: BadGuy + Facing: 764 + SubCell: 3 + Actor265: e2 + Location: 34,76 + Owner: BadGuy + Facing: 380 + SubCell: 4 + Actor266: e1 + Location: 19,63 + Owner: BadGuy + Facing: 252 + SubCell: 2 + Actor267: e1 + Location: 21,62 + Owner: BadGuy + Facing: 124 + SubCell: 0 + Actor268: e2 + Location: 23,62 + Owner: BadGuy + Facing: 764 + SubCell: 4 + Actor269: e2 + Location: 24,64 + Owner: BadGuy + Facing: 636 + SubCell: 2 + Actor270: e1 + Location: 25,62 + Owner: BadGuy + Facing: 892 + SubCell: 3 + Actor271: e2 + Location: 20,65 + Owner: BadGuy + Facing: 380 + SubCell: 1 + Actor272: e4 + Location: 69,85 + Owner: USSR + Facing: 636 + SubCell: 4 + Actor273: e4 + Location: 66,86 + Owner: USSR + Facing: 380 + SubCell: 2 + Actor274: dog + Location: 32,78 + Owner: USSR + Facing: 636 + SubCell: 3 + Actor275: dog + Location: 64,77 + Owner: USSR + Facing: 636 + SubCell: 2 + Actor276: e4 + Location: 58,44 + Owner: USSR + SubCell: 1 + Actor277: e4 + Location: 57,45 + Owner: USSR + Facing: 380 + SubCell: 2 + Actor278: e4 + Location: 58,45 + Owner: USSR + Facing: 636 + SubCell: 2 + Actor279: e4 + Location: 64,67 + Owner: USSR + SubCell: 2 + Actor280: e1 + Location: 75,34 + Owner: USSR + SubCell: 3 + Actor281: e1 + Location: 62,23 + Owner: USSR + Facing: 380 + SubCell: 3 + Actor282: e1 + Location: 63,25 + Owner: USSR + Facing: 636 + SubCell: 1 + Actor283: e1 + Location: 84,24 + Owner: USSR + SubCell: 4 + Actor284: e1 + Location: 85,23 + Owner: USSR + SubCell: 3 + Actor285: e1 + Location: 85,25 + Owner: USSR + SubCell: 4 + Actor286: e2 + Location: 86,23 + Owner: USSR + SubCell: 3 + Actor287: e4 + Location: 77,47 + Owner: USSR + Facing: 380 + SubCell: 1 + Actor288: e4 + Location: 78,46 + Owner: USSR + Facing: 892 + SubCell: 4 + DefaultCameraPosition: waypoint + Location: 22,21 + Owner: Neutral + AlliedReinforcementPoint: waypoint + Location: 17,16 + Owner: Neutral + DropZone1: waypoint + Location: 26,26 + Owner: Neutral + DropZone2: waypoint + Location: 45,23 + Owner: Neutral + DropZone3: waypoint + Location: 22,39 + Owner: Neutral + DropZone4: waypoint + Location: 42,36 + Owner: Neutral + DropZone5: waypoint + Location: 62,24 + Owner: Neutral + DropZone6: waypoint + Location: 86,25 + Owner: Neutral + DropZone7: waypoint + Location: 86,41 + Owner: Neutral + DropZone8: waypoint + Location: 58,44 + Owner: Neutral + BGMammothEntry: waypoint + Location: 31,99 + Owner: Neutral + USSRMammothEntry: waypoint + Location: 80,99 + 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/siberian-conflict-3-wasteland/rules.yaml b/mods/ra/maps/siberian-conflict-3-wasteland/rules.yaml new file mode 100644 index 0000000000..6d038e55f5 --- /dev/null +++ b/mods/ra/maps/siberian-conflict-3-wasteland/rules.yaml @@ -0,0 +1,114 @@ +World: + LuaScript: + Scripts: campaign-global.lua, wasteland.lua, wasteland-AI.lua + MissionData: + WinVideo: masasslt.vqa + LossVideo: frozen.vqa + Briefing: The last of the Soviet's Siberian forces have wandered out onto the ice wastes, where they've established a base. Finish off their fortifications so our Allied forces will have no trouble moving through this area on their way to Moscow.\n\nThe mission is complete when all Soviet forces and structures are destroyed. + ScriptLobbyDropdown@difficulty: + ID: difficulty + Label: Difficulty + Values: + easy: Easy + normal: Normal + hard: Hard + Default: normal + +Player: + PlayerResources: + DefaultCash: 5200 + +MONEYCRATE: + GiveCashCrateAction: + Amount: 2000 + SelectionShares: 1 + UseCashTick: true + +PARATROOPERS: + ParatroopersPower: + DropItems: E1,E1,E1,E2,E2 + AlwaysVisible: + +MCV: + Buildable: + Prerequisites: ~disabled + +TRUK: + Buildable: + Prerequisites: ~disabled + +MRJ: + Buildable: + Prerequisites: ~disabled + +3TNK: + Buildable: + Prerequisites: ~vehicles.soviet + +V2RL: + Buildable: + Prerequisites: ~vehicles.soviet + +4TNK: + Buildable: + Prerequisites: ~vehicles.soviet + +QTNK: + Buildable: + Prerequisites: ~disabled + +ATEK: + Buildable: + Prerequisites: ~disabled + +STEK: + Buildable: + Prerequisites: ~disabled + +PDOX: + Buildable: + Prerequisites: ~disabled + +IRON: + Buildable: + Prerequisites: ~disabled + +MSLO: + Buildable: + Prerequisites: ~disabled + +GAP: + Buildable: + Prerequisites: ~disabled + +MECH: + Buildable: + Prerequisites: ~disabled + +THF: + Buildable: + Prerequisites: ~disabled + +E7: + Buildable: + Prerequisites: ~disabled + +E7.noautotarget: + Buildable: + Prerequisites: ~disabled + +SYRD: + Buildable: + Prerequisites: ~disabled + +SPEN: + Buildable: + Prerequisites: ~disabled + +MH60: + Buildable: + Prerequisites: ~disabled + +HELI: + Buildable: + Prerequisites: ~hpad diff --git a/mods/ra/maps/siberian-conflict-3-wasteland/wasteland-AI.lua b/mods/ra/maps/siberian-conflict-3-wasteland/wasteland-AI.lua new file mode 100644 index 0000000000..5f3e72e46a --- /dev/null +++ b/mods/ra/maps/siberian-conflict-3-wasteland/wasteland-AI.lua @@ -0,0 +1,211 @@ +--[[ + 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 = { } +AttackGroupSize = 10 +BGAttackGroup = { } +BGAttackGroupSize = 10 +SovietInfantry = { "e1", "e2", "e4" } +SovietVehicles = { "3tnk", "3tnk", "v2rl" } +Mammoths = { "4tnk", "4tnk" } +SovietAircraftType = { "yak" } +Planes = { } + +ProductionInterval = +{ + easy = DateTime.Seconds(33), + normal = DateTime.Seconds(22), + hard = DateTime.Seconds(11) +} + +IdleHunt = function(unit) if not unit.IsDead then Trigger.OnIdle(unit, unit.Hunt) end end + +ParadropDelays = +{ + easy = { DateTime.Minutes(3), DateTime.Minutes(4) }, + normal = { DateTime.Minutes(2), DateTime.Minutes(3) }, + hard = { DateTime.Minutes(1), DateTime.Minutes(2) } +} + +ParadropLZs = { DropZone1.CenterPosition, DropZone2.CenterPosition, DropZone3.CenterPosition, DropZone4.CenterPosition, DropZone5.CenterPosition, DropZone6.CenterPosition, DropZone7.CenterPosition, DropZone8.CenterPosition } + +Paradrop = function() + Trigger.AfterDelay(Utils.RandomInteger(ParadropDelays[1], ParadropDelays[2]), function() + local aircraft = PowerProxy.TargetParatroopers(Utils.Random(ParadropLZs), Angle.North) + Utils.Do(aircraft, function(a) + Trigger.OnPassengerExited(a, function(t, p) + IdleHunt(p) + end) + end) + + if not (Airfield1.IsDead or Airfield1.Owner ~= BadGuy) and not (Airfield2.IsDead or Airfield2.Owner ~= BadGuy) then + Paradrop() + end + end) +end + +SendBGAttackGroup = function() + if #BGAttackGroup < BGAttackGroupSize then + return + end + + Utils.Do(BGAttackGroup, function(unit) + if not unit.IsDead then + IdleHunt(unit) + 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 + +ProduceBadGuyVehicles = function() + if BadGuyWarFactory.IsDead or BadGuyWarFactory.Owner ~= BadGuy then + return + end + + BadGuy.Build({ Utils.Random(SovietVehicles) }, function(units) + table.insert(BGAttackGroup, units[1]) + SendBGAttackGroup() + Trigger.AfterDelay(ProductionInterval[Map.LobbyOption("difficulty")], ProduceBadGuyVehicles) + end) +end + +SendAttackGroup = function() + if #AttackGroup < AttackGroupSize then + return + end + + Utils.Do(AttackGroup, function(unit) + if not unit.IsDead then + IdleHunt(unit) + end + end) + + AttackGroup = { } +end + +ProduceUSSRInfantry = function() + if USSRBarracks.IsDead or USSRBarracks.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 + +ProduceUSSRVehicles = 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")], ProduceUSSRVehicles) + end) +end + +ProduceAircraft = function() + if (Airfield1.IsDead or Airfield1.Owner ~= BadGuy) and (Airfield2.IsDead or Airfield2.Owner ~= BadGuy) then + return + end + + BadGuy.Build(SovietAircraftType, function(units) + local plane = units[1] + Planes[#Planes + 1] = plane + + Trigger.OnKilled(plane, ProduceAircraft) + + local alive = Utils.Where(Planes, function(y) return not y.IsDead end) + if #alive < 2 then + Trigger.AfterDelay(DateTime.Seconds(ProductionInterval[Map.LobbyOption("difficulty")] / 2), ProduceAircraft) + end + + InitializeAttackAircraft(plane, Allies) + end) +end + +StartBGMammoths = +{ + easy = 18, + normal = 15, + hard = 12 +} + +StartUSSRMammoths = +{ + easy = 12, + normal = 10, + hard = 9 +} + +MammothDelays = +{ + easy = 5, + normal = 4, + hard = 3 +} + +BGMammoths = function() + if not ForwardCommandBG.IsDead or ForwardCommandBG.Owner ~= BadGuy then + local tanks = Reinforcements.Reinforce(BadGuy, Mammoths, { BGMammothEntry.Location }, 5) + Utils.Do(tanks, IdleHunt) + + Trigger.AfterDelay(DateTime.Minutes(MammothDelays), BGMammoths) + end +end + +USSRMammoths = function() + if not ForwardCommandUSSR.IsDead or ForwardCommandUSSR.Owner ~= USSR then + local tanks = Reinforcements.Reinforce(USSR, Mammoths, { USSRMammothEntry.Location }, 5) + Utils.Do(tanks, IdleHunt) + + Trigger.AfterDelay(DateTime.Minutes(MammothDelays), USSRMammoths) + end +end + +ActivateAI = function() + local difficulty = Map.LobbyOption("difficulty") + ParadropDelays = ParadropDelays[difficulty] + MammothDelays = MammothDelays[difficulty] + StartBGMammoths = StartBGMammoths[difficulty] + StartUSSRMammoths = StartUSSRMammoths[difficulty] + + 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) + + Paradrop() + ProduceBadGuyInfantry() + Trigger.AfterDelay(DateTime.Minutes(2), ProduceUSSRInfantry) + Trigger.AfterDelay(DateTime.Minutes(4), ProduceUSSRVehicles) + Trigger.AfterDelay(DateTime.Minutes(8), ProduceBadGuyVehicles) + Trigger.AfterDelay(DateTime.Minutes(10), ProduceAircraft) + Trigger.AfterDelay(DateTime.Minutes(StartBGMammoths), BGMammoths) + Trigger.AfterDelay(DateTime.Minutes(StartUSSRMammoths), USSRMammoths) +end diff --git a/mods/ra/maps/siberian-conflict-3-wasteland/wasteland.lua b/mods/ra/maps/siberian-conflict-3-wasteland/wasteland.lua new file mode 100644 index 0000000000..1277791ce9 --- /dev/null +++ b/mods/ra/maps/siberian-conflict-3-wasteland/wasteland.lua @@ -0,0 +1,82 @@ +--[[ + 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. +]] +OpeningAttack = { StartV2, StartTeam1, StartTeam2, StartTeam3 } + +Setup = function() + Utils.Do(USSR.GetGroundAttackers(), function(unit) + Trigger.OnDamaged(unit, function() IdleHunt(unit) end) + end) + + Trigger.AfterDelay(DateTime.Seconds(5), function() + Media.PlaySpeechNotification(Allies, "ReinforcementsArrived") + Reinforcements.Reinforce(Allies, { "jeep", "jeep" }, { AlliedReinforcementPoint.Location, DefaultCameraPosition.Location }) + Utils.Do(OpeningAttack, function(a) + if not a.IsDead then + a.AttackMove(DefaultCameraPosition.Location) + end + end) + end) + + Trigger.AfterDelay(DateTime.Seconds(10), function() + Reinforcements.Reinforce(Allies, { "spy", "e1", "e1", "e1", "e3", "e3", "e3" }, { AlliedReinforcementPoint.Location, DefaultCameraPosition.Location }) + end) + + Trigger.AfterDelay(DateTime.Seconds(15), function() + Reinforcements.Reinforce(Allies, { "mcv", "2tnk", "2tnk" }, { AlliedReinforcementPoint.Location, DefaultCameraPosition.Location }) + end) + + Trigger.OnKilled(MoneyBarrel, function() + Actor.Create("moneycrate", true, { Owner = Allies, Location = MoneyBarrel.Location }) + end) +end + +Tick = function() + USSR.Cash = 50000 + BadGuy.Cash = 50000 + + if Allies.HasNoRequiredUnits() then + USSR.MarkCompletedObjective(SovietObj) + end + + if USSR.HasNoRequiredUnits() then + Allies.MarkCompletedObjective(DestroyAll) + end +end + +WorldLoaded = function() + Allies = Player.GetPlayer("Allies") + USSR = Player.GetPlayer("USSR") + BadGuy = Player.GetPlayer("BadGuy") + + Trigger.OnObjectiveAdded(Allies, function(p, id) + Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective") + end) + + SovietObj = USSR.AddObjective("Stop the Allies") + DestroyAll = Allies.AddObjective("Destroy all Soviet units and structures.") + + 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) + + Camera.Position = DefaultCameraPosition.CenterPosition + PowerProxy = Actor.Create("paratroopers", false, { Owner = BadGuy }) + Setup() + ActivateAI() +end diff --git a/mods/ra/missions.yaml b/mods/ra/missions.yaml index 2ec16fbb3e..836988e8c1 100644 --- a/mods/ra/missions.yaml +++ b/mods/ra/missions.yaml @@ -31,6 +31,7 @@ Counterstrike: sarin-gas-3-controlled-burn fall-of-greece-1-personal-war siberian-conflict-1-fresh-tracks + siberian-conflict-3-wasteland soviet-soldier-volkov-n-chitzkoi top-o-the-world Aftermath: