diff --git a/mods/ra/languages/lua/en.ftl b/mods/ra/languages/lua/en.ftl index f08f93d62d..add58940c4 100644 --- a/mods/ra/languages/lua/en.ftl +++ b/mods/ra/languages/lua/en.ftl @@ -102,6 +102,13 @@ deactivate-four-missiles = Commander, we're tracking four missiles. They must be capture-enemy-command-center = Capture the enemy Command Center. Hurry! disable-atomic-weapons = Find a way to take the atomic weapons off-line. +## allies-10b +nuclear-missile-deactivated = Nuclear missile deactivated. +reach-target-in = Nuclear missiles reach targets in { $time } +get-engineers-to-consoles = Get your engineers to each launch control center. +spare-the-scientists = Spare the scientists. They are more valuable as + prisoners of war. + ## ant-01 allied-forces-have-arrived = Allied forces have arrived! defend-outpost-until-reinforcements-arrive = Defend outpost until reinforcements arrive. diff --git a/mods/ra/maps/allies-10b/allies10b.lua b/mods/ra/maps/allies-10b/allies10b.lua new file mode 100644 index 0000000000..c6e8ca93ef --- /dev/null +++ b/mods/ra/maps/allies-10b/allies10b.lua @@ -0,0 +1,327 @@ +--[[ + Copyright (c) The OpenRA Developers and Contributors + 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. +]] +Engineers = { Engi1, Engi2, Engi3 } +TopLeftConsole = { CPos.New(49, 38), CPos.New(50, 38) } +BottomLeftConsole = { CPos.New(48, 93) } +TopRightConsole = { CPos.New(75, 40), CPos.New(76, 40) } +MiddleRightConsole = { CPos.New(81, 72), CPos.New(82, 72) } +TanyaFootprint = { CPos.New(71, 98), CPos.New(72, 98), CPos.New(73, 98), CPos.New(74, 98), CPos.New(87, 101), CPos.New(88, 101) } +GrenTeamFootprint = { CPos.New(53, 69), CPos.New(54, 69), CPos.New(55, 69) } +FlamerTeamFootprint = { CPos.New(74, 61), CPos.New(75, 61), CPos.New(76, 61) } +TimerTicks = DateTime.Minutes(26) +Scientists = { Scientist1, Scientist2, Scientist3, Scientist4, Scientist5, Scientist6, Scientist7, Scientist8, Scientist9, Scientist10 } +StartingRifles = { StartRifle1, StartRifle2, StartRifle3, StartRifle4, StartRifle5 } +AssaultTeamA = { AssaultTeamA1, AssaultTeamA2, AssaultTeamA3 } +AssaultTeamB = { AssaultTeamB1, AssaultTeamB2, AssaultTeamB3 } +AssaultTeamC = { AssaultTeamC1, AssaultTeamC2, AssaultTeamC3 } +PatrolSupport = { PatrolSupport1, PatrolSupport2, PatrolSupport3, PatrolSupport4, PatrolSupport5, PatrolSupport6 } +BarrelSquad = { BarrelSquad1, BarrelSquad2, BarrelSquad3, BarrelSquad4, BarrelSquad5 } +ScientistConsoles = { NWSilo1.Location, NWSilo2.Location, NESilo1.Location, NESilo2.Location, SESilo1.Location, SESilo2.Location, SWSilo1.Location, SWSilo2.Location } +ExplosionCheckTeam = { CheckTeam1, CheckTeam2, CheckTeam3, CheckTeam4, CheckTeam5 } + +OpeningMoves = function() + Utils.Do(StartingRifles, function(a) + a.AttackMove(DefaultCameraPosition.Location) + end) + + Utils.Do(Scientists, ScientistPatrol) + GroupPatrol(PatrolA, PatrolAPath, DateTime.Seconds(5)) + GroupPatrol(PatrolB, PatrolBPath, DateTime.Seconds(5)) + + Trigger.OnKilled(StartRifle1, function() + Utils.Do(AssaultTeamA, function(a) + IdleHunt(a) + end) + end) + Trigger.OnKilled(StartRifle2, function() + Utils.Do(AssaultTeamB, function(b) + IdleHunt(b) + end) + end) + Trigger.OnKilled(StartRifle3, function() + Utils.Do(AssaultTeamC, function(c) + IdleHunt(c) + end) + end) +end + +ScientistPatrol = function(scientist) + Trigger.OnIdle(scientist, function(sci) + sci.Move(Utils.Random(ScientistConsoles)) + end) +end + +PatrolA = { PatrolA1, PatrolA2, PatrolA3, PatrolA4 } +PatrolB = { PatrolB1, PatrolB2, PatrolB3, PatrolB4 } +PatrolAPath = { PatrolARally1.Location, PatrolARally2.Location, PatrolARally3.Location, PatrolARally4.Location } +PatrolBPath = { PatrolBRally1.Location, PatrolBRally2.Location, PatrolBRally3.Location, PatrolBRally4.Location } + +GroupPatrol = function(units, waypoints, delay) + local i = 1 + local stop = false + + Utils.Do(units, function(unit) + Trigger.OnIdle(unit, function() + if stop then + return + end + + if unit.Location == waypoints[i] then + local bool = Utils.All(units, function(actor) return actor.IsIdle end) + + if bool then + stop = true + + i = i + 1 + if i > #waypoints then + i = 1 + end + + Trigger.AfterDelay(delay, function() stop = false end) + end + else + unit.AttackMove(waypoints[i]) + end + end) + end) +end + +MiscTriggers = function() + Trigger.OnAnyKilled(Scientists, function() + Greece.MarkFailedObjective(Paperclip) + end) + + Trigger.OnEnteredProximityTrigger(FlameTowerConsole.CenterPosition, WDist.FromCells(1), function(actor, id) + if actor.Owner == Greece then + Trigger.RemoveProximityTrigger(id) + if not FlameTower.IsDead then + Media.PlaySoundNotification(Greece, "AlertBleep") + Media.DisplayMessage(UserInterface.Translate("flame-turret-deactivated"), UserInterface.Translate("console")) + FlameTower.Kill() + end + end + end) + + Trigger.OnKilled(TankBarrel, function() + if not BarrelTank.IsDead then + BarrelTank.Kill() + end + end) + + Trigger.OnKilled(CheckBarrel, function() + Utils.Do(ExplosionCheckTeam, function(a) + if not a.IsDead then + IdleHunt(a) + end + end) + end) + + Trigger.OnKilled(SquadBarrel, function() + Utils.Do(BarrelSquad, function(b) + if not b.IsDead then + IdleHunt(b) + end + end) + end) + + Trigger.OnAnyKilled(PatrolA, function() + Utils.Do(PatrolSupport, function(sup) + if not sup.IsDead then + IdleHunt(sup) + end + end) + end) + + local grensTriggered + Trigger.OnEnteredFootprint(GrenTeamFootprint, function(actor, id) + if actor.Owner == Greece and not grensTriggered then + Trigger.RemoveFootprintTrigger(id) + grensTriggered = true + + Trigger.AfterDelay(DateTime.Minutes(1), function() + local grens = Reinforcements.Reinforce(USSR, { "e2", "e2", "e2", "e2", "e2" }, { BunkerEntryWest.Location}, 0) + Utils.Do(grens, IdleHunt) + end) + end + end) + + local flamersTriggered + Trigger.OnEnteredFootprint(FlamerTeamFootprint, function(actor, id) + if actor.Owner == Greece and not flamersTriggered then + Trigger.RemoveFootprintTrigger(id) + flamersTriggered = true + + Trigger.AfterDelay(DateTime.Minutes(1), function() + local flamers = Reinforcements.Reinforce(USSR, { "e1", "e1", "e4", "e4", "e4" }, { BunkerEntryEast.Location}, 0) + Utils.Do(flamers, IdleHunt) + end) + end + end) + + local dogsTriggered + Trigger.OnEnteredFootprint(TanyaFootprint, function(actor, id) + if actor.Type == "e7.noautotarget" and not dogsTriggered then + Trigger.RemoveFootprintTrigger(id) + dogsTriggered = true + + local dogs = Reinforcements.Reinforce(USSR, { "dog", "dog", "dog", "dog", "dog" }, { BunkerEntryEast.Location}, 0) + Utils.Do(dogs, IdleHunt) + end + end) +end + +TanyaSequence = function() + local tanyaTriggered + Trigger.OnEnteredFootprint(TanyaFootprint, function(actor, id) + if actor.Owner == Greece and not tanyaTriggered then + Trigger.RemoveFootprintTrigger(id) + tanyaTriggered = true + + IdleHunt(TankRoomDog) + local tankCam = Actor.Create("camera", true, { Owner = Greece, Location = TankRoomCam.Location }) + Media.PlaySoundNotification(Greece, "laugh") + Trigger.AfterDelay(DateTime.Seconds(1), function() + local victim1 = Reinforcements.Reinforce(USSR, { "e2" }, { TanyaEntry.Location, DiePoint1.Location }) + Trigger.OnIdle(victim1[1], function(one) + Media.PlaySound("gun5.aud") + one.Kill("BulletDeath") + end) + end) + Trigger.AfterDelay(DateTime.Seconds(3), function() + local victim2 = Reinforcements.Reinforce(USSR, { "e2" }, { GrenEntry.Location, DiePoint2.Location }) + Trigger.OnIdle(victim2[1], function(two) + two.Kill("BulletDeath") + Media.PlaySound("gun5.aud") + end) + end) + Trigger.AfterDelay(DateTime.Seconds(6), function() + local tanya = Reinforcements.Reinforce(Greece, { "e7.noautotarget" }, { TanyaEntry.Location, TankRoomCam.Location }) + TanyaArrived = true + TanyaSurvive = AddPrimaryObjective(Greece, "tanya-survive") + Media.PlaySoundNotification(Greece, "lefty") + Trigger.OnKilled(tanya[1], function() + Greece.MarkFailedObjective(TanyaSurvive) + end) + end) + Trigger.AfterDelay(DateTime.Minutes(1), function() + tankCam.Destroy() + end) + end + end) +end + +TanyaObjectiveCheck = function() + if TanyaArrived then + Greece.MarkCompletedObjective(TanyaSurvive) + end +end + +DeactivateMissiles = function() + Trigger.OnAllKilled(Engineers, function() + Greece.MarkFailedObjective(StopNukes) + end) + + Trigger.OnEnteredFootprint(TopLeftConsole, function(actor, id) + if actor.Type == "e6" and not TopLeftTriggered then + Trigger.RemoveFootprintTrigger(id) + TopLeftTriggered = true + Media.PlaySpeechNotification(Greece, "ControlCenterDeactivated") + Media.DisplayMessage(UserInterface.Translate("nuclear-missile-deactivated"), UserInterface.Translate("console")) + end + end) + + Trigger.OnEnteredFootprint(BottomLeftConsole, function(actor, id) + if actor.Type == "e6" and not BottomLeftTriggered then + Trigger.RemoveFootprintTrigger(id) + BottomLeftTriggered = true + Media.PlaySpeechNotification(Greece, "ControlCenterDeactivated") + Media.DisplayMessage(UserInterface.Translate("nuclear-missile-deactivated"), UserInterface.Translate("console")) + end + end) + + Trigger.OnEnteredFootprint(TopRightConsole, function(actor, id) + if actor.Type == "e6" and not TopRightTriggered then + Trigger.RemoveFootprintTrigger(id) + TopRightTriggered = true + Media.PlaySpeechNotification(Greece, "ControlCenterDeactivated") + Media.DisplayMessage(UserInterface.Translate("nuclear-missile-deactivated"), UserInterface.Translate("console")) + end + end) + + Trigger.OnEnteredFootprint(MiddleRightConsole, function(actor, id) + if actor.Type == "e6" and not MiddleRightTriggered then + Trigger.RemoveFootprintTrigger(id) + MiddleRightTriggered = true + Media.PlaySpeechNotification(Greece, "ControlCenterDeactivated") + Media.DisplayMessage(UserInterface.Translate("nuclear-missile-deactivated"), UserInterface.Translate("console")) + end + end) +end + +Ticked = TimerTicks +Tick = function() + if Greece.HasNoRequiredUnits() then + Greece.MarkFailedObjective(StopNukes) + end + + if TopLeftTriggered and BottomLeftTriggered and TopRightTriggered and MiddleRightTriggered then + Greece.MarkCompletedObjective(StopNukes) + Greece.MarkCompletedObjective(Paperclip) + TanyaObjectiveCheck() + end + + if Ticked > 0 then + if Ticked % DateTime.Seconds(1) == 0 then + local timer = UserInterface.Translate("reach-target-in", { ["time"] = Utils.FormatTime(Ticked) }) + UserInterface.SetMissionText(timer, USSR.Color) + end + Ticked = Ticked - 1 + elseif Ticked == 0 then + FinishedTimer = UserInterface.Translate("we-are-too-late") + UserInterface.SetMissionText(FinishedTimer, USSR.Color) + Greece.MarkFailedObjective(StopNukes) + end +end + +WorldLoaded = function() + Greece = Player.GetPlayer("Greece") + USSR = Player.GetPlayer("USSR") + BadGuy = Player.GetPlayer("BadGuy") + + InitObjectives(Greece) + + KillGreece = USSR.AddObjective("") + StopNukes = AddPrimaryObjective(Greece, "get-engineers-to-consoles") + Paperclip = AddSecondaryObjective(Greece, "spare-the-scientists") + + Trigger.AfterDelay(DateTime.Minutes(6), function() + Media.PlaySpeechNotification(Greece, "TwentyMinutesRemaining") + end) + Trigger.AfterDelay(DateTime.Minutes(16), function() + Media.PlaySpeechNotification(Greece, "TenMinutesRemaining") + end) + Trigger.AfterDelay(DateTime.Minutes(21), function() + Media.PlaySpeechNotification(Greece, "WarningFiveMinutesRemaining") + end) + Trigger.AfterDelay(DateTime.Minutes(23), function() + Media.PlaySpeechNotification(Greece, "WarningThreeMinutesRemaining") + end) + Trigger.AfterDelay(DateTime.Minutes(25), function() + Media.PlaySpeechNotification(Greece, "WarningOneMinuteRemaining") + end) + + Camera.Position = DefaultCameraPosition.CenterPosition + Spy1.DisguiseAsType("e1", USSR) + Spy2.DisguiseAsType("e1", USSR) + TimerColor = USSR.Color + DeactivateMissiles() + TanyaSequence() + OpeningMoves() + MiscTriggers() +end diff --git a/mods/ra/maps/allies-10b/map.bin b/mods/ra/maps/allies-10b/map.bin new file mode 100644 index 0000000000..010286f053 Binary files /dev/null and b/mods/ra/maps/allies-10b/map.bin differ diff --git a/mods/ra/maps/allies-10b/map.png b/mods/ra/maps/allies-10b/map.png new file mode 100644 index 0000000000..29bfd56141 Binary files /dev/null and b/mods/ra/maps/allies-10b/map.png differ diff --git a/mods/ra/maps/allies-10b/map.yaml b/mods/ra/maps/allies-10b/map.yaml new file mode 100644 index 0000000000..4f3b5409a2 --- /dev/null +++ b/mods/ra/maps/allies-10b/map.yaml @@ -0,0 +1,941 @@ +MapFormat: 11 + +RequiresMod: ra + +Title: 10b: Evidence + +Author: Westwood Studios + +Tileset: INTERIOR + +MapSize: 128,128 + +Bounds: 43,37,47,75 + +Visibility: MissionSelector + +Categories: Campaign + +LockPreview: True + +Players: + PlayerReference@Neutral: + Name: Neutral + OwnsWorld: True + NonCombatant: True + Faction: england + PlayerReference@USSR: + Name: USSR + Faction: soviet + Color: FF1400 + Allies: BadGuy + Enemies: Greece + PlayerReference@Greece: + Name: Greece + AllowBots: False + Playable: True + Required: True + LockFaction: True + Faction: allies + LockColor: True + Color: E2E6F6 + LockSpawn: True + LockTeam: True + Enemies: USSR, BadGuy + PlayerReference@BadGuy: + Name: BadGuy + Faction: soviet + Color: FF1400 + Allies: USSR + +Actors: + Actor0: boxes01 + Location: 59,96 + Owner: Neutral + Actor1: boxes02 + Location: 60,94 + Owner: Neutral + Actor2: boxes03 + Location: 63,95 + Owner: Neutral + Actor3: boxes04 + Location: 64,92 + Owner: Neutral + Actor4: boxes05 + Location: 59,92 + Owner: Neutral + Actor5: boxes08 + Location: 62,93 + Owner: Neutral + Actor6: boxes07 + Location: 61,95 + Owner: Neutral + Actor7: boxes08 + Location: 77,95 + Owner: Neutral + Actor8: boxes09 + Location: 81,97 + Owner: Neutral + Actor9: boxes04 + Location: 80,97 + Owner: Neutral + Actor10: boxes05 + Location: 48,81 + Owner: Neutral + Actor11: boxes06 + Location: 48,80 + Owner: Neutral + Actor12: boxes05 + Location: 47,81 + Owner: Neutral + Actor13: boxes06 + Location: 60,85 + Owner: Neutral + Actor14: boxes06 + Location: 48,64 + Owner: Neutral + Actor15: boxes05 + Location: 49,63 + Owner: Neutral + Actor16: boxes06 + Location: 50,66 + Owner: Neutral + Actor17: boxes07 + Location: 49,65 + Owner: Neutral + Actor18: boxes07 + Location: 49,64 + Owner: Neutral + Actor19: boxes07 + Location: 51,63 + Owner: Neutral + Actor20: boxes07 + Location: 48,66 + Owner: Neutral + Actor21: boxes06 + Location: 48,62 + Owner: Neutral + Actor22: boxes02 + Location: 54,65 + Owner: Neutral + Actor23: boxes01 + Location: 54,66 + Owner: Neutral + Actor24: boxes01 + Location: 52,66 + Owner: Neutral + Actor25: boxes02 + Location: 81,103 + Owner: Neutral + Actor26: boxes01 + Location: 81,104 + Owner: Neutral + Actor27: boxes09 + Location: 62,94 + Owner: Neutral + Actor28: boxes01 + Location: 66,67 + Owner: Neutral + Actor29: boxes02 + Location: 67,66 + Owner: Neutral + Actor30: boxes03 + Location: 68,66 + Owner: Neutral + Actor31: boxes05 + Location: 65,66 + Owner: Neutral + Actor32: boxes06 + Location: 68,67 + Owner: Neutral + Actor33: boxes03 + Location: 88,107 + Owner: Neutral + Actor34: boxes06 + Location: 84,107 + Owner: Neutral + Actor35: boxes07 + Location: 79,110 + Owner: Neutral + Actor36: boxes01 + Location: 81,110 + Owner: Neutral + Actor37: boxes06 + Location: 81,109 + Owner: Neutral + Actor38: boxes09 + Location: 80,110 + Owner: Neutral + Actor39: boxes08 + Location: 77,110 + Owner: Neutral + Actor40: brl3 + Location: 66,101 + Owner: USSR + TankBarrel: brl3 + Location: 64,102 + Owner: USSR + Actor42: brl3 + Location: 59,103 + Owner: USSR + Actor43: brl3 + Location: 65,102 + Owner: USSR + Actor44: barl + Location: 63,101 + Owner: USSR + Actor45: barl + Location: 62,101 + Owner: USSR + Actor46: brl3 + Location: 61,101 + Owner: USSR + Actor47: brl3 + Location: 60,102 + Owner: USSR + Actor48: barl + Location: 59,102 + Owner: USSR + Actor49: brl3 + Location: 62,103 + Owner: USSR + Actor50: barl + Location: 61,102 + Owner: USSR + CheckBarrel: brl3 + Location: 63,102 + Owner: USSR + FlameTower: ftur + Location: 52,52 + Owner: USSR + Actor53: apwr + Location: 44,106 + Owner: USSR + Actor54: apwr + Location: 44,109 + Owner: USSR + Actor55: brl3 + Location: 55,47 + Owner: USSR + Actor56: brl3 + Location: 54,49 + Owner: USSR + Actor57: barl + Location: 53,51 + Owner: USSR + Actor58: barl + Location: 66,102 + Owner: USSR + Actor59: brl3 + Location: 65,104 + Owner: USSR + Actor60: barl + Location: 60,103 + Owner: USSR + SquadBarrel: brl3 + Location: 53,63 + Owner: USSR + Actor62: barl + Location: 54,63 + Owner: USSR + Actor63: brl3 + Location: 54,62 + Owner: USSR + Actor64: barl + Location: 53,62 + Owner: USSR + Actor65: barl + Location: 56,47 + Owner: USSR + Health: 39 + Actor66: brl3 + Location: 53,50 + Owner: USSR + Actor67: brl3 + Location: 54,48 + Owner: USSR + Actor68: barl + Location: 54,47 + Owner: USSR + Actor69: barl + Location: 57,46 + Owner: USSR + Actor70: brl3 + Location: 61,107 + Owner: USSR + Actor71: brl3 + Location: 59,107 + Owner: USSR + Actor72: barl + Location: 60,106 + Owner: USSR + Actor73: barl + Location: 59,106 + Owner: USSR + Actor74: barl + Location: 62,108 + Owner: USSR + Actor75: barl + Location: 63,109 + Owner: USSR + Actor76: barl + Location: 65,109 + Owner: USSR + Actor77: brl3 + Location: 63,107 + Owner: USSR + Actor78: barl + Location: 62,106 + Owner: USSR + Actor79: brl3 + Location: 64,110 + Owner: USSR + Actor80: barl + Location: 67,110 + Owner: USSR + Actor81: barl + Location: 66,110 + Owner: USSR + BarrelTank: 4tnk + Location: 64,104 + Facing: 508 + Owner: BadGuy + Actor83: 4tnk + Location: 64,107 + Owner: BadGuy + Actor84: 4tnk + Location: 70,104 + Facing: 508 + Owner: BadGuy + Actor85: 4tnk + Location: 75,104 + Facing: 508 + Owner: BadGuy + Actor86: 4tnk + Location: 77,104 + Facing: 508 + Owner: BadGuy + Actor87: 4tnk + Location: 77,107 + Owner: BadGuy + Actor88: 4tnk + Location: 79,104 + Facing: 508 + Owner: BadGuy + Actor89: 4tnk + Location: 79,107 + Owner: BadGuy + Actor90: 3tnk + Location: 66,104 + Facing: 508 + Owner: BadGuy + Actor91: 3tnk + Location: 68,104 + Facing: 508 + Owner: BadGuy + Actor92: 3tnk + Location: 68,107 + Owner: BadGuy + Actor93: 3tnk + Location: 66,107 + Owner: BadGuy + Actor94: e1 + Location: 67,74 + Owner: Greece + SubCell: 1 + Actor95: e1 + Location: 67,73 + Owner: Greece + SubCell: 4 + Engi1: e6 + Location: 67,74 + Owner: Greece + SubCell: 4 + Engi2: e6 + Location: 66,74 + Owner: Greece + SubCell: 4 + Engi3: e6 + Location: 67,74 + Owner: Greece + SubCell: 3 + Actor99: e1 + Location: 67,73 + Owner: Greece + SubCell: 2 + Actor100: e1 + Location: 66,73 + Owner: Greece + SubCell: 3 + Actor101: e1 + Location: 66,73 + Owner: Greece + SubCell: 4 + Actor102: e1 + Location: 67,73 + Owner: Greece + SubCell: 3 + Actor103: medi + Location: 66,74 + Owner: Greece + SubCell: 3 + StartRifle2: e1 + Location: 67,69 + Owner: USSR + SubCell: 1 + Facing: 636 + StartRifle1: e1 + Location: 66,69 + Owner: USSR + SubCell: 3 + StartRifle3: e1 + Location: 68,69 + Owner: USSR + SubCell: 3 + Facing: 508 + PatrolA1: e1 + Location: 70,59 + Owner: USSR + SubCell: 0 + Facing: 124 + PatrolA2: e1 + Location: 69,60 + Owner: USSR + SubCell: 2 + Facing: 380 + PatrolA3: e1 + Location: 71,60 + Owner: USSR + SubCell: 1 + Facing: 124 + PatrolA4: dog + Location: 70,60 + Owner: USSR + Facing: 636 + SubCell: 2 + PatrolB1: dog + Location: 73,49 + Owner: USSR + Facing: 252 + SubCell: 1 + PatrolB2: e1 + Location: 73,48 + Owner: USSR + Facing: 636 + SubCell: 1 + PatrolB3: e1 + Location: 73,48 + Owner: USSR + SubCell: 0 + PatrolB4: e1 + Location: 74,48 + Owner: USSR + Facing: 764 + SubCell: 1 + BarrelSquad4: e1 + Location: 66,55 + Owner: USSR + SubCell: 2 + Facing: 508 + PatrolSupport4: e1 + Location: 65,56 + Owner: USSR + SubCell: 0 + Facing: 892 + PatrolSupport6: e1 + Location: 66,57 + Owner: USSR + SubCell: 4 + Facing: 764 + PatrolSupport2: e1 + Location: 65,55 + Owner: USSR + SubCell: 4 + Facing: 508 + PatrolSupport3: e1 + Location: 64,56 + Owner: USSR + SubCell: 4 + Facing: 252 + BarrelSquad3: e1 + Location: 67,55 + Owner: USSR + SubCell: 1 + Facing: 892 + BarrelSquad1: e1 + Location: 65,54 + Owner: USSR + SubCell: 3 + Facing: 764 + PatrolSupport1: e1 + Location: 64,55 + Owner: USSR + SubCell: 4 + Facing: 380 + PatrolSupport5: e1 + Location: 65,57 + Owner: USSR + SubCell: 3 + Facing: 124 + BarrelSquad2: e1 + Location: 66,54 + Owner: USSR + SubCell: 3 + Facing: 892 + Actor125: e1 + Location: 72,100 + Owner: USSR + Facing: 636 + SubCell: 4 + Actor126: e1 + Location: 73,100 + Owner: USSR + Facing: 124 + SubCell: 2 + Actor127: e1 + Location: 82,91 + Owner: USSR + Facing: 380 + SubCell: 0 + CheckTeam2: e1 + Location: 80,92 + Owner: USSR + SubCell: 4 + Facing: 124 + Actor129: e1 + Location: 83,92 + Owner: USSR + Facing: 252 + SubCell: 1 + Actor130: e1 + Location: 83,93 + Owner: USSR + Facing: 508 + SubCell: 1 + CheckTeam3: e1 + Location: 80,93 + Owner: USSR + SubCell: 3 + Facing: 892 + Actor132: e2 + Location: 83,91 + Owner: USSR + Facing: 892 + SubCell: 2 + CheckTeam1: e2 + Location: 80,91 + Owner: USSR + SubCell: 0 + Actor134: e2 + Location: 82,92 + Owner: USSR + Facing: 892 + SubCell: 3 + AssaultTeamA1: e1 + Location: 54,73 + Owner: USSR + SubCell: 0 + Facing: 892 + AssaultTeamA2: e1 + Location: 55,74 + Owner: USSR + SubCell: 1 + Facing: 764 + Actor137: e1 + Location: 61,85 + Owner: USSR + Facing: 764 + SubCell: 4 + Actor138: e1 + Location: 62,86 + Owner: USSR + Facing: 252 + SubCell: 0 + Actor139: e1 + Location: 60,86 + Owner: USSR + Facing: 636 + SubCell: 4 + Actor140: e1 + Location: 61,90 + Owner: USSR + SubCell: 0 + Actor141: e1 + Location: 61,91 + Owner: USSR + SubCell: 1 + Actor142: e1 + Location: 65,94 + Owner: USSR + Facing: 508 + SubCell: 2 + Actor143: e1 + Location: 66,94 + Owner: USSR + Facing: 636 + SubCell: 0 + Actor144: e1 + Location: 66,93 + Owner: USSR + Facing: 764 + SubCell: 0 + Actor145: e1 + Location: 60,90 + Owner: USSR + SubCell: 4 + Scientist1: chan + Location: 83,74 + Owner: BadGuy + SubCell: 1 + Scientist2: chan + Location: 80,73 + Owner: BadGuy + SubCell: 4 + Scientist3: chan + Location: 77,42 + Owner: BadGuy + SubCell: 3 + Scientist4: chan + Location: 74,42 + Owner: BadGuy + SubCell: 2 + Scientist5: chan + Location: 51,41 + Owner: BadGuy + Facing: 380 + SubCell: 1 + Scientist6: chan + Location: 48,40 + Owner: BadGuy + Facing: 892 + SubCell: 2 + Scientist7: chan + Location: 52,94 + Owner: BadGuy + SubCell: 1 + Scientist8: chan + Location: 59,93 + Owner: BadGuy + Facing: 892 + SubCell: 4 + Scientist9: chan + Location: 57,47 + Owner: BadGuy + Facing: 380 + SubCell: 2 + Scientist10: chan + Location: 51,93 + Owner: BadGuy + SubCell: 4 + AssaultTeamB1: e1 + Location: 75,65 + Owner: USSR + SubCell: 1 + Facing: 508 + AssaultTeamB2: e1 + Location: 74,66 + Owner: USSR + SubCell: 0 + Facing: 252 + AssaultTeamB3: e1 + Location: 75,66 + Owner: USSR + SubCell: 2 + Facing: 380 + Actor159: dog + Location: 76,66 + Owner: USSR + Facing: 252 + SubCell: 3 + Actor160: dog + Location: 45,74 + Owner: USSR + Facing: 636 + SubCell: 0 + Actor161: dog + Location: 61,94 + Owner: USSR + Facing: 636 + SubCell: 0 + Actor162: dog + Location: 81,91 + Owner: USSR + Facing: 764 + SubCell: 0 + AssaultTeamC1: e1 + Location: 69,86 + Owner: USSR + SubCell: 4 + Facing: 508 + AssaultTeamC2: e1 + Owner: USSR + SubCell: 3 + Location: 68,87 + Facing: 384 + AssaultTeamC3: e1 + Location: 70,87 + Owner: USSR + SubCell: 3 + Facing: 892 + AssaultTeamA3: e1 + Location: 54,75 + Owner: USSR + SubCell: 2 + Facing: 636 + Actor166: e1 + Location: 54,74 + Owner: USSR + Facing: 508 + SubCell: 1 + Actor167: e1 + Location: 61,78 + Owner: USSR + Facing: 252 + SubCell: 0 + Actor168: e1 + Location: 62,79 + Owner: USSR + Facing: 380 + SubCell: 1 + StartRifle4: e1 + Location: 62,69 + Owner: USSR + SubCell: 0 + Facing: 252 + Actor170: e1 + Location: 71,78 + Owner: USSR + Facing: 252 + SubCell: 3 + Actor171: e1 + Location: 72,78 + Owner: USSR + Facing: 892 + SubCell: 3 + StartRifle5: e1 + Location: 71,69 + Owner: USSR + SubCell: 4 + Facing: 764 + CheckTeam4: e2 + Location: 81,93 + Owner: USSR + SubCell: 4 + Facing: 380 + CheckTeam5: e2 + Location: 83,94 + Owner: USSR + SubCell: 1 + Facing: 636 + Actor175: e2 + Location: 61,93 + Owner: USSR + Facing: 252 + SubCell: 0 + Actor176: e2 + Location: 63,94 + Owner: USSR + Facing: 636 + SubCell: 0 + Actor177: e2 + Location: 46,81 + Owner: USSR + Facing: 380 + SubCell: 1 + Actor178: e2 + Location: 46,79 + Owner: USSR + Facing: 252 + SubCell: 0 + Actor179: e1 + Location: 47,80 + Owner: USSR + Facing: 636 + SubCell: 1 + BarrelSquad5: e2 + Location: 66,56 + Owner: USSR + SubCell: 1 + Spy1: spy + Location: 67,73 + Owner: Greece + SubCell: 1 + Actor182: e1 + Location: 66,73 + Owner: Greece + SubCell: 1 + Actor183: e1 + Location: 66,74 + Owner: Greece + SubCell: 1 + Actor184: e1 + Location: 66,74 + Owner: Greece + SubCell: 2 + Actor185: e1 + Location: 67,74 + Owner: Greece + SubCell: 2 + Spy2: spy + Location: 66,73 + Owner: Greece + SubCell: 2 + Actor187: dog + Location: 83,75 + Owner: USSR + Facing: 508 + SubCell: 2 + Actor188: e1 + Location: 54,64 + Owner: USSR + Facing: 508 + SubCell: 0 + Actor189: e1 + Location: 52,62 + Owner: USSR + Facing: 380 + SubCell: 0 + Actor190: e2 + Location: 52,64 + Owner: USSR + Facing: 380 + SubCell: 2 + Actor191: e2 + Location: 54,61 + Owner: USSR + SubCell: 0 + Facing: 892 + Actor192: e1 + Location: 52,87 + Owner: USSR + Facing: 124 + SubCell: 1 + Actor193: e1 + Location: 53,87 + Owner: USSR + Facing: 508 + SubCell: 3 + TankRoomDog: dog + Location: 72,105 + Owner: USSR + SubCell: 4 + Actor195: dog + Location: 53,53 + Owner: USSR + Facing: 636 + SubCell: 4 + Actor196: c8 + Location: 65,106 + Owner: USSR + Facing: 636 + SubCell: 0 + Actor197: c8 + Location: 69,105 + Owner: USSR + SubCell: 3 + Facing: 252 + Actor198: c8 + Location: 75,106 + Owner: USSR + Facing: 636 + SubCell: 1 + Actor199: c8 + Location: 78,104 + SubCell: 0 + Owner: USSR + Facing: 892 + Actor246: 4tnk + Owner: BadGuy + Location: 75,107 + Facing: 0 + Actor247: 4tnk + Owner: BadGuy + Location: 70,107 + Facing: 0 + DefaultCameraPosition: waypoint + Location: 67,72 + Owner: Neutral + TankRoomCam: waypoint + Location: 72,105 + Owner: Neutral + TanyaEntry: waypoint + Location: 72,111 + Owner: Neutral + SWSilo1: waypoint + Location: 50,95 + Owner: Neutral + SWSilo2: waypoint + Location: 48,93 + Owner: Neutral + NWSilo1: waypoint + Location: 47,39 + Owner: Neutral + NWSilo2: waypoint + Location: 52,39 + Owner: Neutral + NESilo1: waypoint + Location: 74,40 + Owner: Neutral + NESilo2: waypoint + Location: 77,40 + Owner: Neutral + SESilo1: waypoint + Location: 80,72 + Owner: Neutral + SESilo2: waypoint + Location: 83,72 + Owner: Neutral + FlameTowerConsole: waypoint + Location: 58,46 + Owner: Neutral + PatrolARally1: waypoint + Location: 81,60 + Owner: Neutral + PatrolARally2: waypoint + Location: 81,55 + Owner: Neutral + PatrolARally3: waypoint + Location: 70,55 + Owner: Neutral + PatrolARally4: waypoint + Location: 70,60 + Owner: Neutral + PatrolBRally1: waypoint + Location: 73,55 + Owner: Neutral + PatrolBRally2: waypoint + Location: 79,55 + Owner: Neutral + PatrolBRally3: waypoint + Location: 79,48 + Owner: Neutral + PatrolBRally4: waypoint + Location: 73,48 + Owner: Neutral + BarrelRally1: waypoint + Location: 66,56 + Owner: Neutral + BarrelRally2: waypoint + Location: 51,64 + Owner: Neutral + GrenEntry: waypoint + Location: 73,111 + Owner: Neutral + DiePoint1: waypoint + Location: 72,110 + Owner: Neutral + DiePoint2: waypoint + Location: 73,109 + Owner: Neutral + BunkerEntryWest: waypoint + Location: 43,74 + Owner: Neutral + BunkerEntryEast: waypoint + Location: 89,66 + Owner: Neutral + +Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml + +Notifications: notifications.yaml + +Translations: ra|languages/lua/en.ftl diff --git a/mods/ra/maps/allies-10b/notifications.yaml b/mods/ra/maps/allies-10b/notifications.yaml new file mode 100644 index 0000000000..7d5518e14b --- /dev/null +++ b/mods/ra/maps/allies-10b/notifications.yaml @@ -0,0 +1,4 @@ +Sounds: + Notifications: + laugh: laugh1 + lefty: lefty1 diff --git a/mods/ra/maps/allies-10b/rules.yaml b/mods/ra/maps/allies-10b/rules.yaml new file mode 100644 index 0000000000..550e92047d --- /dev/null +++ b/mods/ra/maps/allies-10b/rules.yaml @@ -0,0 +1,20 @@ +World: + LuaScript: + Scripts: allies10b.lua, campaign.lua, utils.lua + MissionData: + StartVideo: elevator.vqa + WinVideo: dud.vqa + LossVideo: trinity.vqa + Briefing: Now that the complex has been infiltrated, the launch control centers must be deactivated. Get your engineers to the control centers and deactivate them before the missiles reach their targets.\n\nEnemy technicians can help in locating the control centers if they are kept alive. + +3TNK: + AutoTarget: + InitialStanceAI: HoldFire + +4TNK: + AutoTarget: + InitialStanceAI: HoldFire + +CHAN: + Targetable: + TargetTypes: GroundActor, Infantry, NoAutoTarget diff --git a/mods/ra/missions.yaml b/mods/ra/missions.yaml index c068f7731e..1c47f2fd93 100644 --- a/mods/ra/missions.yaml +++ b/mods/ra/missions.yaml @@ -14,6 +14,7 @@ Allied Campaign: allies-08b allies-09a allies-10a + allies-10b Soviet Campaign: soviet-01 soviet-02a