From c02848889425c64628a921362f54ba08511b6f87 Mon Sep 17 00:00:00 2001 From: Smittytron Date: Sun, 19 Apr 2020 16:20:31 -0500 Subject: [PATCH] Add Soviet 09 --- mods/ra/maps/soviet-09/map.bin | Bin 0 -> 81937 bytes mods/ra/maps/soviet-09/map.png | Bin 0 -> 27168 bytes mods/ra/maps/soviet-09/map.yaml | 1498 ++++++++++++++++++++++++ mods/ra/maps/soviet-09/rules.yaml | 121 ++ mods/ra/maps/soviet-09/soviet09-AI.lua | 192 +++ mods/ra/maps/soviet-09/soviet09.lua | 109 ++ mods/ra/missions.yaml | 1 + 7 files changed, 1921 insertions(+) create mode 100644 mods/ra/maps/soviet-09/map.bin create mode 100644 mods/ra/maps/soviet-09/map.png create mode 100644 mods/ra/maps/soviet-09/map.yaml create mode 100644 mods/ra/maps/soviet-09/rules.yaml create mode 100644 mods/ra/maps/soviet-09/soviet09-AI.lua create mode 100644 mods/ra/maps/soviet-09/soviet09.lua diff --git a/mods/ra/maps/soviet-09/map.bin b/mods/ra/maps/soviet-09/map.bin new file mode 100644 index 0000000000000000000000000000000000000000..6dd709221095db77e73e1ea1b40842b234b5cdfd GIT binary patch literal 81937 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 literal 0 HcmV?d00001 diff --git a/mods/ra/maps/soviet-09/map.png b/mods/ra/maps/soviet-09/map.png new file mode 100644 index 0000000000000000000000000000000000000000..dc774179f296c621a99a786eb1c1fecf3b7d0e1f GIT binary patch literal 27168 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 AG5`Po literal 0 HcmV?d00001 diff --git a/mods/ra/maps/soviet-09/map.yaml b/mods/ra/maps/soviet-09/map.yaml new file mode 100644 index 0000000000..bf35a7efc6 --- /dev/null +++ b/mods/ra/maps/soviet-09/map.yaml @@ -0,0 +1,1498 @@ +MapFormat: 11 + +RequiresMod: ra + +Title: 09: Liability Elimination + +Author: Westwood Studios + +Tileset: TEMPERAT + +MapSize: 128,128 + +Bounds: 10,30,101,84 + +Visibility: MissionSelector + +Categories: Campaign + +LockPreview: True + +Players: + PlayerReference@Neutral: + Name: Neutral + OwnsWorld: True + NonCombatant: True + Faction: england + PlayerReference@Creeps: + Name: Creeps + NonCombatant: True + Faction: england + PlayerReference@Greece: + Name: Greece + Bot: campaign + Faction: allies + Color: E2E6F6 + Allies: Germany + Enemies: Greece, USSR + PlayerReference@USSR: + Name: USSR + AllowBots: False + Playable: True + Required: True + LockFaction: True + Faction: soviet + LockColor: True + Color: FE1100 + LockSpawn: True + LockTeam: True + Enemies: Germany, Greece + PlayerReference@Germany: + Name: Germany + Bot: campaign + Faction: allies + Color: 505050 + Allies: Greece + Enemies: USSR, Germany + +Actors: + Actor0: sbag + Location: 56,30 + Owner: Greece + Actor1: sbag + Location: 57,30 + Owner: Greece + Actor2: sbag + Location: 67,30 + Owner: Greece + Actor3: sbag + Location: 68,30 + Owner: Greece + Actor4: sbag + Location: 69,30 + Owner: Greece + Actor5: sbag + Location: 70,30 + Owner: Greece + Actor6: sbag + Location: 71,30 + Owner: Greece + Actor7: sbag + Location: 72,30 + Owner: Greece + Actor8: sbag + Location: 73,30 + Owner: Greece + Actor9: sbag + Location: 74,30 + Owner: Greece + Actor10: sbag + Location: 75,30 + Owner: Greece + Actor11: sbag + Location: 76,30 + Owner: Greece + Actor12: sbag + Location: 77,30 + Owner: Greece + Actor13: sbag + Location: 78,30 + Owner: Greece + Actor14: sbag + Location: 79,30 + Owner: Greece + Actor15: sbag + Location: 80,30 + Owner: Greece + Actor16: sbag + Location: 81,30 + Owner: Greece + Actor17: sbag + Location: 56,31 + Owner: Greece + Actor18: sbag + Location: 81,31 + Owner: Greece + Actor19: sbag + Location: 56,32 + Owner: Greece + Actor20: cycl + Location: 71,32 + Owner: Greece + Actor21: cycl + Location: 72,32 + Owner: Greece + Actor22: cycl + Location: 73,32 + Owner: Greece + Actor23: cycl + Location: 74,32 + Owner: Greece + Actor24: sbag + Location: 81,32 + Owner: Greece + Actor25: sbag + Location: 56,33 + Owner: Greece + Actor26: cycl + Location: 71,33 + Owner: Greece + Actor27: cycl + Location: 74,33 + Owner: Greece + Actor28: sbag + Location: 81,33 + Owner: Greece + Actor29: sbag + Location: 54,34 + Owner: Greece + Actor30: sbag + Location: 55,34 + Owner: Greece + Actor31: sbag + Location: 56,34 + Owner: Greece + Actor32: cycl + Location: 71,34 + Owner: Greece + Actor33: cycl + Location: 74,34 + Owner: Greece + Actor34: sbag + Location: 81,34 + Owner: Greece + Actor35: sbag + Location: 82,34 + Owner: Greece + Actor36: cycl + Location: 74,35 + Owner: Greece + Actor37: sbag + Location: 54,37 + Owner: Greece + Actor38: sbag + Location: 55,37 + Owner: Greece + Actor39: sbag + Location: 56,37 + Owner: Greece + Actor40: sbag + Location: 56,38 + Owner: Greece + Actor41: sbag + Location: 81,38 + Owner: Greece + Actor42: sbag + Location: 82,38 + Owner: Greece + Actor43: sbag + Location: 56,39 + Owner: Greece + Actor44: sbag + Location: 57,39 + Owner: Greece + Actor45: sbag + Location: 81,39 + Owner: Greece + Actor46: sbag + Location: 79,40 + Owner: Greece + Actor47: sbag + Location: 80,40 + Owner: Greece + Actor48: sbag + Location: 81,40 + Owner: Greece + Actor49: sbag + Location: 79,41 + Owner: Greece + Actor50: sbag + Location: 59,42 + Owner: Greece + Actor51: sbag + Location: 60,42 + Owner: Greece + Actor52: sbag + Location: 72,42 + Owner: Greece + Actor53: sbag + Location: 73,42 + Owner: Greece + Actor54: sbag + Location: 74,42 + Owner: Greece + Actor55: sbag + Location: 75,42 + Owner: Greece + Actor56: sbag + Location: 76,42 + Owner: Greece + Actor57: sbag + Location: 77,42 + Owner: Greece + Actor58: sbag + Location: 78,42 + Owner: Greece + Actor59: sbag + Location: 79,42 + Owner: Greece + Actor60: sbag + Location: 60,43 + Owner: Greece + Actor61: sbag + Location: 61,43 + Owner: Greece + Actor62: sbag + Location: 70,43 + Owner: Greece + Actor63: sbag + Location: 71,43 + Owner: Greece + Actor64: sbag + Location: 72,43 + Owner: Greece + Actor65: brik + Location: 88,85 + Owner: USSR + Actor66: brik + Location: 89,85 + Owner: USSR + Actor67: brik + Location: 90,85 + Owner: USSR + Actor68: brik + Location: 91,85 + Owner: USSR + Actor69: brik + Location: 92,85 + Owner: USSR + Actor70: brik + Location: 93,85 + Owner: USSR + Actor71: brik + Location: 94,85 + Owner: USSR + Actor72: brik + Location: 95,85 + Owner: USSR + Actor73: brik + Location: 96,85 + Owner: USSR + Actor74: brik + Location: 97,85 + Owner: USSR + Actor75: brik + Location: 98,85 + Owner: USSR + Actor76: brik + Location: 103,85 + Owner: USSR + Actor77: brik + Location: 104,85 + Owner: USSR + Actor78: brik + Location: 105,85 + Owner: USSR + Actor79: brik + Location: 106,85 + Owner: USSR + Actor80: brik + Location: 107,85 + Owner: USSR + Actor81: brik + Location: 108,85 + Owner: USSR + Actor82: brik + Location: 109,85 + Owner: USSR + Actor83: brik + Location: 110,85 + Owner: USSR + Actor86: brik + Location: 88,86 + Owner: USSR + Actor87: brik + Location: 97,86 + Owner: USSR + Actor88: brik + Location: 98,86 + Owner: USSR + Actor89: brik + Location: 103,86 + Owner: USSR + Actor90: brik + Location: 104,86 + Owner: USSR + Actor91: brik + Location: 110,86 + Owner: USSR + Actor93: brik + Location: 88,87 + Owner: USSR + Actor94: brik + Location: 110,87 + Owner: USSR + Actor99: brik + Location: 88,88 + Owner: USSR + Actor100: brik + Location: 110,88 + Owner: USSR + Actor102: brik + Location: 88,89 + Owner: USSR + Actor103: brik + Location: 110,89 + Owner: USSR + Actor105: brik + Location: 88,90 + Owner: USSR + Actor106: brik + Location: 110,90 + Owner: USSR + Actor108: brik + Location: 88,91 + Owner: USSR + Actor109: brik + Location: 89,91 + Owner: USSR + Actor110: brik + Location: 110,91 + Owner: USSR + Actor112: brik + Location: 88,92 + Owner: USSR + Actor113: brik + Location: 89,92 + Owner: USSR + Actor114: brik + Location: 110,92 + Owner: USSR + Actor116: brik + Location: 110,93 + Owner: USSR + Actor118: brik + Location: 110,94 + Owner: USSR + Actor120: brik + Location: 110,95 + Owner: USSR + Actor122: brik + Location: 110,96 + Owner: USSR + Actor124: brik + Location: 110,97 + Owner: USSR + Actor126: brik + Location: 88,98 + Owner: USSR + Actor127: brik + Location: 89,98 + Owner: USSR + Actor128: brik + Location: 110,98 + Owner: USSR + Actor130: brik + Location: 88,99 + Owner: USSR + Actor131: brik + Location: 89,99 + Owner: USSR + Actor132: brik + Location: 110,99 + Owner: USSR + Actor134: brik + Location: 88,100 + Owner: USSR + Actor135: brik + Location: 110,100 + Owner: USSR + Actor137: brik + Location: 88,101 + Owner: USSR + Actor138: brik + Location: 110,101 + Owner: USSR + Actor140: brik + Location: 88,102 + Owner: USSR + Actor141: brik + Location: 110,102 + Owner: USSR + Actor143: brik + Location: 88,103 + Owner: USSR + Actor144: brik + Location: 100,103 + Owner: USSR + Actor145: brik + Location: 101,103 + Owner: USSR + Actor146: brik + Location: 105,103 + Owner: USSR + Actor147: brik + Location: 106,103 + Owner: USSR + Actor148: brik + Location: 110,103 + Owner: USSR + Actor150: brik + Location: 88,104 + Owner: USSR + Actor151: brik + Location: 93,104 + Owner: USSR + Actor152: brik + Location: 94,104 + Owner: USSR + Actor153: brik + Location: 95,104 + Owner: USSR + Actor154: brik + Location: 96,104 + Owner: USSR + Actor155: brik + Location: 97,104 + Owner: USSR + Actor156: brik + Location: 98,104 + Owner: USSR + Actor157: brik + Location: 99,104 + Owner: USSR + Actor158: brik + Location: 100,104 + Owner: USSR + Actor159: brik + Location: 101,104 + Owner: USSR + Actor160: brik + Location: 105,104 + Owner: USSR + Actor161: brik + Location: 106,104 + Owner: USSR + Actor162: brik + Location: 107,104 + Owner: USSR + Actor163: brik + Location: 108,104 + Owner: USSR + Actor164: brik + Location: 109,104 + Owner: USSR + Actor165: brik + Location: 110,104 + Owner: USSR + Actor169: brik + Location: 88,105 + Owner: USSR + Actor170: brik + Location: 89,105 + Owner: USSR + Actor171: brik + Location: 90,105 + Owner: USSR + Actor172: brik + Location: 91,105 + Owner: USSR + Actor173: brik + Location: 92,105 + Owner: USSR + Actor174: brik + Location: 93,105 + Owner: USSR + Actor175: t12 + Location: 92,37 + Owner: Neutral + Actor176: t17 + Location: 107,40 + Owner: Neutral + Actor177: t16 + Location: 108,35 + Owner: Neutral + Actor178: tc05 + Location: 90,32 + Owner: Neutral + Actor179: tc02 + Location: 38,31 + Owner: Neutral + Actor180: tc03 + Location: 28,35 + Owner: Neutral + Actor181: t14 + Location: 80,40 + Owner: Neutral + Actor182: tc01 + Location: 71,46 + Owner: Neutral + Actor183: tc03 + Location: 59,46 + Owner: Neutral + Actor184: t08 + Location: 109,100 + Owner: Neutral + Actor185: tc05 + Location: 93,82 + Owner: Neutral + Actor186: t14 + Location: 100,95 + Owner: Neutral + Actor187: tc04 + Location: 105,85 + Owner: Neutral + Actor188: t16 + Location: 86,86 + Owner: Neutral + Actor189: t11 + Location: 38,89 + Owner: Neutral + Actor190: tc03 + Location: 91,83 + Owner: Neutral + Actor191: tc02 + Location: 86,84 + Owner: Neutral + Actor192: tc04 + Location: 34,99 + Owner: Neutral + Actor193: tc01 + Location: 32,98 + Owner: Neutral + Actor194: t17 + Location: 31,98 + Owner: Neutral + Actor195: t15 + Location: 29,98 + Owner: Neutral + Actor196: t11 + Location: 25,103 + Owner: Neutral + Actor197: t08 + Location: 26,102 + Owner: Neutral + Actor198: tc05 + Location: 60,64 + Owner: Neutral + Actor199: tc04 + Location: 66,59 + Owner: Neutral + Actor200: tc04 + Location: 31,59 + Owner: Neutral + Actor201: tc01 + Location: 24,57 + Owner: Neutral + Actor202: tc03 + Location: 76,76 + Owner: Neutral + Actor203: tc02 + Location: 78,73 + Owner: Neutral + Actor204: tc05 + Location: 73,69 + Owner: Neutral + Actor205: tc01 + Location: 82,76 + Owner: Neutral + Actor206: t15 + Location: 72,76 + Owner: Neutral + Actor207: t13 + Location: 105,72 + Owner: Neutral + Actor208: tc01 + Location: 106,70 + Owner: Neutral + Actor209: tc03 + Location: 88,75 + Owner: Neutral + Actor210: tc04 + Location: 108,71 + Owner: Neutral + Actor211: tc05 + Location: 108,44 + Owner: Neutral + Actor212: tc04 + Location: 10,31 + Owner: Neutral + Actor213: tc05 + Location: 11,78 + Owner: Neutral + Actor214: tc04 + Location: 10,84 + Owner: Neutral + Actor215: tc03 + Location: 17,88 + Owner: Neutral + Actor216: t16 + Location: 19,88 + Owner: Neutral + Actor217: t15 + Location: 16,89 + Owner: Neutral + Actor218: t15 + Location: 16,74 + Owner: Neutral + Actor219: t14 + Location: 23,76 + Owner: Neutral + Actor220: tc04 + Location: 103,51 + Owner: Neutral + Actor221: t15 + Location: 102,56 + Owner: Neutral + Actor222: t13 + Location: 102,53 + Owner: Neutral + Actor223: t10 + Location: 106,51 + Owner: Neutral + Actor224: tc02 + Location: 107,61 + Owner: Neutral + Actor225: tc05 + Location: 106,57 + Owner: Neutral + Actor226: t08 + Location: 102,52 + Owner: Neutral + Actor227: t07 + Location: 103,54 + Owner: Neutral + Actor228: t02 + Location: 105,53 + Owner: Neutral + Actor229: t10 + Location: 95,104 + Owner: Neutral + Actor230: tc03 + Location: 109,108 + Owner: Neutral + Actor231: t08 + Location: 94,105 + Owner: Neutral + Actor232: tc05 + Location: 28,105 + Owner: Neutral + Actor233: tc02 + Location: 44,106 + Owner: Neutral + Actor234: tc01 + Location: 37,104 + Owner: Neutral + Actor235: tc04 + Location: 63,37 + Owner: Neutral + Actor236: t08 + Location: 62,38 + Owner: Neutral + Actor237: tc02 + Location: 69,37 + Owner: Neutral + Actor238: tc01 + Location: 70,38 + Owner: Neutral + Actor239: tc01 + Location: 71,30 + Owner: Neutral + Actor240: t14 + Location: 73,30 + Owner: Neutral + Actor241: t13 + Location: 67,30 + Owner: Neutral + Actor242: t15 + Location: 79,38 + Owner: Neutral + Actor243: t15 + Location: 57,37 + Owner: Neutral + Actor244: t08 + Location: 59,38 + Owner: Neutral + Actor245: t14 + Location: 60,37 + Owner: Neutral + Actor246: t13 + Location: 57,32 + Owner: Neutral + Actor247: mine + Location: 80,84 + Owner: Neutral + Actor248: mine + Location: 77,110 + Owner: Neutral + Actor249: mine + Location: 79,111 + Owner: Neutral + Actor250: mine + Location: 34,108 + Owner: Neutral + Actor251: mine + Location: 39,108 + Owner: Neutral + GreeceMine: mine + Location: 108,32 + Owner: Neutral + GermanyMine1: mine + Location: 36,89 + Owner: Neutral + GermanyMine2: mine + Location: 43,92 + Owner: Neutral + Actor252: apwr + Location: 75,39 + Owner: Greece + Actor253: barl + Location: 97,32 + Owner: Greece + Actor254: barl + Location: 94,31 + Owner: Greece + Actor255: barl + Location: 97,31 + Owner: Greece + Actor256: brl3 + Location: 98,31 + Owner: Greece + Actor257: gun + Location: 54,33 + Owner: Greece + Health: 99 + Facing: 63 + Actor258: minv + Location: 58,49 + Owner: Greece + Actor259: minv + Location: 58,48 + Owner: Greece + Actor260: minv + Location: 59,48 + Owner: Greece + Actor261: minv + Location: 59,49 + Owner: Greece + Actor262: minv + Location: 71,49 + Owner: Greece + Actor263: minv + Location: 71,48 + Owner: Greece + Actor264: minv + Location: 61,51 + Owner: Greece + Actor265: minv + Location: 61,50 + Owner: Greece + Actor266: minv + Location: 70,48 + Owner: Greece + Actor267: minv + Location: 70,49 + Owner: Greece + Actor268: minv + Location: 69,51 + Owner: Greece + Actor269: minv + Location: 69,50 + Owner: Greece + Actor270: minv + Location: 68,51 + Owner: Greece + Actor271: minv + Location: 68,50 + Owner: Greece + Actor272: minv + Location: 67,49 + Owner: Greece + Actor273: minv + Location: 67,48 + Owner: Greece + Actor274: minv + Location: 66,49 + Owner: Greece + Actor275: minv + Location: 66,48 + Owner: Greece + Actor276: minv + Location: 65,51 + Owner: Greece + Actor277: minv + Location: 65,50 + Owner: Greece + Actor278: minv + Location: 64,51 + Owner: Greece + Actor279: minv + Location: 64,50 + Owner: Greece + Actor280: minv + Location: 62,49 + Owner: Greece + Actor281: minv + Location: 62,48 + Owner: Greece + Actor282: minv + Location: 63,49 + Owner: Greece + Actor283: minv + Location: 63,48 + Owner: Greece + Actor284: minv + Location: 60,51 + Owner: Greece + Actor285: minv + Location: 60,50 + Owner: Greece + Bridgemine1: minv + Location: 90,53 + Owner: Greece + Bridgemine2: minv + Location: 92,52 + Owner: Greece + Bridgemine3: minv + Location: 93,50 + Owner: Greece + Bridgemine4: minv + Location: 95,49 + Owner: Greece + Bridgemine5: minv + Location: 97,47 + Owner: Greece + Actor286: tent + Location: 60,39 + Owner: Greece + Health: 99 + Actor287: apwr + Location: 75,31 + Owner: Greece + Actor288: apwr + Location: 78,31 + Owner: Greece + Actor289: silo + Location: 101,31 + Owner: Greece + Actor290: silo + Location: 96,31 + Owner: Greece + Actor291: proc + Location: 98,31 + Owner: Greece + Health: 99 + Actor292: fact + Location: 68,31 + Owner: Greece + Health: 99 + Actor293: gun + Location: 54,38 + Owner: Greece + Health: 99 + Facing: 63 + Actor294: gun + Location: 101,38 + Owner: Greece + Health: 99 + Facing: 127 + Actor295: gun + Location: 96,38 + Owner: Greece + Health: 99 + Facing: 127 + Actor296: gun + Location: 70,42 + Owner: Greece + Health: 99 + Facing: 127 + Actor297: gun + Location: 61,42 + Owner: Greece + Health: 99 + Facing: 127 + Actor298: gap + Location: 64,34 + Owner: Greece + Health: 97 + Actor299: gap + Location: 75,35 + Owner: Greece + Health: 97 + Actor300: dome + Location: 73,39 + Owner: Greece + Health: 97 + Actor301: weap + Location: 66,37 + Owner: Greece + Health: 97 + CommandCenter: fcom + Location: 102,94 + Owner: USSR + Health: 98 + Actor303: barr + Location: 106,92 + Owner: USSR + Health: 31 + Actor304: proc + Location: 92,91 + Owner: USSR + Health: 34 + Actor305: fact + Location: 98,98 + Owner: USSR + Health: 39 + Actor306: hbox + Location: 62,43 + Owner: Greece + Actor307: hbox + Location: 69,43 + Owner: Greece + GreeceHpad1: hpad + Location: 94,32 + Owner: Greece + GreeceHpad2: hpad + Location: 103,35 + Owner: Greece + Actor309: agun + Location: 82,33 + Owner: Greece + Facing: 127 + Actor310: agun + Location: 82,40 + Owner: Greece + Facing: 159 + Actor311: agun + Location: 55,38 + Owner: Greece + Facing: 95 + Actor312: agun + Location: 55,33 + Owner: Greece + Facing: 127 + Actor313: agun + Location: 67,34 + Owner: Greece + Facing: 127 + Actor314: tsla + Location: 89,95 + Owner: USSR + Health: 22 + Actor315: apwr + Location: 107,101 + Owner: USSR + Health: 56 + Actor316: apwr + Location: 95,101 + Owner: USSR + Health: 47 + Actor317: apwr + Location: 102,31 + Owner: Greece + Actor319: fix + Location: 104,96 + Owner: USSR + Health: 43 + Actor320: hbox + Location: 104,56 + Owner: Germany + Actor321: hbox + Location: 106,56 + Owner: Germany + Actor322: hbox + Location: 106,53 + Owner: Germany + Actor323: hbox + Location: 104,53 + Owner: Germany + Actor324: agun + Location: 103,56 + Owner: Germany + Facing: 95 + Actor325: agun + Location: 107,57 + Owner: Germany + Facing: 159 + Actor326: syrd + Location: 59,30 + Owner: Greece + Actor327: dome + Location: 108,91 + Owner: USSR + Health: 39 + Actor328: powr + Location: 107,53 + Owner: Germany + Actor329: arty + Location: 61,44 + Owner: Greece + Facing: 127 + Actor330: arty + Location: 70,44 + Owner: Greece + Facing: 127 + Actor331: arty + Location: 81,36 + Owner: Greece + Facing: 159 + Actor333: 2tnk + Location: 95,36 + Owner: Greece + Health: 99 + Facing: 159 + Actor334: 2tnk + Location: 102,37 + Owner: Greece + Health: 99 + Facing: 95 + Actor335: 2tnk + Location: 82,39 + Owner: Greece + Health: 99 + Facing: 223 + Actor336: 2tnk + Location: 83,34 + Owner: Greece + Health: 99 + Facing: 191 + Actor337: 2tnk + Location: 54,36 + Owner: Greece + Health: 99 + Facing: 31 + Actor338: 2tnk + Location: 69,44 + Owner: Greece + Health: 99 + Facing: 127 + Actor339: 2tnk + Location: 62,44 + Owner: Greece + Health: 99 + Facing: 127 + Actor341: 4tnk + Location: 94,97 + Owner: USSR + Health: 26 + Facing: 223 + Actor342: harv + Location: 81,85 + Owner: USSR + Facing: 63 + Actor343: 4tnk + Location: 91,98 + Owner: USSR + Health: 62 + Facing: 63 + Actor344: 3tnk + Location: 99,97 + Owner: USSR + Health: 53 + Actor345: 3tnk + Location: 105,99 + Owner: USSR + Facing: 31 + Actor346: 3tnk + Location: 91,103 + Owner: USSR + Facing: 223 + Actor347: v2rl + Location: 96,97 + Owner: USSR + Facing: 223 + Actor348: v2rl + Location: 91,100 + Owner: USSR + Facing: 31 + Actor350: 1tnk + Location: 26,51 + Owner: Greece + Facing: 159 + Actor351: 1tnk + Location: 27,50 + Owner: Greece + Facing: 159 + Actor352: 1tnk + Location: 24,51 + Owner: Greece + Facing: 159 + Actor353: arty + Location: 24,50 + Owner: Greece + Facing: 159 + Actor354: arty + Location: 26,49 + Owner: Greece + Facing: 159 + Actor355: arty + Location: 30,36 + Owner: Greece + Facing: 127 + Actor356: arty + Location: 35,37 + Owner: Greece + Facing: 95 + Actor357: 2tnk + Location: 30,38 + Owner: Greece + Facing: 95 + Actor358: 2tnk + Location: 32,37 + Owner: Greece + Facing: 95 + Actor359: 2tnk + Location: 96,92 + Owner: Greece + Health: 39 + Facing: 95 + Actor360: 2tnk + Location: 99,94 + Owner: Greece + Health: 51 + Facing: 127 + Actor361: 2tnk + Location: 102,92 + Owner: Greece + Health: 41 + Facing: 159 + Actor363: 2tnk + Location: 105,56 + Owner: Germany + Facing: 127 + Actor364: 2tnk + Location: 106,55 + Owner: Germany + Facing: 127 + Actor365: 2tnk + Location: 104,55 + Owner: Germany + Facing: 127 + Actor366: arty + Location: 107,56 + Owner: Germany + Facing: 95 + Actor367: arty + Location: 108,56 + Owner: Germany + Facing: 95 + Actor368: arty + Location: 102,56 + Owner: Germany + Facing: 159 + Actor369: arty + Location: 102,55 + Owner: Germany + Facing: 159 + Actor370: 2tnk + Location: 44,62 + Owner: Greece + Facing: 63 + Actor371: 2tnk + Location: 44,64 + Owner: Greece + Facing: 63 + Actor372: 2tnk + Location: 48,62 + Owner: Greece + Facing: 191 + Actor373: 2tnk + Location: 48,64 + Owner: Greece + Facing: 191 + Actor374: 2tnk + Location: 65,61 + Owner: Greece + Facing: 159 + Actor375: 2tnk + Location: 63,63 + Owner: Greece + Facing: 159 + Actor376: arty + Location: 63,61 + Owner: Greece + Facing: 159 + Actor377: arty + Location: 81,68 + Owner: Greece + Facing: 159 + Actor378: arty + Location: 83,68 + Owner: Greece + Facing: 159 + Actor379: 2tnk + Location: 83,69 + Owner: Greece + Facing: 159 + Actor380: 2tnk + Location: 81,69 + Owner: Greece + Facing: 159 + Actor386: gnrl + Location: 73,34 + Owner: Greece + Facing: 63 + SubCell: 2 + Actor387: chan + Location: 73,33 + Owner: Greece + Facing: 63 + SubCell: 2 + Actor388: chan + Location: 73,34 + Owner: Greece + Facing: 63 + SubCell: 5 + Actor389: ca + Location: 47,41 + Owner: Greece + Health: 99 + Facing: 127 + Actor390: dd + Location: 32,78 + Owner: Greece + Health: 99 + Facing: 95 + Actor391: dd + Location: 27,74 + Owner: Greece + Health: 99 + Facing: 159 + Actor392: ca + Location: 18,68 + Owner: Greece + Health: 99 + Facing: 127 + Actor393: pt + Location: 33,73 + Owner: Greece + Facing: 127 + PinchHitter: powr + Owner: Greece + Location: 96,33 + Actor416: proc + Owner: Germany + Location: 38,80 + Actor417: silo + Owner: Germany + Location: 37,84 + Actor418: silo + Owner: Germany + Location: 38,84 + Actor419: silo + Owner: Germany + Location: 38,85 + Actor420: silo + Owner: Germany + Location: 37,85 + GermanyHpad1: hpad + Owner: Germany + Location: 40,77 + GermanyHpad2: hpad + Owner: Germany + Location: 55,70 + GermanyTent: tent + Owner: Germany + Location: 49,82 + GermanyWarFactory: weap + Owner: Germany + Location: 55,74 + Actor422: proc + Owner: Germany + Location: 42,84 + Actor424: apwr + Owner: Germany + Location: 51,79 + Actor425: apwr + Owner: Germany + Location: 50,76 + Actor426: apwr + Owner: Germany + Location: 51,73 + Actor427: apwr + Owner: Germany + Location: 47,74 + Actor430: fact + Owner: Germany + Location: 44,79 + Actor431: gun + Owner: Germany + Location: 45,88 + TurretFacing: 92 + Actor432: gun + Owner: Germany + Location: 42,89 + TurretFacing: 92 + Actor433: gun + Owner: Germany + Location: 40,91 + TurretFacing: 92 + Actor434: gun + Owner: Germany + Location: 59,79 + TurretFacing: 92 + Actor435: gun + Owner: Germany + Location: 59,75 + TurretFacing: 93 + Actor436: hbox + Owner: Germany + Location: 60,77 + TurretFacing: 92 + Actor437: hbox + Owner: Germany + Location: 47,70 + TurretFacing: 92 + Actor438: gun + Owner: Germany + Location: 44,69 + TurretFacing: 92 + Actor439: gun + Owner: Germany + Location: 50,69 + TurretFacing: 92 + Actor440: moneycrate + Owner: Germany + Location: 104,54 + Actor441: moneycrate + Owner: Germany + Location: 105,55 + Actor442: moneycrate + Owner: Germany + Location: 106,54 + Actor443: healcrate + Owner: Neutral + Location: 105,53 + StartAttack1tnk1: 1tnk + Location: 101,74 + Owner: Greece + Facing: 127 + StartAttack1tnk2: 1tnk + Location: 103,74 + Owner: Greece + Facing: 127 + StartAttackArty1: arty + Location: 102,74 + Owner: Greece + Facing: 127 + StartAttackArty2: arty + Location: 101,73 + Owner: Greece + Facing: 127 + StartAttackArty3: arty + Location: 103,73 + Owner: Greece + Facing: 127 + StolenTruck: truk + Location: 99,91 + Owner: Greece + SouthAttack1: waypoint + Location: 40,87 + Owner: Neutral + SouthAttack2: waypoint + Location: 53,93 + Owner: Neutral + DefaultCameraPosition: waypoint + Location: 99,95 + Owner: Neutral + LZ1: waypoint + Location: 89,86 + Owner: Neutral + LZ2: waypoint + Location: 108,88 + Owner: Neutral + LZ3: waypoint + Location: 107,109 + Owner: Neutral + LZ4: waypoint + Location: 86,108 + Owner: Neutral + ChinookEntrySouth: waypoint + Location: 57,113 + Owner: Neutral + SeaEntryEast: waypoint + Location: 110,67 + Owner: Neutral + SeaEntryWest1: waypoint + Location: 10,111 + Owner: Neutral + SeaEntryWest2: waypoint + Location: 10,95 + Owner: Neutral + SeaWestPath1: waypoint + Location: 25,85 + Owner: Neutral + SeaWestPath2: waypoint + Location: 39,96 + Owner: Neutral + SeaWestPath3: waypoint + Location: 49,101 + Owner: Neutral + SeaEastLZ: waypoint + Location: 96,70 + Owner: Neutral + SeaWestLZ1: waypoint + Location: 29,89 + Owner: Neutral + SeaWestLZ2: waypoint + Location: 39,72 + Owner: Neutral + SeaWestLZ3: waypoint + Location: 69,94 + Owner: Neutral + SeaWestLZ4: waypoint + Location: 69,106 + Owner: Neutral + TruckStop1: waypoint + Location: 101,77 + Owner: Neutral + TruckStop2: waypoint + Location: 82,75 + Owner: Neutral + TruckStop3: waypoint + Location: 64,65 + Owner: Neutral + TruckStop4: waypoint + Location: 63,52 + Owner: Neutral + TruckStop5: waypoint + Location: 63,50 + Owner: Neutral + TruckStop6: waypoint + Location: 66,47 + Owner: Neutral + TruckStop7: waypoint + Location: 72,40 + Owner: Neutral + TruckStop8: waypoint + Location: 72,33 + Owner: Neutral + TruckAlarm: waypoint + Owner: Neutral + Location: 69,35 + LandEntryWest: waypoint + Owner: Neutral + Location: 10,58 + TruckEscape1: waypoint + Owner: Neutral + Location: 72,36 + TruckEcsape2: waypoint + Owner: Neutral + Location: 33,35 + TruckEscape3: waypoint + Owner: Neutral + Location: 25,50 + TruckEscape4: waypoint + Owner: Neutral + Location: 30,63 + TruckEscape5: waypoint + Owner: Neutral + Location: 15,82 + TruckEscapeWest: waypoint + Owner: Neutral + Location: 10,82 + TruckEscapeEast: waypoint + Location: 110,40 + 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/soviet-09/rules.yaml b/mods/ra/maps/soviet-09/rules.yaml new file mode 100644 index 0000000000..d4c6566212 --- /dev/null +++ b/mods/ra/maps/soviet-09/rules.yaml @@ -0,0 +1,121 @@ +World: + LuaScript: + Scripts: campaign-global.lua, soviet09.lua, soviet09-AI.lua + MissionData: + BriefingVideo: soviet9.vqa + WinVideo: v2rocket.vqa + LossVideo: sfrozen.vqa + StartVideo: movingin.vqa + Briefing: The Allied forces have intercepted and destroyed a convoy that carried parts for our secret weapon. One truck remains, but they have captured that last truck and its cargo.\n\nThis is not acceptable! You are to destroy that truck before the Allies leave the area with it. + ScriptLobbyDropdown@difficulty: + ID: difficulty + Label: Difficulty + Values: + easy: Easy + normal: Normal + hard: Hard + Default: easy + SmudgeLayer@SCORCH: + InitialSmudges: + 98,87: sc3,0 + 100,87: sc2,0 + 108,87: sc1,0 + 88,93: sc6,0 + 104,101: sc3,0 + SmudgeLayer@CRATER: + InitialSmudges: + 99,87: cr1,2 + 86,93: cr1,0 + 87,93: cr1,1 + +Player: + PlayerResources: + DefaultCash: 8000 + +AFLD: + AirstrikePower@parabombs: + Prerequisites: ~disabled + +ATEK: + Buildable: + Prerequisites: ~disabled + +HPAD: + Buildable: + Prerequisites: ~structures.allies + +IRON: + Buildable: + Prerequisites: ~disabled + +MSLO: + Buildable: + Prerequisites: ~disabled + +TRUK: + Buildable: + Prerequisites: ~disabled + -SpawnActorOnDeath: + +FTRK: + Buildable: + Prerequisites: ~disabled + +QTNK: + Buildable: + Prerequisites: ~disabled + +MRJ: + Buildable: + Prerequisites: ~disabled + +HELI: + Buildable: + Prerequisites: ~hpad + +HIND: + Buildable: + Prerequisites: ~disabled + +MIG: + Buildable: + Prerequisites: ~disabled + +MSUB: + Buildable: + Prerequisites: ~disabled + +CA: + Buildable: + Prerequisites: ~disabled + +THF: + Buildable: + Prerequisites: ~disabled + +GAP: + Buildable: + Prerequisites: ~disabled + +PDOX: + Buildable: + Prerequisites: ~disabled + +E7: + Buildable: + Prerequisites: ~disabled + +MECH: + Buildable: + Prerequisites: ~disabled + +SPY: + Buildable: + Prerequisites: ~disabled + +E3: + Buildable: + Prerequisites: ~tent + +CHAN: + -Wanders: diff --git a/mods/ra/maps/soviet-09/soviet09-AI.lua b/mods/ra/maps/soviet-09/soviet09-AI.lua new file mode 100644 index 0000000000..db1ab97e0f --- /dev/null +++ b/mods/ra/maps/soviet-09/soviet09-AI.lua @@ -0,0 +1,192 @@ +--[[ + Copyright 2007-2020 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. +]] +IdleHunt = function(unit) if not unit.IsDead then Trigger.OnIdle(unit, unit.Hunt) end end + +AttackGroup = { } +AttackGroupSize = 12 +AlliedInfantry = { "e1", "e3" } +AlliedVehicles = { "jeep", "1tnk", "2tnk", "2tnk" } +AlliedAircraftType = { "heli" } +Longbows = { } + +ProductionInterval = +{ + easy = DateTime.Seconds(25), + normal = DateTime.Seconds(15), + hard = DateTime.Seconds(5) +} +AttackPaths = +{ + { SouthAttack1.Location, SouthAttack2.Location, DefaultCameraPosition.Location }, + { TruckStop2.Location, TruckStop1.Location, DefaultCameraPosition.Location } +} + +WTransUnits = { { "2tnk", "1tnk", "1tnk", "e3", "e3" }, { "2tnk", "2tnk", "2tnk" } } +WTransDelays = +{ + easy = DateTime.Minutes(5), + normal = DateTime.Minutes(3), + hard = DateTime.Minutes(1) +} +WTransWays = +{ + { SeaEntryEast.Location, SeaEastLZ.Location }, + { SeaEntryWest1.Location, SeaWestLZ1.Location }, + { SeaEntryWest1.Location, SeaWestPath1.Location, SeaWestLZ2.Location }, + { SeaEntryWest2.Location, SeaWestPath2.Location, SeaWestPath3.Location, SeaWestLZ3.Location }, + { SeaEntryWest2.Location, SeaWestPath2.Location, SeaWestPath3.Location, SeaWestLZ4.Location } +} + +ChinookChalk = { "e1", "e1", "e1", "e1", "e3", "e3", "e3", "e3" } +ChinookPaths = +{ + { SeaEntryEast.Location, LZ1.Location }, + { TruckEscapeEast.Location, LZ2.Location }, + { ChinookEntrySouth.Location, LZ3.Location }, + { SeaEntryWest2.Location, LZ4.Location } +} +ChinookDelay = +{ + easy = { DateTime.Minutes(1), DateTime.Seconds(90) }, + normal = { DateTime.Seconds(45), DateTime.Seconds(75) }, + hard = { DateTime.Seconds(30), DateTime.Minutes(1) } +} +ChinookWaves = +{ + easy = 4, + normal = 8, + hard = 12 +} +ChinookAttacks = 0 + +ChinookAttack = function() + Trigger.AfterDelay(Utils.RandomInteger(ChinookDelay[1], ChinookDelay[2]), function() + local way = Utils.Random(ChinookPaths) + local units = ChinookChalk + local chalk = Reinforcements.ReinforceWithTransport(Greece, "tran", units , way, { way[2], way[1] })[2] + Utils.Do(chalk, function(unit) + Trigger.OnAddedToWorld(unit, IdleHunt) + end) + + ChinookAttacks = ChinookAttacks + 1 + if ChinookAttacks <= ChinookWaves[Map.LobbyOption("difficulty")] then + ChinookAttack() + end + end) +end + +ProduceInfantry = function() + if GermanyTent.IsDead or GermanyTent.Owner ~= Germany then + return + end + + Germany.Build({ Utils.Random(AlliedInfantry) }, function(units) + table.insert(AttackGroup, units[1]) + SendAttackGroup() + Trigger.AfterDelay(ProductionInterval[Map.LobbyOption("difficulty")], ProduceInfantry) + end) +end + +ProduceVehicles = function() + if GermanyWarFactory.IsDead or GermanyWarFactory.Owner ~= Germany then + return + end + + Germany.Build({ Utils.Random(AlliedVehicles) }, function(units) + table.insert(AttackGroup, units[1]) + SendAttackGroup() + Trigger.AfterDelay(ProductionInterval[Map.LobbyOption("difficulty")], ProduceVehicles) + end) +end + +SendAttackGroup = function() + if #AttackGroup < AttackGroupSize then + return + end + + Utils.Do(AttackGroup, IdleHunt) + + AttackGroup = { } +end + +GreeceAircraft = function() + if (GreeceHpad1.IsDead or GreeceHpad1.Owner ~= Greece) and (GreeceHpad2.IsDead or GreeceHpad2.Owner ~= Greece) then + return + end + + Greece.Build(AlliedAircraftType, function(units) + local longbow = units[1] + Longbows[#Longbows + 1] = longbow + + Trigger.OnKilled(longbow, GreeceAircraft) + + local alive = Utils.Where(Longbows, function(y) return not y.IsDead end) + if #alive < 2 then + Trigger.AfterDelay(DateTime.Seconds(90), GreeceAircraft) + end + + InitializeAttackAircraft(longbow, USSR) + end) +end + +GermanAircraft = function() + if (GermanyHpad1.IsDead or GermanyHpad1.Owner ~= Germany) and (GermanyHpad2.IsDead or GermanyHpad2.Owner ~= Germany) then + return + end + + Germany.Build(AlliedAircraftType, function(units) + local longbow = units[1] + Longbows[#Longbows + 1] = longbow + + Trigger.OnKilled(longbow, GermanAircraft) + + local alive = Utils.Where(Longbows, function(y) return not y.IsDead end) + if #alive < 2 then + Trigger.AfterDelay(DateTime.Seconds(ProductionInterval[Map.LobbyOption("difficulty")] / 2), GermanAircraft) + end + + InitializeAttackAircraft(longbow, USSR) + end) +end + +WTransWaves = function() + local way = Utils.Random(WTransWays) + local units = Utils.Random(WTransUnits) + local attackUnits = Reinforcements.ReinforceWithTransport(Greece, "lst", units , way, { way[2], way[1] })[2] + Utils.Do(attackUnits, function(a) + Trigger.OnAddedToWorld(a, function() + a.AttackMove(DefaultCameraPosition.Location) + IdleHunt(a) + end) + end) + + Trigger.AfterDelay(WTransDelays, WTransWaves) +end + +ActivateAI = function() + local difficulty = Map.LobbyOption("difficulty") + WTransDelays = WTransDelays[difficulty] + ChinookDelay = ChinookDelay[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) + + Trigger.AfterDelay(DateTime.Minutes(3), WTransWaves) + ChinookAttack() + ProduceInfantry() + ProduceVehicles() + GreeceAircraft() + GermanAircraft() +end diff --git a/mods/ra/maps/soviet-09/soviet09.lua b/mods/ra/maps/soviet-09/soviet09.lua new file mode 100644 index 0000000000..a2fe3970cc --- /dev/null +++ b/mods/ra/maps/soviet-09/soviet09.lua @@ -0,0 +1,109 @@ +--[[ + Copyright 2007-2020 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. +]] + +TruckStops = { TruckStop1, TruckStop2, TruckStop3, TruckStop4, TruckStop5, TruckStop6, TruckStop7, TruckStop8 } +MissionStartAttackUnits = { StartAttack1tnk1, StartAttack1tnk2, StartAttackArty1, StartAttackArty2, StartAttackArty3 } +TruckEscape = { TruckEscape1, TruckEscape2, TruckEscape3, TruckEscape4, TruckEscape5, TruckEscapeWest } +BackupRoute = { TruckEscape2, TruckEscape1, TruckEscapeEast } + +MissionStart = function() + Utils.Do(TruckStops, function(waypoint) + StolenTruck.Move(waypoint.Location) + end) + + Trigger.AfterDelay(DateTime.Seconds(5), function() + Utils.Do(MissionStartAttackUnits, function(actor) + actor.AttackMove(DefaultCameraPosition.Location) + end) + end) + + Trigger.AfterDelay(DateTime.Seconds(45), function() + Media.DisplayMessage("Commander, the truck has stopped at a nearby allied base.\nAllied radio intercepts say the truck has orders to flee the battlefield\nif any Soviet units approach the base.") + end) + + Trigger.OnKilled(StolenTruck, function() + USSR.MarkCompletedObjective(DestroyTruck) + USSR.MarkCompletedObjective(DefendCommand) + end) + + Trigger.OnKilled(CommandCenter, function() + USSR.MarkFailedObjective(DefendCommand) + end) +end + +Trigger.OnEnteredProximityTrigger(TruckAlarm.CenterPosition, WDist.FromCells(11), function(actor, triggerflee) + if actor.Owner == USSR and actor.Type ~= "badr" and actor.Type ~= "u2" and actor.Type ~= "camera.spyplane" then + Trigger.RemoveProximityTrigger(triggerflee) + Media.DisplayMessage("The convoy truck is attempting to escape!") + EscapeCamera = Actor.Create("camera", true, { Owner = USSR, Location = TruckAlarm.Location }) + Media.PlaySoundNotification(USSR, "AlertBleep") + Utils.Do(TruckEscape, function(waypoint) + StolenTruck.Move(waypoint.Location) + end) + + Trigger.AfterDelay(DateTime.Seconds(5), function() + EscapeCamera.Destroy() + end) + + Trigger.OnIdle(StolenTruck, function() + Utils.Do(BackupRoute, function(waypoint) + StolenTruck.Move(waypoint.Location) + end) + end) + end +end) + +Trigger.OnEnteredFootprint(({ TruckEscapeWest.Location } or { TruckEscapeEast.Location }), function(actor, triggerlose) + if actor.Owner == Greece and actor.Type == "truk" then + Trigger.RemoveFootprintTrigger(triggerlose) + actor.Destroy() + USSR.MarkFailedObjective(DestroyTruck) + end +end) + +Tick = function() + Greece.Cash = 50000 + Germany.Cash = 50000 +end + +WorldLoaded = function() + USSR = Player.GetPlayer("USSR") + Germany = Player.GetPlayer("Germany") + Greece = Player.GetPlayer("Greece") + + Trigger.OnObjectiveAdded(USSR, function(p, id) + Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective") + end) + + DestroyTruck = USSR.AddObjective("Destroy the stolen convoy truck.\nDo not let it escape.") + DefendCommand = USSR.AddObjective("Defend our forward command center.") + + Trigger.OnObjectiveCompleted(USSR, function(p, id) + Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed") + end) + Trigger.OnObjectiveFailed(USSR, function(p, id) + Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed") + end) + + Trigger.OnPlayerLost(USSR, function() + Trigger.AfterDelay(DateTime.Seconds(1), function() + Media.PlaySpeechNotification(USSR, "MissionFailed") + end) + end) + Trigger.OnPlayerWon(USSR, function() + Trigger.AfterDelay(DateTime.Seconds(1), function() + Media.PlaySpeechNotification(USSR, "MissionAccomplished") + end) + end) + + Camera.Position = DefaultCameraPosition.CenterPosition + + MissionStart() + ActivateAI() +end diff --git a/mods/ra/missions.yaml b/mods/ra/missions.yaml index 4a9c489d94..8b5832b414 100644 --- a/mods/ra/missions.yaml +++ b/mods/ra/missions.yaml @@ -23,6 +23,7 @@ Soviet Campaign: soviet-07 soviet-08a soviet-08b + soviet-09 Counterstrike: sarin-gas-1-crackdown sarin-gas-2-down-under