From 619457828f3b9c501bf0c99b4dbc56e5584c04a6 Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 21 Aug 2018 00:43:56 -0400 Subject: [PATCH] Soviet Soldier Volkov & Chitzkoi fully ported Crash fixed. --- AUTHORS | 1 + OpenRA.sln | 2 + .../soviet-soldier-volkov-n-chitzkoi/map.bin | Bin 0 -> 81937 bytes .../soviet-soldier-volkov-n-chitzkoi/map.png | Bin 0 -> 27168 bytes .../soviet-soldier-volkov-n-chitzkoi/map.yaml | 1442 +++++++++++++++++ .../notifications.yaml | 3 + .../rules.yaml | 206 +++ .../scu35ea-AI.lua | 112 ++ .../scu35ea.lua | 376 +++++ .../weapons.yaml | 36 + 10 files changed, 2178 insertions(+) create mode 100644 mods/ra/maps/soviet-soldier-volkov-n-chitzkoi/map.bin create mode 100644 mods/ra/maps/soviet-soldier-volkov-n-chitzkoi/map.png create mode 100644 mods/ra/maps/soviet-soldier-volkov-n-chitzkoi/map.yaml create mode 100644 mods/ra/maps/soviet-soldier-volkov-n-chitzkoi/notifications.yaml create mode 100644 mods/ra/maps/soviet-soldier-volkov-n-chitzkoi/rules.yaml create mode 100644 mods/ra/maps/soviet-soldier-volkov-n-chitzkoi/scu35ea-AI.lua create mode 100644 mods/ra/maps/soviet-soldier-volkov-n-chitzkoi/scu35ea.lua create mode 100644 mods/ra/maps/soviet-soldier-volkov-n-chitzkoi/weapons.yaml diff --git a/AUTHORS b/AUTHORS index ed2dbae1c6..7aa6e18462 100644 --- a/AUTHORS +++ b/AUTHORS @@ -104,6 +104,7 @@ Also thanks to: * Michael Rätzel * Michael Silber (frühstück) * Michael Sztolcman (s1w_) + * Mike Gagné (AngryBirdz) * Muh * Mustafa Alperen Seki (MustaphaTR) * Neil Shivkar (havok13888) diff --git a/OpenRA.sln b/OpenRA.sln index ff31a324f8..ae84a57a1f 100644 --- a/OpenRA.sln +++ b/OpenRA.sln @@ -96,6 +96,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Red Alert Lua scripts", "Re mods\ra\maps\soviet-06b\soviet06b-reinforcements_teams.lua = mods\ra\maps\soviet-06b\soviet06b-reinforcements_teams.lua mods\ra\maps\soviet-06b\soviet06b.lua = mods\ra\maps\soviet-06b\soviet06b.lua mods\ra\maps\soviet-07\soviet07.lua = mods\ra\maps\soviet-07\soviet07.lua + mods\ra\maps\soviet-soldier-volkov-n-chitzkoi\scu35ea.lua = mods\ra\maps\soviet-soldier-volkov-n-chitzkoi\scu35ea.lua + mods\ra\maps\soviet-soldier-volkov-n-chitzkoi\scu35ea-AI.lua = mods\ra\maps\soviet-soldier-volkov-n-chitzkoi\scu35ea-AI.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 EndProjectSection diff --git a/mods/ra/maps/soviet-soldier-volkov-n-chitzkoi/map.bin b/mods/ra/maps/soviet-soldier-volkov-n-chitzkoi/map.bin new file mode 100644 index 0000000000000000000000000000000000000000..174e320f272c8e2b87f37a39c48106bbc6fcab7c GIT binary patch literal 81937 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 AG5`Po literal 0 HcmV?d00001 diff --git a/mods/ra/maps/soviet-soldier-volkov-n-chitzkoi/map.yaml b/mods/ra/maps/soviet-soldier-volkov-n-chitzkoi/map.yaml new file mode 100644 index 0000000000..b5ef2ac32f --- /dev/null +++ b/mods/ra/maps/soviet-soldier-volkov-n-chitzkoi/map.yaml @@ -0,0 +1,1442 @@ +MapFormat: 11 + +RequiresMod: ra + +Title: Soviet Soldier Volkov & Chitzkoi + +Author: Westwood Studios + +Tileset: SNOW + +MapSize: 128,128 + +Bounds: 18,23,60,73 + +Visibility: MissionSelector + +Categories: Mission + +LockPreview: True + +Players: + PlayerReference@Neutral: + Name: Neutral + OwnsWorld: True + NonCombatant: True + Faction: england + PlayerReference@Creeps: + Name: Creeps + NonCombatant: True + Faction: england + Enemies: Greece, GoodGuy, Spain, France, USSR + PlayerReference@Greece: + Name: Greece + Faction: allies + Color: ABB7E4 + Allies: Spain, France, GoodGuy + Enemies: USSR, Creeps + PlayerReference@USSR: + Name: USSR + AllowBots: False + Playable: True + Required: True + LockFaction: True + Faction: soviet + LockColor: True + Color: FE1100 + LockSpawn: True + LockTeam: True + Enemies: Greece, GoodGuy, Spain, France, Creeps + PlayerReference@GoodGuy: + Name: GoodGuy + Faction: allies + Color: ABB7E4 + Allies: Greece, Spain, France + Enemies: USSR, Creeps + PlayerReference@Spain: + Name: Spain + Faction: allies + Color: F6D679 + Allies: Greece, GoodGuy, France + Enemies: USSR, Creeps + PlayerReference@France: + Name: France + Faction: allies + Color: 5DC2A5 + Allies: Greece, GoodGuy, Spain + Enemies: USSR, Creeps + +Actors: + Actor0: cycl + Location: 50,23 + Owner: Greece + Actor1: cycl + Location: 51,23 + Owner: Greece + Actor2: cycl + Location: 59,23 + Owner: Greece + Actor3: cycl + Location: 60,23 + Owner: Greece + Actor4: brik + Location: 92,23 + Owner: Neutral + Actor5: cycl + Location: 50,24 + Owner: Greece + Actor6: cycl + Location: 60,24 + Owner: Greece + Actor7: brik + Location: 92,24 + Owner: Neutral + Actor8: brik + Location: 92,25 + Owner: Neutral + Actor9: brik + Location: 92,26 + Owner: Neutral + Actor10: brik + Location: 92,27 + Owner: Neutral + Actor11: brik + Location: 92,28 + Owner: Neutral + Actor12: brik + Location: 92,29 + Owner: Neutral + Actor13: brik + Location: 92,30 + Owner: Neutral + Actor14: brik + Location: 92,31 + Owner: Neutral + Actor15: brik + Location: 92,32 + Owner: Neutral + Actor16: cycl + Location: 50,33 + Owner: Greece + Actor17: cycl + Location: 60,33 + Owner: Greece + Actor18: brik + Location: 92,33 + Owner: Neutral + Actor19: cycl + Location: 50,34 + Owner: Greece + Actor20: cycl + Location: 51,34 + Owner: Greece + Actor21: cycl + Location: 59,34 + Owner: Greece + Actor22: cycl + Location: 60,34 + Owner: Greece + Actor23: brik + Location: 92,34 + Owner: Neutral + Actor24: cycl + Location: 71,35 + Owner: Greece + Actor25: cycl + Location: 72,35 + Owner: Greece + Actor26: cycl + Location: 73,35 + Owner: Greece + Actor27: cycl + Location: 74,35 + Owner: Greece + Actor28: cycl + Location: 75,35 + Owner: Greece + Actor29: cycl + Location: 76,35 + Owner: Greece + Actor30: cycl + Location: 77,35 + Owner: Greece + Actor31: brik + Location: 92,35 + Owner: Neutral + Actor32: cycl + Location: 71,36 + Owner: Greece + Actor33: cycl + Location: 77,36 + Owner: Greece + Actor34: brik + Location: 92,36 + Owner: Neutral + Actor35: cycl + Location: 77,37 + Owner: Greece + Actor36: brik + Location: 92,37 + Owner: Neutral + Actor37: cycl + Location: 77,38 + Owner: Greece + Actor38: brik + Location: 92,38 + Owner: Neutral + Actor39: cycl + Location: 71,39 + Owner: Greece + Actor40: cycl + Location: 77,39 + Owner: Greece + Actor41: brik + Location: 92,39 + Owner: Neutral + Actor42: cycl + Location: 71,40 + Owner: Greece + Actor43: cycl + Location: 72,40 + Owner: Greece + Actor44: cycl + Location: 73,40 + Owner: Greece + Actor45: cycl + Location: 74,40 + Owner: Greece + Actor46: cycl + Location: 75,40 + Owner: Greece + Actor47: cycl + Location: 76,40 + Owner: Greece + Actor48: cycl + Location: 77,40 + Owner: Greece + Actor49: brik + Location: 92,40 + Owner: Neutral + Actor50: brik + Location: 92,41 + Owner: Neutral + Actor51: brik + Location: 92,42 + Owner: Neutral + Actor52: brik + Location: 92,43 + Owner: Neutral + Actor53: brik + Location: 92,44 + Owner: Neutral + Actor54: brik + Location: 92,45 + Owner: Neutral + Actor55: brik + Location: 92,46 + Owner: Neutral + Actor56: brik + Location: 92,47 + Owner: Neutral + Actor57: brik + Location: 92,48 + Owner: Neutral + Actor58: brik + Location: 92,49 + Owner: Neutral + Actor59: brik + Location: 92,50 + Owner: Neutral + Actor60: brik + Location: 92,51 + Owner: Neutral + Actor61: brik + Location: 92,52 + Owner: Neutral + Actor62: brik + Location: 83,53 + Owner: Neutral + Actor63: brik + Location: 84,53 + Owner: Neutral + Actor64: brik + Location: 85,53 + Owner: Neutral + Actor65: brik + Location: 86,53 + Owner: Neutral + Actor66: brik + Location: 87,53 + Owner: Neutral + Actor67: brik + Location: 88,53 + Owner: Neutral + Actor68: brik + Location: 89,53 + Owner: Neutral + Actor69: brik + Location: 90,53 + Owner: Neutral + Actor70: brik + Location: 91,53 + Owner: Neutral + Actor71: brik + Location: 92,53 + Owner: Neutral + Actor72: brik + Location: 51,56 + Owner: Greece + Actor73: brik + Location: 52,56 + Owner: Greece + Actor74: brik + Location: 53,56 + Owner: Greece + Actor75: brik + Location: 54,56 + Owner: Greece + Actor76: brik + Location: 55,56 + Owner: Greece + Actor77: brik + Location: 56,56 + Owner: Greece + Actor78: brik + Location: 51,57 + Owner: Greece + Actor79: brik + Location: 52,57 + Owner: Greece + Actor80: brik + Location: 55,57 + Owner: Greece + Actor81: brik + Location: 56,57 + Owner: Greece + Actor82: brik + Location: 51,58 + Owner: Greece + Actor83: brik + Location: 52,58 + Owner: Greece + Actor84: brik + Location: 55,58 + Owner: Greece + Actor85: brik + Location: 56,58 + Owner: Greece + Actor86: brik + Location: 51,59 + Owner: Greece + Actor87: brik + Location: 52,59 + Owner: Greece + Actor88: brik + Location: 55,59 + Owner: Greece + Actor89: brik + Location: 56,59 + Owner: Greece + Actor90: cycl + Location: 19,75 + Owner: Greece + Actor91: cycl + Location: 20,75 + Owner: Greece + Actor92: cycl + Location: 21,75 + Owner: Greece + Actor93: cycl + Location: 22,75 + Owner: Greece + Actor94: cycl + Location: 23,75 + Owner: Greece + Actor95: cycl + Location: 19,76 + Owner: Greece + Actor96: cycl + Location: 23,76 + Owner: Greece + Actor97: cycl + Location: 19,77 + Owner: Greece + Actor98: cycl + Location: 23,77 + Owner: Greece + Actor99: cycl + Location: 19,78 + Owner: Greece + Actor100: cycl + Location: 20,78 + Owner: Greece + Actor101: cycl + Location: 22,78 + Owner: Greece + Actor102: cycl + Location: 23,78 + Owner: Greece + Actor103: cycl + Location: 19,85 + Owner: Greece + Actor104: cycl + Location: 20,85 + Owner: Greece + Actor105: cycl + Location: 22,85 + Owner: Greece + Actor106: cycl + Location: 23,85 + Owner: Greece + Actor107: cycl + Location: 19,86 + Owner: Greece + Actor108: cycl + Location: 23,86 + Owner: Greece + Actor109: brik + Location: 55,86 + Owner: USSR + Actor110: brik + Location: 56,86 + Owner: USSR + Actor111: brik + Location: 57,86 + Owner: USSR + Actor112: brik + Location: 58,86 + Owner: USSR + Actor113: brik + Location: 59,86 + Owner: USSR + Actor114: brik + Location: 60,86 + Owner: USSR + Actor115: brik + Location: 61,86 + Owner: USSR + Actor116: brik + Location: 62,86 + Owner: USSR + Actor117: brik + Location: 63,86 + Owner: USSR + Actor118: brik + Location: 64,86 + Owner: USSR + Actor119: brik + Location: 73,86 + Owner: USSR + Actor120: brik + Location: 74,86 + Owner: USSR + Actor121: brik + Location: 75,86 + Owner: USSR + Actor122: brik + Location: 76,86 + Owner: USSR + Actor123: brik + Location: 77,86 + Owner: USSR + Actor124: cycl + Location: 19,87 + Owner: Greece + Actor125: cycl + Location: 23,87 + Owner: Greece + Actor126: brik + Location: 55,87 + Owner: USSR + Actor127: brik + Location: 56,87 + Owner: USSR + Actor128: brik + Location: 63,87 + Owner: USSR + Actor129: brik + Location: 64,87 + Owner: USSR + Actor130: brik + Location: 73,87 + Owner: USSR + Actor131: brik + Location: 74,87 + Owner: USSR + Actor132: cycl + Location: 19,88 + Owner: Greece + Actor133: cycl + Location: 20,88 + Owner: Greece + Actor134: cycl + Location: 21,88 + Owner: Greece + Actor135: cycl + Location: 22,88 + Owner: Greece + Actor136: cycl + Location: 23,88 + Owner: Greece + Actor137: brik + Location: 55,88 + Owner: USSR + Actor138: brik + Location: 55,89 + Owner: USSR + Actor139: brik + Location: 55,90 + Owner: USSR + Actor140: brik + Location: 55,91 + Owner: USSR + Actor141: brik + Location: 55,92 + Owner: USSR + Actor142: brik + Location: 55,93 + Owner: USSR + Actor143: brik + Location: 55,94 + Owner: USSR + Actor144: brik + Location: 55,95 + Owner: USSR + Actor145: brik + Location: 55,96 + Owner: Neutral + Actor146: brik + Location: 78,86 + Owner: Neutral + Actor147: tc02 + Location: 45,23 + Owner: Neutral + Actor148: tc04 + Location: 63,23 + Owner: Neutral + Actor149: tc05 + Location: 72,23 + Owner: Neutral + Actor150: tc03 + Location: 18,30 + Owner: Neutral + Actor151: tc02 + Location: 73,31 + Owner: Neutral + Actor152: ice03 + Location: 45,35 + Owner: Neutral + Actor153: tc01 + Location: 61,34 + Owner: Neutral + Actor154: ice05 + Location: 55,43 + Owner: Neutral + Actor155: tc01 + Location: 38,43 + Owner: Neutral + Actor156: tc01 + Location: 19,45 + Owner: Neutral + Actor157: tc04 + Location: 26,44 + Owner: Neutral + Actor158: tc02 + Location: 21,48 + Owner: Neutral + Actor159: ice01 + Location: 45,50 + Owner: Neutral + Actor160: tc05 + Location: 25,50 + Owner: Neutral + Actor161: tc02 + Location: 48,53 + Owner: Neutral + Actor162: tc04 + Location: 58,55 + Owner: Neutral + Actor163: ice02 + Location: 38,58 + Owner: Neutral + Actor164: tc04 + Location: 75,58 + Owner: Neutral + Actor165: tc03 + Location: 63,62 + Owner: Neutral + Actor166: tc04 + Location: 21,62 + Owner: Neutral + Actor167: tc02 + Location: 65,63 + Owner: Neutral + Actor168: tc04 + Location: 28,63 + Owner: Neutral + Actor169: tc02 + Location: 32,64 + Owner: Neutral + Actor170: tc05 + Location: 18,65 + Owner: Neutral + Actor171: ice04 + Location: 40,67 + Owner: Neutral + Actor172: tc02 + Location: 59,67 + Owner: Neutral + Actor173: tc02 + Location: 41,68 + Owner: Neutral + Actor174: t16 + Location: 51,68 + Owner: Neutral + Actor175: t14 + Location: 40,69 + Owner: Neutral + Actor176: tc01 + Location: 38,70 + Owner: Neutral + Actor177: t03 + Location: 33,72 + Owner: Neutral + Actor178: t11 + Location: 25,73 + Owner: Neutral + Actor179: t13 + Location: 22,75 + Owner: Neutral + Actor180: tc03 + Location: 32,78 + Owner: Neutral + Actor181: tc02 + Location: 37,82 + Owner: Neutral + Actor182: tc05 + Location: 72,81 + Owner: Neutral + Actor183: tc02 + Location: 24,84 + Owner: Neutral + Actor184: tc02 + Location: 46,84 + Owner: Neutral + Actor185: tc03 + Location: 73,84 + Owner: Neutral + Actor186: tc03 + Location: 24,86 + Owner: Neutral + Actor187: tc03 + Location: 53,86 + Owner: Neutral + Actor188: tc01 + Location: 45,88 + Owner: Neutral + Actor189: tc04 + Location: 50,88 + Owner: Neutral + Actor190: tc02 + Location: 53,90 + Owner: Neutral + Actor191: tc03 + Location: 38,91 + Owner: Neutral + Actor192: tc01 + Location: 51,92 + Owner: Neutral + Actor193: t17 + Location: 50,94 + Owner: Neutral + Actor194: tc05 + Location: 52,93 + Owner: Neutral + AlliedBarracks01: tent + Location: 39,23 + Owner: Greece + Actor196: pbox + Location: 51,24 + Owner: Greece + Hospital01: hosp + Location: 54,23 + Owner: Greece + Actor198: pbox + Location: 59,24 + Owner: Greece + Actor199: brl3 + Location: 20,25 + Owner: Greece + Actor200: brl3 + Location: 21,25 + Owner: Greece + Actor201: barl + Location: 21,26 + Owner: Greece + Actor202: brl3 + Location: 23,26 + Owner: Greece + Actor203: brl3 + Location: 20,27 + Owner: Greece + Actor204: barl + Location: 23,27 + Owner: Greece + Actor205: barl + Location: 20,28 + Owner: Greece + Actor206: brl3 + Location: 21,28 + Owner: Greece + Actor207: brl3 + Location: 24,28 + Owner: Greece + Actor208: barl + Location: 20,29 + Owner: Greece + Actor209: pbox + Location: 51,33 + Owner: Greece + Actor210: pbox + Location: 59,33 + Owner: Greece + Actor211: hbox + Location: 70,33 + Owner: Greece + Actor212: minp + Location: 31,38 + Owner: USSR + Actor213: hbox + Location: 62,38 + Owner: Greece + AlliedConYard01: fact + Location: 74,36 + Owner: GoodGuy + Actor215: minp + Location: 28,39 + Owner: USSR + Actor216: minp + Location: 25,40 + Owner: USSR + Actor217: minp + Location: 33,40 + Owner: USSR + Actor218: hbox + Location: 70,40 + Owner: Greece + Actor219: minp + Location: 26,41 + Owner: USSR + Actor220: minp + Location: 29,41 + Owner: USSR + Actor221: minp + Location: 31,41 + Owner: USSR + NavalYard01: syrd + Location: 57,40 + Owner: Greece + Actor223: minp + Location: 33,42 + Owner: USSR + Actor224: minp + Location: 31,43 + Owner: USSR + Actor225: minp + Location: 32,44 + Owner: USSR + Actor226: minp + Location: 34,45 + Owner: USSR + Actor227: minp + Location: 32,47 + Owner: USSR + Actor228: minp + Location: 34,47 + Owner: USSR + OreRefinery01: proc + Location: 70,45 + Owner: Greece + OreRefinery02: proc + Location: 75,45 + Owner: Greece + Actor231: apwr + Location: 49,47 + Owner: Greece + Actor232: barl + Location: 52,48 + Owner: Spain + Actor233: barl + Location: 53,48 + Owner: Spain + Actor234: barl + Location: 54,48 + Owner: Spain + Actor235: minp + Location: 33,49 + Owner: USSR + Actor236: barl + Location: 52,49 + Owner: Spain + Actor237: brl3 + Location: 55,49 + Owner: Spain + Actor238: brl3 + Location: 57,50 + Owner: Spain + Actor239: silo + Location: 75,50 + Owner: Greece + Actor240: silo + Location: 76,50 + Owner: Greece + Actor241: apwr + Location: 52,50 + Owner: GoodGuy + Actor242: silo + Location: 74,51 + Owner: Greece + Actor243: silo + Location: 75,51 + Owner: Greece + Actor244: silo + Location: 76,51 + Owner: Greece + Actor245: apwr + Location: 55,51 + Owner: Greece + Actor246: silo + Location: 75,52 + Owner: Greece + TownHouse01: v07 + Location: 32,56 + Owner: Spain + Actor248: apwr + Location: 46,55 + Owner: Greece + TownChurch: v01 + Location: 21,56 + Owner: Spain + Actor250: brl3 + Location: 74,57 + Owner: Greece + TownHouse02: v02 + Location: 32,57 + Owner: Spain + AlloyFacility: afac + Location: 53,57 + Owner: France + ControlCenter: ccen + Location: 72,57 + Owner: France + Actor254: barl + Location: 74,58 + Owner: Greece + TownHouse03: v05 + Location: 22,59 + Owner: Spain + Actor256: dome + Location: 58,58 + Owner: Greece + Actor257: brl3 + Location: 70,59 + Owner: Greece + Actor258: barl + Location: 71,59 + Owner: Greece + Actor259: apwr + Location: 46,59 + Owner: Greece + Actor260: barl + Location: 72,60 + Owner: Greece + Actor261: brl3 + Location: 73,60 + Owner: Greece + TownHouse04: v04 + Location: 32,60 + Owner: Spain + AlliedWarFact01: weap + Location: 49,61 + Owner: Greece + AlliedWarFact02: weap + Location: 56,61 + Owner: Greece + Actor265: pbox + Location: 52,67 + Owner: Greece + Actor266: pbox + Location: 58,67 + Owner: Greece + HTurret01: hgun + Location: 53,68 + Owner: France + Facing: 127 + HTurret02: hgun + Location: 55,68 + Owner: France + Facing: 127 + HTurret03: hgun + Location: 57,68 + Owner: France + Facing: 127 + Actor270: barl + Location: 26,75 + Owner: Greece + Actor271: v19 + Location: 20,76 + Owner: Greece + Actor272: v19 + Location: 21,76 + Owner: Greece + Actor273: brl3 + Location: 25,76 + Owner: Greece + Actor274: v19 + Location: 20,77 + Owner: Greece + Actor275: v19 + Location: 22,77 + Owner: Greece + Actor276: barl + Location: 25,77 + Owner: Greece + Actor277: brl3 + Location: 24,78 + Owner: Greece + Actor278: brl3 + Location: 22,79 + Owner: Creeps + Barrel: barl + Location: 23,79 + Owner: Creeps + Actor280: barl + Location: 20,80 + Owner: Greece + Actor281: brl3 + Location: 21,80 + Owner: Greece + Actor282: barl + Location: 19,81 + Owner: Greece + Actor283: barl + Location: 20,81 + Owner: Greece + Actor284: brl3 + Location: 23,81 + Owner: Greece + Actor285: brl3 + Location: 19,83 + Owner: Greece + Actor286: brl3 + Location: 22,83 + Owner: Greece + Actor287: barl + Location: 23,83 + Owner: Greece + Actor288: barl + Location: 19,84 + Owner: Greece + Actor289: brl3 + Location: 20,84 + Owner: Greece + Actor290: barl + Location: 21,84 + Owner: Greece + Actor291: v19 + Location: 20,86 + Owner: Greece + Actor292: v19 + Location: 22,86 + Owner: Greece + Actor293: v19 + Location: 20,87 + Owner: Greece + Actor294: v19 + Location: 21,87 + Owner: Greece + Actor295: tsla + Location: 65,88 + Owner: USSR + Actor296: tsla + Location: 74,88 + Owner: USSR + Actor297: sam + Location: 57,89 + Owner: USSR + Actor298: dome + Location: 59,88 + Owner: USSR + Actor299: sam + Location: 61,89 + Owner: USSR + Actor300: apwr + Location: 75,88 + Owner: USSR + Actor301: stek + Location: 63,90 + Owner: USSR + Actor302: apwr + Location: 56,93 + Owner: USSR + Actor303: apwr + Location: 69,93 + Owner: USSR + SupplyTruck01: truk + Location: 57,25 + Owner: Greece + Facing: 159 + LightTankGuard01: 1tnk + Location: 32,26 + Owner: Greece + Facing: 95 + SupplyTruck02: truk + Location: 56,26 + Owner: Greece + Facing: 159 + RangerGuard04: jeep + Location: 52,27 + Owner: Greece + Facing: 63 + LightTankGuard02: 1tnk + Location: 61,30 + Owner: Greece + Facing: 63 + RangerGuard03: jeep + Location: 37,33 + Owner: Greece + Facing: 31 + RangerGuard02: jeep + Location: 21,46 + Owner: Greece + Facing: 223 + LightTankGuard03: 1tnk + Location: 71,56 + Owner: Greece + Facing: 31 + MediumTankGuard01: 2tnk + Location: 19,62 + Owner: Greece + Facing: 159 + RangerGuard01: jeep + Location: 23,72 + Owner: Greece + Facing: 159 + PlyrHvyTnk01: 3tnk + Location: 68,85 + Owner: USSR + Facing: 31 + PlyrMthTnk01: 4tnk + Location: 69,85 + Owner: USSR + Facing: 31 + PlyrHvyTnk02: 3tnk + Location: 71,85 + Owner: USSR + Facing: 31 + PlyrHvyTnk03: 3tnk + Location: 65,86 + Owner: USSR + Facing: 31 + PlyrHvyTnk04: 3tnk + Location: 66,86 + Owner: USSR + Facing: 31 + PlyrMthTnk02: 4tnk + Location: 67,86 + Owner: USSR + Facing: 31 + PlyrHvyTnk05: 3tnk + Location: 72,86 + Owner: USSR + Facing: 31 + PlyrV2RL01: v2rl + Location: 71,87 + Owner: USSR + Facing: 31 + PlyrV2RL02: v2rl + Location: 69,88 + Owner: USSR + Facing: 31 + PlyrV2RL03: v2rl + Location: 73,89 + Owner: USSR + Facing: 31 + PlyrV2RL04: v2rl + Location: 71,90 + Owner: USSR + Facing: 31 + Actor327: c7 + Location: 58,23 + Owner: Greece + SubCell: 3 + Actor328: c5 + Location: 56,24 + Owner: Greece + SubCell: 4 + Actor329: c2 + Location: 57,24 + Owner: Greece + SubCell: 1 + Actor330: c4 + Location: 58,24 + Owner: Greece + SubCell: 1 + Actor331: c6 + Location: 58,25 + Owner: Greece + SubCell: 2 + Actor332: c3 + Location: 58,25 + Owner: Greece + SubCell: 1 + Actor333: e3 + Location: 34,27 + Owner: Greece + Facing: 31 + SubCell: 3 + RiflemanGuard01: e1 + Location: 39,28 + Owner: Greece + Facing: 127 + SubCell: 1 + InfGuardSquad03Unit01: e1 + Location: 53,28 + Owner: Greece + SubCell: 5 + InfGuardSquad03Unit02: e1 + Location: 53,28 + Owner: Greece + SubCell: 4 + InfGuardSquad03Unit03: e1 + Location: 53,28 + Owner: Greece + SubCell: 2 + InfGuardSquad03Unit04: e1 + Location: 54,28 + Owner: Greece + SubCell: 4 + InfGuardSquad03Unit05: e1 + Location: 53,29 + Owner: Greece + SubCell: 2 + Actor340: e3 + Location: 34,35 + Owner: Greece + Facing: 63 + SubCell: 4 + InfGuardSquad02Unit01: e3 + Location: 25,44 + Owner: Greece + SubCell: 4 + InfGuardSquad02Unit02: e3 + Location: 24,45 + Owner: Greece + SubCell: 0 + InfGuardSquad02Unit03: e3 + Location: 25,46 + Owner: Greece + SubCell: 1 + MineSoldier01: e1 + Location: 32,49 + Owner: GoodGuy + Facing: 159 + SubCell: 1 + Stance: HoldFire + TanyaSquadUnit01: e1 + Location: 61,49 + Owner: Greece + SubCell: 5 + TanyaSquadUnit02: e1 + Location: 66,49 + Owner: Greece + SubCell: 5 + MineSoldier02: e1 + Location: 31,50 + Owner: GoodGuy + Facing: 127 + SubCell: 4 + Stance: HoldFire + TanyaSquadUnit03: e1 + Location: 63,50 + Owner: Greece + SubCell: 1 + TanyaSquadTanya: e7 + Location: 64,50 + Owner: Greece + SubCell: 0 + TanyaSquadUnit04: e1 + Location: 66,50 + Owner: Greece + SubCell: 4 + MineSoldier03: e1 + Location: 32,51 + Owner: GoodGuy + Facing: 127 + SubCell: 1 + Stance: HoldFire + MineSoldier04: e1 + Location: 34,51 + Owner: GoodGuy + Facing: 95 + SubCell: 2 + Stance: HoldFire + TanyaSquadUnit05: e1 + Location: 62,51 + Owner: Greece + SubCell: 1 + TanyaSquadUnit06: e1 + Location: 65,51 + Owner: Greece + SubCell: 4 + MineSoldier05: e1 + Location: 30,52 + Owner: GoodGuy + Facing: 127 + SubCell: 2 + Stance: HoldFire + MineSoldier06: e1 + Location: 33,52 + Owner: GoodGuy + Facing: 127 + SubCell: 1 + Stance: HoldFire + TownMedic01: medi + Location: 26,57 + Owner: Greece + Facing: 95 + SubCell: 4 + TownMedic02: medi + Location: 30,57 + Owner: Greece + Facing: 159 + SubCell: 2 + Actor359: e1 + Location: 75,57 + Owner: Greece + SubCell: 4 + TownDude01: c10 + Location: 25,58 + Owner: Spain + SubCell: 1 + TownDude02: c8 + Location: 29,58 + Owner: Spain + SubCell: 1 + TownDude03: c10 + Location: 26,59 + Owner: Spain + SubCell: 1 + TownDude04: c9 + Location: 28,59 + Owner: Spain + SubCell: 1 + TownMedic03: medi + Location: 31,59 + Owner: Greece + Facing: 127 + SubCell: 4 + Actor365: e1 + Location: 69,59 + Owner: Greece + SubCell: 0 + Actor366: e1 + Location: 70,60 + Owner: Greece + SubCell: 3 + Actor367: e1 + Location: 74,60 + Owner: Greece + SubCell: 1 + InfGuardSquad01Unit01: e3 + Location: 23,61 + Owner: Greece + Facing: 127 + SubCell: 5 + InfGuardSquad01Unit02: e3 + Location: 24,61 + Owner: Greece + Facing: 127 + SubCell: 5 + InfGuardSquad01Unit03: e3 + Location: 24,61 + Owner: Greece + Facing: 127 + SubCell: 4 + InfGuardSquad01Unit04: e3 + Location: 24,61 + Owner: Greece + Facing: 127 + SubCell: 1 + InfGuardSquad01Unit05: e3 + Location: 24,62 + Owner: Greece + Facing: 127 + SubCell: 1 + InitialHuntUnit01: e3 + Location: 28,74 + Owner: Greece + SubCell: 3 + InitialHuntUnit02: e3 + Location: 29,74 + Owner: Greece + SubCell: 4 + InitialHuntUnit03: e3 + Location: 29,75 + Owner: Greece + SubCell: 0 + InitialRifleman01: e1 + Location: 24,76 + Owner: Greece + Facing: 95 + SubCell: 4 + Health: 1 + InitialRifleman02: e1 + Location: 24,76 + Owner: Greece + Facing: 95 + SubCell: 5 + Health: 1 + InitialHuntUnit04: e3 + Location: 27,76 + Owner: Greece + SubCell: 1 + InitialHuntUnit05: e3 + Location: 28,76 + Owner: Greece + SubCell: 2 + InitialHuntUnit06: e3 + Location: 30,76 + Owner: Greece + Facing: 95 + SubCell: 3 + InitialHuntUnit07: e3 + Location: 26,77 + Owner: Greece + SubCell: 3 + InitialHuntUnit08: e3 + Location: 27,77 + Owner: Greece + SubCell: 1 + InitialHuntUnit09: e3 + Location: 28,77 + Owner: Greece + SubCell: 1 + TnkGrd01: 2tnk + Location: 54,69 + Owner: Greece + Facing: 127 + TnkGrd02: 2tnk + Location: 53,71 + Owner: Greece + Facing: 127 + TnkGrd03: 2tnk + Location: 57,71 + Owner: Greece + Facing: 127 + TnkGrd04: 2tnk + Location: 56,69 + Owner: Greece + Facing: 127 + waypoint13: waypoint + Location: 56,25 + Owner: Neutral + waypoint89: waypoint + Location: 22,27 + Owner: Neutral + waypoint14: waypoint + Location: 69,36 + Owner: Neutral + waypoint93: waypoint + Location: 25,40 + Owner: Neutral + waypoint76: waypoint + Location: 31,41 + Owner: Neutral + waypoint95: waypoint + Location: 33,42 + Owner: Neutral + waypoint91: waypoint + Location: 34,45 + Owner: Neutral + waypoint92: waypoint + Location: 32,47 + Owner: Neutral + waypoint90: waypoint + Location: 33,49 + Owner: Neutral + waypoint15: waypoint + Location: 57,49 + Owner: Neutral + waypoint85: waypoint + Location: 64,50 + Owner: Neutral + waypoint96: waypoint + Location: 32,52 + Owner: Neutral + waypoint5: waypoint + Location: 21,57 + Owner: Neutral + waypoint4: waypoint + Location: 27,58 + Owner: Neutral + civteam01spawn: waypoint + Location: 22,59 + Owner: Neutral + waypoint6: waypoint + Location: 20,61 + Owner: Neutral + waypoint8: waypoint + Location: 31,61 + Owner: Neutral + civteam02spawn: waypoint + Location: 33,61 + Owner: Neutral + waypoint7: waypoint + Location: 27,62 + Owner: Neutral + waypoint99: waypoint + Location: 63,62 + Owner: Neutral + waypoint12: waypoint + Location: 55,70 + Owner: Neutral + waypoint26: waypoint + Location: 41,65 + Owner: Neutral + waypoint2: waypoint + Location: 54,69 + Owner: Neutral + waypoint11: waypoint + Location: 56,69 + Owner: Neutral + waypoint9: waypoint + Location: 53,71 + Owner: Neutral + waypoint10: waypoint + Location: 57,71 + Owner: Neutral + waypoint53: waypoint + Location: 23,84 + Owner: Neutral + waypoint52: waypoint + Location: 22,23 + Owner: Neutral + DefaultCameraPosition: waypoint + Location: 25,81 + Owner: Neutral + superteamdrop: waypoint + Location: 21,82 + Owner: Neutral + superteamspawn: waypoint + Location: 18,87 + Owner: Neutral + waypoint77: waypoint + Location: 70,88 + Owner: Neutral + +Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml + +Weapons: weapons.yaml + +Notifications: notifications.yaml diff --git a/mods/ra/maps/soviet-soldier-volkov-n-chitzkoi/notifications.yaml b/mods/ra/maps/soviet-soldier-volkov-n-chitzkoi/notifications.yaml new file mode 100644 index 0000000000..a3da141cfc --- /dev/null +++ b/mods/ra/maps/soviet-soldier-volkov-n-chitzkoi/notifications.yaml @@ -0,0 +1,3 @@ +Sounds: + Notifications: + rokroll: rokroll1 \ No newline at end of file diff --git a/mods/ra/maps/soviet-soldier-volkov-n-chitzkoi/rules.yaml b/mods/ra/maps/soviet-soldier-volkov-n-chitzkoi/rules.yaml new file mode 100644 index 0000000000..875dfaef1a --- /dev/null +++ b/mods/ra/maps/soviet-soldier-volkov-n-chitzkoi/rules.yaml @@ -0,0 +1,206 @@ +World: + LuaScript: + Scripts: scu35ea.lua, scu35ea-AI.lua + MissionData: + Briefing: The Allies have stolen a new armor plating from us. With it, they can make structures nearly invulnerable. Their processing plant must be destroyed.\n\nFor this critical mission, we are allowing you access to Soldier Volkov. Use him and his cybernetic dog to sabotage the Allied control center, allowing our units in the southeast access to the alloy facility.\n\nThe mission is a success when Volkov destroys the control center, and our units destroy the alloy facility.\n + WinVideo: grvestne.vqa + LossVideo: sovcemet.vqa + ScriptLobbyDropdown@difficulty: + ID: difficulty + Label: Difficulty + Values: + easy: Easy + normal: Normal + hard: Hard + Default: easy + +Player: + LobbyPrerequisiteCheckbox@GLOBALBOUNTY: + Enabled: False + Locked: True + +MSLO: + Buildable: + Prerequisites: ~disabled + +E7: + Buildable: + Prerequisites: ~disabled + Health: + HP: 25000 + Armor: + Type: Heavy + +2TNK: + Buildable: + Prerequisites: ~vehicles.allies, ~techlevel.medium + +CA: + Buildable: + Prerequisites: ~syrd, ~techlevel.high + +C2: + Inherits@2: ^ArmedCivilian + +C3: + Inherits@2: ^ArmedCivilian + +C4: + Inherits@2: ^ArmedCivilian + +C5: + Inherits@2: ^ArmedCivilian + +C6: + Inherits@2: ^ArmedCivilian + +C8: + Inherits@2: ^ArmedCivilian + +C9: + Inherits@2: ^ArmedCivilian + +C10: + Inherits@2: ^ArmedCivilian + +V01: + SpawnActorOnDeath: + Actor: healcrate + +HOSP: + Tooltip: + GenericName: Hospital + GenericVisibility: Enemy, Ally, Neutral + GenericStancePrefix: false + -TooltipDescription@ally: + -TooltipDescription@other: + SpawnActorOnDeath: + Actor: healcrate + +MONEYCRATE: + GiveCashCrateAction: + Amount: 2000 + +^Vehicle: + -Demolishable: + +^Mine: + Tooltip: + ShowOwnerRow: false + +AFAC: + Inherits: BIO + Buildable: + Prerequisites: ~disabled + Health: + HP: 400000 + Tooltip: + Name: Alloy Facility + GenericName: Alloy Facility + GenericVisibility: Enemy, Ally, Neutral + GenericStancePrefix: false + -TooltipDescription@ally: + -TooltipDescription@other: + -ExternalCapturable: + -ExternalCapturableBar: + -EngineerRepairable: + -GpsDot: + RenderSprites: + Image: BIO + +CCEN: + Inherits: ATEK + Buildable: + Prerequisites: ~disabled + Tooltip: + Name: Control Center + GenericName: Control Center + GenericVisibility: Enemy, Ally, Neutral + GenericStancePrefix: false + -ExternalCapturable: + -ExternalCapturableBar: + -EngineerRepairable: + GpsPower: + Prerequisites: ~disabled + Power: + Amount: 200 + RenderSprites: + Image: ATEK + +HGUN: + Inherits: GUN + Buildable: + Prerequisites: ~disabled + Valued: + Cost: 2800 + Tooltip: + Name: Heavy Turret Prototype + Health: + HP: 350000 + Armor: + Type: Heavy + RevealsShroud: + Range: 8c0 + Armament: + Weapon: HeavyTurretGun + RenderSprites: + Image: GUN + +ZKOI: + Inherits: DOG + Buildable: + Prerequisites: ~disabled + Valued: + Cost: 2000 + Tooltip: + Name: Chitzkoi + GenericName: Cyborg Dog + Health: + HP: 100000 + -Crushable: + RevealsShroud: + Range: 7c0 + Armament: + Weapon: CydogJaw + RenderSprites: + Image: DOG + +VOLK: + Inherits: GNRL + Buildable: + Prerequisites: ~disabled + Valued: + Cost: 3000 + Tooltip: + Name: Volkov + Health: + HP: 250000 + Armor: + Type: Heavy + -Crushable: + RevealsShroud: + Range: 10c0 + Demolition: + Mobile: + Voice: Action + AttackFrontal: + Voice: Action + AttackMove: + Voice: Action + Passenger: + Voice: Action + Guard: + Voice: Action + Voiced: + VoiceSet: GenericVoice + Armament: + Weapon: VolkovWeapon + DetectCloaked: + CloakTypes: Cloak, Hijacker + RenderSprites: + Image: GNRL + +powerproxy.pararifles: + Inherits: powerproxy.paratroopers + ParatroopersPower: + DropItems: E1,E1,E1,E1,E1 \ No newline at end of file diff --git a/mods/ra/maps/soviet-soldier-volkov-n-chitzkoi/scu35ea-AI.lua b/mods/ra/maps/soviet-soldier-volkov-n-chitzkoi/scu35ea-AI.lua new file mode 100644 index 0000000000..244b39a8a9 --- /dev/null +++ b/mods/ra/maps/soviet-soldier-volkov-n-chitzkoi/scu35ea-AI.lua @@ -0,0 +1,112 @@ +--[[ + Copyright 2007-2018 The OpenRA Developers (see AUTHORS) + This file is part of OpenRA, which is free software. It is made + available to you under the terms of the GNU General Public License + as published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. For more + information, see COPYING. +]] + +AlliedInfantryTypes = { "e1", "e3" } +if Map.LobbyOption("difficulty") == "easy" then + AlliedArmorTypes = { "1tnk", "1tnk" } +else + AlliedArmorTypes = { "1tnk", "2tnk" } +end +if Map.LobbyOption("difficulty") == "hard" then + AlliedNavyGuard = { "ca", "ca" } +else + AlliedNavyGuard = { "ca" } +end +ArmorAttackNumbers = +{ + easy = 2, + normal = 5, + hard = 8 +} +ArmorAttackDelays = +{ + easy = DateTime.Seconds(45), + normal = DateTime.Seconds(30), + hard = DateTime.Seconds(10) +} +AlliedWarFactRally = { waypoint2, waypoint9, waypoint10, waypoint11 } +InfAttack = { } +ArmorAttack = { } + +SendAttackToBase = function(units) + Utils.Do(units, function(unit) + if not unit.IsDead and unit.HasProperty("Hunt") then + unit.AttackMove(waypoint77.Location, 2) + Trigger.OnIdle(unit, unit.Hunt) + end + end) +end + +UnitsJustHunt = function(units) + Utils.Do(units, function(unit) + if not unit.IsDead and unit.HasProperty("Hunt") then + Trigger.OnIdle(unit, unit.Hunt) + end + end) +end + +ProduceInfantry = function() + if AlliedBarracks01.IsDead then + return + elseif (OreRefinery01.IsDead and OreRefinery02.IsDead or GreeceHarvestersAreDead) and greece.Resources <= 299 then + return + end + + local delay = Utils.RandomInteger(DateTime.Seconds(1), DateTime.Seconds(2)) + local toBuild = { Utils.Random(AlliedInfantryTypes) } + greece.Build(toBuild, function(unit) + InfAttack[#InfAttack + 1] = unit[1] + + if #InfAttack >= 5 then + UnitsJustHunt(InfAttack) + InfAttack = { } + Trigger.AfterDelay(DateTime.Seconds(1), ProduceInfantry) + else + Trigger.AfterDelay(delay, ProduceInfantry) + end + end) +end + +ProduceArmor = function() + if AlliedWarFact01.IsDead and AlliedWarFact02.IsDead then + return + elseif (OreRefinery01.IsDead and OreRefinery02.IsDead or GreeceHarvestersAreDead) and greece.Resources <= 699 then + return + end + + local delay = Utils.RandomInteger(DateTime.Seconds(7), DateTime.Seconds(10)) + local toBuild = { Utils.Random(AlliedArmorTypes) } + local Rally = Utils.Random(AlliedWarFactRally) + Utils.Do(AlliedWarFact, function(fact) fact.RallyPoint = Rally.Location end) + greece.Build(toBuild, function(unit) + ArmorAttack[#ArmorAttack + 1] = unit[1] + + if #ArmorAttack >= ArmorAttackNumbers[Map.LobbyOption("difficulty")] then + SendAttackToBase(ArmorAttack) + ArmorAttack = { } + Trigger.AfterDelay(ArmorAttackDelays[Map.LobbyOption("difficulty")], ProduceArmor) + else + Trigger.AfterDelay(delay, ProduceArmor) + end + end) +end + +ProduceNavyGuard = function() + if NavalYard01.IsDead then + return + elseif (OreRefinery01.IsDead and OreRefinery02.IsDead or GreeceHarvestersAreDead) and greece.Resources <= 2399 then + return + end + NavalYard01.RallyPoint = waypoint26.Location + greece.Build(AlliedNavyGuard, function(nvgrd) + Utils.Do(nvgrd, function(unit) + Trigger.OnKilled(unit, ProduceNavyGuard) + end) + end) +end diff --git a/mods/ra/maps/soviet-soldier-volkov-n-chitzkoi/scu35ea.lua b/mods/ra/maps/soviet-soldier-volkov-n-chitzkoi/scu35ea.lua new file mode 100644 index 0000000000..64bf6cc811 --- /dev/null +++ b/mods/ra/maps/soviet-soldier-volkov-n-chitzkoi/scu35ea.lua @@ -0,0 +1,376 @@ +--[[ + Copyright 2007-2018 The OpenRA Developers (see AUTHORS) + This file is part of OpenRA, which is free software. It is made + available to you under the terms of the GNU General Public License + as published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. For more + information, see COPYING. +]] +-- Unit Groups Setup +SuperTeam = { "zkoi", "volk" } +PlayerTankDivision = { PlyrHvyTnk01, PlyrHvyTnk02, PlyrHvyTnk03, PlyrHvyTnk04, PlyrHvyTnk05, PlyrMthTnk01, PlyrMthTnk02, PlyrV2RL01, PlyrV2RL02, PlyrV2RL03, PlyrV2RL04 } +InitialHuntTeam = { InitialHuntUnit01, InitialHuntUnit02, InitialHuntUnit03, InitialHuntUnit04, InitialHuntUnit05, InitialHuntUnit06, InitialHuntUnit07, InitialHuntUnit08, InitialHuntUnit09 } +BarrelsShooter = { InitialRifleman01, InitialRifleman02 } +TownPeoples = { TownDude01, TownDude02, TownDude03, TownDude04, TownMedic01, TownMedic02, TownMedic03 } +CivTeam01 = { "c1", "c3", "c4" } +CivTeam02 = { "c4", "c5", "c6" } +InfGuardSquad01 = { InfGuardSquad01Unit01, InfGuardSquad01Unit02, InfGuardSquad01Unit03, InfGuardSquad01Unit04, InfGuardSquad01Unit05, MediumTankGuard01 } +InfGuardSquad02 = { InfGuardSquad02Unit01, InfGuardSquad02Unit02, InfGuardSquad02Unit03, RangerGuard02 } +InfGuardSquad03 = { InfGuardSquad03Unit01, InfGuardSquad03Unit02, InfGuardSquad03Unit03, InfGuardSquad03Unit04, InfGuardSquad03Unit05, RangerGuard04 } +TanyaSquad = { TanyaSquadUnit01, TanyaSquadUnit02, TanyaSquadUnit03, TanyaSquadUnit04, TanyaSquadUnit05, TanyaSquadUnit06, TanyaSquadTanya } + +-- Building Group Setup +AlliedOreRef = { OreRefinery01, OreRefinery02 } +AlliedWarFact = { AlliedWarFact01, AlliedWarFact02 } +HeavyTurrets = { HTurret01, HTurret02, HTurret03 } + +-- Area Triggers Setup +SuperTeamLandCell = { CPos.New(21, 82), CPos.New(20, 81), CPos.New(21, 81), CPos.New(22, 81), CPos.New(20, 82), CPos.New(22, 82), CPos.New(21, 83), CPos.New(20, 83), CPos.New(22, 83) } +CivTeam01Trigger = { CPos.New(21, 58), CPos.New(21, 59), CPos.New(21, 60), CPos.New(22, 60), CPos.New(23, 60), CPos.New(22, 61), CPos.New(23, 61), CPos.New(24, 60), CPos.New(25, 60), CPos.New(24, 59), CPos.New(24, 58), CPos.New(23, 58), CPos.New(22, 58) } +CivTeam02Trigger = { CPos.New(33, 62), CPos.New(33, 63), CPos.New(32, 62), CPos.New(32, 63), CPos.New(31, 62), CPos.New(31, 63), CPos.New(31, 61), CPos.New(31, 60), CPos.New(30, 62), CPos.New(30, 61), CPos.New(30, 60), CPos.New(32, 60), CPos.New(33, 60) } +MineSoldierTrigger = { CPos.New(32, 58), CPos.New(32, 59), CPos.New(33, 58), CPos.New(33, 59), CPos.New(31, 59), CPos.New(30, 59), CPos.New(29, 59), CPos.New(29, 58), CPos.New(28, 59), CPos.New(27, 59), CPos.New(26, 59), CPos.New(25, 59), CPos.New(27, 58), CPos.New(26, 58), CPos.New(25, 58), CPos.New(24, 58), CPos.New(23, 58), CPos.New(26, 57), CPos.New(24, 57), CPos.New(24, 56), CPos.New(24, 55), CPos.New(24, 54), CPos.New(23, 57), CPos.New(23, 56), CPos.New(23, 55), CPos.New(23, 54), CPos.New(22, 57) } +MineRevealTrigger = { CPos.New(30, 46), CPos.New(31, 46), CPos.New(32, 46), CPos.New(33, 46), CPos.New(34, 46), CPos.New(35, 46), CPos.New(36, 46), CPos.New(37, 46) } +ParaTrigger = { CPos.New(18, 34), CPos.New(19, 34), CPos.New(20, 34), CPos.New(21, 34), CPos.New(22, 34), CPos.New(23, 34), CPos.New(24, 34), CPos.New(25, 34), CPos.New(18, 35), CPos.New(19, 35), CPos.New(20, 35), CPos.New(21, 35), CPos.New(22, 35), CPos.New(23, 35), CPos.New(24, 35), CPos.New(25, 35) } +TanyaTrigger = { CPos.New(59, 43), CPos.New(60, 43), CPos.New(61, 43), CPos.New(62, 43), CPos.New(63, 43), CPos.New(64, 43), CPos.New(65, 43), CPos.New(66, 43), CPos.New(67, 43), CPos.New(68, 43), CPos.New(69, 43), CPos.New(59, 44), CPos.New(60, 44), CPos.New(61, 44), CPos.New(62, 44), CPos.New(63, 44), CPos.New(64, 44), CPos.New(65, 44), CPos.New(66, 44), CPos.New(67, 44), CPos.New(68, 44), CPos.New(69, 44) } + +-- Mission Variables Setup +GreeceHarvestersAreDead = false +AlloyFacilityDestroyed = false + +WorldLoaded = function() + +--Players Setup + player = Player.GetPlayer("USSR") + greece = Player.GetPlayer("Greece") + goodguy = Player.GetPlayer("GoodGuy") + spain = Player.GetPlayer("Spain") + france = Player.GetPlayer("France") + + greece.Cash = 20000 + + Camera.Position = DefaultCameraPosition.CenterPosition + +--AI Production Setup + ProduceArmor() + + if Map.LobbyOption("difficulty") == "easy" then + Trigger.AfterDelay(DateTime.Minutes(10), ProduceNavyGuard) + elseif Map.LobbyOption("difficulty") == "normal" then + Trigger.AfterDelay(DateTime.Minutes(5), ProduceNavyGuard) + elseif Map.LobbyOption("difficulty") == "hard" then + ProduceNavyGuard() + end + +--Objectives Setup + 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) + + DestroyControlCenter = player.AddPrimaryObjective("Destroy the Control Center.") + KeepTanksAlive = player.AddPrimaryObjective("Your tank division must not be destroyed before\n the alloy facility is dealt with.") + KeepVolkovAlive = player.AddPrimaryObjective("Keep Volkov Alive.") + KeepChitzkoiAlive = player.AddSecondaryObjective("Keep Chitzkoi Alive.") + + Trigger.OnPlayerWon(player, function() + Media.PlaySpeechNotification(player, "MissionAccomplished") + end) + Trigger.OnPlayerLost(player, function() + Media.PlaySpeechNotification(player, "MissionFailed") + end) + + Trigger.OnKilled(ControlCenter, function() + Utils.Do(HeavyTurrets, function(struc) + if not struc.IsDead then struc.Kill() end + end) + player.MarkCompletedObjective(DestroyControlCenter) + DestroyAlloyFacility = player.AddPrimaryObjective("Destroy the Alloy Facility.") + Media.PlaySpeechNotification(player, "FirstObjectiveMet") + Media.DisplayMessage("Excellent! The heavy turret control center is destroyed\n and now we can deal with the alloy facility.") + end) + + Trigger.OnKilled(AlloyFacility, function() + if not player.IsObjectiveCompleted(DestroyControlCenter) then --Prevent a crash if the player somehow manage to cheese the mission and destroy + player.MarkCompletedObjective(DestroyControlCenter) --the Alloy Facility without destroying the Control Center. + DestroyAlloyFacility = player.AddPrimaryObjective("Destroy the Alloy Facility.") + end + Trigger.AfterDelay(DateTime.Seconds(2), function() + player.MarkCompletedObjective(DestroyAlloyFacility) + player.MarkCompletedObjective(KeepTanksAlive) + player.MarkCompletedObjective(KeepVolkovAlive) + player.MarkCompletedObjective(KeepChitzkoiAlive) + end) + AlloyFacilityDestroyed = true + Media.PlaySpeechNotification(player, "SecondObjectiveMet") + end) + + Trigger.OnAllKilled(PlayerTankDivision, function() + if not AlloyFacilityDestroyed then player.MarkFailedObjective(KeepTanksAlive) end + end) + + Trigger.AfterDelay(0, function() + local AlliedBaseCamera = Actor.Create("camera", true, { Owner = player, Location = waypoint12.Location }) + local SuperTeamCamera = Actor.Create("camera", true, { Owner = player, Location = DefaultCameraPosition.Location }) + Trigger.AfterDelay(1, function() + if AlliedBaseCamera.IsInWorld then AlliedBaseCamera.Destroy() end + end) + Trigger.AfterDelay(DateTime.Seconds(20), function() + if SuperTeamCamera.IsInWorld then SuperTeamCamera.Destroy() end + end) + end) + +--Super Team Setup + Trigger.AfterDelay(DateTime.Seconds(2), function() + local spawn = superteamspawn.CenterPosition + WVec.New(0, 0, Actor.CruiseAltitude("badr")) + local transport = Actor.Create("badr", true, { CenterPosition = spawn, Owner = player, Facing = (superteamdrop.CenterPosition - spawn).Facing, Health = 3 }) + Utils.Do(SuperTeam, function(type) + local a = Actor.Create(type, false, { Owner = player }) + transport.LoadPassenger(a) + if a.Type == "volk" then + VolkovIsDead(a) + end + if a.Type == "zkoi" then + ChitzkoiIsDead(a) + end + end) + Media.PlaySpeechNotification(player, "ReinforcementsArrived") + transport.Paradrop(CPos.New(21, 82)) + end) + + Trigger.OnEnteredFootprint(SuperTeamLandCell, function(unit, id) + if unit.Owner == player then + Trigger.RemoveFootprintTrigger(id) + Trigger.AfterDelay(DateTime.Seconds(2), function() + if not BarrelsShooter[1].IsDead then + BarrelsShooter[1].Attack(Barrel, true, true) + elseif not BarrelsShooter[2].IsDead then + BarrelsShooter[2].Attack(Barrel, true, true) + end + Utils.Do(InitialHuntTeam, function(actor) + if not actor.IsDead then + Trigger.OnIdle(actor, actor.Hunt) + end + end) + end) + end + end) + +--Guards Squads Setup -- I used proximity triggers to make them hunt you down in order to mimic their behavior from the original mission + Trigger.OnEnteredProximityTrigger(RangerGuard01.CenterPosition, WDist.New(70 * 70), function(unit, id) + if not RangerGuard01.IsDead and unit.Owner == player then + Trigger.OnIdle(RangerGuard01, RangerGuard01.Hunt) + Trigger.RemoveProximityTrigger(id) + end + end) + + Trigger.OnEnteredProximityTrigger(waypoint7.CenterPosition, WDist.FromCells(6), function(unit, id) + if unit.Owner == player then + Utils.Do(InfGuardSquad01, function(actor) + if not actor.IsDead then + Trigger.OnIdle(actor, actor.Hunt) + end + end) + Trigger.RemoveProximityTrigger(id) + end + end) + + Trigger.OnEnteredProximityTrigger(InfGuardSquad02Unit01.CenterPosition, WDist.FromCells(6), function(unit, id) + if unit.Owner == player and (unit.Type == "volk" or unit.Type == "zkoi") then + Utils.Do(InfGuardSquad02, function(actor) + if not actor.IsDead then + Trigger.OnIdle(actor, actor.Hunt) + end + end) + Trigger.RemoveProximityTrigger(id) + end + end) + + Trigger.OnEnteredProximityTrigger(InfGuardSquad03Unit05.CenterPosition, WDist.FromCells(8), function(unit, id) + if unit.Owner == player then + local HospitalCamera = Actor.Create("camera", true, { Owner = player, Location = waypoint13.Location }) + Utils.Do(InfGuardSquad03, function(actor) + if not actor.IsDead then + Trigger.OnIdle(actor, actor.Hunt) + end + end) + if not SupplyTruck01.IsDead then + SupplyTruck01.Move(waypoint14.Location) + Trigger.AfterDelay(DateTime.Seconds(8), function() + if not SupplyTruck01.IsDead then + SupplyTruck01.Move(waypoint15.Location) + end + end) + end + Trigger.AfterDelay(DateTime.Seconds(15), function() + if HospitalCamera.IsInWorld then HospitalCamera.Destroy() end + end) + Trigger.RemoveProximityTrigger(id) + end + end) + + Trigger.OnEnteredProximityTrigger(LightTankGuard02.CenterPosition, WDist.FromCells(8), function(unit, id) + if not LightTankGuard02.IsDead and unit.Owner == player and (unit.Type == "volk" or unit.Type == "zkoi") then + Trigger.OnIdle(LightTankGuard02, LightTankGuard02.Hunt) + Trigger.RemoveProximityTrigger(id) + end + end) + +--Tanya Squad Setup + Trigger.OnEnteredFootprint(TanyaTrigger, function(unit, id) + if unit.Owner == player then + if not TanyaSquadTanya.IsDead then + local TanyaSquadCamera = Actor.Create("camera", true, { Owner = player, Location = waypoint85.Location }) + Media.PlaySoundNotification(player, "rokroll") + Utils.Do(TanyaSquad, function(actor) + if not actor.IsDead then + Trigger.OnIdle(actor, actor.Hunt) + end + end) + Trigger.OnKilled(TanyaSquadTanya, function() + if TanyaSquadCamera.IsInWorld then + TanyaSquadCamera.Destroy() + end + end) + end + Trigger.RemoveFootprintTrigger(id) + end + end) + +--Town Setup + Utils.Do(TownPeoples, function(actor) + Trigger.OnDamaged(actor, function() + if not TownMedic01.IsDead then + TownMedic01.Patrol({ waypoint5.Location, waypoint6.Location, waypoint7.Location }, true, 0) + end + if not TownMedic02.IsDead then + TownMedic02.Patrol({ waypoint8.Location, waypoint7.Location, waypoint5.Location, waypoint6.Location }, true, 0) + end + end) + end) + + Trigger.OnEnteredFootprint(CivTeam01Trigger, function(unit, id) + if unit.Owner == player then + if not TownHouse03.IsDead then + local civ01 = Reinforcements.Reinforce(spain, CivTeam01, { civteam01spawn.Location }, 0) + Utils.Do(civ01, function(actor) + if not actor.IsDead then + Trigger.OnIdle(actor, actor.Hunt) + end + end) + end + Trigger.RemoveFootprintTrigger(id) + end + end) + + Trigger.OnEnteredFootprint(CivTeam02Trigger, function(unit, id) + if unit.Owner == player then + if not TownHouse04.IsDead then + local civ02 = Reinforcements.Reinforce(spain, CivTeam02, { civteam02spawn.Location }, 0) + Utils.Do(civ02, function(actor) + if not actor.IsDead then + Trigger.OnIdle(actor, actor.Hunt) + end + end) + end + Trigger.RemoveFootprintTrigger(id) + end + end) + +--Minefield Setup + Trigger.OnEnteredFootprint(MineSoldierTrigger, function(unit, id) + if unit.Owner == player then + local MineSoldierCamera1 = Actor.Create("camera", true, { Owner = player, Location = waypoint96.Location }) + Trigger.AfterDelay(DateTime.Seconds(10), function() + if MineSoldierCamera1.IsInWorld then MineSoldierCamera1.Destroy() end + end) + if not MineSoldier01.IsDead then + MineSoldier01.Patrol({ waypoint91.Location, waypoint95.Location, waypoint76.Location, waypoint93.Location }, false, 0) + end + if not MineSoldier02.IsDead then + MineSoldier02.Patrol({ waypoint92.Location, waypoint91.Location, waypoint76.Location, waypoint93.Location }, false, 0) + end + if not MineSoldier03.IsDead then + MineSoldier03.Patrol({ waypoint91.Location, waypoint95.Location, waypoint76.Location, waypoint93.Location }, false, 0) + end + if not MineSoldier04.IsDead then + MineSoldier04.Patrol({ waypoint92.Location, waypoint95.Location, waypoint76.Location, waypoint93.Location }, false, 0) + end + if not MineSoldier05.IsDead then + MineSoldier05.Patrol({ waypoint90.Location, waypoint91.Location, waypoint95.Location, waypoint76.Location, waypoint93.Location }, false, 0) + end + if not MineSoldier06.IsDead then + MineSoldier06.Patrol({ waypoint92.Location, waypoint91.Location, waypoint93.Location }, false, 0) + end + Trigger.RemoveFootprintTrigger(id) + end + end) + + Trigger.OnEnteredFootprint(MineRevealTrigger, function(unit, id) + if unit.Owner == goodguy then + local MineSoldierCamera2 = Actor.Create("camera", true, { Owner = player, Location = waypoint76.Location }) + Trigger.AfterDelay(DateTime.Seconds(12), function() + if MineSoldierCamera2.IsInWorld then MineSoldierCamera2.Destroy() end + end) + Trigger.RemoveFootprintTrigger(id) + end + end) + +--Paradrop Rifle Team Setup + Trigger.OnEnteredFootprint(ParaTrigger, function(unit, id) + if unit.Owner == player then + local powerproxy = Actor.Create("powerproxy.pararifles", true, { Owner = greece }) + local paratroopers = powerproxy.SendParatroopers(waypoint89.CenterPosition, false, Facing.South) + local prtcamera = Actor.Create("camera", true, { Owner = player, Location = waypoint89.Location }) + Trigger.AfterDelay(DateTime.Seconds(10), function() + if prtcamera.IsInWorld then prtcamera.Destroy() end + end) + Utils.Do(paratroopers, function(unit) + if not unit.IsDead then + Trigger.OnIdle(unit, function(unit) + if unit.IsInWorld then + unit.Hunt() + end + end) + end + end) + if Map.LobbyOption("difficulty") == "hard" and not RiflemanGuard01.IsDead then + Trigger.ClearAll(RiflemanGuard01) + ProduceInfantry() --Greece will start infantry production right away if the difficulty is set to hard + end + Trigger.RemoveFootprintTrigger(id) + end + end) + + Trigger.OnKilled(RiflemanGuard01, function() + ProduceInfantry() --Greece will start infantry production once this unit is dead just like in the original mission + end) + + Trigger.AfterDelay(DateTime.Seconds(1), function() + local GreeceHarvesters = greece.GetActorsByType("harv") + Trigger.OnAllKilled(GreeceHarvesters, function() + GreeceHarvestersAreDead = true + end) + end) + +end + +VolkovIsDead = function(a) + Trigger.OnKilled(a, function() + player.MarkFailedObjective(KeepVolkovAlive) + end) +end + +ChitzkoiIsDead = function(a) + Trigger.OnKilled(a, function() + player.MarkFailedObjective(KeepChitzkoiAlive) + Media.DisplayMessage("We can rebuild Chitzkoi. We have the technology.") + Trigger.AfterDelay(DateTime.Seconds(1), function() + Media.PlaySpeechNotification(player, "ObjectiveNotMet") + end) + end) +end diff --git a/mods/ra/maps/soviet-soldier-volkov-n-chitzkoi/weapons.yaml b/mods/ra/maps/soviet-soldier-volkov-n-chitzkoi/weapons.yaml new file mode 100644 index 0000000000..8a8b0039c5 --- /dev/null +++ b/mods/ra/maps/soviet-soldier-volkov-n-chitzkoi/weapons.yaml @@ -0,0 +1,36 @@ +HeavyTurretGun: + Inherits: TurretGun + Range: 10c0 + +CydogJaw: + Inherits: DogJaw + Range: 5c512 + +VolkovWeapon: + Inherits: SilencedPPK + ReloadDelay: 25 + Range: 6c0 + -ValidTargets: + InvalidTargets: Air, Bridge, Structure + Warhead@1Dam: SpreadDamage + Spread: 256 + Versus: + None: 90 + Wood: 75 + Light: 60 + Heavy: 25 + Concrete: 50 + -ValidTargets: + DamageTypes: Prone50Percent, TriggerProne, SmallExplosionDeath + Warhead@2Smu: LeaveSmudge + SmudgeType: Crater + InvalidTargets: Vehicle, Structure, Wall, Husk, Trees + Warhead@3Eff: CreateEffect + Explosions: artillery_explosion + ImpactSounds: kaboom25.aud + ValidTargets: Ground, Ship, Trees + Warhead@4EffWater: CreateEffect + Explosions: small_splash + ImpactSounds: splash9.aud + ValidTargets: Water, Underwater + InvalidTargets: Ship, Structure, Bridge \ No newline at end of file