diff --git a/OpenRA.sln b/OpenRA.sln index 26d6996939..dddabd21dd 100644 --- a/OpenRA.sln +++ b/OpenRA.sln @@ -74,6 +74,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Red Alert Lua scripts", "Re mods\ra\maps\fort-lonestar\fort-lonestar.lua = mods\ra\maps\fort-lonestar\fort-lonestar.lua mods\ra\maps\intervention\intervention.lua = mods\ra\maps\intervention\intervention.lua mods\ra\maps\monster-tank-madness\monster-tank-madness.lua = mods\ra\maps\monster-tank-madness\monster-tank-madness.lua + mods\ra\maps\evacuation\evacuation.lua = mods\ra\maps\evacuation\evacuation.lua + mods\ra\maps\exodus\exodus.lua = mods\ra\maps\exodus\exodus.lua mods\ra\maps\soviet-01\soviet01.lua = mods\ra\maps\soviet-01\soviet01.lua mods\ra\maps\soviet-02a\soviet02a.lua = mods\ra\maps\soviet-02a\soviet02a.lua mods\ra\maps\soviet-02b\soviet02b.lua = mods\ra\maps\soviet-02b\soviet02b.lua diff --git a/mods/ra/maps/exodus/exodus.lua b/mods/ra/maps/exodus/exodus.lua new file mode 100644 index 0000000000..cd7c038002 --- /dev/null +++ b/mods/ra/maps/exodus/exodus.lua @@ -0,0 +1,387 @@ +Difficulty = Map.LobbyOption("difficulty") + +UnitsEvacuatedThreshold = +{ + hard = 200, + normal = 100, + easy = 50 +} + +AttackAtFrame = +{ + hard = 500, + normal = 500, + easy = 600 +} + +MinAttackAtFrame = +{ + hard = 100, + normal = 100, + easy = 150 +} + +MaxSovietYaks = +{ + hard = 4, + normal = 2, + easy = 0 +} + +SovietParadrops = +{ + hard = 40, + normal = 20, + easy = 0 +} + +SovietParadropTicks = +{ + hard = DateTime.Minutes(17), + normal = DateTime.Minutes(20), + easy = DateTime.Minutes(20) +} + +SovietUnits2Ticks = +{ + hard = DateTime.Minutes(12), + normal = DateTime.Minutes(15), + easy = DateTime.Minutes(15) +} + +SovietEntryPoints = +{ + SovietEntryPoint1, SovietEntryPoint2, SovietEntryPoint3, SovietEntryPoint4, SovietEntryPoint5, SovietEntryPoint6 +} + +SovietRallyPoints = +{ + SovietRallyPoint1, SovietRallyPoint2, SovietRallyPoint3, SovietRallyPoint4, SovietRallyPoint5, SovietRallyPoint6 +} + +SovietAirfields = +{ + SovietAirfield1, SovietAirfield2, SovietAirfield3, SovietAirfield4, + SovietAirfield5, SovietAirfield6, SovietAirfield7, SovietAirfield8 +} + +MountainEntry = +{ + MountainEntry1.Location, MountainEntry2.Location, MountainEntry3.Location, MountainEntry4.Location, + MountainEntry5.Location, MountainEntry6.Location, MountainEntry7.Location, MountainEntry8.Location +} + +BridgeEntry = +{ + BridgeEntry1.Location, BridgeEntry2.Location, BridgeEntry3.Location, BridgeEntry4.Location +} + +MobileConstructionVehicle = { "mcv" } +Yak = { "yak" } + +ReinforcementsTicks1 = DateTime.Minutes(5) +Reinforcements1 = +{ + "mgg", "2tnk", "2tnk", "2tnk", "2tnk", "1tnk", "1tnk", + "jeep", "jeep", "e1", "e1", "e1", "e1", "e3", "e3" +} + +ReinforcementsTicks2 = DateTime.Minutes(10) +Reinforcements2 = +{ + "mgg", "2tnk", "2tnk", "2tnk", "2tnk", "truk", "truk", "truk", + "truk", "truk", "truk", "1tnk", "1tnk", "jeep", "jeep" +} + +SovietUnits1 = +{ + "3tnk", "3tnk", "3tnk", "3tnk", "3tnk", "3tnk", "v2rl", "v2rl", "ftrk", + "apc", "e1", "e1", "e2", "e3", "e3", "e4" +} + +SovietUnits2 = +{ + "4tnk", "4tnk", "4tnk", "4tnk", "3tnk", "3tnk", "3tnk", "3tnk", "v2rl", + "v2rl", "ftrk", "apc", "e1", "e1", "e2", "e3", "e3", "e4" +} + +CurrentReinforcement1 = 0 +CurrentReinforcement2 = 0 +SpawnAlliedUnit = function(units) + Reinforcements.Reinforce(allies1, units, { Allies1EntryPoint.Location, Allies1MovePoint.Location }) + + if allies2 then + Reinforcements.Reinforce(allies2, units, { Allies2EntryPoint.Location, Allies2MovePoint.Location }) + end + + Utils.Do(humans, function(player) + Trigger.AfterDelay(DateTime.Seconds(2), function() + Media.PlaySpeechNotification(player, "AlliedReinforcementsNorth") + end) + end) + + if CurrentReinforcement1 < #Reinforcements1 then + CurrentReinforcement1 = CurrentReinforcement1 + 1 + Trigger.AfterDelay(ReinforcementsTicks1, function() + reinforcements1 = { Reinforcements1[CurrentReinforcement1] } + SpawnAlliedUnit(reinforcements1) + end) + end + + if CurrentReinforcement2 < #Reinforcements2 then + CurrentReinforcement2 = CurrentReinforcement2 + 1 + Trigger.AfterDelay(ReinforcementsTicks2, function() + reinforcements2 = { Reinforcements2[CurrentReinforcement2] } + SpawnAlliedUnit(reinforcements2) + end) + end +end + +SovietGroupSize = 5 +SpawnSovietUnits = function() + local spawnPoint = Utils.Random(SovietEntryPoints) + local rallyPoint = Utils.Random(SovietRallyPoints) + local route = { spawnPoint.Location, rallyPoint.Location } + + local units = SovietUnits1 + if DateTime.GameTime >= SovietUnits2Ticks[Difficulty] then + units = SovietUnits2 + end + + local unit = { Utils.Random(units) } + Reinforcements.Reinforce(soviets, unit, route) + + local delay = math.max(attackAtFrame - 5, minAttackAtFrame) + Trigger.AfterDelay(delay, SpawnSovietUnits) +end + +SovietParadrop = 0 +SendSovietParadrop = function() + local sovietParadrops = SovietParadrops[Difficulty] + + if (SovietParadrop > sovietParadrops) then + return + end + + SovietParadrop = SovietParadrop + 1 + + Utils.Do(humans, function(player) + Media.PlaySpeechNotification(player, "SovietForcesApproaching") + end) + + local x = Utils.RandomInteger(ParadropBoxTopLeft.Location.X, ParadropBoxBottomRight.Location.X) + local y = Utils.RandomInteger(ParadropBoxBottomRight.Location.Y, ParadropBoxTopLeft.Location.Y) + + local randomParadropCell = CPos.New(x, y) + local lz = Map.CenterOfCell(randomParadropCell) + + local powerproxy = Actor.Create("powerproxy.paratroopers", false, { Owner = soviets }) + powerproxy.SendParatroopers(lz) + powerproxy.Destroy() + + Trigger.AfterDelay(sovietParadropTicks, SendSovietParadrop) +end + +IdleHunt = function(unit) + Trigger.OnIdle(unit, unit.Hunt) +end + +ManageSovietUnits = function() + Utils.Do(SovietRallyPoints, function(rallyPoint) + local radius = WDist.FromCells(8) + local units = Map.ActorsInCircle(rallyPoint.CenterPosition, radius, function(actor) + return actor.Owner == soviets and actor.HasProperty("Hunt") + end) + + if #units > SovietGroupSize then + Utils.Do(units, IdleHunt) + end + end) + + local scatteredUnits = Utils.Where(soviets.GetGroundAttackers(), function(unit) + return not Map.IsNamedActor(unit) and unit.IsIdle and unit.HasProperty("Hunt") + end) + Utils.Do(scatteredUnits, IdleHunt) +end + +AircraftTargets = function() + local targets = Utils.Where(Map.ActorsInWorld, function(a) + return (a.Owner == allies1 or a.Owner == allies2) and a.HasProperty("Health") + end) + + -- prefer mobile units + table.sort(targets, function(a, b) return a.HasProperty("Move") and not b.HasProperty("Move") end) + + return targets +end + +YakAttack = function(yak, target) + if not target or target.IsDead or (not target.IsInWorld) then + local targets = AircraftTargets() + if #targets > 0 then + target = Utils.Random(targets) + else + yak.Wait(DateTime.Seconds(5)) + end + end + + if target and yak.AmmoCount() > 0 then + yak.Attack(target) + else + yak.ReturnToBase() -- includes yak.Resupply() + end + + yak.CallFunc(function() + YakAttack(yak, target) + end) +end + +ManageSovietAircraft = function() + if allies1.IsObjectiveCompleted(destroyAirbases) then + return + end + + local maxSovietYaks = MaxSovietYaks[Difficulty] + local sovietYaks = soviets.GetActorsByType('yak') + if #sovietYaks < maxSovietYaks then + soviets.Build(Yak, function(units) + local yak = units[1] + YakAttack(yak) + end) + end +end + +UnitsEvacuated = 0 +EvacuateAlliedUnit = function(unit) + if (unit.Owner == allies1 or unit.Owner == allies2) and unit.HasProperty("Move") then + unit.Stop() + unit.Owner = allies + + if unit.Type == 'mgg' then + Utils.Do(humans, function(player) + if player then + player.MarkCompletedObjective(evacuateMgg) + end + end) + end + + UnitsEvacuated = UnitsEvacuated + 1 + if unit.HasProperty("HasPassengers") then + UnitsEvacuated = UnitsEvacuated + unit.PassengerCount + end + + local exitCell = Map.ClosestEdgeCell(unit.Location) + Trigger.OnIdle(unit, function() + unit.ScriptedMove(exitCell) + end) + + local exit = Map.CenterOfCell(exitCell) + Trigger.OnEnteredProximityTrigger(exit, WDist.FromCells(1), function(a) + a.Destroy() + end) + + UserInterface.SetMissionText(UnitsEvacuated .. "/" .. unitsEvacuatedThreshold .. " units evacuated.", TextColor) + + if UnitsEvacuated >= unitsEvacuatedThreshold then + Utils.Do(humans, function(player) + if player then + player.MarkCompletedObjective(evacuateUnits) + end + end) + end + end +end + +Tick = function() + if DateTime.GameTime % 100 == 0 then + ManageSovietUnits() + ManageSovietAircraft() + + Utils.Do(humans, function(player) + if player and player.HasNoRequiredUnits() then + soviets.MarkCompletedObjective(sovietObjective) + end + end) + end +end + +WorldLoaded = function() + -- NPC + neutral = Player.GetPlayer("Neutral") + allies = Player.GetPlayer("Allies") + soviets = Player.GetPlayer("Soviets") + + -- Player controlled + allies1 = Player.GetPlayer("Allies1") + allies2 = Player.GetPlayer("Allies2") + + humans = { allies1, allies2 } + Utils.Do(humans, function(player) + if player and player.IsLocalPlayer then + Trigger.OnObjectiveAdded(player, function(p, id) + Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective") + end) + + Trigger.OnObjectiveCompleted(player, function(p, id) + Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed") + end) + + Trigger.OnObjectiveFailed(player, function(p, id) + Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed") + end) + + Trigger.OnPlayerWon(player, function() + Media.PlaySpeechNotification(player, "MissionAccomplished") + end) + + Trigger.OnPlayerLost(player, function() + Media.PlaySpeechNotification(player, "MissionFailed") + end) + + TextColor = player.Color + end + end) + + unitsEvacuatedThreshold = UnitsEvacuatedThreshold[Difficulty] + UserInterface.SetMissionText(UnitsEvacuated .. "/" .. unitsEvacuatedThreshold .. " units evacuated.", TextColor) + Utils.Do(humans, function(player) + if player then + evacuateUnits = player.AddPrimaryObjective("Evacuate " .. unitsEvacuatedThreshold .. " units.") + destroyAirbases = player.AddSecondaryObjective("Destroy the nearby Soviet airbases.") + evacuateMgg = player.AddSecondaryObjective("Evacuate at least one mobile gap generator.") + end + end) + + Trigger.OnAllKilledOrCaptured(SovietAirfields, function() + Utils.Do(humans, function(player) + if player then + player.MarkCompletedObjective(destroyAirbases) + end + end) + end) + + sovietObjective = soviets.AddPrimaryObjective("Eradicate all allied troops.") + + if not allies2 or allies1.IsLocalPlayer then + Camera.Position = Allies1EntryPoint.CenterPosition + else + Camera.Position = Allies2EntryPoint.CenterPosition + end + + if not allies2 then + allies1.Cash = 10000 + Media.DisplayMessage("Transferring funds.", "Co-Commander is missing") + end + + SpawnAlliedUnit(MobileConstructionVehicle) + + minAttackAtFrame = MinAttackAtFrame[Difficulty] + attackAtFrame = AttackAtFrame[Difficulty] + Trigger.AfterDelay(attackAtFrame, SpawnSovietUnits) + + sovietParadropTicks = SovietParadropTicks[Difficulty] + Trigger.AfterDelay(sovietParadropTicks, SendSovietParadrop) + + Trigger.OnEnteredFootprint(MountainEntry, EvacuateAlliedUnit) + Trigger.OnEnteredFootprint(BridgeEntry, EvacuateAlliedUnit) +end diff --git a/mods/ra/maps/exodus/map.bin b/mods/ra/maps/exodus/map.bin new file mode 100644 index 0000000000..1889cec6d2 Binary files /dev/null and b/mods/ra/maps/exodus/map.bin differ diff --git a/mods/ra/maps/exodus/map.png b/mods/ra/maps/exodus/map.png new file mode 100644 index 0000000000..29bfd56141 Binary files /dev/null and b/mods/ra/maps/exodus/map.png differ diff --git a/mods/ra/maps/exodus/map.yaml b/mods/ra/maps/exodus/map.yaml new file mode 100644 index 0000000000..dd7d8df3bd --- /dev/null +++ b/mods/ra/maps/exodus/map.yaml @@ -0,0 +1,1429 @@ +MapFormat: 11 + +RequiresMod: ra + +Title: Exodus + +Author: Scott_NZ + +Tileset: SNOW + +MapSize: 192,96 + +Bounds: 16,16,160,64 + +Visibility: MissionSelector, Lobby + +Categories: Mission, Cooperative Mission + +Players: + PlayerReference@Neutral: + Name: Neutral + OwnsWorld: True + NonCombatant: True + Faction: allies + PlayerReference@Allies1: + Name: Allies1 + AllowBots: False + Playable: True + Required: True + LockFaction: True + Faction: allies + LockColor: True + Color: ABB7E4 + LockSpawn: True + LockTeam: True + Allies: Allies2, Allies + Enemies: Soviets + PlayerReference@Allies2: + Name: Allies2 + AllowBots: False + Playable: True + LockFaction: True + Faction: allies + LockColor: True + Color: A1EF8C + LockSpawn: True + LockTeam: True + Allies: Allies1, Allies + Enemies: Soviets + PlayerReference@Allies: + Name: Allies + Faction: allies + Color: 5CC1A3 + Allies: Allies1, Allies2 + Enemies: Soviets + PlayerReference@Soviets: + Name: Soviets + Faction: soviet + Color: FE1100 + Enemies: Allies1, Allies2 + +Actors: + Actor239: dog + Location: 169,60 + Owner: Soviets + Actor12: t08 + Location: 163,57 + Owner: Neutral + Actor14: t14 + Location: 148,59 + Owner: Neutral + Actor25: t07 + Location: 142,77 + Owner: Neutral + Actor29: t07 + Location: 165,78 + Owner: Neutral + Actor21: mine + Location: 169,71 + Owner: Neutral + Actor23: t08 + Location: 124,40 + Owner: Neutral + Actor10: tc04 + Location: 43,67 + Owner: Neutral + Actor28: t02 + Location: 151,51 + Owner: Neutral + Actor34: t17 + Location: 148,52 + Owner: Neutral + Actor36: tc04 + Location: 172,46 + Owner: Neutral + Actor37: t02 + Location: 169,46 + Owner: Neutral + Actor39: t02 + Location: 148,45 + Owner: Neutral + Actor42: t10 + Location: 151,47 + Owner: Neutral + Actor9: tc04 + Location: 33,41 + Owner: Neutral + Actor52: t05 + Location: 163,47 + Owner: Neutral + Actor53: tc03 + Location: 138,53 + Owner: Neutral + SovietAirfield5: afld + Location: 62,47 + Owner: Soviets + Actor57: tc04 + Location: 43,19 + Owner: Neutral + Actor58: tc04 + Location: 56,18 + Owner: Neutral + Actor59: tc04 + Location: 69,28 + Owner: Neutral + Actor60: tc05 + Location: 63,19 + Owner: Neutral + Actor61: tc05 + Location: 48,19 + Owner: Neutral + Actor62: tc05 + Location: 37,18 + Owner: Neutral + Actor63: tc05 + Location: 78,14 + Owner: Neutral + Actor64: tc03 + Location: 70,19 + Owner: Neutral + Actor65: tc03 + Location: 55,26 + Owner: Neutral + Actor66: tc03 + Location: 45,24 + Owner: Neutral + Actor67: tc03 + Location: 38,23 + Owner: Neutral + Actor68: tc02 + Location: 39,21 + Owner: Neutral + Actor69: tc02 + Location: 42,16 + Owner: Neutral + Actor70: tc02 + Location: 50,16 + Owner: Neutral + Actor71: tc02 + Location: 51,22 + Owner: Neutral + Actor72: tc02 + Location: 64,29 + Owner: Neutral + Actor73: tc02 + Location: 67,24 + Owner: Neutral + Actor74: tc02 + Location: 74,17 + Owner: Neutral + Actor75: tc01 + Location: 61,16 + Owner: Neutral + Actor76: tc01 + Location: 57,22 + Owner: Neutral + Actor77: tc01 + Location: 48,23 + Owner: Neutral + Actor78: tc01 + Location: 38,26 + Owner: Neutral + Actor79: t05 + Location: 38,20 + Owner: Neutral + Actor80: t05 + Location: 42,17 + Owner: Neutral + Actor81: t05 + Location: 47,20 + Owner: Neutral + Actor82: t05 + Location: 53,25 + Owner: Neutral + Actor83: t05 + Location: 57,16 + Owner: Neutral + Actor84: t05 + Location: 56,22 + Owner: Neutral + Actor85: t05 + Location: 64,27 + Owner: Neutral + Actor86: t05 + Location: 70,22 + Owner: Neutral + Actor87: t05 + Location: 68,15 + Owner: Neutral + Actor88: t05 + Location: 81,18 + Owner: Neutral + Actor89: t16 + Location: 79,18 + Owner: Neutral + Actor90: t16 + Location: 68,16 + Owner: Neutral + Actor91: t16 + Location: 67,22 + Owner: Neutral + Actor92: t16 + Location: 53,16 + Owner: Neutral + Actor93: t16 + Location: 51,23 + Owner: Neutral + Actor94: t16 + Location: 47,16 + Owner: Neutral + Actor95: t16 + Location: 42,27 + Owner: Neutral + Actor96: t16 + Location: 38,16 + Owner: Neutral + Actor97: t16 + Location: 34,20 + Owner: Neutral + Actor98: t02 + Location: 54,19 + Owner: Neutral + Actor99: t02 + Location: 64,24 + Owner: Neutral + Actor100: t02 + Location: 48,26 + Owner: Neutral + Actor101: t02 + Location: 42,18 + Owner: Neutral + Actor102: t02 + Location: 37,16 + Owner: Neutral + Actor103: t06 + Location: 42,24 + Owner: Neutral + Actor104: t06 + Location: 45,21 + Owner: Neutral + Actor105: t06 + Location: 58,16 + Owner: Neutral + Actor106: t06 + Location: 59,28 + Owner: Neutral + Actor107: t06 + Location: 63,24 + Owner: Neutral + Actor108: t06 + Location: 67,29 + Owner: Neutral + Actor109: t10 + Location: 66,17 + Owner: Neutral + Actor110: t10 + Location: 65,28 + Owner: Neutral + Actor111: t10 + Location: 54,22 + Owner: Neutral + Actor112: t11 + Location: 40,23 + Owner: Neutral + Actor113: t11 + Location: 52,26 + Owner: Neutral + Actor114: t11 + Location: 69,20 + Owner: Neutral + Actor115: t12 + Location: 68,30 + Owner: Neutral + Actor116: t12 + Location: 60,20 + Owner: Neutral + Actor117: t17 + Location: 44,17 + Owner: Neutral + Actor118: t17 + Location: 36,19 + Owner: Neutral + Actor119: t08 + Location: 52,20 + Owner: Neutral + Actor120: t08 + Location: 70,27 + Owner: Neutral + Actor121: t08 + Location: 48,16 + Owner: Neutral + Actor123: tc03 + Location: 17,25 + Owner: Neutral + SovietAirfield4: afld + Location: 151,67 + Owner: Soviets + Actor127: t05 + Location: 17,21 + Owner: Neutral + Actor48: fenc + Location: 29,27 + Owner: Allies + Actor130: t02 + Location: 28,16 + Owner: Neutral + Actor131: t06 + Location: 48,32 + Owner: Neutral + Actor132: t02 + Location: 30,35 + Owner: Neutral + Actor133: t03 + Location: 28,34 + Owner: Neutral + Actor134: t17 + Location: 55,31 + Owner: Neutral + Actor135: t03 + Location: 60,37 + Owner: Neutral + Actor136: t11 + Location: 64,38 + Owner: Neutral + Actor137: t10 + Location: 65,33 + Owner: Neutral + Actor140: tc05 + Location: 163,42 + Owner: Neutral + Actor51: t01 + Location: 48,62 + Owner: Neutral + Actor142: t05 + Location: 175,43 + Owner: Neutral + Actor143: t02 + Location: 173,41 + Owner: Neutral + Actor20: mine + Location: 158,26 + Owner: Neutral + Actor147: t10 + Location: 139,41 + Owner: Neutral + Actor148: t13 + Location: 129,40 + Owner: Neutral + Actor149: t17 + Location: 134,47 + Owner: Neutral + Actor156: t05 + Location: 139,44 + Owner: Neutral + Actor150: t05 + Location: 146,37 + Owner: Neutral + Actor162: t06 + Location: 126,37 + Owner: Neutral + Actor178: t16 + Location: 137,77 + Owner: Neutral + Actor370: tc02 + Location: 25,65 + Owner: Neutral + Actor165: tc03 + Location: 157,77 + Owner: Neutral + Actor181: t13 + Location: 137,71 + Owner: Neutral + Actor182: t16 + Location: 135,57 + Owner: Neutral + Actor184: tc01 + Location: 124,38 + Owner: Neutral + Actor363: t12 + Location: 81,50 + Owner: Neutral + Actor345: t08 + Location: 90,23 + Owner: Neutral + Actor364: t12 + Location: 83,27 + Owner: Neutral + Actor346: t08 + Location: 107,28 + Owner: Neutral + Actor153: apwr + Location: 55,43 + Owner: Soviets + Actor298: t06 + Location: 72,50 + Owner: Neutral + Actor30: t01 + Location: 173,61 + Owner: Neutral + Actor224: ftur + Location: 66,60 + Owner: Soviets + Actor203: t16 + Location: 54,41 + Owner: Neutral + Actor338: tc04 + Location: 28,76 + Owner: Neutral + Actor1: tc02 + Location: 95,73 + Owner: Neutral + Actor333: t07 + Location: 133,36 + Owner: Neutral + Actor238: t01 + Location: 111,60 + Owner: Neutral + Actor283: t05 + Location: 102,59 + Owner: Neutral + SovietAirfield6: afld + Location: 62,53 + Owner: Soviets + Actor284: t05 + Location: 82,70 + Owner: Neutral + Actor369: tc02 + Location: 30,60 + Owner: Neutral + Actor289: t05 + Location: 71,33 + Owner: Neutral + Actor157: tc05 + Location: 23,39 + Owner: Neutral + Actor226: tc01 + Location: 98,24 + Owner: Neutral + Actor194: tc05 + Location: 103,62 + Owner: Neutral + Actor371: tc02 + Location: 37,77 + Owner: Neutral + Actor367: tc03 + Location: 35,71 + Owner: Neutral + Actor236: ftur + Location: 62,61 + Owner: Soviets + Actor302: t06 + Location: 71,73 + Owner: Neutral + Actor329: t07 + Location: 97,28 + Owner: Neutral + Actor331: t07 + Location: 124,48 + Owner: Neutral + Actor296: t05 + Location: 63,63 + Owner: Neutral + Actor155: tc04 + Location: 18,37 + Owner: Neutral + Actor279: t03 + Location: 72,32 + Owner: Neutral + Actor274: t03 + Location: 71,78 + Owner: Neutral + Actor280: t03 + Location: 121,19 + Owner: Neutral + Actor315: t06 + Location: 88,17 + Owner: Neutral + Actor312: t06 + Location: 110,24 + Owner: Neutral + Actor314: t06 + Location: 125,20 + Owner: Neutral + Actor307: t06 + Location: 119,50 + Owner: Neutral + Actor310: t06 + Location: 80,41 + Owner: Neutral + Actor323: t07 + Location: 113,76 + Owner: Neutral + Actor322: t07 + Location: 112,65 + Owner: Neutral + Actor246: t06 + Location: 94,64 + Owner: Neutral + Actor303: t06 + Location: 101,69 + Owner: Neutral + Actor234: t01 + Location: 79,77 + Owner: Neutral + Actor354: t11 + Location: 73,71 + Owner: Neutral + Actor212: barr + Location: 69,57 + Owner: Soviets + Actor365: tc04 + Location: 18,56 + Owner: Neutral + Actor196: t06 + Location: 129,52 + Owner: Neutral + Actor356: t11 + Location: 119,43 + Owner: Neutral + Actor360: t11 + Location: 122,76 + Owner: Neutral + Actor187: tc04 + Location: 99,27 + Owner: Neutral + Actor186: tc04 + Location: 79,34 + Owner: Neutral + Actor179: tc05 + Location: 59,43 + Owner: Neutral + Actor350: t10 + Location: 87,22 + Owner: Neutral + Actor17: proc + Location: 168,62 + Owner: Soviets + Actor291: t05 + Location: 91,33 + Owner: Neutral + Actor254: t02 + Location: 72,63 + Owner: Neutral + Actor43: t05 + Location: 58,62 + Owner: Neutral + Actor257: t02 + Location: 119,53 + Owner: Neutral + Actor8: e1 + Location: 26,46 + Owner: Allies + Actor264: t02 + Location: 127,17 + Owner: Neutral + Actor269: t03 + Location: 84,37 + Owner: Neutral + Actor271: t03 + Location: 79,57 + Owner: Neutral + SovietEntryPoint4: waypoint + Location: 115,16 + Owner: Neutral + Actor278: t03 + Location: 122,33 + Owner: Neutral + Actor221: tc01 + Location: 113,73 + Owner: Neutral + Actor215: t05 + Location: 72,40 + Owner: Neutral + Actor267: t02 + Location: 123,62 + Owner: Neutral + Actor253: t02 + Location: 118,77 + Owner: Neutral + Actor220: tc01 + Location: 117,40 + Owner: Neutral + Actor158: tc01 + Location: 23,35 + Owner: Neutral + Actor160: t06 + Location: 21,40 + Owner: Neutral + Actor164: t16 + Location: 18,41 + Owner: Neutral + Actor163: t05 + Location: 20,35 + Owner: Neutral + Actor211: tc02 + Location: 75,74 + Owner: Neutral + Actor174: apwr + Location: 58,45 + Owner: Soviets + Actor214: tc02 + Location: 79,47 + Owner: Neutral + Actor38: t15 + Location: 30,52 + Owner: Neutral + Actor407: t13 + Location: 32,62 + Owner: Neutral + Actor139: t01 + Location: 111,35 + Owner: Neutral + Actor410: t15 + Location: 17,55 + Owner: Neutral + Actor141: t14 + Location: 36,56 + Owner: Neutral + Actor386: t07 + Location: 30,62 + Owner: Neutral + Actor2: tc05 + Location: 153,77 + Owner: Neutral + Actor54: t01 + Location: 56,76 + Owner: Neutral + Actor391: t06 + Location: 25,75 + Owner: Neutral + Actor403: t01 + Location: 34,74 + Owner: Neutral + Actor402: t02 + Location: 21,65 + Owner: Neutral + Actor175: tc01 + Location: 62,44 + Owner: Neutral + Actor375: tc01 + Location: 20,61 + Owner: Neutral + Actor712: t07 + Location: 170,34 + Owner: Neutral + Actor0: mine + Location: 160,27 + Owner: Neutral + Actor385: t07 + Location: 17,58 + Owner: Neutral + Actor401: t02 + Location: 30,74 + Owner: Neutral + Actor400: t05 + Location: 32,69 + Owner: Neutral + Actor382: t16 + Location: 27,60 + Owner: Neutral + Actor374: tc01 + Location: 34,68 + Owner: Neutral + Actor376: tc01 + Location: 16,65 + Owner: Neutral + Actor409: t15 + Location: 24,67 + Owner: Neutral + Actor405: t03 + Location: 24,58 + Owner: Neutral + Actor373: tc01 + Location: 25,68 + Owner: Neutral + Actor406: t13 + Location: 35,72 + Owner: Neutral + Actor55: t01 + Location: 37,37 + Owner: Neutral + Actor760: t03 + Location: 175,27 + Owner: Neutral + Actor399: t05 + Location: 22,68 + Owner: Neutral + Actor408: t14 + Location: 20,59 + Owner: Neutral + Actor390: t07 + Location: 18,72 + Owner: Neutral + Actor767: t10 + Location: 158,15 + Owner: Neutral + Actor381: t16 + Location: 23,65 + Owner: Neutral + Actor775: t02 + Location: 171,15 + Owner: Neutral + Actor392: t06 + Location: 31,70 + Owner: Neutral + Actor366: tc03 + Location: 17,68 + Owner: Neutral + Actor368: tc03 + Location: 25,56 + Owner: Neutral + Actor780: t03 + Location: 79,39 + Owner: Neutral + Actor398: t05 + Location: 32,64 + Owner: Neutral + Actor796: t02 + Location: 154,40 + Owner: Neutral + SovietAirfield3: afld + Location: 154,67 + Owner: Soviets + Actor383: t16 + Location: 22,52 + Owner: Neutral + Actor372: tc02 + Location: 20,77 + Owner: Neutral + SovietEntryPoint5: waypoint + Location: 130,79 + Owner: Neutral + Actor804: t13 + Location: 125,68 + Owner: Neutral + SovietAirfield8: afld + Location: 62,51 + Owner: Soviets + Actor268: t03 + Location: 95,23 + Owner: Neutral + Actor812: tc03 + Location: 133,25 + Owner: Neutral + Actor818: t16 + Location: 138,15 + Owner: Neutral + Actor819: t16 + Location: 139,29 + Owner: Neutral + Actor820: t02 + Location: 147,16 + Owner: Neutral + Actor396: t05 + Location: 27,70 + Owner: Neutral + Actor387: t07 + Location: 22,63 + Owner: Neutral + Actor393: t06 + Location: 25,61 + Owner: Neutral + Actor32: t05 + Location: 42,40 + Owner: Neutral + Actor378: t16 + Location: 26,73 + Owner: Neutral + Actor31: t05 + Location: 53,51 + Owner: Neutral + Actor395: t06 + Location: 35,78 + Owner: Neutral + Actor826: t01 + Location: 136,15 + Owner: Neutral + Actor827: t01 + Location: 142,24 + Owner: Neutral + Actor829: t03 + Location: 146,15 + Owner: Neutral + Actor379: t16 + Location: 37,74 + Owner: Neutral + Actor411: t15 + Location: 31,77 + Owner: Neutral + Actor397: t05 + Location: 21,58 + Owner: Neutral + Actor394: t06 + Location: 18,52 + Owner: Neutral + Actor13: tc02 + Location: 38,61 + Owner: Neutral + Actor27: t05 + Location: 41,55 + Owner: Neutral + Actor377: t16 + Location: 16,78 + Owner: Neutral + Actor380: t16 + Location: 31,66 + Owner: Neutral + Actor845: t14 + Location: 136,21 + Owner: Neutral + Actor16: tc02 + Location: 52,39 + Owner: Neutral + Actor404: t03 + Location: 24,71 + Owner: Neutral + Actor389: t07 + Location: 25,71 + Owner: Neutral + Actor388: t07 + Location: 37,68 + Owner: Neutral + Actor412: t15 + Location: 28,73 + Owner: Neutral + Actor384: t07 + Location: 22,67 + Owner: Neutral + Actor26: t05 + Location: 45,72 + Owner: Neutral + Actor856: t16 + Location: 133,23 + Owner: Neutral + Actor15: tc04 + Location: 144,73 + Owner: Neutral + Actor861: t16 + Location: 128,62 + Owner: Neutral + Actor7: e1 + Location: 27,50 + Owner: Allies + Actor5: gun + Location: 28,51 + Owner: Allies + Actor6: gun + Location: 28,44 + Owner: Allies + Actor47: powr + Location: 3,37 + Owner: Allies + Actor45: 2tnk + Location: 28,28 + Owner: Allies + Actor35: gun + Location: 29,29 + Owner: Allies + Actor24: gun + Location: 25,30 + Owner: Allies + Actor41: e1 + Location: 30,28 + Owner: Allies + Actor4: jeep + Location: 27,45 + Owner: Allies + Actor40: e1 + Location: 24,30 + Owner: Allies + Actor46: powr + Location: 1,37 + Owner: Allies + Actor49: fenc + Location: 28,27 + Owner: Allies + Actor50: fenc + Location: 27,27 + Owner: Allies + Actor122: fenc + Location: 30,27 + Owner: Allies + Actor124: fenc + Location: 31,27 + Owner: Allies + Actor125: fenc + Location: 32,27 + Owner: Allies + Actor126: fenc + Location: 32,25 + Owner: Allies + Actor128: fenc + Location: 32,26 + Owner: Allies + Actor129: fenc + Location: 33,25 + Owner: Allies + Actor145: fenc + Location: 34,25 + Owner: Allies + Actor146: fenc + Location: 35,25 + Owner: Allies + Allies1MovePoint: waypoint + Location: 149,24 + Owner: Neutral + Allies1EntryPoint: waypoint + Location: 149,16 + Owner: Neutral + Allies2EntryPoint: waypoint + Location: 175,38 + Owner: Neutral + Actor255: ftur + Location: 68,45 + Owner: Soviets + SovietEntryPoint3: waypoint + Location: 105,79 + Owner: Neutral + SovietEntryPoint2: waypoint + Location: 93,16 + Owner: Neutral + SovietEntryPoint1: waypoint + Location: 89,79 + Owner: Neutral + SovietRallyPoint2: waypoint + Location: 93,20 + Owner: Neutral + SovietRallyPoint1: waypoint + Location: 89,75 + Owner: Neutral + SovietRallyPoint3: waypoint + Location: 105,75 + Owner: Neutral + SovietRallyPoint4: waypoint + Location: 115,20 + Owner: Neutral + SovietRallyPoint5: waypoint + Location: 130,75 + Owner: Neutral + Actor152: brl3 + Location: 157,66 + Owner: Soviets + Actor151: barl + Location: 159,58 + Owner: Soviets + Actor138: brl3 + Location: 154,58 + Owner: Soviets + Actor144: brl3 + Location: 159,59 + Owner: Soviets + Actor19: oilb + Location: 154,59 + Owner: Soviets + Actor22: oilb + Location: 157,57 + Owner: Soviets + Actor154: oilb + Location: 169,18 + Owner: Neutral + Actor159: oilb + Location: 172,22 + Owner: Neutral + Actor166: brl3 + Location: 171,18 + Owner: Neutral + Actor167: barl + Location: 173,24 + Owner: Neutral + Actor168: powr + Location: 1,34 + Owner: Allies + Actor183: powr + Location: 3,34 + Owner: Allies + Actor185: apwr + Location: 154,72 + Owner: Soviets + Actor190: ftur + Location: 160,53 + Owner: Soviets + Actor227: e3 + Location: 157,54 + Owner: Soviets + Actor225: e3 + Location: 148,68 + Owner: Soviets + Actor223: e1 + Location: 163,55 + Owner: Soviets + Actor209: fenc + Location: 156,52 + Owner: Soviets + Actor200: e1 + Location: 171,61 + Owner: Soviets + Actor201: e2 + Location: 165,64 + Owner: Soviets + Actor222: e2 + Location: 154,53 + Owner: Soviets + Actor216: fenc + Location: 154,52 + Owner: Soviets + Actor217: fenc + Location: 153,52 + Owner: Soviets + Actor219: fenc + Location: 152,52 + Owner: Soviets + Actor210: fenc + Location: 155,52 + Owner: Soviets + Actor188: brl3 + Location: 160,54 + Owner: Soviets + Actor189: ftur + Location: 147,64 + Owner: Soviets + Actor191: barl + Location: 160,55 + Owner: Soviets + SovietAirfield1: afld + Location: 151,69 + Owner: Soviets + SovietAirfield2: afld + Location: 154,69 + Owner: Soviets + Actor228: e3 + Location: 158,66 + Owner: Soviets + Actor241: barl + Location: 157,67 + Owner: Soviets + Actor242: barr + Location: 159,61 + Owner: Soviets + Actor56: tc01 + Location: 145,71 + Owner: Neutral + Actor237: dog + Location: 151,62 + Owner: Soviets + Actor11: e1 + Location: 149,64 + Owner: Soviets + Actor192: fenc + Location: 147,65 + Owner: Soviets + Actor244: e1 + Location: 160,60 + Owner: Soviets + Actor206: fenc + Location: 158,53 + Owner: Soviets + Actor18: apwr + Location: 149,72 + Owner: Soviets + Actor230: 3tnk + Location: 157,60 + Owner: Soviets + Actor231: kenn + Location: 162,59 + Owner: Soviets + Actor235: waypoint + Location: 147,51 + Owner: Neutral + Actor205: fenc + Location: 159,53 + Owner: Soviets + Actor207: fenc + Location: 158,52 + Owner: Soviets + Actor208: fenc + Location: 157,52 + Owner: Soviets + Actor204: fenc + Location: 147,70 + Owner: Soviets + Actor193: fenc + Location: 147,66 + Owner: Soviets + Actor195: fenc + Location: 147,67 + Owner: Soviets + Actor197: fenc + Location: 146,67 + Owner: Soviets + Actor199: fenc + Location: 146,69 + Owner: Soviets + Actor198: fenc + Location: 146,68 + Owner: Soviets + Actor202: fenc + Location: 147,69 + Owner: Soviets + Actor292: e2 + Location: 165,59 + Owner: Soviets + Actor232: t01 + Location: 72,43 + Owner: Neutral + Actor176: tc05 + Location: 69,46 + Owner: Neutral + Actor170: mine + Location: 114,55 + Owner: Neutral + Actor169: mine + Location: 113,57 + Owner: Neutral + Allies2MovePoint: waypoint + Location: 167,38 + Owner: Neutral + Actor3: silo + Location: 172,59 + Owner: Soviets + Actor33: fact + Location: 162,67 + Owner: Soviets + SovietEntryPoint6: waypoint + Location: 53,79 + Owner: Neutral + SovietRallyPoint6: waypoint + Location: 53,75 + Owner: Neutral + Actor171: mine + Location: 168,73 + Owner: Neutral + Actor248: ftur + Location: 64,44 + Owner: Soviets + SovietAirfield7: afld + Location: 62,49 + Owner: Soviets + Actor256: ftur + Location: 74,57 + Owner: Soviets + Actor273: brik + Location: 72,61 + Owner: Soviets + Actor44: t11 + Location: 57,54 + Owner: Neutral + Actor249: t11 + Location: 98,58 + Owner: Neutral + Actor245: tc05 + Location: 106,43 + Owner: Neutral + Actor233: ftur + Location: 75,54 + Owner: Soviets + Actor287: brik + Location: 72,60 + Owner: Soviets + Actor258: brik + Location: 71,61 + Owner: Soviets + Actor293: brik + Location: 70,61 + Owner: Soviets + Actor177: tc04 + Location: 59,50 + Owner: Neutral + Actor294: brik + Location: 72,59 + Owner: Soviets + Actor213: tsla + Location: 71,59 + Owner: Soviets + Actor295: brik + Location: 73,59 + Owner: Soviets + Actor180: v01 + Location: 100,29 + Owner: Neutral + Actor218: v03 + Location: 90,30 + Owner: Neutral + Actor243: v02 + Location: 95,30 + Owner: Neutral + Actor247: v04 + Location: 102,30 + Owner: Neutral + Actor250: v07 + Location: 104,33 + Owner: Neutral + Actor252: v13 + Location: 101,33 + Owner: Neutral + Actor251: truk + Location: 105,30 + Owner: Neutral + Actor259: v18 + Location: 105,28 + Owner: Neutral + Actor260: v09 + Location: 110,30 + Owner: Neutral + Actor261: v08 + Location: 109,33 + Owner: Neutral + Actor262: v17 + Location: 104,28 + Owner: Neutral + Actor263: e1 + Location: 108,34 + Owner: Soviets + Actor265: e1 + Location: 97,30 + Owner: Soviets + Actor266: e1 + Location: 92,34 + Owner: Soviets + Actor270: e2 + Location: 102,33 + Owner: Soviets + Actor272: e3 + Location: 94,30 + Owner: Soviets + Actor275: e3 + Location: 100,31 + Owner: Soviets + Actor276: 3tnk + Location: 107,30 + Owner: Soviets + Actor277: dome + Location: 165,56 + Owner: Soviets + Actor281: ftur + Location: 166,51 + Owner: Soviets + Actor282: ftur + Location: 147,58 + Owner: Soviets + Actor286: t12 + Location: 154,65 + Owner: Neutral + Actor285: t05 + Location: 148,76 + Owner: Neutral + Actor288: tc02 + Location: 168,51 + Owner: Neutral + Actor240: mine + Location: 159,27 + Owner: Neutral + Actor290: mine + Location: 159,26 + Owner: Neutral + Actor297: brik + Location: 69,61 + Owner: Soviets + Actor299: brik + Location: 73,58 + Owner: Soviets + Actor300: brik + Location: 69,60 + Owner: Soviets + Actor301: brik + Location: 68,60 + Owner: Soviets + Actor304: e1 + Location: 63,59 + Owner: Soviets + Actor305: e1 + Location: 71,56 + Owner: Soviets + Actor306: e1 + Location: 66,46 + Owner: Soviets + Actor308: e2 + Location: 63,57 + Owner: Soviets + Actor309: e2 + Location: 69,51 + Owner: Soviets + Actor311: e1 + Location: 68,58 + Owner: Soviets + Actor313: e1 + Location: 63,46 + Owner: Soviets + Actor316: oilb + Location: 91,50 + Owner: Soviets + Actor317: oilb + Location: 91,53 + Owner: Soviets + Actor318: oilb + Location: 94,50 + Owner: Soviets + Actor319: oilb + Location: 94,53 + Owner: Soviets + Actor320: sbag + Location: 91,56 + Owner: Soviets + Actor321: sbag + Location: 93,56 + Owner: Soviets + Actor324: sbag + Location: 94,56 + Owner: Soviets + Actor325: sbag + Location: 95,56 + Owner: Soviets + Actor326: sbag + Location: 96,56 + Owner: Soviets + Actor327: sbag + Location: 92,56 + Owner: Soviets + Actor328: sbag + Location: 97,56 + Owner: Soviets + Actor330: sbag + Location: 97,55 + Owner: Soviets + Actor332: sbag + Location: 97,54 + Owner: Soviets + Actor334: sbag + Location: 97,53 + Owner: Soviets + Actor335: sbag + Location: 97,52 + Owner: Soviets + Actor336: sbag + Location: 97,51 + Owner: Soviets + Actor337: sbag + Location: 97,50 + Owner: Soviets + Actor339: e1 + Location: 96,49 + Owner: Soviets + Actor340: e1 + Location: 93,47 + Owner: Soviets + Actor341: e1 + Location: 89,56 + Owner: Soviets + Actor342: e2 + Location: 88,55 + Owner: Soviets + Actor343: apc + Location: 91,48 + Owner: Soviets + Actor344: 3tnk + Location: 67,52 + Owner: Soviets + Actor161: brl3 + Location: 93,50 + Owner: Soviets + Actor172: barl + Location: 90,55 + Owner: Soviets + ParadropBoxBottomRight: waypoint + Location: 170,72 + Owner: Neutral + ParadropBoxTopLeft: waypoint + Location: 78,27 + Owner: Neutral + MountainEntry1: waypoint + Location: 25,44 + Owner: Neutral + MountainEntry2: waypoint + Owner: Neutral + Location: 25,45 + MountainEntry3: waypoint + Owner: Neutral + Location: 25,46 + MountainEntry4: waypoint + Owner: Neutral + Location: 25,47 + MountainEntry5: waypoint + Owner: Neutral + Location: 25,48 + MountainEntry6: waypoint + Owner: Neutral + Location: 25,49 + MountainEntry7: waypoint + Location: 25,50 + Owner: Neutral + MountainEntry8: waypoint + Owner: Neutral + Location: 25,51 + BridgeEntry1: waypoint + Owner: Neutral + Location: 28,29 + BridgeEntry2: waypoint + Owner: Neutral + Location: 27,29 + BridgeEntry3: waypoint + Owner: Neutral + Location: 26,29 + BridgeEntry4: waypoint + Owner: Neutral + Location: 25,29 + SovietIntel: camera.large + Owner: Soviets + Location: 130, 45 + +Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, rules.yaml diff --git a/mods/ra/maps/exodus/rules.yaml b/mods/ra/maps/exodus/rules.yaml new file mode 100644 index 0000000000..1522bfbbad --- /dev/null +++ b/mods/ra/maps/exodus/rules.yaml @@ -0,0 +1,184 @@ +Player: + PlayerResources: + DefaultCash: 5000 + +World: + MissionData: + Briefing: The Allies are now being flanked from both sides. Evacuate before the remaining Allied forces in the area are wiped out. Einstein has recently developed a technology which allows us to obscure units from the enemy. Pull out at least one prototype mobile gap generator intact. + LuaScript: + Scripts: exodus.lua + ScriptLobbyDropdown@difficulty: + ID: difficulty + Label: Difficulty + Values: + easy: Easy + normal: Normal + hard: Hard + Default: normal + +powerproxy.paratroopers: + ParatroopersPower: + DropItems: E1,E1,E3,E3,E4 + +HBOX: + Buildable: + Prerequisites: ~disabled + EditorOnlyTooltip: + Description: invalid targets for YakAttack + +E7: + Buildable: + Prerequisites: ~disabled + +TRAN: + Buildable: + Prerequisites: ~disabled + +BARR: + Buildable: + Prerequisites: ~disabled + +MIG: + Buildable: + Prerequisites: ~disabled + +HELI: + Buildable: + Prerequisites: ~disabled + +HIND: + Buildable: + Prerequisites: ~disabled + +SS: + Buildable: + Prerequisites: ~disabled + +ARTY: + Buildable: + Prerequisites: ~disabled + +AGUN: + Buildable: + Prerequisites: ~disabled + +MSUB: + Buildable: + Prerequisites: ~disabled + +DD: + Buildable: + Prerequisites: ~disabled + +CA: + Buildable: + Prerequisites: ~disabled + +PT: + Buildable: + Prerequisites: ~disabled + +MSLO: + Buildable: + Prerequisites: ~disabled + +SPEN: + Buildable: + Prerequisites: ~disabled + +SYRD: + Buildable: + Prerequisites: ~disabled + +IRON: + Buildable: + Prerequisites: ~disabled + +PDOX: + Buildable: + Prerequisites: ~disabled + +TSLA: + Buildable: + Prerequisites: ~disabled + +FTUR: + Buildable: + Prerequisites: ~disabled + +SAM: + Buildable: + Prerequisites: ~disabled + +HPAD: + Buildable: + Prerequisites: ~disabled + +AFLD: + Buildable: + Prerequisites: ~disabled + +ATEK: + Buildable: + Prerequisites: ~disabled + +STEK: + Buildable: + Prerequisites: ~disabled + +4TNK: + Buildable: + Prerequisites: ~disabled + +MCV: + Buildable: + Prerequisites: ~disabled + +APC: + Buildable: + Prerequisites: ~disabled + +MNLY.AP: + Buildable: + Prerequisites: ~disabled + +MNLY.AT: + Buildable: + Prerequisites: ~disabled + +TRUK: + Buildable: + Prerequisites: ~disabled + +TTNK: + Buildable: + Prerequisites: ~disabled + +FTRK: + Buildable: + Prerequisites: ~disabled + +CTNK: + Buildable: + Prerequisites: ~disabled + +MRJ: + Buildable: + Prerequisites: ~disabled + +MGG: + Buildable: + Prerequisites: ~disabled + CreatesShroud: + Range: 6c0 + +GAP: + Buildable: + Prerequisites: ~disabled + +CAMERA.Large: + Inherits: CAMERA + RevealsShroud: + Range: 49c0 + EditorOnlyTooltip: + Description: required for YakAttack to work