diff --git a/mods/ra/maps/survival02/map.bin b/mods/ra/maps/survival02/map.bin new file mode 100644 index 0000000000..5396f2cc8e Binary files /dev/null and b/mods/ra/maps/survival02/map.bin differ diff --git a/mods/ra/maps/survival02/map.png b/mods/ra/maps/survival02/map.png new file mode 100644 index 0000000000..aaa1507d66 Binary files /dev/null and b/mods/ra/maps/survival02/map.png differ diff --git a/mods/ra/maps/survival02/map.yaml b/mods/ra/maps/survival02/map.yaml new file mode 100644 index 0000000000..84fff06d34 --- /dev/null +++ b/mods/ra/maps/survival02/map.yaml @@ -0,0 +1,1190 @@ +MapFormat: 7 + +RequiresMod: ra + +Title: Survival 02 + +Description: INCOMING REPORT:\n\nCommander! The Soviets have rendered us useless...\nReports indicate Soviet reinforcements are coming to finish us off... The situation looks bleak...\n + +Author: Nuke'm Bro. + +Tileset: SNOW + +MapSize: 80,80 + +Bounds: 2,2,76,76 + +Visibility: MissionSelector + +Type: Mission + +Videos: + +Options: + Crates: False + Fog: True + Shroud: True + AllyBuildRadius: False + FragileAlliances: False + StartingCash: 5000 + ConfigurableStartingUnits: False + ShortGame: False + +Players: + PlayerReference@Neutral: + Name: Neutral + OwnsWorld: True + NonCombatant: True + Race: allies + PlayerReference@Allies: + Name: Allies + Playable: True + AllowBots: False + Required: True + LockRace: True + Race: allies + LockColor: True + ColorRamp: 115,240,130 + LockSpawn: True + LockTeam: True + Enemies: Soviets + PlayerReference@Soviets: + Name: Soviets + Race: soviet + ColorRamp: 0,255,128 + Enemies: Allies + +Actors: + Actor0: tc05 + Location: 37,56 + Owner: Neutral + Actor1: tc02 + Location: 33,56 + Owner: Neutral + Actor2: t16 + Location: 37,59 + Owner: Neutral + Actor3: t10 + Location: 26,56 + Owner: Neutral + Actor4: tc04 + Location: 33,72 + Owner: Neutral + Actor5: tc01 + Location: 32,76 + Owner: Neutral + Actor98: fenc + Location: 56,68 + Owner: Soviets + Actor7: t05 + Location: 40,74 + Owner: Neutral + Actor8: tc04 + Location: 67,70 + Owner: Neutral + Actor9: tc02 + Location: 68,75 + Owner: Neutral + Actor6: fenc + Location: 55,68 + Owner: Soviets + Actor11: tc05 + Location: 73,63 + Owner: Neutral + Actor12: tc02 + Location: 70,67 + Owner: Neutral + Actor13: t07 + Location: 29,71 + Owner: Neutral + Actor14: tc01 + Location: 24,72 + Owner: Neutral + Actor15: t01 + Location: 29,66 + Owner: Neutral + Actor16: t05 + Location: 34,62 + Owner: Neutral + Actor17: tc01 + Location: 52,52 + Owner: Neutral + Actor18: tc02 + Location: 47,54 + Owner: Neutral + Actor19: tc02 + Location: 26,51 + Owner: Neutral + Actor20: t11 + Location: 42,54 + Owner: Neutral + Actor21: tc05 + Location: 75,16 + Owner: Neutral + Actor22: tc02 + Location: 70,16 + Owner: Neutral + Actor23: tc04 + Location: 69,13 + Owner: Neutral + Actor24: t02 + Location: 73,16 + Owner: Neutral + Actor25: t11 + Location: 76,12 + Owner: Neutral + Actor26: tc02 + Location: 55,2 + Owner: Neutral + Actor27: powr + Location: 73,3 + Owner: Soviets + Actor31: tc01 + Location: 47,25 + Owner: Neutral + Actor30: tc05 + Location: 28,25 + Owner: Neutral + Actor28: tc05 + Location: 58,2 + Owner: Neutral + Actor29: t16 + Location: 56,4 + Owner: Neutral + Actor32: tc04 + Location: 57,30 + Owner: Neutral + Actor33: t02 + Location: 56,28 + Owner: Neutral + Actor34: t06 + Location: 19,45 + Owner: Neutral + Actor35: t01 + Location: 20,49 + Owner: Neutral + Actor37: tc05 + Location: 22,47 + Owner: Neutral + Actor36: tc01 + Location: 22,45 + Owner: Neutral + Actor38: tc04 + Location: 53,14 + Owner: Neutral + Actor39: tc05 + Location: 54,16 + Owner: Neutral + Actor40: tc01 + Location: 56,14 + Owner: Neutral + Actor41: tc02 + Location: 52,17 + Owner: Neutral + Actor45: brik + Location: 5,17 + Owner: Soviets + Actor42: brik + Location: 4,17 + Owner: Soviets + Actor43: brik + Location: 4,18 + Owner: Soviets + Actor46: brik + Location: 6,18 + Owner: Soviets + Actor47: brik + Location: 7,18 + Owner: Soviets + Actor48: brik + Location: 8,18 + Owner: Soviets + Actor49: brik + Location: 9,18 + Owner: Soviets + Actor50: brik + Location: 10,18 + Owner: Soviets + Actor44: brik + Location: 5,18 + Owner: Soviets + Actor51: brik + Location: 11,18 + Owner: Soviets + Actor52: brik + Location: 12,18 + Owner: Soviets + Actor53: brik + Location: 13,17 + Owner: Soviets + Actor56: brik + Location: 13,18 + Owner: Soviets + Actor57: brik + Location: 14,18 + Owner: Soviets + Actor54: brik + Location: 14,17 + Owner: Soviets + Actor69: apwr + Location: 75,6 + Owner: Soviets + Actor73: tsla + Location: 16,12 + Owner: Soviets + Actor67: barb + Location: 19,11 + Owner: Soviets + Actor86: fenc + Location: 65,68 + Owner: Soviets + Actor60: brik + Location: 22,10 + Owner: Soviets + Actor55: brik + Location: 21,10 + Owner: Soviets + Actor58: brik + Location: 21,11 + Owner: Soviets + Actor71: powr + Location: 5,13 + Owner: Soviets + Actor91: fenc + Location: 68,66 + Owner: Soviets + Actor81: tc03 + Location: 6,20 + Owner: Neutral + Actor80: tc05 + Location: 10,19 + Owner: Neutral + Actor78: brl3 + Location: 64,69 + Owner: Soviets + Actor82: tc04 + Location: 2,19 + Owner: Neutral + Actor85: fenc + Location: 64,68 + Owner: Soviets + Actor61: ftur + Location: 15,16 + Owner: Soviets + Actor65: ftur + Location: 20,12 + Owner: Soviets + Actor84: fenc + Location: 63,68 + Owner: Soviets + Actor62: barb + Location: 14,16 + Owner: Soviets + Actor124: fenc + Location: 46,45 + Owner: Allies + Actor63: barb + Location: 14,15 + Owner: Soviets + Actor59: brik + Location: 22,11 + Owner: Soviets + Actor104: barb + Location: 19,12 + Owner: Soviets + Actor66: barb + Location: 20,11 + Owner: Soviets + Actor90: fenc + Location: 67,66 + Owner: Soviets + Actor99: fenc + Location: 55,70 + Owner: Soviets + Actor101: fenc + Location: 68,65 + Owner: Soviets + Actor89: fenc + Location: 67,67 + Owner: Soviets + Actor88: fenc + Location: 67,68 + Owner: Soviets + Actor87: fenc + Location: 66,68 + Owner: Soviets + Actor96: e1 + Location: 13,13 + Owner: Soviets + Facing: 160 + Actor92: fenc + Location: 55,69 + Owner: Soviets + Actor103: e4 + Location: 8,12 + Owner: Soviets + Facing: 160 + Actor102: 3tnk + Location: 14,11 + Owner: Soviets + Facing: 160 + Actor105: tc04 + Location: 23,29 + Owner: Neutral + Actor94: fenc + Location: 55,72 + Owner: Soviets + Actor108: t06 + Location: 24,32 + Owner: Neutral + Actor107: tc01 + Location: 27,30 + Owner: Neutral + Actor76: fenc + Location: 62,69 + Owner: Soviets + Actor75: fenc + Location: 62,68 + Owner: Soviets + Actor95: fenc + Location: 56,69 + Owner: Soviets + Actor109: t01 + Location: 26,31 + Owner: Neutral + Actor110: tc05 + Location: 51,29 + Owner: Neutral + Actor111: tc04 + Location: 45,29 + Owner: Neutral + Actor112: tc05 + Location: 62,45 + Owner: Neutral + Actor113: t13 + Location: 71,27 + Owner: Neutral + Actor114: tc03 + Location: 74,21 + Owner: Neutral + Actor115: tc02 + Location: 38,2 + Owner: Neutral + Actor116: tc05 + Location: 40,8 + Owner: Neutral + Actor117: tc05 + Location: 4,41 + Owner: Neutral + Actor118: tc04 + Location: 2,43 + Owner: Neutral + Actor119: tc02 + Location: 5,44 + Owner: Neutral + Actor120: t07 + Location: 4,46 + Owner: Neutral + Actor125: fenc + Location: 46,44 + Owner: Allies + Actor123: fenc + Location: 46,46 + Owner: Allies + Actor97: powr + Location: 32,43 + Owner: Allies + Health: 0.2 + Actor72: dome + Location: 44,44 + Owner: Allies + Health: 0.3 + Actor127: fact + Location: 38,38 + Owner: Allies + Health: 0.4 + Actor128: powr + Location: 35,45 + Owner: Allies + Health: 0.4 + Actor129: powr + Location: 30,34 + Owner: Allies + Health: 0.3 + Actor130: weap + Location: 33,35 + Owner: Allies + Health: 0.3 + Actor131: tc01 + Location: 30,45 + Owner: Neutral + Actor132: tc04 + Location: 32,45 + Owner: Neutral + Actor133: tc02 + Location: 34,47 + Owner: Neutral + Actor134: agun + Location: 35,42 + Owner: Allies + Health: 0.4 + Actor135: gun + Location: 27,35 + Owner: Allies + Health: 0.4 + Actor136: gun + Location: 28,41 + Owner: Allies + Actor149: cycl + Location: 48,39 + Owner: Allies + Actor139: cycl + Location: 48,38 + Owner: Allies + Actor138: cycl + Location: 48,37 + Owner: Allies + Actor140: pbox + Location: 28,38 + Owner: Allies + Health: 0.5 + Actor141: agun + Location: 32,31 + Owner: Allies + Health: 0.4 + Actor143: fenc + Location: 31,30 + Owner: Allies + Actor142: fenc + Location: 32,30 + Owner: Allies + Actor106: fenc + Location: 33,30 + Owner: Allies + Actor144: fenc + Location: 34,31 + Owner: Allies + Actor68: fenc + Location: 34,30 + Owner: Allies + Actor147: tent + Location: 43,34 + Owner: Allies + Health: 0.3 + Actor148: fix + Location: 44,39 + Owner: Allies + Health: 0.2 + Actor137: cycl + Location: 29,39 + Owner: Allies + Actor122: cycl + Location: 29,38 + Owner: Allies + Actor121: cycl + Location: 29,37 + Owner: Allies + Actor152: gun + Location: 49,38 + Owner: Allies + Health: 0.3 + Actor157: fenc + Location: 46,32 + Owner: Allies + Actor160: fenc + Location: 47,32 + Owner: Allies + Actor161: fenc + Location: 48,32 + Owner: Allies + Actor162: fenc + Location: 48,33 + Owner: Allies + Actor163: fenc + Location: 48,34 + Owner: Allies + Actor158: gun + Location: 39,32 + Owner: Allies + Health: 0.3 + Actor159: powr + Location: 46,33 + Owner: Allies + Health: 0.3 + Actor145: fenc + Location: 40,32 + Owner: Allies + Actor146: fenc + Location: 40,33 + Owner: Allies + Actor153: fenc + Location: 39,33 + Owner: Allies + Actor154: fenc + Location: 38,33 + Owner: Allies + Actor155: fenc + Location: 38,32 + Owner: Allies + Actor156: fenc + Location: 45,32 + Owner: Allies + Actor166: agun + Location: 46,37 + Owner: Allies + Health: 0.5 + Actor167: e1 + Location: 35,33 + Owner: Allies + Facing: 64 + Actor168: e1 + Location: 43,32 + Owner: Allies + Actor169: e3 + Location: 42,42 + Owner: Allies + Actor170: e1 + Location: 33,40 + Owner: Allies + Actor171: jeep + Location: 38,35 + Owner: Allies + Actor172: 1tnk + Location: 30,41 + Owner: Allies + Actor173: 1tnk + Location: 47,41 + Owner: Allies + Actor174: 2tnk + Location: 37,46 + Owner: Allies + Facing: 160 + Actor64: barb + Location: 15,15 + Owner: Soviets + Actor177: fenc + Location: 55,71 + Owner: Soviets + Actor100: e2 + Location: 16,10 + Owner: Soviets + Facing: 160 + Actor180: fenc + Location: 53,72 + Owner: Soviets + Actor179: fenc + Location: 54,72 + Owner: Soviets + Actor181: fenc + Location: 53,73 + Owner: Soviets + Actor183: fenc + Location: 54,73 + Owner: Soviets + Actor176: t02 + Location: 43,16 + Owner: Neutral + Actor126: tc04 + Location: 29,15 + Owner: Neutral + Actor182: apwr + Location: 22,2 + Owner: Soviets + Actor77: v2rl + Location: 40,23 + Owner: Soviets + Actor223: e2 + Location: 37,43 + Owner: Soviets + Facing: 192 + Actor220: e1 + Location: 32,38 + Owner: Soviets + Facing: 192 + Actor222: e2 + Location: 40,35 + Owner: Soviets + Facing: 192 + Actor221: e1 + Location: 42,40 + Owner: Soviets + Facing: 192 + Actor70: mine + Location: 38,50 + Owner: Neutral + Actor175: e1 + Location: 63,72 + Owner: Soviets + Facing: 32 + Actor184: e2 + Location: 61,74 + Owner: Soviets + Actor224: brl3 + Location: 59,75 + Owner: Soviets + Actor225: barl + Location: 58,75 + Owner: Soviets + Actor226: barl + Location: 61,75 + Owner: Soviets + Actor227: barl + Location: 62,70 + Owner: Soviets + Actor229: barl + Location: 63,71 + Owner: Soviets + Actor230: fenc + Location: 67,65 + Owner: Soviets + Actor231: brl3 + Location: 62,74 + Owner: Soviets + Actor232: barl + Location: 62,75 + Owner: Soviets + Actor196: tsla + Location: 60,8 + Owner: Soviets + Actor235: barl + Location: 64,70 + Owner: Soviets + Actor236: fenc + Location: 61,2 + Owner: Soviets + Actor237: fenc + Location: 62,2 + Owner: Soviets + Actor238: fenc + Location: 63,2 + Owner: Soviets + Actor241: silo + Location: 64,5 + Owner: Soviets + Actor240: fenc + Location: 64,2 + Owner: Soviets + Actor239: silo + Location: 64,4 + Owner: Soviets + Actor242: powr + Location: 8,14 + Owner: Soviets + Actor243: fenc + Location: 64,3 + Owner: Soviets + Actor10: tc04 + Location: 75,73 + Owner: Neutral + Actor178: t16 + Location: 77,69 + Owner: Neutral + Actor192: tc02 + Location: 22,4 + Owner: Neutral + Actor193: tc01 + Location: 27,6 + Owner: Neutral + Actor194: powr + Location: 74,10 + Owner: Soviets + Actor195: barr + Location: 72,6 + Owner: Soviets + Actor93: tc03 + Location: 75,68 + Owner: Neutral + Actor248: mine + Location: 59,60 + Owner: Neutral + Actor249: tc02 + Location: 26,47 + Owner: Neutral + Actor250: t16 + Location: 24,45 + Owner: Neutral + Actor251: t06 + Location: 22,43 + Owner: Neutral + Actor252: t01 + Location: 24,43 + Owner: Neutral + Actor253: kenn + Location: 12,6 + Owner: Soviets + Actor254: fenc + Location: 10,5 + Owner: Soviets + Actor255: fenc + Location: 11,5 + Owner: Soviets + Actor256: fenc + Location: 12,5 + Owner: Soviets + Actor257: dog + Location: 11,14 + Owner: Soviets + Actor258: dog + Location: 18,10 + Owner: Soviets + Actor259: fenc + Location: 10,6 + Owner: Soviets + Actor260: dog + Location: 11,7 + Owner: Soviets + Actor191: tc04 + Location: 25,1 + Owner: Neutral + Actor79: tc05 + Location: 23,6 + Owner: Neutral + Actor190: apwr + Location: 25,4 + Owner: Soviets + Actor83: barl + Location: 63,69 + Owner: Soviets + Actor185: brl3 + Location: 56,71 + Owner: Soviets + Actor186: barl + Location: 58,70 + Owner: Soviets + Actor187: barl + Location: 58,72 + Owner: Soviets + Actor188: barl + Location: 57,71 + Owner: Soviets + Actor189: barl + Location: 59,71 + Owner: Soviets + Actor197: barb + Location: 59,9 + Owner: Soviets + Actor198: barb + Location: 59,10 + Owner: Soviets + Actor199: barb + Location: 60,10 + Owner: Soviets + Actor200: barb + Location: 61,10 + Owner: Soviets + Actor201: barb + Location: 61,9 + Owner: Soviets + Actor202: ftur + Location: 56,8 + Owner: Soviets + Actor203: ftur + Location: 63,12 + Owner: Soviets + Actor209: fenc + Location: 74,7 + Owner: Soviets + Actor208: fenc + Location: 74,6 + Owner: Soviets + Actor207: fenc + Location: 74,5 + Owner: Soviets + Actor206: fenc + Location: 73,5 + Owner: Soviets + Actor205: fenc + Location: 72,5 + Owner: Soviets + Actor204: fenc + Location: 71,5 + Owner: Soviets + Actor210: fenc + Location: 74,8 + Owner: Soviets + Actor211: 3tnk + Location: 58,6 + Owner: Soviets + Facing: 160 + Actor212: 3tnk + Location: 65,10 + Owner: Soviets + Facing: 96 + Actor214: e1 + Location: 73,9 + Owner: Soviets + Facing: 96 + Actor215: e3 + Location: 76,4 + Owner: Soviets + Facing: 32 + Actor216: e4 + Location: 66,3 + Owner: Soviets + Facing: 96 + Actor234: minv + Location: 16,17 + Owner: Soviets + Actor268: minv + Location: 16,19 + Owner: Soviets + Actor218: minv + Location: 62,13 + Owner: Soviets + Actor219: minv + Location: 57,9 + Owner: Soviets + Actor228: mine + Location: 37,14 + Owner: Neutral + Actor246: minv + Location: 56,11 + Owner: Soviets + Actor247: minv + Location: 58,11 + Owner: Soviets + Actor261: minv + Location: 58,13 + Owner: Soviets + Actor262: minv + Location: 60,12 + Owner: Soviets + Actor263: minv + Location: 60,14 + Owner: Soviets + Actor245: minv + Location: 20,13 + Owner: Soviets + Actor266: minv + Location: 19,16 + Owner: Soviets + Actor264: minv + Location: 20,15 + Owner: Soviets + Actor265: minv + Location: 18,17 + Owner: Soviets + Actor267: minv + Location: 22,13 + Owner: Soviets + Actor269: minv + Location: 19,14 + Owner: Soviets + Actor270: minv + Location: 17,16 + Owner: Soviets + Actor164: fenc + Location: 46,47 + Owner: Allies + Actor165: fenc + Location: 45,47 + Owner: Allies + Actor213: fenc + Location: 44,47 + Owner: Allies + Actor233: proc + Location: 61,3 + Owner: Soviets + FreeActor: False + Actor74: proc + Location: 13,5 + Owner: Soviets + FreeActor: False + Harvester1: harv + Location: 61,6 + Owner: Soviets + Facing: 128 + Harvester2: harv + Location: 15,5 + Owner: Soviets + Facing: 150 + HarvGuard1: apc + Location: 68,7 + Owner: Soviets + Facing: 100 + HarvGuard2: 3tnk + Location: 69,8 + Owner: Soviets + Facing: 127 + HarvGuard3: 3tnk + Location: 67,8 + Owner: Soviets + Facing: 96 + drum1: brl3 + Location: 63,70 + Owner: Soviets + drum2: brl3 + Location: 60,75 + Owner: Soviets + drum3: brl3 + Location: 58,71 + Owner: Soviets + boom1: apwr + Location: 56,72 + Owner: Soviets + boom2: barr + Location: 65,69 + Owner: Soviets + boom3: ftur + Location: 59,70 + Owner: Soviets + boom4: 3tnk + Location: 61,70 + Owner: Soviets + Facing: 32 + boom5: 3tnk + Location: 59,74 + Owner: Soviets + Facing: 224 + Factory: weap + Location: 7,6 + Owner: Soviets + Barrack1: barr + Location: 18,7 + Owner: Soviets + SovietEntry1: waypoint + Location: 77,45 + Owner: Neutral + SovietEntry2: waypoint + Location: 2,54 + Owner: Neutral + SovietEntry3: waypoint + Location: 71,2 + Owner: Neutral + SovietRally: waypoint + Location: 11,10 + Owner: Neutral + SovietRally1: waypoint + Location: 61,72 + Owner: Neutral + SovietRally2: waypoint + Location: 55,61 + Owner: Neutral + SovietRally3: waypoint + Location: 22,18 + Owner: Neutral + SovietRally4: waypoint + Location: 40,18 + Owner: Neutral + SovietRally5: waypoint + Location: 14,36 + Owner: Neutral + SovietRally6: waypoint + Location: 65,39 + Owner: Neutral + SovietRally7: waypoint + Location: 15,41 + Owner: Neutral + SovietRally8: waypoint + Location: 59,19 + Owner: Neutral + SovietParaDrop1: waypoint + Location: 48,41 + Owner: Neutral + SovietParaDrop2: waypoint + Location: 26,38 + Owner: Neutral + SovietParaDrop3: waypoint + Location: 39,34 + Owner: Neutral + SovietParaDropEntry: waypoint + Location: 2,2 + Owner: Neutral + FranceEntry: waypoint + Location: 66,77 + Owner: Neutral + FranceRally: waypoint + Location: 59,67 + Owner: Neutral + BrokenBridge1: waypoint + Location: 7,67 + Owner: Neutral + ReinforcementsEntry1: waypoint + Location: 2,71 + Owner: Neutral + ReinforcementsRally1: waypoint + Location: 10,62 + Owner: Neutral + BrokenBridge2: waypoint + Location: 49,74 + Owner: Neutral + ReinforcementsEntry2: waypoint + Location: 44,77 + Owner: Neutral + ReinforcementsRally2: waypoint + Location: 49,70 + Owner: Neutral + AlliesBase: waypoint + Location: 39,37 + Owner: Neutral + Timer: MissionTimer + Location: 5,5 + Owner: Soviets + +Smudges: + +Rules: + Player: + -ConquestVictoryConditions: + MissionObjectives: + EarlyGameOver: true + World: + -CrateDrop: + -SpawnMPUnits: + -MPStartLocations: + LuaScript: + Scripts: survival02.lua + ObjectivesPanel: + PanelName: MISSION_OBJECTIVES + ^Infantry: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + ^Tank: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + ^Vehicle: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + ^Building: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + ^Wall: + Tooltip: + ShowOwnerRow: false + ^Husk: + Tooltip: + GenericVisibility: Enemy, Ally, Neutral + GenericStancePrefix: false + ShowOwnerRow: false + SovietSquad: + ParatroopersPower: + DropItems: E1,E1,E2,E4,E4 + QuantizedFacings: 8 + DisplayBeacon: false + SovietPlatoonUnits: + ParatroopersPower: + DropItems: E1,E1,E2,E4,E4,E1,E1,E2,E4,E4 + QuantizedFacings: 8 + DisplayBeacon: false + MissionTimer: + ParatroopersPower: + ChargeTime: 600 + Description: Soviet reinforcements arrive in + DisplayTimer: True + MINV: + Mine: + AvoidFriendly: yes + CAMERA: + RevealsShroud: + Range: 7c0 + ARTY: + Valued: + Cost: 1000 + GUN: + Valued: + Cost: 1000 + E7: + Buildable: + Prerequisites: ~disabled + SHOK: + Buildable: + Prerequisites: ~disabled + HELI: + Buildable: + Prerequisites: ~disabled + MSLO: + Buildable: + Prerequisites: ~disabled + GAP: + Buildable: + Prerequisites: ~disabled + SYRD: + Buildable: + Prerequisites: ~disabled + PDOX: + Buildable: + Prerequisites: ~disabled + AGUN: + Buildable: + Prerequisites: ~disabled + ATEK: + Buildable: + Prerequisites: ~disabled + 4TNK: + Buildable: + Prerequisites: ~disabled + MCV: + Buildable: + Prerequisites: ~disabled + MNLY.AP: + Buildable: + Prerequisites: ~disabled + MNLY.AT: + Buildable: + Prerequisites: ~disabled + TTNK: + Buildable: + Prerequisites: ~disabled + CTNK: + Buildable: + Prerequisites: ~disabled + BRIK: + Buildable: + Prerequisites: ~disabled + MRJ: + Buildable: + Prerequisites: ~disabled + MGG: + Buildable: + Prerequisites: ~disabled + STNK: + Buildable: + Prerequisites: ~disabled + QTNK: + Buildable: + Prerequisites: ~disabled + DTRK: + Buildable: + Prerequisites: ~disabled + +Sequences: + +VoxelSequences: + +Weapons: + ParaBomb: + ROF: 5 + Range: 7c0 + Report: CHUTE1.AUD + Projectile: GravityBomb + Image: BOMBLET + Warhead@1Dam: SpreadDamage + Spread: 150 + Damage: 3500 + DeathType: 5 + Versus: + None: 125 + Wood: 100 + Light: 60 + Heavy: 50 + Concrete: 25 + Warhead@2Smu: LeaveSmudge + SmudgeType: Crater + Warhead@3Eff: CreateEffect + Explosion: napalm + ImpactSound: firebl3.aud + InvalidImpactTypes: Water + Warhead@4EffWater: CreateEffect + Explosion: napalm + ImpactSound: splash9.aud + ValidImpactTypes: Water + +Voices: + +Notifications: + +Translations: diff --git a/mods/ra/maps/survival02/survival02.lua b/mods/ra/maps/survival02/survival02.lua new file mode 100644 index 0000000000..e1a2f8a781 --- /dev/null +++ b/mods/ra/maps/survival02/survival02.lua @@ -0,0 +1,356 @@ +FrenchSquad = { "2tnk", "2tnk", "mcv" } + +TimerTicks = DateTime.Minutes(10) +AttackTicks = DateTime.Seconds(52) +AttackAtFrame = DateTime.Seconds(18) +AttackAtFrameIncrement = DateTime.Seconds(18) +Producing = true +SpawningInfantry = true +ProduceAtFrame = DateTime.Seconds(12) +ProduceAtFrameIncrement = DateTime.Seconds(12) +SovietGroupSize = 4 +SovietAttackGroupSize = 7 + +InfantryGuards = { } +HarvGuards = { HarvGuard1, HarvGuard2, HarvGuard3 } +SovietPlatoonUnits = { "e1", "e1", "e2", "e4", "e4", "e1", "e1", "e2", "e4", "e4" } +SovietTanks = { "3tnk", "3tnk", "3tnk" } +SovietVehicles = { "3tnk", "3tnk", "v2rl" } +SovietInfantry = { "e1", "e4", "e2" } +SovietEntryPoints = { SovietEntry1, SovietEntry2, SovietEntry3 } +SovietRallyPoints = { SovietRally2, SovietRally4, SovietRally5, SovietRally6 } +NewSovietEntryPoints = { SovietParaDropEntry, SovietEntry3 } +NewSovietRallyPoints = { SovietRally3, SovietRally4, SovietRally8 } + +ParaWaves = +{ + { AttackTicks, { "SovietSquad", SovietRally5 } }, + { 0, { "SovietSquad", SovietRally6 } }, + { AttackTicks * 2, { "SovietSquad", SovietParaDrop3 } }, + { 0, { "SovietPlatoonUnits", SovietRally5 } }, + { 0, { "SovietPlatoonUnits", SovietRally6 } }, + { 0, { "SovietSquad", SovietRally2 } }, + { AttackTicks * 2, { "SovietSquad", SovietParaDrop2 } }, + { AttackTicks * 2, { "SovietSquad", SovietParaDrop1 } }, + { AttackTicks * 3, { "SovietSquad", SovietParaDrop1 } } +} + +IdleHunt = function(unit) Trigger.OnIdle(unit, unit.Hunt) end + +GuardHarvester = function(unit, attacker) + if not unit.IsDead then + unit.Stop() + + local start = unit.Location + if attacker.Location then + unit.AttackMove(attacker.Location) + else + unit.Hunt() + end + + Trigger.OnIdle(unit, function() + if unit.Location == start then + Trigger.ClearAll(unit) + else + unit.AttackMove(start) + end + end) + end +end + +Tick = function() + if soviets.HasNoRequiredUnits() then + if DestroyObj then + allies.MarkCompletedObjective(DestroyObj) + else + DestroyObj = allies.AddPrimaryObjective("Destroy all Soviet forces in the area!") + allies.MarkCompletedObjective(DestroyObj) + end + end + + if allies.HasNoRequiredUnits() then + soviets.MarkCompletedObjective(SovietObj) + end + + if soviets.Resources > soviets.ResourceCapacity / 2 then + soviets.Resources = soviets.ResourceCapacity / 2 + end + + if DateTime.GameTime == ProduceAtFrame then + if SpawningInfantry then + ProduceAtFrame = ProduceAtFrame + ProduceAtFrameIncrement + ProduceAtFrameIncrement = ProduceAtFrameIncrement * 2 - 5 + SpawnSovietInfantry() + end + end + + if DateTime.GameTime == AttackAtFrame then + AttackAtFrame = AttackAtFrame + AttackAtFrameIncrement + AttackAtFrameIncrement = AttackAtFrameIncrement * 2 - 5 + if Producing then + SpawnSovietVehicle(SovietEntryPoints, SovietRallyPoints) + else + SpawnSovietVehicle(NewSovietEntryPoints, NewSovietRallyPoints) + end + end + + if DateTime.Minutes(5) == TimerTicks - DateTime.GameTime then + Media.PlaySpeechNotification(allies, "WarningFiveMinutesRemaining") + InitCountDown() + end +end + +SendSovietParadrops = function(table) + local paraproxy = Actor.Create(table[1], false, { Owner = soviets }) + units = paraproxy.SendParatroopers(table[2].CenterPosition) + Utils.Do(units, function(unit) IdleHunt(unit) end) + paraproxy.Destroy() +end + +SpawnSovietInfantry = function() + soviets.Build({ Utils.Random(SovietInfantry) }, function(units) + IdleHunt(units[1]) + end) +end + +SpawnSovietVehicle = function(spawnpoints, rallypoints) + local route = Utils.RandomInteger(1, #spawnpoints + 1) + local rally = Utils.RandomInteger(1, #rallypoints + 1) + local unit = Reinforcements.Reinforce(soviets, { Utils.Random(SovietVehicles) }, { spawnpoints[route].Location, rallypoints[rally].Location })[1] + IdleHunt(unit) +end + +SpawnAndAttack = function(types, entry) + local units = Reinforcements.Reinforce(soviets, types, { entry }) + Utils.Do(units, function(unit) + IdleHunt(unit) + end) + return units +end + +FrenchReinforcements = function() + Camera.Position = SovietRally1.CenterPosition + local camera = Actor.Create("camera", true, { Owner = allies, Location = SovietRally1.Location }) + + if drum1.IsDead or drum2.IsDead or drum3.IsDead then + Media.PlaySpeechNotification(allies, "AlliedReinforcementsArrived") + Reinforcements.Reinforce(allies, FrenchSquad, { FranceEntry.Location, FranceRally.Location }) + Trigger.AfterDelay(DateTime.Seconds(3), function() camera.Destroy() end) + return + end + + powerproxy = Actor.Create("powerproxy.parabombs", false, { Owner = allies }) + powerproxy.SendAirstrike(drum1.CenterPosition, false, 256 - 28) + powerproxy.SendAirstrike(drum2.CenterPosition, false, 256 - 32) + powerproxy.SendAirstrike(drum3.CenterPosition, false, 256 - 36) + powerproxy.Destroy() + + Trigger.AfterDelay(DateTime.Seconds(3), function() + Media.PlaySpeechNotification(allies, "AlliedReinforcementsArrived") + Reinforcements.Reinforce(allies, FrenchSquad, { FranceEntry.Location, FranceRally.Location }) + Trigger.AfterDelay(DateTime.Seconds(3), function() camera.Destroy() end) + end) +end + +FinalAttack = function() + local units1 = SpawnAndAttack(SovietTanks, SovietEntry1.Location) + local units2 = SpawnAndAttack(SovietTanks, SovietEntry1.Location) + local units3 = SpawnAndAttack(SovietTanks, SovietEntry2.Location) + local units4 = SpawnAndAttack(SovietPlatoonUnits, SovietEntry1.Location) + local units5 = SpawnAndAttack(SovietPlatoonUnits, SovietEntry2.Location) + + local units = { } + local insert = function(table) + local count = #units + Utils.Do(table, function(unit) + units[count] = unit + count = count + 1 + end) + end + + insert(units1) + insert(units2) + insert(units3) + insert(units4) + insert(units5) + + Trigger.OnAllKilled(units, function() + if not DestroyObj then + Media.DisplayMessage("Excellent work Commander! We have reinforced our position enough to initiate a counter-attack.", "Incoming Report") + DestroyObj = allies.AddPrimaryObjective("Destroy the remaining Soviet forces in the area!") + end + allies.MarkCompletedObjective(SurviveObj) + end) +end + +wave = 1 +SendParadrops = function() + SendSovietParadrops(ParaWaves[wave][2]) + + wave = wave + 1 + if wave > #ParaWaves then + Trigger.AfterDelay(AttackTicks, FrenchReinforcements) + else + Trigger.AfterDelay(ParaWaves[wave][1], SendParadrops) + end +end + +SetupBridges = function() + local count = 0 + local counter = function() + count = count + 1 + if count == 2 then + allies.MarkCompletedObjective(RepairBridges) + end + end + + Media.DisplayMessage("Commander! The Soviets destroyed the brigdes to disable our reinforcements. Repair them for additional reinforcements.", "Incoming Report") + RepairBridges = allies.AddSecondaryObjective("Repair the two southern brigdes.") + + local bridgeA = Map.ActorsInCircle(BrokenBridge1.CenterPosition, WRange.FromCells(1), function(self) return self.Type == "bridge1" end) + local bridgeB = Map.ActorsInCircle(BrokenBridge2.CenterPosition, WRange.FromCells(1), function(self) return self.Type == "bridge1" end) + + Utils.Do(bridgeA, function(bridge) + Trigger.OnDamaged(bridge, function() + Utils.Do(bridgeA, function(self) Trigger.ClearAll(self) end) + Media.PlaySpeechNotification(allies, "AlliedReinforcementsArrived") + Reinforcements.Reinforce(allies, { "1tnk", "2tnk", "2tnk" }, { ReinforcementsEntry1.Location, ReinforcementsRally1.Location }) + counter() + end) + end) + Utils.Do(bridgeB, function(bridge) + Trigger.OnDamaged(bridge, function() + Utils.Do(bridgeB, function(self) Trigger.ClearAll(self) end) + Media.PlaySpeechNotification(allies, "AlliedReinforcementsArrived") + Reinforcements.Reinforce(allies, { "jeep", "1tnk", "1tnk" }, { ReinforcementsEntry2.Location, ReinforcementsRally2.Location }) + counter() + end) + end) +end + +InitCountDown = function() + Trigger.AfterDelay(DateTime.Minutes(1), function() Media.PlaySpeechNotification(allies, "WarningFourMinutesRemaining") end) + Trigger.AfterDelay(DateTime.Minutes(2), function() Media.PlaySpeechNotification(allies, "WarningThreeMinutesRemaining") end) + Trigger.AfterDelay(DateTime.Minutes(3), function() Media.PlaySpeechNotification(allies, "WarningTwoMinutesRemaining") end) + Trigger.AfterDelay(DateTime.Minutes(4), function() Media.PlaySpeechNotification(allies, "WarningOneMinuteRemaining") end) +end + +InitObjectives = function() + Trigger.OnObjectiveAdded(allies, function(p, id) + Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective") + end) + + SurviveObj = allies.AddPrimaryObjective("Enforce your position and hold-out the onslaught.") + SovietObj = soviets.AddPrimaryObjective("Eliminate all Allied forces.") + + Trigger.AfterDelay(DateTime.Seconds(15), function() + SetupBridges() + end) + + Trigger.OnObjectiveCompleted(allies, function(p, id) + Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed") + end) + Trigger.OnObjectiveFailed(allies, function(p, id) + Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed") + end) + + Trigger.OnPlayerLost(allies, function() + Media.PlaySpeechNotification(allies, "Lose") + end) + Trigger.OnPlayerWon(allies, function() + Media.PlaySpeechNotification(allies, "Win") + Media.DisplayMessage("We have destroyed the remaining Soviet presence!", "Incoming Report") + end) +end + +InitMission = function() + Camera.Position = AlliesBase.CenterPosition + + Trigger.AfterDelay(DateTime.Seconds(1), function() Media.PlaySpeechNotification(allies, "MissionTimerInitialised") end) + + Trigger.AfterDelay(TimerTicks, function() + Media.DisplayMessage("The Soviet reinforcements are approaching!", "Incoming Report") + Media.PlaySpeechNotification(allies, "SovietReinforcementsArrived") + SpawnSovietVehicle(NewSovietEntryPoints, NewSovietRallyPoints) + FinalAttack() + Producing = false + Timer.Destroy() + end) + + Trigger.AfterDelay(AttackTicks, SendParadrops) + + Trigger.OnKilled(drum1, function() --Kill the remaining stuff from FrenchReinforcements + if not boom2.IsDead then boom2.Kill() end + if not boom4.IsDead then boom4.Kill() end + if not drum2.IsDead then drum2.Kill() end + if not drum3.IsDead then drum3.Kill() end + end) + Trigger.OnKilled(drum2, function() + if not boom1.IsDead then boom1.Kill() end + if not boom5.IsDead then boom5.Kill() end + Trigger.AfterDelay(DateTime.Seconds(1), function() if not drum1.IsDead then drum1.Kill() end end) + end) + Trigger.OnKilled(drum3, function() + if not boom1.IsDead then boom1.Kill() end + if not boom3.IsDead then boom3.Kill() end + Trigger.AfterDelay(DateTime.Seconds(1), function() if not drum1.IsDead then drum1.Kill() end end) + end) +end + +SetupSoviets = function() + Barrack1.IsPrimaryBuilding = true + Barrack1.RallyPoint = SovietRally.Location + Trigger.OnKilledOrCaptured(Barrack1, function() + SpawningInfantry = false + end) + + Harvester1.FindResources() + Trigger.OnDamaged(Harvester1, function(self, attacker) + Utils.Do(HarvGuards, function(unit) + GuardHarvester(unit, attacker) + end) + end) + + Harvester2.FindResources() + Trigger.OnDamaged(Harvester2, function(self, attacker) + Utils.Do(InfantryGuards, function(unit) GuardHarvester(unit, attacker) end) + + local toBuild = { } + for i = 1, 6, 1 do + toBuild[i] = Utils.Random(SovietInfantry) + end + + soviets.Build(toBuild, function(units) + Utils.Do(units, function(unit) + InfantryGuards[#InfantryGuards + 1] = unit + GuardHarvester(unit, attacker) + end) + end) + end) + + Trigger.AfterDelay(0, function() + local buildings = Map.ActorsInBox(Map.TopLeft, Map.BottomRight, function(self) return self.Owner == soviets and self.HasProperty("StartBuildingRepairs") end) + Utils.Do(buildings, function(actor) + Trigger.OnDamaged(actor, function(building) + if building.Owner == soviets and building.Health < building.MaxHealth * 3/4 then + building.StartBuildingRepairs() + end + end) + end) + + local units = Map.ActorsInBox(Map.TopLeft, Map.BottomRight, function(self) return self.Owner == soviets and self.HasProperty("AutoTarget") end) + Utils.Do(units, function(unit) + unit.Stance = "Defend" + end) + end) +end + +WorldLoaded = function() + + allies = Player.GetPlayer("Allies") + soviets = Player.GetPlayer("Soviets") + + InitObjectives() + InitMission() + SetupSoviets() +end