diff --git a/mods/ra/maps/allies-07/allies07-AI.lua b/mods/ra/maps/allies-07/allies07-AI.lua new file mode 100644 index 0000000000..8e4f9ebd1d --- /dev/null +++ b/mods/ra/maps/allies-07/allies07-AI.lua @@ -0,0 +1,173 @@ +--[[ + Copyright 2007-2018 The OpenRA Developers (see AUTHORS) + This file is part of OpenRA, which is free software. It is made + available to you under the terms of the GNU General Public License + as published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. For more + information, see COPYING. +]] +IdlingUnits = { } +AttackGroup = { } +AttackGroupSize = 10 +BGAttackGroup = { } +BGAttackGroupSize = 8 +SovietAircraftType = { "yak" } +Yaks = { } +SovietInfantry = { "e1", "e2", "e4" } +SovietVehicles = +{ + hard = { "3tnk", "3tnk", "v2rl" }, + normal = { "3tnk" }, + easy = { "3tnk", "apc" } +} + +ProductionInterval = +{ + easy = DateTime.Seconds(30), + normal = DateTime.Seconds(15), + hard = DateTime.Seconds(5) +} + +IdleHunt = function(unit) if not unit.IsDead then Trigger.OnIdle(unit, unit.Hunt) end end + +ParadropDelay = { DateTime.Seconds(30), DateTime.Minutes(1) } +ParadropWaves = 6 +ParadropLZs = { ParaLZ1.CenterPosition, ParaLZ2.CenterPosition, ParaLZ3.CenterPosition, ParaLZ4.CenterPosition } +Paradropped = 0 + +Paradrop = function() + Trigger.AfterDelay(Utils.RandomInteger(ParadropDelay[1], ParadropDelay[2]), function() + local units = PowerProxy.SendParatroopers(Utils.Random(ParadropLZs)) + Utils.Do(units, function(unit) + Trigger.OnAddedToWorld(unit, IdleHunt) + end) + + Paradropped = Paradropped + 1 + if Paradropped <= ParadropWaves then + Paradrop() + end + end) +end + +SendBGAttackGroup = function() + if #BGAttackGroup < BGAttackGroupSize then + return + end + + Utils.Do(BGAttackGroup, function(unit) + if not unit.IsDead then + Trigger.OnIdle(unit, unit.Hunt) + end + end) + + BGAttackGroup = { } +end + +ProduceBadGuyInfantry = function() + if BadGuyRax.IsDead or BadGuyRax.Owner ~= badguy then + return + end + + badguy.Build({ Utils.Random(SovietInfantry) }, function(units) + table.insert(BGAttackGroup, units[1]) + SendBGAttackGroup() + Trigger.AfterDelay(ProductionInterval[Map.LobbyOption("difficulty")], ProduceBadGuyInfantry) + end) +end + +SendAttackGroup = function() + if #AttackGroup < AttackGroupSize then + return + end + + Utils.Do(AttackGroup, function(unit) + if not unit.IsDead then + Trigger.OnIdle(unit, unit.Hunt) + end + end) + + AttackGroup = { } +end + +ProduceUSSRInfantry = function() + if USSRRax.IsDead or USSRRax.Owner ~= ussr then + return + end + + ussr.Build({ Utils.Random(SovietInfantry) }, function(units) + table.insert(AttackGroup, units[1]) + SendAttackGroup() + Trigger.AfterDelay(ProductionInterval[Map.LobbyOption("difficulty")], ProduceUSSRInfantry) + end) +end + +ProduceVehicles = function() + if USSRWarFactory.IsDead or USSRWarFactory.Owner ~= ussr then + return + end + + ussr.Build({ Utils.Random(SovietVehicles) }, function(units) + table.insert(AttackGroup, units[1]) + SendAttackGroup() + Trigger.AfterDelay(ProductionInterval[Map.LobbyOption("difficulty")], ProduceVehicles) + end) +end + +ProduceAircraft = function() + if (Airfield1.IsDead or Airfield1.Owner ~= ussr) and (Airfield2.IsDead or Airfield2.Owner ~= ussr) and (Airfield3.IsDead or Airfield3.Owner ~= ussr) and (Airfield4.IsDead or Airfield4.Owner ~= ussr) then + return + end + + ussr.Build(SovietAircraftType, function(units) + local yak = units[1] + Yaks[#Yaks + 1] = yak + + Trigger.OnKilled(yak, ProduceAircraft) + + local alive = Utils.Where(Yaks, function(y) return not y.IsDead end) + if #alive < 2 then + Trigger.AfterDelay(DateTime.Seconds(ProductionInterval[Map.LobbyOption("difficulty")] / 2), ProduceAircraft) + end + + TargetAndAttack(yak) + end) +end + +TargetAndAttack = function(yak, target) + if not target or target.IsDead or (not target.IsInWorld) then + local enemies = Utils.Where(Map.ActorsInWorld, function(self) return self.Owner == greece and self.HasProperty("Health") and yak.CanTarget(self) end) + if #enemies > 0 then + target = Utils.Random(enemies) + end + end + + if target and yak.AmmoCount() > 0 and yak.CanTarget(target) then + yak.Attack(target) + else + yak.ReturnToBase() + end + + yak.CallFunc(function() + TargetAndAttack(yak, target) + end) +end + +ActivateAI = function() + local difficulty = Map.LobbyOption("difficulty") + SovietVehicles = SovietVehicles[difficulty] + + local buildings = Utils.Where(Map.ActorsInWorld, function(self) return self.Owner == ussr and self.HasProperty("StartBuildingRepairs") end) + Utils.Do(buildings, function(actor) + Trigger.OnDamaged(actor, function(building) + if building.Owner == ussr and building.Health < building.MaxHealth * 3/4 then + building.StartBuildingRepairs() + end + end) + end) + + Paradrop() + ProduceBadGuyInfantry() + ProduceUSSRInfantry() + ProduceVehicles() + ProduceAircraft() +end diff --git a/mods/ra/maps/allies-07/allies07.lua b/mods/ra/maps/allies-07/allies07.lua new file mode 100644 index 0000000000..9aeba6faa2 --- /dev/null +++ b/mods/ra/maps/allies-07/allies07.lua @@ -0,0 +1,222 @@ +--[[ + Copyright 2007-2018 The OpenRA Developers (see AUTHORS) + This file is part of OpenRA, which is free software. It is made + available to you under the terms of the GNU General Public License + as published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. For more + information, see COPYING. +]] +DestroySubPensTriggerActivator = { Spen1, Spen2, Spen3, Spen4, Spen5 } +ClearSubActivityTriggerActivator = { Sub1, Sub2, Sub3, Sub4, Sub5, Sub6, Sub7, Sub8, Sub9, Sub10, Sub11, Sub12, Sub13, Sub14, Sub15, Sub16, Sub17 } +AlliedGunboats = { "pt", "pt", "pt" } +BeachRifles = { BeachRifle1, BeachRifle2, BeachRifle3, BeachRifle4 } + +lstReinforcements = +{ + first = + { + actors = { "mcv", "jeep", "2tnk", "2tnk" }, + entryPath = { AlliedMCVEntry.Location, Unload1.Location }, + exitPath = { AlliedMCVEntry.Location } + }, + second = + { + actors = { "jeep", "2tnk", "e1", "e1", "e1" }, + entryPath = { AlliedMCVEntry.Location, Unload1.Location }, + exitPath = { AlliedMCVEntry.Location } + } +} + +if Map.LobbyOption("difficulty") == "easy" then + ActivateAIDelay = DateTime.Minutes(1) +else + ActivateAIDelay = DateTime.Seconds(30) +end + +RaidingParty = { "3tnk", "3tnk", "v2rl", "e1", "e2"} +BaseRaidDelay1 = { DateTime.Minutes(1), DateTime.Minutes(2) } +BaseRaidDelay2 = { DateTime.Minutes(3), DateTime.Minutes(4) } +RaidOnePath = { RaidOneEntry.Location, RaidOneLanding.Location } +RaidTwoPath = { RaidTwoEntry.Location, RaidTwoLanding.Location } + +StartTimer = false +TimerColor = Player.GetPlayer("USSR").Color +TimerTicks = DateTime.Minutes(10) +ticked = TimerTicks +StartTimerDelay = DateTime.Minutes(5) + +InitialAlliedReinforcements = function() + Trigger.AfterDelay(DateTime.Seconds(1), function() + Reinforcements.Reinforce(greece, AlliedGunboats, { GunboatEntry.Location, waypoint42.Location }, 2) + Media.PlaySpeechNotification(greece, "ReinforcementsArrived") + local reinforcement = lstReinforcements.first + Reinforcements.ReinforceWithTransport(greece, "lst.reinforcement", reinforcement.actors, reinforcement.entryPath, reinforcement.exitPath) + end) +end + +BeachRunners = function() + Trigger.AfterDelay(DateTime.Seconds(7), function() + Utils.Do(BeachRifles, function(actor) + actor.Move(BeachRifleDestination.Location) + end) + end) +end + +SecondAlliedLanding = function() + Trigger.AfterDelay(DateTime.Minutes(1), function() + Media.PlaySpeechNotification(greece, "ReinforcementsArrived") + local reinforcement = lstReinforcements.second + Reinforcements.ReinforceWithTransport(greece, "lst.reinforcement", reinforcement.actors, reinforcement.entryPath, reinforcement.exitPath) + end) +end + +CaptureRadarDome = function() + Trigger.OnKilled(RadarDome, function() + greece.MarkFailedObjective(CaptureRadarDomeObj) + end) + + Trigger.OnCapture(RadarDome, function() + greece.MarkCompletedObjective(CaptureRadarDomeObj) + BaseRaids() + end) +end + +BaseRaids = function() + if Map.LobbyOption("difficulty") == "easy" then + return + else + Trigger.AfterDelay(Utils.RandomInteger(BaseRaidDelay1[1], BaseRaidDelay1[2]), function() + local raiders = Reinforcements.ReinforceWithTransport(ussr, "lst", RaidingParty, RaidOnePath, { RaidOneEntry.Location })[2] + Utils.Do(raiders, function(a) + Trigger.OnAddedToWorld(a, function() + a.AttackMove(PlayerBase.Location) + IdleHunt(a) + end) + end) + end) + + Trigger.AfterDelay(Utils.RandomInteger(BaseRaidDelay2[1], BaseRaidDelay2[2]), function() + local raiders = Reinforcements.ReinforceWithTransport(ussr, "lst", RaidingParty, RaidTwoPath, { RaidTwoEntry.Location })[2] + Utils.Do(raiders, function(a) + Trigger.OnAddedToWorld(a, function() + a.AttackMove(PlayerBase.Location) + IdleHunt(a) + end) + end) + end) + end +end + +StartTimerFunction = function() + if Map.LobbyOption("difficulty") == "hard" then + StartTimer = true + Media.PlaySpeechNotification(greece, "TimerStarted") + end +end + +FinishTimer = function() + for i = 0, 5, 1 do + local c = TimerColor + if i % 2 == 0 then + c = HSLColor.White + end + + Trigger.AfterDelay(DateTime.Seconds(i), function() UserInterface.SetMissionText("Enemy approaching", c) end) + end + Trigger.AfterDelay(DateTime.Seconds(6), function() UserInterface.SetMissionText("") end) +end + +BattalionWays = +{ + { HardEntry1.Location, HardLanding1.Location }, + { HardEntry2.Location, HardLanding2.Location }, + { HardEntry3.Location, HardLanding3.Location }, + { HardEntry4.Location, HardLanding4.Location }, + { HardEntry5.Location, HardLanding5.Location }, + { HardEntry6.Location, HardLanding6.Location } +} + +SendArmoredBattalion = function() + Media.PlaySpeechNotification(greece, "EnemyUnitsApproaching") + Utils.Do(BattalionWays, function(way) + local units = { "3tnk", "3tnk", "3tnk", "4tnk", "4tnk" } + local armor = Reinforcements.ReinforceWithTransport(ussr, "lst", units , way, { way[2], way[1] })[2] + Utils.Do(armor, function(a) + Trigger.OnAddedToWorld(a, function() + a.AttackMove(PlayerBase.Location) + IdleHunt(a) + end) + end) + end) +end + +DestroySubPensCompleted = function() + greece.MarkCompletedObjective(DestroySubPens) +end + +ClearSubActivityCompleted = function() + greece.MarkCompletedObjective(ClearSubActivity) +end + +Tick = function() + ussr.Cash = 5000 + badguy.Cash = 500 + + if StartTimer then + if ticked > 0 then + UserInterface.SetMissionText("Soviet armored battalion arrives in " .. Utils.FormatTime(ticked), TimerColor) + ticked = ticked - 1 + elseif ticked == 0 then + FinishTimer() + SendArmoredBattalion() + ticked = ticked - 1 + end + end + + if greece.HasNoRequiredUnits() then + ussr.MarkCompletedObjective(BeatAllies) + end +end + +WorldLoaded = function() + greece = Player.GetPlayer("Greece") + ussr = Player.GetPlayer("USSR") + badguy = Player.GetPlayer("BadGuy") + + Camera.Position = DefaultCameraPosition.CenterPosition + + CaptureRadarDomeObj = greece.AddPrimaryObjective("Capture the Radar Dome.") + DestroySubPens = greece.AddPrimaryObjective("Destroy all Soviet Sub Pens") + ClearSubActivity = greece.AddSecondaryObjective("Clear the area of all sub activity") + BeatAllies = ussr.AddPrimaryObjective("Defeat the Allied forces.") + + Trigger.OnObjectiveCompleted(greece, function(p, id) + Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed") + end) + Trigger.OnObjectiveFailed(greece, function(p, id) + Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed") + end) + + Trigger.OnPlayerLost(greece, function() + Trigger.AfterDelay(DateTime.Seconds(1), function() + Media.PlaySpeechNotification(greece, "MissionFailed") + end) + end) + Trigger.OnPlayerWon(greece, function() + Trigger.AfterDelay(DateTime.Seconds(1), function() + Media.PlaySpeechNotification(greece, "MissionAccomplished") + end) + end) + + PowerProxy = Actor.Create("powerproxy.paratroopers", false, { Owner = ussr }) + + InitialAlliedReinforcements() + SecondAlliedLanding() + BeachRunners() + CaptureRadarDome() + Trigger.AfterDelay(ActivateAIDelay, ActivateAI) + Trigger.AfterDelay(StartTimerDelay, StartTimerFunction) + + Trigger.OnAllRemovedFromWorld(DestroySubPensTriggerActivator, DestroySubPensCompleted) + Trigger.OnAllRemovedFromWorld(ClearSubActivityTriggerActivator, ClearSubActivityCompleted) +end diff --git a/mods/ra/maps/allies-07/map.bin b/mods/ra/maps/allies-07/map.bin new file mode 100644 index 0000000000..1ca9c2e123 Binary files /dev/null and b/mods/ra/maps/allies-07/map.bin differ diff --git a/mods/ra/maps/allies-07/map.png b/mods/ra/maps/allies-07/map.png new file mode 100644 index 0000000000..29bfd56141 Binary files /dev/null and b/mods/ra/maps/allies-07/map.png differ diff --git a/mods/ra/maps/allies-07/map.yaml b/mods/ra/maps/allies-07/map.yaml new file mode 100644 index 0000000000..a8563024b6 --- /dev/null +++ b/mods/ra/maps/allies-07/map.yaml @@ -0,0 +1,876 @@ +MapFormat: 11 + +RequiresMod: ra + +Title: 07: Sunken Treasure + +Author: Westwood Studios + +Tileset: TEMPERAT + +MapSize: 128,128 + +Bounds: 10,44,98,40 + +Visibility: MissionSelector + +Categories: Campaign + +LockPreview: True + +Players: + PlayerReference@Neutral: + Name: Neutral + OwnsWorld: True + NonCombatant: True + Faction: england + PlayerReference@Creeps: + Name: Creeps + NonCombatant: True + Faction: england + PlayerReference@USSR: + Name: USSR + Faction: soviet + Color: FF1400 + Allies: BadGuy + Enemies: England, Greece + PlayerReference@BadGuy: + Name: BadGuy + Faction: soviet + Color: FF1400 + Allies: USSR + Enemies: England, Greece + PlayerReference@England: + Name: England + Faction: allies + Color: A0F08C + Allies: Greece + Enemies: USSR, BadGuy + PlayerReference@Greece: + Name: Greece + AllowBots: False + Playable: True + Required: True + LockFaction: True + Faction: allies + LockColor: True + Color: E2E6F6 + LockSpawn: True + LockTeam: True + Allies: England + Enemies: USSR, BadGuy + +Actors: + Actor0: brik + Location: 75,61 + Owner: USSR + Actor1: brik + Location: 76,61 + Owner: USSR + Actor2: brik + Location: 77,61 + Owner: USSR + Actor3: brik + Location: 75,62 + Owner: USSR + Actor4: brik + Location: 76,62 + Owner: USSR + Actor5: brik + Location: 77,62 + Owner: USSR + Actor6: brik + Location: 47,78 + Owner: BadGuy + Actor7: brik + Location: 48,78 + Owner: BadGuy + Actor8: brik + Location: 49,78 + Owner: BadGuy + Actor9: brik + Location: 50,78 + Owner: BadGuy + Actor10: brik + Location: 51,78 + Owner: BadGuy + Actor11: brik + Location: 44,82 + Owner: BadGuy + Actor12: brik + Location: 45,82 + Owner: BadGuy + Actor13: brik + Location: 44,83 + Owner: BadGuy + Actor14: brik + Location: 45,83 + Owner: BadGuy + Actor15: t07 + Location: 62,78 + Owner: Neutral + Actor16: t07 + Location: 54,79 + Owner: Neutral + Actor17: t07 + Location: 56,52 + Owner: Neutral + Actor18: t06 + Location: 45,60 + Owner: Neutral + Actor19: t02 + Location: 56,59 + Owner: Neutral + Actor20: t17 + Location: 43,64 + Owner: Neutral + Actor21: tc02 + Location: 42,58 + Owner: Neutral + Actor22: tc03 + Location: 28,55 + Owner: Neutral + Actor23: tc02 + Location: 53,62 + Owner: Neutral + Actor24: tc02 + Location: 59,66 + Owner: Neutral + Actor25: tc01 + Location: 61,65 + Owner: Neutral + Actor26: t14 + Location: 56,74 + Owner: Neutral + Actor27: tc04 + Location: 57,62 + Owner: Neutral + Actor28: t14 + Location: 59,75 + Owner: Neutral + Actor29: t16 + Location: 53,82 + Owner: Neutral + Actor30: t17 + Location: 59,80 + Owner: Neutral + Actor31: t02 + Location: 58,76 + Owner: Neutral + Actor32: t01 + Location: 54,78 + Owner: Neutral + Actor33: t10 + Location: 45,59 + Owner: Neutral + Actor34: t07 + Location: 56,60 + Owner: Neutral + Actor35: t01 + Location: 50,55 + Owner: Neutral + Actor36: t02 + Location: 47,51 + Owner: Neutral + Actor37: t01 + Location: 45,57 + Owner: Neutral + Actor38: t12 + Location: 73,69 + Owner: Neutral + Actor39: t16 + Location: 70,82 + Owner: Neutral + Actor40: t17 + Location: 71,78 + Owner: Neutral + Actor41: t17 + Location: 78,70 + Owner: Neutral + Actor42: tc01 + Location: 77,69 + Owner: Neutral + Actor43: tc02 + Location: 75,70 + Owner: Neutral + Actor44: tc02 + Location: 70,80 + Owner: Neutral + Actor45: t07 + Location: 71,77 + Owner: Neutral + Actor46: t10 + Location: 70,75 + Owner: Neutral + Actor47: tc02 + Location: 34,52 + Owner: Neutral + Actor48: tc04 + Location: 32,51 + Owner: Neutral + Actor49: tc05 + Location: 29,53 + Owner: Neutral + Actor50: tc05 + Location: 90,72 + Owner: Neutral + Actor51: t13 + Location: 101,82 + Owner: Neutral + Actor52: tc04 + Location: 33,76 + Owner: Neutral + Actor53: t17 + Location: 16,46 + Owner: Neutral + Actor54: tc01 + Location: 94,71 + Owner: Neutral + Actor55: tc01 + Location: 81,78 + Owner: Neutral + Actor56: tc02 + Location: 71,71 + Owner: Neutral + Actor57: t16 + Location: 71,72 + Owner: Neutral + Actor58: tc01 + Location: 67,77 + Owner: Neutral + Actor59: t16 + Location: 68,79 + Owner: Neutral + Actor60: tc02 + Location: 45,67 + Owner: Neutral + Actor61: mine + Location: 27,78 + Owner: Neutral + Actor62: mine + Location: 22,71 + Owner: Neutral + Actor63: mine + Location: 87,71 + Owner: Neutral + Actor64: tc01 + Location: 49,72 + Owner: Neutral + Actor65: proc + Location: 86,63 + Owner: USSR + Actor66: proc + Location: 92,62 + Owner: USSR + Actor67: tsla + Location: 78,61 + Owner: USSR + Actor68: fact + Location: 76,77 + Owner: USSR + Actor69: ftur + Location: 74,67 + Owner: USSR + Actor70: ftur + Location: 74,62 + Owner: USSR + Actor71: kenn + Location: 81,64 + Owner: USSR + USSRWarFactory: weap + Location: 83,62 + Owner: USSR + RadarDome: dome + Location: 50,79 + Owner: BadGuy + USSRRax: barr + Location: 79,62 + Owner: USSR + Actor75: stek + Location: 88,55 + Owner: USSR + Actor76: apwr + Location: 72,78 + Owner: USSR + Actor77: apwr + Location: 86,59 + Owner: USSR + Actor78: apwr + Location: 82,59 + Owner: USSR + Actor79: apwr + Location: 79,59 + Owner: USSR + Airfield1: afld + Location: 83,56 + Owner: USSR + Airfield2: afld + Location: 80,56 + Owner: USSR + Airfield3: afld + Location: 83,54 + Owner: USSR + Airfield4: afld + Location: 80,54 + Owner: USSR + Actor84: fact + Location: 89,60 + Owner: USSR + Actor85: tsla + Location: 101,82 + Owner: USSR + Actor86: tsla + Location: 83,81 + Owner: USSR + Actor87: tsla + Location: 93,74 + Owner: USSR + Spen1: spen + Location: 95,80 + Owner: USSR + Spen2: spen + Location: 91,81 + Owner: USSR + Spen3: spen + Location: 90,77 + Owner: USSR + Spen4: spen + Location: 86,81 + Owner: USSR + Spen5: spen + Location: 85,77 + Owner: USSR + Actor93: apwr + Location: 79,81 + Owner: USSR + Actor94: apwr + Location: 73,75 + Owner: USSR + Actor95: apwr + Location: 76,73 + Owner: USSR + Actor96: tsla + Location: 79,54 + Owner: USSR + Actor97: apwr + Location: 73,81 + Owner: USSR + BGFlameTower: ftur + Location: 46,78 + Owner: BadGuy + Actor99: powr + Location: 48,81 + Owner: BadGuy + BadGuyRax: barr + Location: 46,79 + Owner: BadGuy + Actor101: brl3 + Location: 49,79 + Owner: BadGuy + Actor102: barl + Location: 48,79 + Owner: BadGuy + Actor103: silo + Location: 92,60 + Owner: USSR + Actor104: silo + Location: 91,59 + Owner: USSR + Actor105: silo + Location: 93,61 + Owner: USSR + Actor106: silo + Location: 93,59 + Owner: USSR + Actor107: v2rl + Location: 95,60 + Owner: USSR + Facing: 191 + Actor108: v2rl + Location: 87,56 + Owner: USSR + Facing: 223 + Actor109: v2rl + Location: 78,54 + Owner: USSR + Facing: 31 + Actor110: v2rl + Location: 78,67 + Owner: USSR + Facing: 63 + Actor111: v2rl + Location: 78,62 + Owner: USSR + Facing: 63 + Actor112: 3tnk + Location: 87,69 + Owner: USSR + Facing: 31 + Actor113: 3tnk + Location: 84,71 + Owner: USSR + Facing: 31 + Actor114: v2rl + Location: 94,68 + Owner: USSR + Facing: 159 + Actor115: jeep + Location: 27,58 + Owner: England + Health: 7 + Facing: 159 + Actor116: 3tnk + Location: 72,67 + Owner: USSR + Facing: 95 + Actor117: 3tnk + Location: 63,66 + Owner: USSR + Facing: 95 + Actor118: 3tnk + Location: 43,79 + Owner: BadGuy + Facing: 31 + Actor119: 3tnk + Location: 47,55 + Owner: USSR + Facing: 159 + Actor120: v2rl + Location: 89,71 + Owner: BadGuy + Facing: 31 + Actor121: v2rl + Location: 48,80 + Owner: BadGuy + Facing: 31 + Actor122: 3tnk + Location: 65,69 + Owner: USSR + Facing: 63 + Actor123: 3tnk + Location: 69,69 + Owner: USSR + Facing: 63 + Actor124: 3tnk + Location: 53,56 + Owner: USSR + Facing: 95 + Actor125: 3tnk + Location: 67,71 + Owner: BadGuy + Facing: 31 + Actor126: e1 + Location: 79,64 + Owner: USSR + Facing: 95 + SubCell: 4 + Actor127: e1 + Location: 78,63 + Owner: USSR + Facing: 63 + SubCell: 0 + Actor128: e1 + Location: 82,62 + Owner: USSR + Facing: 159 + SubCell: 0 + Actor129: e1 + Location: 95,59 + Owner: USSR + Facing: 223 + SubCell: 2 + Actor130: e1 + Location: 94,60 + Owner: USSR + Facing: 63 + SubCell: 2 + Actor131: e1 + Location: 96,61 + Owner: USSR + Facing: 159 + SubCell: 1 + Actor132: e2 + Location: 77,66 + Owner: USSR + SubCell: 2 + Actor133: e2 + Location: 79,61 + Owner: USSR + SubCell: 4 + Actor134: e2 + Location: 80,67 + Owner: USSR + SubCell: 2 + Actor135: e2 + Location: 59,70 + Owner: USSR + Facing: 63 + SubCell: 2 + Actor136: e2 + Location: 60,71 + Owner: USSR + Facing: 159 + SubCell: 4 + Actor137: e2 + Location: 58,71 + Owner: USSR + Facing: 127 + SubCell: 4 + Actor138: e2 + Location: 71,62 + Owner: USSR + Facing: 95 + SubCell: 0 + Actor139: e2 + Location: 70,63 + Owner: USSR + Facing: 159 + SubCell: 4 + Actor140: e1 + Location: 82,74 + Owner: USSR + SubCell: 1 + Actor141: e1 + Location: 80,72 + Owner: USSR + Facing: 95 + SubCell: 4 + Actor142: e1 + Location: 81,76 + Owner: USSR + Facing: 223 + SubCell: 3 + Actor143: e1 + Location: 80,77 + Owner: USSR + Facing: 63 + SubCell: 1 + Actor144: e2 + Location: 84,74 + Owner: USSR + Facing: 223 + SubCell: 4 + Actor145: e2 + Location: 81,77 + Owner: USSR + Facing: 159 + SubCell: 4 + Actor146: e2 + Location: 81,75 + Owner: USSR + Facing: 191 + SubCell: 1 + Actor147: e4 + Location: 30,61 + Owner: USSR + Facing: 95 + SubCell: 0 + Actor148: e4 + Location: 30,59 + Owner: USSR + Facing: 31 + SubCell: 0 + Actor149: e1 + Location: 26,58 + Owner: England + Health: 61 + Facing: 191 + SubCell: 0 + Actor150: e1 + Location: 27,57 + Owner: England + Health: 43 + Facing: 159 + SubCell: 0 + Actor151: e1 + Location: 26,59 + Owner: England + Health: 55 + Facing: 159 + SubCell: 4 + BeachRifle1: e1 + Location: 35,55 + Owner: BadGuy + Facing: 63 + SubCell: 3 + BeachRifle2: e1 + Location: 33,55 + Owner: BadGuy + Facing: 95 + SubCell: 4 + BeachRifle3: e1 + Location: 34,55 + Owner: BadGuy + Facing: 31 + SubCell: 1 + BeachRifle4: e1 + Location: 34,56 + Owner: BadGuy + Facing: 159 + SubCell: 4 + Actor156: dog + Location: 82,65 + Owner: USSR + Facing: 95 + SubCell: 1 + Actor157: dog + Location: 86,62 + Owner: USSR + Facing: 63 + SubCell: 4 + Actor158: dog + Location: 80,69 + Owner: USSR + Facing: 223 + SubCell: 3 + Actor159: e2 + Location: 40,74 + Owner: BadGuy + Facing: 95 + SubCell: 0 + Actor160: e2 + Location: 40,73 + Owner: BadGuy + Facing: 223 + SubCell: 4 + Actor161: e1 + Location: 46,74 + Owner: BadGuy + Facing: 63 + SubCell: 1 + Actor162: e1 + Location: 45,75 + Owner: BadGuy + Facing: 95 + SubCell: 2 + Actor163: e1 + Location: 47,74 + Owner: BadGuy + Facing: 159 + SubCell: 1 + Actor164: e1 + Location: 67,66 + Owner: USSR + Facing: 95 + SubCell: 4 + Actor165: e1 + Location: 68,70 + Owner: USSR + Facing: 63 + SubCell: 1 + Actor166: e1 + Location: 66,68 + Owner: USSR + Facing: 95 + SubCell: 1 + Actor167: e1 + Location: 66,66 + Owner: USSR + Facing: 63 + SubCell: 1 + Actor168: e1 + Location: 45,81 + Owner: BadGuy + SubCell: 1 + Actor169: e1 + Location: 44,80 + Owner: BadGuy + SubCell: 2 + Actor170: e2 + Location: 47,82 + Owner: BadGuy + SubCell: 1 + Actor171: e4 + Location: 43,81 + Owner: BadGuy + SubCell: 4 + Actor172: e4 + Location: 45,77 + Owner: BadGuy + Facing: 223 + SubCell: 0 + Actor173: e4 + Location: 31,60 + Owner: USSR + Facing: 63 + SubCell: 1 + Actor174: dog + Location: 60,80 + Owner: USSR + Facing: 223 + SubCell: 0 + Actor175: e4 + Location: 61,63 + Owner: BadGuy + Facing: 127 + SubCell: 3 + Actor176: e4 + Location: 66,72 + Owner: BadGuy + SubCell: 3 + Actor177: e4 + Location: 62,67 + Owner: BadGuy + Facing: 95 + SubCell: 3 + Actor178: pt + Location: 13,51 + Owner: Greece + Facing: 191 + Actor179: pt + Location: 13,55 + Owner: Greece + Facing: 191 + Sub1: ss + Location: 43,52 + Owner: USSR + Facing: 31 + Sub2: ss + Location: 39,52 + Owner: USSR + Facing: 191 + Sub3: ss + Location: 21,53 + Owner: USSR + Facing: 63 + Sub4: ss + Location: 13,70 + Owner: USSR + Sub5: ss + Location: 16,75 + Owner: USSR + Facing: 31 + Sub6: ss + Location: 66,58 + Owner: USSR + Facing: 63 + Sub7: ss + Location: 71,54 + Owner: USSR + Facing: 31 + Sub8: ss + Location: 65,50 + Owner: USSR + Facing: 95 + Sub9: ss + Location: 103,75 + Owner: USSR + Sub10: ss + Location: 101,78 + Owner: USSR + Sub11: ss + Location: 98,75 + Owner: USSR + Sub12: ss + Location: 95,78 + Owner: USSR + Facing: 191 + Sub13: ss + Location: 86,46 + Owner: USSR + Facing: 63 + Sub14: ss + Location: 93,51 + Owner: USSR + Facing: 31 + Sub15: ss + Location: 101,50 + Owner: BadGuy + Facing: 159 + Sub16: ss + Location: 99,51 + Owner: BadGuy + Facing: 63 + Sub17: ss + Location: 99,48 + Owner: BadGuy + Facing: 95 + AlliedMCVEntry: waypoint + Location: 10,53 + Owner: Neutral + waypoint1: waypoint + Location: 14,53 + Owner: Neutral + RaidOneLanding: waypoint + Location: 38,57 + Owner: Neutral + ParaLZ4: waypoint + Location: 29,79 + Owner: Neutral + RaidTwoLanding: waypoint + Location: 20,79 + Owner: Neutral + ParaLZ3: waypoint + Location: 24,70 + Owner: Neutral + ParaLZ2: waypoint + Location: 49,64 + Owner: Neutral + BeachRifleDestination: waypoint + Location: 44,78 + Owner: Neutral + RaidTwoEntry: waypoint + Location: 10,75 + Owner: Neutral + RaidOneEntry: waypoint + Location: 52,44 + Owner: Neutral + PlayerBase: waypoint + Location: 32,61 + Owner: Neutral + ParaLZ1: waypoint + Location: 39,63 + Owner: Neutral + Unload1: waypoint + Location: 24,57 + Owner: Neutral + GunboatEntry: waypoint + Owner: Neutral + Location: 10,54 + waypoint42: waypoint + Location: 19,54 + Owner: Neutral + DefaultCameraPosition: waypoint + Location: 13,53 + Owner: Neutral + HardLanding1: waypoint + Location: 96,69 + Owner: Neutral + HardLanding2: waypoint + Owner: Neutral + Location: 98,65 + HardLanding3: waypoint + Owner: Neutral + Location: 98,62 + HardLanding4: waypoint + Owner: Neutral + Location: 97,58 + HardLanding5: waypoint + Owner: Neutral + Location: 93,56 + HardLanding6: waypoint + Owner: Neutral + Location: 86,53 + HardEntry1: waypoint + Location: 107,74 + Owner: Neutral + HardEntry2: waypoint + Owner: Neutral + Location: 107,70 + HardEntry3: waypoint + Owner: Neutral + Location: 107,60 + HardEntry4: waypoint + Owner: Neutral + Location: 107,55 + HardEntry5: waypoint + Owner: Neutral + Location: 107,51 + HardEntry6: waypoint + Owner: Neutral + Location: 100,44 + SovCamera: camera + Owner: USSR + Location: 33,62 + +Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml diff --git a/mods/ra/maps/allies-07/rules.yaml b/mods/ra/maps/allies-07/rules.yaml new file mode 100644 index 0000000000..b70268e5dc --- /dev/null +++ b/mods/ra/maps/allies-07/rules.yaml @@ -0,0 +1,133 @@ +Player: + PlayerResources: + DefaultCash: 4000 + +World: + LuaScript: + Scripts: allies07.lua, allies07-AI.lua + MissionData: + Briefing: LANDCOM 16 HQS.\nTOP SECRET.\nTO: FIELD COMMANDER A9\n\nINTERCEPTION OF SOVIET COMMUNIQUE INDICATES THEIR IRON CURTAIN RESEARCH WAS SET BACK BY ESPIONAGE. EXCELLENT WORK, COMMANDER!\n\nCOMMUNIQUE WAS TRACED BACK TO SECRET SOVIET BASE IN BORNHOLM. INVESTIGATE POSSIBLE CONNECTION WITH IRON CURTAIN RESEARCH. CAPTURE RADAR CENTER AND DESTROY SUB PRODUCTION CAPABILITY.\n\nCONFIRMATION CODE 1138.\n\nTRANSMISSION ENDS.\n + StartVideo: shorbom1.vqa + WinVideo: shorbom2.vqa + LossVideo: shipsink.vqa + ScriptLobbyDropdown@difficulty: + ID: difficulty + Label: Difficulty + Values: + easy: Easy + normal: Normal + hard: Hard + Default: easy + +LST.Reinforcement: + Inherits: LST + RejectsOrders: + -Buildable: + -Selectable: + RenderSprites: + Image: lst + Interactable: + +powerproxy.paratroopers: + ParatroopersPower: + DropItems: E1,E1,E1,E2,E2 + +MCV: + Buildable: + Prerequisites: ~disabled + +TRUK: + Buildable: + Prerequisites: ~disabled + +MRJ: + Buildable: + Prerequisites: ~disabled + +3TNK: + Buildable: + Prerequisites: ~vehicles.soviet + +V2RL: + Buildable: + Prerequisites: ~vehicles.soviet + +4TNK: + Buildable: + Prerequisites: ~disabled + +QTNK: + Buildable: + Prerequisites: ~disabled + +APWR: + Buildable: + Prerequisites: ~disabled + +AFLD: + Buildable: + Prerequisites: ~disabled + +HPAD: + Buildable: + Prerequisites: ~disabled + +ATEK: + Buildable: + Prerequisites: ~disabled + +STEK: + Buildable: + Prerequisites: ~disabled + +PDOX: + Buildable: + Prerequisites: ~disabled + +IRON: + Buildable: + Prerequisites: ~disabled + +MSLO: + Buildable: + Prerequisites: ~disabled + +GAP: + Buildable: + Prerequisites: ~disabled + +BRIK: + Buildable: + Prerequisites: ~disabled + +MECH: + Buildable: + Prerequisites: ~disabled + +HIJACKER: + Buildable: + Prerequisites: ~disabled + +E7: + Buildable: + Prerequisites: ~disabled + +E7.noautotarget: + Buildable: + Prerequisites: ~disabled + +MIG: + Buildable: + Prerequisites: ~disabled + +CA: + Buildable: + Prerequisites: ~disabled + +MSUB: + Buildable: + Prerequisites: ~disabled + +SS: + AutoTarget: + InitialStanceAI: AttackAnything diff --git a/mods/ra/missions.yaml b/mods/ra/missions.yaml index 4d4ae2d8e6..ad754dad8c 100644 --- a/mods/ra/missions.yaml +++ b/mods/ra/missions.yaml @@ -7,6 +7,7 @@ Allied Campaign: ./mods/ra/maps/allies-05a ./mods/ra/maps/allies-06a ./mods/ra/maps/allies-06b + ./mods/ra/maps/allies-07 Soviet Campaign: ./mods/ra/maps/soviet-01 ./mods/ra/maps/soviet-02a