diff --git a/mods/ra/maps/soviet-09/map.bin b/mods/ra/maps/soviet-09/map.bin new file mode 100644 index 0000000000..6dd7092210 Binary files /dev/null and b/mods/ra/maps/soviet-09/map.bin differ diff --git a/mods/ra/maps/soviet-09/map.png b/mods/ra/maps/soviet-09/map.png new file mode 100644 index 0000000000..dc774179f2 Binary files /dev/null and b/mods/ra/maps/soviet-09/map.png differ 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