From 7fcde4a7c9a75d9790eef654cabfb3e7a63b2cec Mon Sep 17 00:00:00 2001 From: Biofreak1987 Date: Sun, 11 Oct 2015 20:36:02 +0200 Subject: [PATCH] Add soviet-06a --- OpenRA.sln | 2 + mods/ra/maps/soviet-06a/map.bin | Bin 0 -> 81937 bytes mods/ra/maps/soviet-06a/map.png | Bin 0 -> 28849 bytes mods/ra/maps/soviet-06a/map.yaml | 980 +++++++++++++++++++++++ mods/ra/maps/soviet-06a/soviet06a-AI.lua | 112 +++ mods/ra/maps/soviet-06a/soviet06a.lua | 142 ++++ mods/ra/missions.yaml | 1 + 7 files changed, 1237 insertions(+) create mode 100644 mods/ra/maps/soviet-06a/map.bin create mode 100644 mods/ra/maps/soviet-06a/map.png create mode 100644 mods/ra/maps/soviet-06a/map.yaml create mode 100644 mods/ra/maps/soviet-06a/soviet06a-AI.lua create mode 100644 mods/ra/maps/soviet-06a/soviet06a.lua diff --git a/OpenRA.sln b/OpenRA.sln index 40b3274303..b07da30012 100644 --- a/OpenRA.sln +++ b/OpenRA.sln @@ -68,6 +68,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Red Alert Lua scripts", "Re mods\ra\maps\soviet-05\soviet05.lua = mods\ra\maps\soviet-05\soviet05.lua mods\ra\maps\soviet-05\soviet05-AI.lua = mods\ra\maps\soviet-05\soviet05-AI.lua mods\ra\maps\soviet-05\soviet05-reinforcements_teams.lua = mods\ra\maps\soviet-05\soviet05-reinforcements_teams.lua + mods\ra\maps\soviet-06a\soviet06a.lua = mods\ra\maps\soviet-06a\soviet06a.lua + mods\ra\maps\soviet-06a\soviet06a-AI.lua = mods\ra\maps\soviet-06a\soviet06a-AI.lua mods\ra\maps\soviet-07\soviet07.lua = mods\ra\maps\soviet-07\soviet07.lua mods\ra\maps\survival01\survival01.lua = mods\ra\maps\survival01\survival01.lua mods\ra\maps\survival02\survival02.lua = mods\ra\maps\survival02\survival02.lua diff --git a/mods/ra/maps/soviet-06a/map.bin b/mods/ra/maps/soviet-06a/map.bin new file mode 100644 index 0000000000000000000000000000000000000000..63c58954dc9f565b639dc776c9b068098a81b80d GIT binary patch literal 81937 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 literal 0 HcmV?d00001 diff --git a/mods/ra/maps/soviet-06a/map.png b/mods/ra/maps/soviet-06a/map.png new file mode 100644 index 0000000000000000000000000000000000000000..e92632f70fe14976003cf98c18d77856601545e5 GIT binary patch literal 28849 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 R74!fA002ovPDHLkV1gA%tiS*O literal 0 HcmV?d00001 diff --git a/mods/ra/maps/soviet-06a/map.yaml b/mods/ra/maps/soviet-06a/map.yaml new file mode 100644 index 0000000000..1753ac4dc2 --- /dev/null +++ b/mods/ra/maps/soviet-06a/map.yaml @@ -0,0 +1,980 @@ +MapFormat: 7 + +RequiresMod: ra + +Title: Soviet 06a: Bridge over the River Grotzny + +Description: There is a special cargo that needs to be transported to a nearby Soviet base in the northeast.\n\nMake sure the trucks reach their destination intact. Along the way, there is a bridge which the Allies may have destroyed.\n\nIf so, use the Naval options at your disposal. Our attack subs will make short work of any Allied boats you discover. + +Author: Westwood Studios + +Tileset: TEMPERAT + +MapSize: 128,128 + +Bounds: 5,1,93,53 + +Visibility: MissionSelector + +Type: Campaign + +Videos: + Briefing: soviet6.vqa + GameStart: onthprwl.vqa + GameWon: sitduck.vqa + GameLost: dpthchrg.vqa + +Options: + Crates: False + Fog: True + Shroud: True + AllyBuildRadius: False + FragileAlliances: False + StartingCash: 11500 + ConfigurableStartingUnits: False + ShortGame: False + +Players: + PlayerReference@Neutral: + Name: Neutral + OwnsWorld: True + NonCombatant: True + Faction: allies + PlayerReference@Creeps: + Name: Creeps + NonCombatant: True + PlayerReference@Greece: + Name: Greece + Faction: allies + ColorRamp: 161,134,236 + Enemies: USSR + PlayerReference@USSR: + Name: USSR + AllowBots: False + Playable: True + Required: True + LockFaction: True + Faction: soviet + LockColor: True + ColorRamp: 3,255,127 + LockSpawn: True + LockTeam: True + Enemies: Greece, Creeps + +Actors: + Actor0: cycl + Location: 17,1 + Owner: Greece + Actor1: cycl + Location: 18,1 + Owner: Greece + Actor2: cycl + Location: 19,1 + Owner: Greece + Actor3: cycl + Location: 20,1 + Owner: Greece + Actor4: cycl + Location: 21,1 + Owner: Greece + Actor5: cycl + Location: 22,1 + Owner: Greece + Actor6: cycl + Location: 23,1 + Owner: Greece + Actor7: cycl + Location: 24,1 + Owner: Greece + Actor8: cycl + Location: 25,1 + Owner: Greece + Actor9: cycl + Location: 26,1 + Owner: Greece + Actor10: cycl + Location: 27,1 + Owner: Greece + Actor11: cycl + Location: 28,1 + Owner: Greece + Actor12: cycl + Location: 29,1 + Owner: Greece + Actor13: cycl + Location: 30,1 + Owner: Greece + Actor14: cycl + Location: 31,1 + Owner: Greece + Actor15: cycl + Location: 32,1 + Owner: Greece + Actor16: cycl + Location: 33,1 + Owner: Greece + Actor17: cycl + Location: 34,1 + Owner: Greece + Actor18: cycl + Location: 35,1 + Owner: Greece + Actor19: cycl + Location: 17,2 + Owner: Greece + Actor20: cycl + Location: 17,3 + Owner: Greece + Actor21: cycl + Location: 18,3 + Owner: Greece + Actor22: cycl + Location: 17,4 + Owner: Greece + Actor23: cycl + Location: 18,4 + Owner: Greece + Actor24: cycl + Location: 17,10 + Owner: Greece + Actor25: cycl + Location: 18,10 + Owner: Greece + Actor26: cycl + Location: 17,11 + Owner: Greece + Actor27: cycl + Location: 18,11 + Owner: Greece + Actor28: cycl + Location: 17,12 + Owner: Greece + Actor29: cycl + Location: 17,13 + Owner: Greece + Actor30: cycl + Location: 17,14 + Owner: Greece + Actor31: cycl + Location: 17,15 + Owner: Greece + Actor32: cycl + Location: 17,16 + Owner: Greece + Actor33: cycl + Location: 17,17 + Owner: Greece + Actor34: cycl + Location: 17,18 + Owner: Greece + Actor35: cycl + Location: 18,18 + Owner: Greece + Actor36: cycl + Location: 18,19 + Owner: Greece + Actor37: cycl + Location: 31,19 + Owner: Greece + Actor38: cycl + Location: 32,19 + Owner: Greece + Actor39: cycl + Location: 18,20 + Owner: Greece + Actor40: cycl + Location: 31,20 + Owner: Greece + Actor41: cycl + Location: 17,21 + Owner: Greece + Actor42: cycl + Location: 18,21 + Owner: Greece + Actor43: cycl + Location: 31,21 + Owner: Greece + Actor44: cycl + Location: 17,22 + Owner: Greece + Actor45: sbag + Location: 19,22 + Owner: Greece + Actor46: sbag + Location: 20,22 + Owner: Greece + Actor47: sbag + Location: 21,22 + Owner: Greece + Actor48: sbag + Location: 27,22 + Owner: Greece + Actor49: sbag + Location: 28,22 + Owner: Greece + Actor50: sbag + Location: 29,22 + Owner: Greece + Actor51: cycl + Location: 31,22 + Owner: Greece + Actor52: cycl + Location: 17,23 + Owner: Greece + Actor53: sbag + Location: 21,23 + Owner: Greece + Actor54: sbag + Location: 27,23 + Owner: Greece + Actor55: cycl + Location: 31,23 + Owner: Greece + Actor56: cycl + Location: 17,24 + Owner: Greece + Actor57: cycl + Location: 18,24 + Owner: Greece + Actor58: cycl + Location: 19,24 + Owner: Greece + Actor59: cycl + Location: 20,24 + Owner: Greece + Actor60: cycl + Location: 21,24 + Owner: Greece + Actor61: cycl + Location: 27,24 + Owner: Greece + Actor62: cycl + Location: 28,24 + Owner: Greece + Actor63: cycl + Location: 29,24 + Owner: Greece + Actor64: cycl + Location: 30,24 + Owner: Greece + Actor65: cycl + Location: 31,24 + Owner: Greece + Actor66: sbag + Location: 71,31 + Owner: Greece + Actor67: sbag + Location: 72,31 + Owner: Greece + Actor68: sbag + Location: 71,32 + Owner: Greece + Actor69: sbag + Location: 72,32 + Owner: Greece + Actor70: sbag + Location: 72,33 + Owner: Greece + Actor71: sbag + Location: 73,33 + Owner: Greece + Actor72: sbag + Location: 73,34 + Owner: Greece + Actor73: sbag + Location: 74,34 + Owner: Greece + Actor74: sbag + Location: 75,34 + Owner: Greece + Actor75: sbag + Location: 74,35 + Owner: Greece + Actor76: sbag + Location: 75,35 + Owner: Greece + Actor77: t17 + Location: 66,28 + Owner: Neutral + Actor78: t08 + Location: 83,35 + Owner: Neutral + Actor79: t16 + Location: 82,34 + Owner: Neutral + Actor80: tc04 + Location: 80,36 + Owner: Neutral + Actor81: tc05 + Location: 77,34 + Owner: Neutral + Actor82: tc01 + Location: 79,32 + Owner: Neutral + Actor83: tc01 + Location: 61,52 + Owner: Neutral + Actor84: tc02 + Location: 61,49 + Owner: Neutral + Actor85: tc03 + Location: 58,52 + Owner: Neutral + Actor86: tc05 + Location: 52,47 + Owner: Neutral + Actor87: t16 + Location: 35,21 + Owner: Neutral + Actor88: tc04 + Location: 36,24 + Owner: Neutral + Actor89: t15 + Location: 38,22 + Owner: Neutral + Actor90: t12 + Location: 31,24 + Owner: Neutral + Actor91: tc05 + Location: 95,15 + Owner: Neutral + Actor92: tc01 + Location: 94,19 + Owner: Neutral + Actor93: tc03 + Location: 85,13 + Owner: Neutral + Actor94: tc02 + Location: 94,6 + Owner: Neutral + Actor95: tc01 + Location: 96,11 + Owner: Neutral + Actor96: tc04 + Location: 84,4 + Owner: Neutral + Actor97: t17 + Location: 83,13 + Owner: Neutral + Actor98: t16 + Location: 88,11 + Owner: Neutral + Actor99: t16 + Location: 91,23 + Owner: Neutral + Actor100: t14 + Location: 93,24 + Owner: Neutral + Actor101: t11 + Location: 95,22 + Owner: Neutral + Actor102: tc05 + Location: 32,22 + Owner: Neutral + Actor103: tc05 + Location: 5,12 + Owner: Neutral + Actor104: tc01 + Location: 9,12 + Owner: Neutral + Actor105: tc05 + Location: 50,34 + Owner: Neutral + Actor106: tc04 + Location: 53,34 + Owner: Neutral + Actor107: tc05 + Location: 74,47 + Owner: Neutral + Actor108: tc04 + Location: 80,43 + Owner: Neutral + Actor109: tc02 + Location: 78,42 + Owner: Neutral + Actor110: tc01 + Location: 74,46 + Owner: Neutral + Actor111: t17 + Location: 73,48 + Owner: Neutral + Actor112: t16 + Location: 77,46 + Owner: Neutral + Actor113: t15 + Location: 80,41 + Owner: Neutral + Actor114: t14 + Location: 68,52 + Owner: Neutral + Actor115: t13 + Location: 84,40 + Owner: Neutral + Actor116: tc02 + Location: 65,52 + Owner: Neutral + Actor117: tc01 + Location: 66,49 + Owner: Neutral + Actor118: t08 + Location: 32,20 + Owner: Neutral + Actor119: tc02 + Location: 18,52 + Owner: Neutral + Actor120: t15 + Location: 27,51 + Owner: Neutral + Actor121: t11 + Location: 40,40 + Owner: Neutral + Actor122: t10 + Location: 41,34 + Owner: Neutral + Actor123: t10 + Location: 43,29 + Owner: Neutral + Actor124: t08 + Location: 41,32 + Owner: Neutral + Actor125: t08 + Location: 42,41 + Owner: Neutral + Actor126: tc05 + Location: 29,28 + Owner: Neutral + Actor127: tc02 + Location: 19,26 + Owner: Neutral + Actor128: tc04 + Location: 17,24 + Owner: Neutral + Actor129: t14 + Location: 37,33 + Owner: Neutral + Actor130: tc01 + Location: 38,28 + Owner: Neutral + Actor131: t16 + Location: 39,27 + Owner: Neutral + Actor132: t16 + Location: 37,28 + Owner: Neutral + Actor133: t10 + Location: 11,49 + Owner: Neutral + Actor134: tc05 + Location: 12,24 + Owner: Neutral + Actor135: tc04 + Location: 5,30 + Owner: Neutral + Actor136: tc02 + Location: 12,12 + Owner: Neutral + Actor137: t16 + Location: 11,12 + Owner: Neutral + Actor234: t12 + Owner: Neutral + Location: 15,14 + Actor139: t08 + Location: 16,15 + Owner: Neutral + Actor140: t01 + Location: 8,12 + Owner: Neutral + Actor141: t10 + Location: 13,33 + Owner: Neutral + Actor142: t15 + Location: 7,40 + Owner: Neutral + Actor143: t14 + Location: 17,32 + Owner: Neutral + Actor144: tc02 + Location: 5,39 + Owner: Neutral + Actor145: tc03 + Location: 85,6 + Owner: Neutral + Actor233: t01 + Owner: Neutral + Location: 15,13 + Actor147: t10 + Location: 14,12 + Owner: Neutral + Actor148: tc05 + Location: 81,4 + Owner: Neutral + Actor149: t01 + Location: 61,9 + Owner: Neutral + Actor150: tc03 + Location: 71,6 + Owner: Neutral + Actor151: t17 + Location: 60,6 + Owner: Neutral + Actor152: t11 + Location: 70,3 + Owner: Neutral + Actor153: tc05 + Location: 22,2 + Owner: Neutral + Actor154: tc03 + Location: 28,2 + Owner: Neutral + Actor155: tc01 + Location: 33,1 + Owner: Neutral + Actor156: hbox + Location: 19,23 + Owner: Greece + Actor157: hbox + Location: 29,23 + Owner: Greece + Actor158: gun + Location: 20,23 + Owner: Greece + Facing: 128 + Actor159: gun + Location: 28,23 + Owner: Greece + Facing: 128 + Actor161: dome + Location: 23,5 + Owner: Greece + Actor163: gap + Location: 24,21 + Owner: Greece + Actor164: syrd + Location: 35,14 + Owner: Greece + Actor167: gun + Location: 33,5 + Owner: Greece + Facing: 192 + Actor168: gun + Location: 33,9 + Owner: Greece + Facing: 192 + Actor169: v07 + Location: 66,4 + Owner: Greece + Health: 45 + Actor170: v03 + Location: 64,8 + Owner: Greece + Actor171: v01 + Location: 71,8 + Owner: Greece + Actor172: v05 + Location: 61,8 + Owner: Greece + Health: 43 + Actor173: v06 + Location: 68,4 + Owner: Greece + Actor174: powr + Location: 20,2 + Owner: Greece + Actor175: powr + Location: 25,2 + Owner: Greece + Actor179: 2tnk + Location: 73,35 + Owner: Greece + Facing: 160 + Actor180: 2tnk + Location: 72,34 + Owner: Greece + Facing: 160 + Actor181: 2tnk + Location: 71,33 + Owner: Greece + Facing: 160 + Actor182: arty + Location: 74,33 + Owner: Greece + Facing: 160 + Actor183: arty + Location: 73,32 + Owner: Greece + Facing: 160 + Actor186: 3tnk + Location: 56,47 + Owner: USSR + Health: 99 + Facing: 32 + Actor187: 3tnk + Location: 60,49 + Owner: USSR + Health: 99 + Facing: 32 + Actor191: v2rl + Location: 57,49 + Owner: USSR + Facing: 32 + Actor193: 2tnk + Location: 73,31 + Owner: Greece + Facing: 160 + Actor194: 2tnk + Location: 75,33 + Owner: Greece + Facing: 160 + Actor195: 2tnk + Location: 85,18 + Owner: Greece + Facing: 160 + Actor196: 2tnk + Location: 88,20 + Owner: Greece + Facing: 160 + Actor197: 2tnk + Location: 22,23 + Owner: Greece + Facing: 128 + Actor198: 2tnk + Location: 26,23 + Owner: Greece + Facing: 128 + Actor199: arty + Location: 18,23 + Owner: Greece + Facing: 96 + Actor200: arty + Location: 30,23 + Owner: Greece + Facing: 160 + Actor202: 1tnk + Location: 23,21 + Owner: Greece + Facing: 128 + Actor203: 1tnk + Location: 25,21 + Owner: Greece + Facing: 128 + Actor204: 2tnk + Location: 40,6 + Owner: Greece + Facing: 192 + Actor205: 2tnk + Location: 40,8 + Owner: Greece + Facing: 192 + Actor206: arty + Location: 40,7 + Owner: Greece + Facing: 192 + Actor207: 1tnk + Location: 77,10 + Owner: Greece + Facing: 192 + Actor208: 1tnk + Location: 77,11 + Owner: Greece + Facing: 192 + Actor209: 1tnk + Location: 77,12 + Owner: Greece + Facing: 192 + Actor210: ca + Location: 87,29 + Owner: Greece + Facing: 224 + Actor211: ca + Location: 87,25 + Owner: Greece + Facing: 160 + Actor212: ca + Location: 76,22 + Owner: Greece + Facing: 224 + Actor213: pt + Location: 38,4 + Owner: Greece + Facing: 192 + Actor214: pt + Location: 38,10 + Owner: Greece + Facing: 192 + Actor215: dd + Location: 55,15 + Owner: Greece + Facing: 192 + Actor216: waypoint + Location: 39,13 + Owner: Neutral + Actor235: silo + Owner: Greece + Location: 26,9 + Actor236: silo + Owner: Greece + Location: 24,9 + Actor237: silo + Owner: Greece + Location: 27,2 + Actor238: silo + Owner: Greece + Location: 27,3 + waypoint78: waypoint + Location: 83,23 + Owner: Neutral + waypoint79: waypoint + Location: 87,19 + Owner: Neutral + waypoint80: waypoint + Location: 84,22 + Owner: Neutral + waypoint81: waypoint + Location: 76,22 + Owner: Neutral + waypoint82: waypoint + Location: 87,29 + Owner: Neutral + APCWaypoint1: waypoint + Location: 52,50 + Owner: Neutral + APCWaypoint2: waypoint + Location: 58,51 + Owner: Neutral + Apwr: apwr + Location: 18,11 + Owner: Greece + Apwr2: apwr + Owner: Greece + Location: 27,5 + AttackWaypoint1: waypoint + Owner: Neutral + Location: 24,30 + AttackWaypoint2: waypoint + Owner: Neutral + Location: 35,30 + Barr: tent + Location: 29,16 + Owner: Greece + BaseAttacker1: 1tnk + Location: 76,35 + Owner: Greece + Facing: 160 + BaseAttacker2: 1tnk + Location: 71,30 + Owner: Greece + Facing: 160 + CameraBarrier: camera + Location: 70,36 + Owner: Neutral + CameraBase1: camera + Location: 34,40 + Owner: Neutral + CameraBase2: camera + Location: 24,40 + Owner: Neutral + CameraBase3: camera + Location: 30,46 + Owner: Neutral + CameraBase4: camera + Location: 48,39 + Owner: Neutral + CameraStart: camera + Location: 58,48 + Owner: Neutral + CYard: fact + Location: 30,2 + Owner: Greece + CYardLocation: waypoint + Owner: Neutral + Location: 31,4 + Harvester: harv + Location: 12,10 + Owner: Greece + IntroEnemy1: 1tnk + Location: 63,42 + Owner: Greece + Health: 28 + Facing: 160 + IntroEnemy2: jeep + Location: 64,42 + Owner: Greece + Health: 43 + Facing: 160 + IntroEnemy3: 1tnk + Location: 64,43 + Owner: Greece + Health: 50 + Facing: 160 + Mcv: mcv + Location: 61,45 + Owner: USSR + Facing: 96 + McvWaypoint: waypoint + Location: 53,53 + Owner: Neutral + Proc: proc + Location: 24,9 + Owner: Greece + FreeActor: False + Truck1: truk + Location: 54,52 + Owner: USSR + Facing: 32 + Truck2: truk + Location: 55,51 + Owner: USSR + Facing: 32 + Weap: weap + Location: 22,15 + Owner: Greece + +Smudges: + +Rules: + Player: + -ConquestVictoryConditions: + MissionObjectives: + EarlyGameOver: true + -EnemyWatcher: + World: + -CrateSpawner: + -SpawnMPUnits: + -MPStartLocations: + LuaScript: + Scripts: soviet06a.lua, soviet06a-AI.lua + ObjectivesPanel: + PanelName: MISSION_OBJECTIVES + ^Building: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + ^Infantry: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + ^Vehicle: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + ^Ship: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + ^Plane: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + ^Wall: + Tooltip: + ShowOwnerRow: false + ^TechBuilding: + Tooltip: + ShowOwnerRow: false + ^Crate: + Tooltip: + ShowOwnerRow: false + ^Husk: + Tooltip: + GenericVisibility: Enemy, Ally, Neutral + GenericStancePrefix: false + ShowOwnerRow: false + APWR: + Buildable: + Prerequisites: ~disabled + ARTY: + Buildable: + Prerequisites: ~vehicles.allies, ~techlevel.low + BRIK: + Buildable: + Prerequisites: ~disabled + TSLA: + Buildable: + Prerequisites: ~disabled + SAM: + Buildable: + Prerequisites: ~disabled + IRON: + Buildable: + Prerequisites: ~disabled + MSLO: + Buildable: + Prerequisites: ~disabled + E3: + Buildable: + Prerequisites: ~tent + SHOK: + Buildable: + Prerequisites: ~disabled + SNIPER: + Buildable: + Prerequisites: ~disabled + HIJACKER: + Buildable: + Prerequisites: ~disabled + MIG: + Buildable: + Prerequisites: ~disabled + FTRK: + Buildable: + Prerequisites: ~disabled + 2TNK: + Buildable: + Prerequisites: ~vehicles.allies, ~techlevel.low + 4TNK: + Buildable: + Prerequisites: ~disabled + APC: + Buildable: + Prerequisites: ~disabled + TRUK: + -SpawnActorOnDeath: + -SupplyTruck: + Buildable: + Prerequisites: ~disabled + QTNK: + Buildable: + Prerequisites: ~disabled + MCV: + Buildable: + Prerequisites: ~disabled + MSUB: + Buildable: + Prerequisites: ~disabled + STEK: + Buildable: + Prerequisites: ~disabled + DOG: + Health: + HP: 25 + AutoTarget: + ScanRadius: 5 + HARV: + Harvester: + SearchFromProcRadius: 50 + SearchFromOrderRadius: 50 + AFLD: + ParatroopersPower@paratroopers: + DropItems: E1,E1,E1,E1,E1 + MONEYCRATE: + GiveCashCrateAction: + Amount: 2000 + V01: + SpawnActorOnDeath: + Actor: moneycrate + V05: + SpawnActorOnDeath: + Actor: healcrate + +Sequences: + +VoxelSequences: + +Weapons: + +Voices: + +Notifications: + +Translations: diff --git a/mods/ra/maps/soviet-06a/soviet06a-AI.lua b/mods/ra/maps/soviet-06a/soviet06a-AI.lua new file mode 100644 index 0000000000..048923d998 --- /dev/null +++ b/mods/ra/maps/soviet-06a/soviet06a-AI.lua @@ -0,0 +1,112 @@ +IdleHunt = function(unit) if not unit.IsDead then Trigger.OnIdle(unit, unit.Hunt) end end + +IdlingUnits = function() + local lazyUnits = enemy.GetGroundAttackers() + + Utils.Do(lazyUnits, function(unit) + Trigger.OnDamaged(unit, function() + Trigger.ClearAll(unit) + Trigger.AfterDelay(0, function() IdleHunt(unit) end) + end) + end) +end + +BaseBuildings = +{ + { "apwr", CVec.New(-13, 7), 500, true }, + { "tent", CVec.New(-2, 12), 400, true }, + { "proc", CVec.New(-7, 5), 1400, true }, + { "weap", CVec.New(-9, 11), 2000, true }, + { "apwr", CVec.New(-4, 1), 500, true } +} + +BuildBase = function() + if CYard.IsDead or CYard.Owner ~= enemy then + return + elseif Harvester.IsDead and enemy.Resources <= 299 then + return + end + + for i,v in ipairs(BaseBuildings) do + if not v[4] then + BuildBuilding(v) + return + end + end + + Trigger.AfterDelay(DateTime.Seconds(10), BuildBase) +end + +BuildBuilding = function(building) + Trigger.AfterDelay(Actor.BuildTime(building[1]), function() + local actor = Actor.Create(building[1], true, { Owner = enemy, Location = CYardLocation.Location + building[2] }) + enemy.Cash = enemy.Cash - building[3] + + building[4] = true + Trigger.OnKilled(actor, function() building[4] = true end) + Trigger.OnDamaged(actor, function(building) + if building.Owner == enemy and building.Health < building.MaxHealth * 3/4 then + building.StartBuildingRepairs() + end + end) + + Trigger.AfterDelay(DateTime.Seconds(10), BuildBase) + end) +end + +ProduceInfantry = function() + if not BaseBuildings[2][4] then + return + elseif Harvester.IsDead and enemy.Resources <= 299 then + return + end + + local delay = Utils.RandomInteger(DateTime.Seconds(3), DateTime.Seconds(9)) + local toBuild = { Utils.Random(AlliedInfantryTypes) } + local Path = Utils.Random(AttackPaths) + enemy.Build(toBuild, function(unit) + InfAttack[#InfAttack + 1] = unit[1] + + if #InfAttack >= 10 then + SendUnits(InfAttack, Path) + InfAttack = { } + Trigger.AfterDelay(DateTime.Minutes(2), ProduceInfantry) + else + Trigger.AfterDelay(delay, ProduceInfantry) + end + end) +end + +ProduceArmor = function() + if not BaseBuildings[4][4] then + return + elseif Harvester.IsDead and enemy.Resources <= 599 then + return + end + + local delay = Utils.RandomInteger(DateTime.Seconds(12), DateTime.Seconds(17)) + local toBuild = { Utils.Random(AlliedArmorTypes) } + local Path = Utils.Random(AttackPaths) + enemy.Build(toBuild, function(unit) + ArmorAttack[#ArmorAttack + 1] = unit[1] + + if #ArmorAttack >= 6 then + SendUnits(ArmorAttack, Path) + ArmorAttack = { } + Trigger.AfterDelay(DateTime.Minutes(3), ProduceArmor) + else + Trigger.AfterDelay(delay, ProduceArmor) + end + end) +end + +SendUnits = function(units, waypoints) + Utils.Do(units, function(unit) + if not unit.IsDead then + Utils.Do(waypoints, function(waypoint) + unit.AttackMove(waypoint.Location) + end) + IdleHunt(unit) + end + end) +end diff --git a/mods/ra/maps/soviet-06a/soviet06a.lua b/mods/ra/maps/soviet-06a/soviet06a.lua new file mode 100644 index 0000000000..90ca88008a --- /dev/null +++ b/mods/ra/maps/soviet-06a/soviet06a.lua @@ -0,0 +1,142 @@ +ArmorAttack = { } +AttackPaths = { { AttackWaypoint1 }, { AttackWaypoint2 } } +BaseAttackers = { BaseAttacker1, BaseAttacker2 } +InfAttack = { } +IntroAttackers = { IntroEnemy1, IntroEnemy2, IntroEnemy3 } +Trucks = { Truck1, Truck2 } + +AlliedInfantryTypes = { "e1", "e1", "e3" } +AlliedArmorTypes = { "jeep", "jeep", "1tnk", "1tnk", "2tnk", "2tnk", "arty" } + +SovietReinforcements1 = { "e6", "e6", "e6", "e6", "e6" } +SovietReinforcements2 = { "e4", "e4", "e2", "e2", "e2" } +SovietReinforcements1Waypoints = { McvWaypoint.Location, APCWaypoint1.Location } +SovietReinforcements2Waypoints = { McvWaypoint.Location, APCWaypoint2.Location } + +TruckGoalTrigger = { CPos.New(83, 7), CPos.New(83, 8), CPos.New(83, 9), CPos.New(83, 10), CPos.New(84, 10), CPos.New(84, 11), CPos.New(84, 12), CPos.New(85, 12), CPos.New(86, 12), CPos.New(87, 12), CPos.New(87, 13), CPos.New(88, 13), CPos.New(89, 13), CPos.New(90, 13), CPos.New(90, 14), CPos.New(90, 15), CPos.New(91, 15), CPos.New(92, 15), CPos.New(93, 15), CPos.New(94, 15) } +CameraBarrierTrigger = { CPos.New(65, 39), CPos.New(65, 40), CPos.New(66, 40), CPos.New(66, 41), CPos.New(67, 41), CPos.New(67, 42), CPos.New(68, 42), CPos.New(68, 43), CPos.New(68, 44) } +CameraBaseTrigger = { CPos.New(53, 42), CPos.New(54, 42), CPos.New(54, 41), CPos.New(55, 41), CPos.New(56, 41), CPos.New(56, 40), CPos.New(57, 40), CPos.New(57, 39), CPos.New(58, 39), CPos.New(59, 39), CPos.New(59, 38), CPos.New(60, 38), CPos.New(61, 38) } + +Trigger.OnEnteredFootprint(TruckGoalTrigger, function(a, id) + if not truckGoalTrigger and a.Owner == player and a.Type == "truk" then + truckGoalTrigger = true + player.MarkCompletedObjective(sovietObjective) + end +end) + +Trigger.OnEnteredFootprint(CameraBarrierTrigger, function(a, id) + if not cameraBarrierTrigger and a.Owner == player then + cameraBarrierTrigger = true + local cameraBarrier = Actor.Create("camera", true, { Owner = player, Location = CameraBarrier.Location }) + Trigger.AfterDelay(DateTime.Seconds(15), function() + cameraBarrier.Kill() + end) + end +end) + +Trigger.OnEnteredFootprint(CameraBaseTrigger, function(a, id) + if not cameraBaseTrigger and a.Owner == player then + cameraBaseTrigger = true + local cameraBase1 = Actor.Create("camera", true, { Owner = player, Location = CameraBase1.Location }) + local cameraBase2 = Actor.Create("camera", true, { Owner = player, Location = CameraBase2.Location }) + local cameraBase3 = Actor.Create("camera", true, { Owner = player, Location = CameraBase3.Location }) + local cameraBase4 = Actor.Create("camera", true, { Owner = player, Location = CameraBase4.Location }) + Trigger.AfterDelay(DateTime.Minutes(1), function() + cameraBase1.Kill() + cameraBase2.Kill() + cameraBase3.Kill() + cameraBase4.Kill() + end) + end +end) + +Trigger.OnAllKilled(Trucks, function() + if not controlCenterTrigger then + enemy.MarkCompletedObjective(alliedObjective) + end +end) + +Trigger.OnKilled(Apwr, function(building) + BaseBuildings[1][4] = false +end) + +Trigger.OnKilled(Barr, function(building) + BaseBuildings[2][4] = false +end) + +Trigger.OnKilled(Proc, function(building) + BaseBuildings[3][4] = false +end) + +Trigger.OnKilled(Weap, function(building) + BaseBuildings[4][4] = false +end) + +Trigger.OnKilled(Apwr2, function(building) + BaseBuildings[5][4] = false +end) + +-- Activate the AI once the player deployed the Mcv +Trigger.OnRemovedFromWorld(Mcv, function() + if not mcvDeployed then + mcvDeployed = true + BuildBase() + Trigger.AfterDelay(DateTime.Minutes(1), ProduceInfantry) + Trigger.AfterDelay(DateTime.Minutes(2), ProduceArmor) + Trigger.AfterDelay(DateTime.Minutes(2), function() + Utils.Do(BaseAttackers, function(actor) + IdleHunt(actor) + end) + end) + end +end) + +WorldLoaded = function() + player = Player.GetPlayer("USSR") + enemy = Player.GetPlayer("Greece") + Camera.Position = CameraStart.CenterPosition + Mcv.Move(McvWaypoint.Location) + Harvester.FindResources() + Utils.Do(IntroAttackers, function(actor) + IdleHunt(actor) + end) + Utils.Do(Map.NamedActors, function(actor) + if actor.Owner == enemy and actor.HasProperty("StartBuildingRepairs") then + Trigger.OnDamaged(actor, function(building) + if building.Owner == enemy and building.Health < 3/4 * building.MaxHealth then + building.StartBuildingRepairs() + end + end) + end + end) + Reinforcements.ReinforceWithTransport(player, "apc", SovietReinforcements1, SovietReinforcements1Waypoints) + Reinforcements.ReinforceWithTransport(player, "apc", SovietReinforcements2, SovietReinforcements2Waypoints) + Trigger.OnObjectiveAdded(player, function(p, id) + Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective") + end) + Trigger.OnObjectiveCompleted(player, function(p, id) + Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed") + end) + Trigger.OnObjectiveFailed(player, function(p, id) + Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed") + end) + Trigger.OnPlayerWon(player, function() + Media.PlaySpeechNotification(player, "Win") + end) + Trigger.OnPlayerLost(player, function() + Media.PlaySpeechNotification(player, "Lose") + end) + alliedObjective = enemy.AddPrimaryObjective("Destroy all Soviet troops.") + sovietObjective = player.AddPrimaryObjective("Escort the Convoy.") +end + +Tick = function() + if player.HasNoRequiredUnits() then + enemy.MarkCompletedObjective(alliedObjective) + end + + if enemy.Resources >= enemy.ResourceCapacity * 0.75 then + enemy.Cash = enemy.Cash + enemy.Resources - enemy.ResourceCapacity * 0.25 + enemy.Resources = enemy.ResourceCapacity * 0.25 + end +end diff --git a/mods/ra/missions.yaml b/mods/ra/missions.yaml index 63aeea6c27..fc3010e951 100644 --- a/mods/ra/missions.yaml +++ b/mods/ra/missions.yaml @@ -12,4 +12,5 @@ Soviet Campaign: ./mods/ra/maps/soviet-04a ./mods/ra/maps/soviet-04b ./mods/ra/maps/soviet-05 + ./mods/ra/maps/soviet-06a ./mods/ra/maps/soviet-07