diff --git a/mods/ra/maps/allies-05a/AI.lua b/mods/ra/maps/allies-05a/AI.lua new file mode 100644 index 0000000000..94e8756bf4 --- /dev/null +++ b/mods/ra/maps/allies-05a/AI.lua @@ -0,0 +1,240 @@ + +IdlingUnits = { } +AttackGroupSize = 6 + +Barracks = { Barracks2, Barracks3 } + +Rallypoints = { VehicleRallypoint1, VehicleRallypoint2, VehicleRallypoint3, VehicleRallypoint4, VehicleRallypoint5 } + +Airfields = { Airfield1, Airfield2 } +Yaks = { } + +SovietInfantryTypes = { "e1", "e1", "e2", "e4" } +SovietVehicleTypes = { "3tnk", "3tnk", "3tnk", "v2rl", "v2rl", "apc" } +SovietAircraftType = { "yak" } + +HoldProduction = true +BuildVehicles = true +TrainInfantry = true + +IdleHunt = function(unit) if not unit.IsDead then Trigger.OnIdle(unit, unit.Hunt) end end + +SetupAttackGroup = function() + local units = { } + + for i = 0, AttackGroupSize, 1 do + local number = Utils.RandomInteger(1, #IdlingUnits) + + if IdlingUnits[number] and not IdlingUnits[number].IsDead then + units[i] = IdlingUnits[number] + table.remove(IdlingUnits, number) + end + end + + return units +end + +SendAttack = function() + if not Attacking then + return + end + Attacking = false + HoldProduction = false + + local units = SetupAttackGroup() + Utils.Do(units, function(unit) + IdleHunt(unit) + end) + + Trigger.AfterDelay(DateTime.Minutes(1), function() Attacking = true end) + Trigger.AfterDelay(DateTime.Minutes(2), function() HoldProduction = true end) +end + +ProtectHarvester = function(unit) + Trigger.OnDamaged(unit, function(self, attacker) + -- TODO: Send the Harvester to the service depo + + if AttackOnGoing then + return + end + AttackOnGoing = true + + local Guards = SetupAttackGroup() + Utils.Do(Guards, function(unit) + if attacker.Location then + unit.AttackMove(attacker.Location) + end + IdleHunt(unit) + end) + + Trigger.OnAllRemovedFromWorld(Guards, function() AttackOnGoing = false end) + end) + + Trigger.OnKilled(unit, function() HarvesterKilled = true end) +end + +InitAIUnits = function() + IdlingUnits = Map.ActorsInBox(MainBaseTopLeft.CenterPosition, Map.BottomRight, function(self) return self.Owner == ussr and self.HasProperty("Hunt") end) + + local buildings = Map.ActorsInBox(MainBaseTopLeft.CenterPosition, Map.BottomRight, 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) +end + +InitAIEconomy = function() + ussr.Cash = 6000 + + Harvester.FindResources() + ProtectHarvester(Harvester) +end + +InitProductionBuildings = function() + if not Warfactory2.IsDead then + Warfactory2.IsPrimaryBuilding = true + end + Trigger.OnKilled(Warfactory2, function() BuildVehicles = false end) + + if not Barracks2.IsDead then + Barracks2.IsPrimaryBuilding = true + + Trigger.OnKilled(Barracks2, function() + if not Barracks3.IsDead then + Barracks3.IsPrimaryBuilding = true + else + TrainInfantry = false + end + end) + end + + if not Barracks3.IsDead then + Trigger.OnKilled(Barracks3, function() if Barracks2.IsDead then TrainInfantry = false end end) + end + + if Map.Difficulty == "Normal" then + + if not Airfield1.IsDead then + Trigger.OnKilled(Airfield1, function() + if Airfield2.IsDead then + AirAttacks = false + else + Airfield2.IsPrimaryBuilding = true + Trigger.OnKilled(Airfield2, function() AirAttacks = false end) + end + end) + + Airfield1.IsPrimaryBuilding = true + AirAttacks = true + + elseif not Airfield2.IsDead then + Trigger.OnKilled(Airfield2, function() AirAttacks = false end) + + Airfield2.IsPrimaryBuilding = true + AirAttacks = true + end + end +end + +ProduceInfantry = function() + if not TrainInfantry then + return + end + + if HoldProduction then + Trigger.AfterDelay(DateTime.Minutes(1), ProduceInfantry) + return + end + + local delay = Utils.RandomInteger(DateTime.Seconds(3), DateTime.Seconds(9)) + local toBuild = { Utils.Random(SovietInfantryTypes) } + ussr.Build(toBuild, function(unit) + IdlingUnits[#IdlingUnits + 1] = unit[1] + Trigger.AfterDelay(delay, ProduceInfantry) + + if #IdlingUnits >= (AttackGroupSize * 2.5) then + SendAttack() + end + end) +end + +ProduceVehicles = function() + if not BuildVehicles then + return + end + + if HoldProduction then + Trigger.AfterDelay(DateTime.Minutes(1), ProduceVehicles) + return + end + + local delay = Utils.RandomInteger(DateTime.Seconds(5), DateTime.Seconds(9)) + if HarvesterKilled then + HarvesterKilled = false + ussr.Build({ "harv" }, function(harv) + harv[1].FindResources() + ProtectHarvester(harv[1]) + Trigger.AfterDelay(delay, ProduceVehicles) + end) + return + end + + Warfactory2.RallyPoint = Utils.Random(Rallypoints).Location + local toBuild = { Utils.Random(SovietVehicleTypes) } + ussr.Build(toBuild, function(unit) + IdlingUnits[#IdlingUnits + 1] = unit[1] + Trigger.AfterDelay(delay, ProduceVehicles) + + if #IdlingUnits >= (AttackGroupSize * 2.5) then + SendAttack() + end + end) +end + +ProduceAircraft = function() + if not AirAttacks then + return + end + + ussr.Build(SovietAircraftType, function(units) + Yaks[#Yaks + 1] = units[1] + + if #Yaks == 2 then + Trigger.OnKilled(units[1], ProduceAircraft) + else + Trigger.AfterDelay(DateTime.Minutes(1), ProduceAircraft) + end + + local target = nil + Trigger.OnIdle(units[1], function() + if not target or target.IsDead or (not target.IsInWorld) then + + local enemies = Map.ActorsInBox(Map.TopLeft, Map.BottomRight, function(self) return self.Owner == greece and self.HasProperty("Health") end) + if #enemies > 0 then + target = Utils.Random(enemies) + units[1].Attack(target) + end + else + units[1].Attack(target) + end + end) + end) +end + +ActivateAI = function() + + InitAIUnits() + InitAIEconomy() + InitProductionBuildings() + + Trigger.AfterDelay(DateTime.Minutes(5), function() + ProduceInfantry() + ProduceVehicles() + if AirAttacks then + Trigger.AfterDelay(DateTime.Minutes(3), ProduceAircraft) + end + end) +end diff --git a/mods/ra/maps/allies-05a/allies05a.lua b/mods/ra/maps/allies-05a/allies05a.lua new file mode 100644 index 0000000000..4419881420 --- /dev/null +++ b/mods/ra/maps/allies-05a/allies05a.lua @@ -0,0 +1,276 @@ +if Map.Difficulty == "Easy" then + TanyaType = "e7" + ReinforceCash = 5000 + HoldAITime = DateTime.Minutes(3) +else + TanyaType = "e7.noautotarget" + ChangeStance = true + ReinforceCash = 2500 + HoldAITime = DateTime.Minutes(2) +end + +SpyType = { "spy" } +SpyEntryPath = { SpyEntry.Location, SpyLoadout.Location } +InsertionTransport = "lst" +TrukPath = { TrukWaypoint1, TrukWaypoint2, TrukWaypoint3, TrukWaypoint4, TrukWaypoint5, TrukWaypoint6 } +ExtractionHeliType = "tran" +ExtractionPath = { ExtractionEntry.Location, ExtractionLZ.Location } + +GreeceReinforcements = +{ + { { "2tnk", "2tnk", "2tnk", "arty", "arty" }, { SpyEntry.Location, SpyLoadout.Location } }, + { { "e3", "e3", "e3", "e6", "e6" }, { SpyEntry.Location, GreeceLoadout1.Location } }, + { { "jeep", "jeep", "e1", "e1", "2tnk" }, { SpyEntry.Location, GreeceLoadout2.Location } } +} + +DogPatrol = { Dog1, Dog2 } +PatrolA = { PatrolA1, PatrolA2, PatrolA3, PatrolA4, PatrolA5 } +PatrolB = { PatrolB1, PatrolB2, PatrolB3 } + +DogPatrolPath = { DogPatrolRally1.Location, DogPatrolRally2.Location, DogPatrolRally3.Location } +PatrolAPath = { PatrolRally.Location, PatrolARally1.Location, PatrolARally2.Location, PatrolARally3.Location } +PatrolBPath = { PatrolBRally1.Location, PatrolBRally2.Location, PatrolBRally3.Location, PatrolRally.Location } + +TanyaVoices = { "tuffguy", "bombit", "laugh", "gotit", "lefty", "keepem" } +SamSites = { Sam1, Sam2, Sam3, Sam4 } + +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 + +Tick = function() + if FollowTruk then + TrukCamera.Teleport(Truk.Location) + end + + if ussr.HasNoRequiredUnits() then + greece.MarkCompletedObjective(KillAll) + end + + if GreeceReinforcementsArrived and greece.HasNoRequiredUnits() then + ussr.MarkCompletedObjective(ussrObj) + end +end + +SendReinforcements = function() + GreeceReinforcementsArrived = true + Camera.Position = ReinforceCamera.CenterPosition + greece.Cash = greece.Cash + ReinforceCash + + Utils.Do(GreeceReinforcements, function(reinforceTable) + Reinforcements.ReinforceWithTransport(greece, InsertionTransport, reinforceTable[1], reinforceTable[2], { SpyEntry.Location }) + end) + + ActivateAI() +end + +ExtractTanya = function() + if ExtractionHeli.IsDead or not ExtractionHeli.HasPassengers then + return + end + + ExtractionHeli.Move(CPos.New(ExtractionPath[1].X, ExtractionHeli.Location.Y)) + ExtractionHeli.Destroy() + + greece.MarkCompletedObjective(mainObj) + SendReinforcements() + PrisonCamera.Destroy() +end + +WarfactoryInfiltrated = function() + FollowTruk = true + TrukCamera = Actor.Create("camera.truk", true, { Owner = greece, Location = Truk.Location }) + + Truk.Wait(DateTime.Seconds(1)) + Utils.Do(TrukPath, function(waypoint) + Truk.Move(waypoint.Location) + end) + + Trigger.AfterDelay(DateTime.Seconds(2), function() + SpyCameraA.Destroy() + SpyCameraB.Destroy() + end) +end + +MissInfiltrated = function() + CloakProvider.Destroy() + + for i = 0, 5, 1 do + local sound = Utils.Random(TanyaVoices) + Trigger.AfterDelay(DateTime.Seconds(i), function() + Media.PlaySoundNotification(greece, sound) + end) + end + TanyasColt = Actor.Create("Colt", true, { Owner = greece, Location = Prison.Location + CVec.New(1, 6) }) + + Trigger.AfterDelay(DateTime.Seconds(6), FreeTanya) +end + +FreeTanya = function() + TanyasColt.Destroy() + Tanya = Actor.Create(TanyaType, true, { Owner = greece, Location = Prison.Location + CVec.New(1, 1) }) + Prison.Kill() + Tanya.Scatter() + + if ChangeStance then + Tanya.Stance = "HoldFire" + Trigger.AfterDelay(DateTime.Seconds(1), function() + Media.DisplayMessage("According to the rules of engagement I need your explicit orders to fire, Commander!", "Tanya") + end) + end + + Trigger.OnKilled(Tanya, function() ussr.MarkCompletedObjective(ussrObj) end) + + KillSams = greece.AddPrimaryObjective("Destroy all four SAM Sites that block\nthe extraction helicopter.") +end + +SendSpy = function() + Camera.Position = SpyEntry.CenterPosition + Spy = Reinforcements.ReinforceWithTransport(greece, InsertionTransport, SpyType, SpyEntryPath, { SpyEntryPath[1] })[2][1] + + Trigger.OnKilled(Spy, function() ussr.MarkCompletedObjective(ussrObj) end) + + SpyCameraA = Actor.Create("camera", true, { Owner = greece, Location = SpyCamera1.Location }) + SpyCameraB = Actor.Create("camera", true, { Owner = greece, Location = SpyCamera2.Location }) +end + +ActivatePatrols = function() + GroupPatrol(DogPatrol, DogPatrolPath, DateTime.Seconds(2)) + + Trigger.AfterDelay(DateTime.Seconds(3), function() + GroupPatrol(PatrolA, PatrolAPath, DateTime.Seconds(7)) + GroupPatrol(PatrolB, PatrolBPath, DateTime.Seconds(6)) + end) + + local units = Map.ActorsInBox(Map.TopLeft, Map.BottomRight, function(self) return self.Owner == soviets and self.HasProperty("AutoTarget") end) + Utils.Do(units, function(unit) + unit.Stance = "Defend" + end) +end + +InitTriggers = function() + Trigger.OnInfiltrated(Warfactory, function() + Trigger.ClearAll(Spy) + greece.MarkCompletedObjective(infWarfactory) + WarfactoryInfiltrated() + end) + + Trigger.OnInfiltrated(Prison, function() + Trigger.ClearAll(Spy) + Trigger.AfterDelay(DateTime.Seconds(2), MissInfiltrated) + end) + + Trigger.OnEnteredFootprint({ TrukWaypoint5.Location }, function(a, id) + if a == Truk then + Trigger.RemoveFootprintTrigger(id) + + CloakProvider = Actor.Create("CloakUpgrade", true, { Owner = greece, Location = Prison.Location }) + + Spy = Actor.Create("spy", true, { Owner = greece, Location = TrukWaypoint5.Location }) + Spy.Move(SpyWaypoint.Location) + Spy.Move(Prison.Location, 3) + + FollowTruk = false + TrukCamera.Destroy() + PrisonCamera = Actor.Create("camera", true, { Owner = greece, Location = TrukWaypoint5.Location }) + + Trigger.OnKilled(Spy, function() ussr.MarkCompletedObjective(ussrObj) end) + end + end) + + Trigger.OnEnteredFootprint({ TrukWaypoint6.Location }, function(a, id) + if a == Truk then + Trigger.RemoveFootprintTrigger(id) + Truk.Stop() + Truk.Kill() + ExplosiveBarrel.Kill() + end + end) + + Trigger.OnKilled(Mammoth, function() + Trigger.AfterDelay(HoldAITime - DateTime.Seconds(45), function() HoldProduction = false end) + Trigger.AfterDelay(HoldAITime, function() Attacking = true end) + end) + + Trigger.OnKilled(FlameBarrel, function() + if not FlameTower.IsDead then + FlameTower.Kill() + end + end) + + Trigger.OnKilled(SamBarrel, Sam1.Kill) + + Trigger.OnAllKilled(SamSites, function() + greece.MarkCompletedObjective(KillSams) + + local flare = Actor.Create("flare", true, { Owner = greece, Location = ExtractionPath[2] + CVec.New(0, -1) }) + Trigger.AfterDelay(DateTime.Seconds(7), flare.Destroy) + Media.PlaySpeechNotification(greece, "SignalFlare") + ExtractionHeli = Reinforcements.ReinforceWithTransport(greece, ExtractionHeliType, nil, ExtractionPath)[1] + + Trigger.OnKilled(ExtractionHeli, function() ussr.MarkCompletedObjective(ussrObj) end) + Trigger.OnRemovedFromWorld(Tanya, ExtractTanya) + end) +end + +InitObjectives = function() + Trigger.OnObjectiveAdded(greece, function(p, id) + Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective") + end) + + ussrObj = ussr.AddPrimaryObjective("Deny the allies.") + mainObj = greece.AddPrimaryObjective("Rescue Tanya.") + KillAll = greece.AddPrimaryObjective("Eliminate all soviet units in this area.") + infWarfactory = greece.AddPrimaryObjective("Infiltrate the soviet warfactory") + + 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() + Media.PlaySpeechNotification(player, "Lose") + end) + Trigger.OnPlayerWon(greece, function() + Media.PlaySpeechNotification(player, "Win") + end) +end + +WorldLoaded = function() + greece = Player.GetPlayer("Greece") + ussr = Player.GetPlayer("USSR") + + InitObjectives() + InitTriggers() + SendSpy() + + Trigger.AfterDelay(DateTime.Seconds(3), ActivatePatrols) +end diff --git a/mods/ra/maps/allies-05a/map.bin b/mods/ra/maps/allies-05a/map.bin new file mode 100644 index 0000000000..d6ab55dd2d Binary files /dev/null and b/mods/ra/maps/allies-05a/map.bin differ diff --git a/mods/ra/maps/allies-05a/map.png b/mods/ra/maps/allies-05a/map.png new file mode 100644 index 0000000000..aaa1507d66 Binary files /dev/null and b/mods/ra/maps/allies-05a/map.png differ diff --git a/mods/ra/maps/allies-05a/map.yaml b/mods/ra/maps/allies-05a/map.yaml new file mode 100644 index 0000000000..132d5a55b2 --- /dev/null +++ b/mods/ra/maps/allies-05a/map.yaml @@ -0,0 +1,1831 @@ +MapFormat: 7 + +RequiresMod: ra + +Title: Allies 05a: Tanya's Tale + +Description: Rescue Tanya.\n\nYour spy can move past any enemy unit, except dogs, without being detected. Direct him into the weapons factory located at a nearby Soviet Base where he will hijack a truck and free Tanya.\n\nWith Tanya's help, take out the air defenses on the island and a Chinook will arrive to rescue her.\n\nThen destroy all remaining Soviet buildings and units. + +Author: Westwood Studios + +Tileset: TEMPERAT + +MapSize: 128,128 + +Bounds: 12,48,60,64 + +Visibility: MissionSelector + +Type: Campaign + +Videos: + Briefing: ally5.vqa + GameStart: tanya1.vqa + GameWon: tanya2.vqa + GameLost: grvestne.vqa + +Options: + Crates: False + Fog: True + Shroud: True + AllyBuildRadius: False + FragileAlliances: False + StartingCash: 0 + TechLevel: Medium + ConfigurableStartingUnits: False + Difficulties: Easy, Normal + ShortGame: False + +Players: + PlayerReference@Neutral: + Name: Neutral + OwnsWorld: True + NonCombatant: True + Race: allies + PlayerReference@USSR: + Name: USSR + Race: soviet + ColorRamp: 3,255,127 + Enemies: Greece + PlayerReference@Greece: + Name: Greece + Playable: True + Required: True + LockRace: True + Race: allies + LockColor: True + ColorRamp: 161,134,236 + Enemies: USSR + +Actors: + Actor0: cycl + Location: 35,48 + Owner: Neutral + Actor1: cycl + Location: 36,48 + Owner: Neutral + Actor2: cycl + Location: 37,48 + Owner: Neutral + Actor3: cycl + Location: 38,48 + Owner: Neutral + Actor4: cycl + Location: 39,48 + Owner: Neutral + Actor5: cycl + Location: 40,48 + Owner: Neutral + Actor6: cycl + Location: 41,48 + Owner: Neutral + Actor7: cycl + Location: 42,48 + Owner: Neutral + Actor8: cycl + Location: 43,48 + Owner: Neutral + Actor9: cycl + Location: 44,48 + Owner: Neutral + Actor10: cycl + Location: 45,48 + Owner: Neutral + Actor11: cycl + Location: 46,48 + Owner: Neutral + Actor12: cycl + Location: 47,48 + Owner: Neutral + Actor13: cycl + Location: 48,48 + Owner: Neutral + Actor14: cycl + Location: 49,48 + Owner: Neutral + Actor15: cycl + Location: 50,48 + Owner: Neutral + Actor16: cycl + Location: 51,48 + Owner: Neutral + Actor17: cycl + Location: 35,49 + Owner: Neutral + Actor18: cycl + Location: 51,49 + Owner: Neutral + Actor19: cycl + Location: 52,49 + Owner: Neutral + Actor20: cycl + Location: 35,50 + Owner: Neutral + Actor21: cycl + Location: 35,51 + Owner: Neutral + Actor22: cycl + Location: 35,52 + Owner: Neutral + Actor23: cycl + Location: 35,53 + Owner: Neutral + Actor24: cycl + Location: 36,53 + Owner: Neutral + Actor25: cycl + Location: 35,54 + Owner: Neutral + Actor26: cycl + Location: 36,54 + Owner: Neutral + Actor27: cycl + Location: 51,57 + Owner: Neutral + Actor28: cycl + Location: 52,57 + Owner: Neutral + Actor29: cycl + Location: 35,58 + Owner: Neutral + Actor30: cycl + Location: 36,58 + Owner: Neutral + Actor31: cycl + Location: 47,58 + Owner: Neutral + Actor32: cycl + Location: 48,58 + Owner: Neutral + Actor33: cycl + Location: 49,58 + Owner: Neutral + Actor34: cycl + Location: 50,58 + Owner: Neutral + Actor35: cycl + Location: 51,58 + Owner: Neutral + Actor36: cycl + Location: 35,59 + Owner: Neutral + Actor37: cycl + Location: 36,59 + Owner: Neutral + Actor38: cycl + Location: 37,59 + Owner: Neutral + Actor39: cycl + Location: 38,59 + Owner: Neutral + Actor40: cycl + Location: 39,59 + Owner: Neutral + Actor41: cycl + Location: 40,59 + Owner: Neutral + Actor42: cycl + Location: 41,59 + Owner: Neutral + Actor43: cycl + Location: 42,59 + Owner: Neutral + Actor44: cycl + Location: 46,59 + Owner: Neutral + Actor45: cycl + Location: 47,59 + Owner: Neutral + Actor46: brik + Location: 39,73 + Owner: Neutral + Actor47: brik + Location: 40,73 + Owner: Neutral + Actor48: brik + Location: 41,73 + Owner: Neutral + Actor49: brik + Location: 42,73 + Owner: Neutral + Actor50: brik + Location: 46,73 + Owner: Neutral + Actor51: brik + Location: 47,73 + Owner: Neutral + Actor52: brik + Location: 48,73 + Owner: Neutral + Actor53: brik + Location: 49,73 + Owner: Neutral + Actor54: brik + Location: 39,74 + Owner: Neutral + Actor55: brik + Location: 41,74 + Owner: Neutral + Actor56: brik + Location: 42,74 + Owner: Neutral + Actor57: brik + Location: 46,74 + Owner: Neutral + Actor58: brik + Location: 47,74 + Owner: Neutral + Actor59: brik + Location: 49,74 + Owner: Neutral + Actor60: brik + Location: 39,75 + Owner: Neutral + Actor61: brik + Location: 49,75 + Owner: Neutral + Actor62: brik + Location: 39,76 + Owner: Neutral + Actor63: brik + Location: 49,76 + Owner: Neutral + Actor64: brik + Location: 13,77 + Owner: Neutral + Actor65: brik + Location: 14,77 + Owner: Neutral + Actor66: brik + Location: 15,77 + Owner: Neutral + Actor67: brik + Location: 16,77 + Owner: Neutral + Actor68: brik + Location: 17,77 + Owner: Neutral + Actor69: brik + Location: 18,77 + Owner: Neutral + Actor70: brik + Location: 19,77 + Owner: Neutral + Actor71: brik + Location: 20,77 + Owner: Neutral + Actor72: brik + Location: 21,77 + Owner: Neutral + Actor73: brik + Location: 22,77 + Owner: Neutral + Actor74: brik + Location: 23,77 + Owner: Neutral + Actor75: brik + Location: 24,77 + Owner: Neutral + Actor76: brik + Location: 25,77 + Owner: Neutral + Actor77: brik + Location: 26,77 + Owner: Neutral + Actor78: brik + Location: 27,77 + Owner: Neutral + Actor79: brik + Location: 28,77 + Owner: Neutral + Actor80: brik + Location: 29,77 + Owner: Neutral + Actor81: brik + Location: 30,77 + Owner: Neutral + Actor82: brik + Location: 31,77 + Owner: Neutral + Actor83: brik + Location: 32,77 + Owner: Neutral + Actor84: brik + Location: 33,77 + Owner: Neutral + Actor85: brik + Location: 39,77 + Owner: Neutral + Actor86: brik + Location: 49,77 + Owner: Neutral + Actor87: brik + Location: 13,78 + Owner: Neutral + Actor88: brik + Location: 14,78 + Owner: Neutral + Actor89: brik + Location: 33,78 + Owner: Neutral + Actor90: brik + Location: 39,78 + Owner: Neutral + Actor91: brik + Location: 49,78 + Owner: Neutral + Actor92: brik + Location: 13,79 + Owner: Neutral + Actor93: brik + Location: 33,79 + Owner: Neutral + Actor95: brik + Location: 49,79 + Owner: Neutral + Actor96: brik + Location: 13,80 + Owner: Neutral + Actor97: brik + Location: 33,80 + Owner: Neutral + Actor98: brik + Location: 39,80 + Owner: Neutral + Actor99: brik + Location: 49,80 + Owner: Neutral + Actor100: brik + Location: 13,81 + Owner: Neutral + Actor101: brik + Location: 33,81 + Owner: Neutral + Actor102: brik + Location: 39,81 + Owner: Neutral + Actor103: brik + Location: 49,81 + Owner: Neutral + Actor104: brik + Location: 50,81 + Owner: Neutral + Actor105: brik + Location: 51,81 + Owner: Neutral + Actor106: brik + Location: 52,81 + Owner: Neutral + Actor107: brik + Location: 53,81 + Owner: Neutral + Actor108: brik + Location: 54,81 + Owner: Neutral + Actor109: brik + Location: 55,81 + Owner: Neutral + Actor110: brik + Location: 56,81 + Owner: Neutral + Actor111: brik + Location: 57,81 + Owner: Neutral + Actor112: brik + Location: 58,81 + Owner: Neutral + Actor113: brik + Location: 59,81 + Owner: Neutral + Actor114: brik + Location: 60,81 + Owner: Neutral + Actor115: brik + Location: 61,81 + Owner: Neutral + Actor116: brik + Location: 62,81 + Owner: Neutral + Actor117: brik + Location: 66,81 + Owner: Neutral + Actor118: brik + Location: 67,81 + Owner: Neutral + Actor119: brik + Location: 68,81 + Owner: Neutral + Actor120: brik + Location: 69,81 + Owner: Neutral + Actor121: brik + Location: 70,81 + Owner: Neutral + Actor122: brik + Location: 71,81 + Owner: Neutral + Actor123: brik + Location: 13,82 + Owner: Neutral + Actor124: brik + Location: 33,82 + Owner: Neutral + Actor125: brik + Location: 34,82 + Owner: Neutral + Actor126: brik + Location: 38,82 + Owner: Neutral + Actor127: brik + Location: 39,82 + Owner: Neutral + Actor128: brik + Location: 61,82 + Owner: Neutral + Actor129: brik + Location: 62,82 + Owner: Neutral + Actor130: brik + Location: 66,82 + Owner: Neutral + Actor131: brik + Location: 67,82 + Owner: Neutral + Actor132: brik + Location: 71,82 + Owner: Neutral + Actor133: brik + Location: 13,83 + Owner: Neutral + Actor134: brik + Location: 33,83 + Owner: Neutral + Actor135: brik + Location: 34,83 + Owner: Neutral + Actor136: brik + Location: 35,83 + Owner: Neutral + Actor137: brik + Location: 36,83 + Owner: Neutral + Actor138: brik + Location: 37,83 + Owner: Neutral + Actor139: brik + Location: 38,83 + Owner: Neutral + Actor140: brik + Location: 39,83 + Owner: Neutral + Actor141: brik + Location: 71,83 + Owner: Neutral + Actor142: brik + Location: 13,84 + Owner: Neutral + Actor143: brik + Location: 34,84 + Owner: Neutral + Actor144: brik + Location: 71,84 + Owner: Neutral + Actor145: brik + Location: 13,85 + Owner: Neutral + Actor146: brik + Location: 33,85 + Owner: Neutral + Actor147: brik + Location: 34,85 + Owner: Neutral + Actor148: brik + Location: 71,85 + Owner: Neutral + Actor149: brik + Location: 13,86 + Owner: Neutral + Actor150: brik + Location: 33,86 + Owner: Neutral + Actor151: brik + Location: 34,86 + Owner: Neutral + Actor152: brik + Location: 71,86 + Owner: Neutral + Actor153: brik + Location: 13,87 + Owner: Neutral + Actor154: brik + Location: 71,87 + Owner: Neutral + Actor155: brik + Location: 13,88 + Owner: Neutral + Actor156: brik + Location: 33,88 + Owner: Neutral + Actor157: brik + Location: 34,88 + Owner: Neutral + Actor158: brik + Location: 71,88 + Owner: Neutral + Actor159: brik + Location: 13,89 + Owner: Neutral + Actor160: brik + Location: 33,89 + Owner: Neutral + Actor161: brik + Location: 34,89 + Owner: Neutral + Actor162: brik + Location: 65,89 + Owner: Neutral + Actor163: brik + Location: 66,89 + Owner: Neutral + Actor164: brik + Location: 67,89 + Owner: Neutral + Actor165: brik + Location: 68,89 + Owner: Neutral + Actor166: brik + Location: 69,89 + Owner: Neutral + Actor167: brik + Location: 70,89 + Owner: Neutral + Actor168: brik + Location: 71,89 + Owner: Neutral + Actor169: brik + Location: 13,90 + Owner: Neutral + Actor170: brik + Location: 34,90 + Owner: Neutral + Actor171: brik + Location: 65,90 + Owner: Neutral + Actor172: brik + Location: 13,91 + Owner: Neutral + Actor173: brik + Location: 34,91 + Owner: Neutral + Actor174: brik + Location: 65,91 + Owner: Neutral + Actor175: brik + Location: 13,92 + Owner: Neutral + Actor176: brik + Location: 34,92 + Owner: Neutral + Actor177: brik + Location: 64,92 + Owner: Neutral + Actor178: brik + Location: 65,92 + Owner: Neutral + Actor179: brik + Location: 13,93 + Owner: Neutral + Actor180: brik + Location: 34,93 + Owner: Neutral + Actor181: brik + Location: 64,93 + Owner: Neutral + Actor182: brik + Location: 65,93 + Owner: Neutral + Actor183: brik + Location: 13,94 + Owner: Neutral + Actor184: brik + Location: 14,94 + Owner: Neutral + Actor185: brik + Location: 33,94 + Owner: Neutral + Actor186: brik + Location: 34,94 + Owner: Neutral + Actor187: brik + Location: 64,94 + Owner: Neutral + Actor188: brik + Location: 13,95 + Owner: Neutral + Actor189: brik + Location: 14,95 + Owner: Neutral + Actor190: brik + Location: 15,95 + Owner: Neutral + Actor191: brik + Location: 16,95 + Owner: Neutral + Actor192: brik + Location: 17,95 + Owner: Neutral + Actor193: brik + Location: 18,95 + Owner: Neutral + Actor194: brik + Location: 19,95 + Owner: Neutral + Actor195: brik + Location: 20,95 + Owner: Neutral + Actor196: brik + Location: 26,95 + Owner: Neutral + Actor197: brik + Location: 27,95 + Owner: Neutral + Actor198: brik + Location: 28,95 + Owner: Neutral + Actor199: brik + Location: 29,95 + Owner: Neutral + Actor200: brik + Location: 30,95 + Owner: Neutral + Actor201: brik + Location: 31,95 + Owner: Neutral + Actor202: brik + Location: 32,95 + Owner: Neutral + Actor203: brik + Location: 33,95 + Owner: Neutral + Actor204: brik + Location: 34,95 + Owner: Neutral + Actor205: brik + Location: 64,95 + Owner: Neutral + Actor206: brik + Location: 19,96 + Owner: Neutral + Actor207: brik + Location: 20,96 + Owner: Neutral + Actor208: brik + Location: 26,96 + Owner: Neutral + Actor209: brik + Location: 27,96 + Owner: Neutral + Actor210: brik + Location: 33,96 + Owner: Neutral + Actor211: brik + Location: 63,96 + Owner: Neutral + Actor212: brik + Location: 64,96 + Owner: Neutral + Actor213: brik + Location: 33,97 + Owner: Neutral + Actor214: brik + Location: 34,97 + Owner: Neutral + Actor215: brik + Location: 35,97 + Owner: Neutral + Actor216: brik + Location: 36,97 + Owner: Neutral + Actor217: brik + Location: 37,97 + Owner: Neutral + Actor218: brik + Location: 38,97 + Owner: Neutral + Actor219: brik + Location: 39,97 + Owner: Neutral + Actor220: brik + Location: 40,97 + Owner: Neutral + Actor221: brik + Location: 41,97 + Owner: Neutral + Actor222: brik + Location: 42,97 + Owner: Neutral + Actor223: brik + Location: 43,97 + Owner: Neutral + Actor224: brik + Location: 44,97 + Owner: Neutral + Actor225: brik + Location: 45,97 + Owner: Neutral + Actor226: brik + Location: 46,97 + Owner: Neutral + Actor227: brik + Location: 47,97 + Owner: Neutral + Actor228: brik + Location: 48,97 + Owner: Neutral + Actor229: brik + Location: 49,97 + Owner: Neutral + Actor230: brik + Location: 50,97 + Owner: Neutral + Actor231: brik + Location: 51,97 + Owner: Neutral + Actor232: brik + Location: 52,97 + Owner: Neutral + Actor233: brik + Location: 53,97 + Owner: Neutral + Actor234: brik + Location: 54,97 + Owner: Neutral + Actor235: brik + Location: 55,97 + Owner: Neutral + Actor236: brik + Location: 56,97 + Owner: Neutral + Actor237: brik + Location: 57,97 + Owner: Neutral + Actor238: brik + Location: 58,97 + Owner: Neutral + Actor239: brik + Location: 59,97 + Owner: Neutral + Actor240: brik + Location: 60,97 + Owner: Neutral + Actor241: brik + Location: 61,97 + Owner: Neutral + Actor242: brik + Location: 62,97 + Owner: Neutral + Actor243: brik + Location: 63,97 + Owner: Neutral + Actor244: brik + Location: 64,97 + Owner: Neutral + Actor245: sbag + Location: 20,98 + Owner: Neutral + Actor246: sbag + Location: 26,98 + Owner: Neutral + Actor247: sbag + Location: 20,99 + Owner: Neutral + Actor248: sbag + Location: 26,99 + Owner: Neutral + Actor249: t16 + Location: 64,90 + Owner: Neutral + Actor250: tc03 + Location: 46,93 + Owner: Neutral + Actor251: tc04 + Location: 52,83 + Owner: Neutral + Actor252: tc05 + Location: 41,84 + Owner: Neutral + Actor253: tc03 + Location: 31,88 + Owner: Neutral + Actor254: t11 + Location: 28,108 + Owner: Neutral + Actor255: t08 + Location: 16,108 + Owner: Neutral + Actor256: t10 + Location: 26,96 + Owner: Neutral + Actor257: tc02 + Location: 41,60 + Owner: Neutral + Actor258: tc05 + Location: 17,97 + Owner: Neutral + Actor259: tc04 + Location: 14,95 + Owner: Neutral + Actor260: t15 + Location: 15,97 + Owner: Neutral + Actor261: t08 + Location: 18,96 + Owner: Neutral + Actor262: t16 + Location: 18,60 + Owner: Neutral + Actor263: t14 + Location: 16,64 + Owner: Neutral + Actor264: t10 + Location: 12,57 + Owner: Neutral + Actor265: t08 + Location: 16,56 + Owner: Neutral + Actor266: tc02 + Location: 28,51 + Owner: Neutral + Actor267: tc04 + Location: 49,58 + Owner: Neutral + Actor268: t07 + Location: 36,64 + Owner: Neutral + Actor269: t15 + Location: 36,60 + Owner: Neutral + Actor270: t08 + Location: 31,51 + Owner: Neutral + Actor271: t07 + Location: 29,48 + Owner: Neutral + Actor272: t12 + Location: 97,49 + Owner: Neutral + Actor273: tc04 + Location: 40,80 + Owner: Neutral + Actor274: tc03 + Location: 59,95 + Owner: Neutral + Actor275: tc02 + Location: 35,84 + Owner: Neutral + Actor276: tc01 + Location: 42,81 + Owner: Neutral + Actor277: t11 + Location: 44,77 + Owner: Neutral + Actor278: t01 + Location: 43,80 + Owner: Neutral + Actor279: t10 + Location: 50,59 + Owner: Neutral + Actor280: t01 + Location: 25,51 + Owner: Neutral + Actor281: t02 + Location: 20,56 + Owner: Neutral + Actor282: tc05 + Location: 27,104 + Owner: Neutral + Actor283: t08 + Location: 26,103 + Owner: Neutral + Actor286: barl + Location: 21,88 + Owner: USSR + Actor287: barl + Location: 27,88 + Owner: USSR + Actor288: barl + Location: 19,87 + Owner: USSR + Actor289: brl3 + Location: 50,49 + Owner: USSR + Actor291: powr + Location: 48,49 + Owner: USSR + Actor293: ftur + Location: 37,56 + Owner: USSR + Actor296: powr + Location: 59,82 + Owner: USSR + Actor297: fcom + Location: 24,85 + Owner: USSR + Actor299: fix + Location: 61,90 + Owner: USSR + Actor300: kenn + Location: 32,84 + Owner: USSR + Actor301: kenn + Location: 48,82 + Owner: USSR + Actor306: silo + Location: 57,90 + Owner: USSR + Actor307: silo + Location: 53,90 + Owner: USSR + Actor310: ftur + Location: 36,86 + Owner: USSR + Actor312: ftur + Location: 44,76 + Owner: USSR + Actor313: dome + Location: 53,85 + Owner: USSR + Actor314: tsla + Location: 40,73 + Owner: USSR + Actor315: tsla + Location: 48,73 + Owner: USSR + Actor317: powr + Location: 46,49 + Owner: USSR + Actor318: brl3 + Location: 35,89 + Owner: USSR + Actor319: barl + Location: 35,88 + Owner: USSR + Actor320: barl + Location: 36,89 + Owner: USSR + Actor321: brl3 + Location: 26,88 + Owner: USSR + Actor322: brl3 + Location: 20,88 + Owner: USSR + Actor323: barl + Location: 25,88 + Owner: USSR + Actor324: brl3 + Location: 28,88 + Owner: USSR + Actor325: barl + Location: 58,82 + Owner: USSR + Actor326: brl3 + Location: 57,82 + Owner: USSR + Actor327: barl + Location: 58,83 + Owner: USSR + Actor328: barl + Location: 58,84 + Owner: USSR + Actor329: fix + Location: 46,54 + Owner: USSR + Actor330: fact + Location: 36,49 + Owner: USSR + Actor331: brl3 + Location: 42,54 + Owner: USSR + Actor332: brl3 + Location: 42,55 + Owner: USSR + Actor333: barl + Location: 38,54 + Owner: USSR + Actor335: barl + Location: 42,53 + Owner: USSR + Actor336: brl3 + Location: 39,49 + Owner: USSR + Actor337: brl3 + Location: 48,56 + Owner: USSR + Actor338: barl + Location: 46,56 + Owner: USSR + Actor339: barl + Location: 40,49 + Owner: USSR + Actor340: kenn + Location: 26,94 + Owner: USSR + Actor341: brl3 + Location: 41,52 + Owner: USSR + Actor342: barl + Location: 40,52 + Owner: USSR + Actor343: brl3 + Location: 39,53 + Owner: USSR + Actor345: brl3 + Location: 37,89 + Owner: USSR + Actor346: brl3 + Location: 58,85 + Owner: USSR + Actor347: brl3 + Location: 56,82 + Owner: USSR + Actor348: brl3 + Location: 55,82 + Owner: USSR + Actor349: barl + Location: 54,82 + Owner: USSR + Actor350: barl + Location: 52,82 + Owner: USSR + Actor351: brl3 + Location: 53,82 + Owner: USSR + Actor352: brl3 + Location: 51,82 + Owner: USSR + Actor353: barl + Location: 52,83 + Owner: USSR + Actor354: brl3 + Location: 51,83 + Owner: USSR + Actor355: barl + Location: 50,82 + Owner: USSR + Actor356: silo + Location: 55,90 + Owner: USSR + Actor357: silo + Location: 55,88 + Owner: USSR + Actor358: brl3 + Location: 20,108 + Owner: USSR + Actor359: barl + Location: 18,108 + Owner: USSR + Actor361: ftur + Location: 62,80 + Owner: USSR + Actor362: ftur + Location: 66,80 + Owner: USSR + Actor363: powr + Location: 36,94 + Owner: USSR + Actor364: powr + Location: 38,94 + Owner: USSR + Actor365: powr + Location: 42,94 + Owner: USSR + Actor366: powr + Location: 44,94 + Owner: USSR + Actor367: powr + Location: 24,78 + Owner: USSR + Actor368: powr + Location: 31,78 + Owner: USSR + Actor369: powr + Location: 22,78 + Owner: USSR + Actor370: powr + Location: 14,82 + Owner: USSR + Actor371: powr + Location: 16,83 + Owner: USSR + Actor372: powr + Location: 31,81 + Owner: USSR + Actor373: powr + Location: 32,91 + Owner: USSR + Actor374: powr + Location: 14,87 + Owner: USSR + Actor375: powr + Location: 69,86 + Owner: USSR + Actor376: powr + Location: 67,86 + Owner: USSR + Actor377: brl3 + Location: 19,108 + Owner: USSR + Actor429: brl3 + Location: 41,56 + Owner: USSR + Actor380: v2rl + Location: 48,87 + Owner: USSR + Facing: 224 + Actor381: v2rl + Location: 51,84 + Owner: USSR + Facing: 136 + Actor382: v2rl + Location: 45,82 + Owner: USSR + Facing: 0 + Actor384: 3tnk + Location: 54,94 + Owner: USSR + Facing: 0 + Actor385: 3tnk + Location: 46,78 + Owner: USSR + Facing: 0 + Actor386: 3tnk + Location: 43,78 + Owner: USSR + Facing: 0 + Actor387: 3tnk + Location: 28,79 + Owner: USSR + Facing: 160 + Actor388: 3tnk + Location: 42,84 + Owner: USSR + Facing: 64 + Actor390: 3tnk + Location: 63,94 + Owner: USSR + Facing: 0 + Actor391: 3tnk + Location: 52,94 + Owner: USSR + Facing: 0 + Actor392: v2rl + Location: 42,90 + Owner: USSR + Facing: 0 + Actor393: v2rl + Location: 53,95 + Owner: USSR + Facing: 0 + Actor395: 3tnk + Location: 62,85 + Owner: USSR + Facing: 0 + Actor396: 3tnk + Location: 44,89 + Owner: USSR + Facing: 0 + Actor397: 3tnk + Location: 66,84 + Owner: USSR + Facing: 0 + Actor401: e2 + Location: 20,85 + Owner: USSR + SubCell: 2 + Actor402: e2 + Location: 26,85 + Owner: USSR + SubCell: 3 + Actor403: e2 + Location: 20,85 + Owner: USSR + SubCell: 1 + Actor404: e2 + Location: 26,85 + Owner: USSR + SubCell: 0 + Actor405: e2 + Location: 26,85 + Owner: USSR + SubCell: 4 + Actor406: e1 + Location: 46,76 + Owner: USSR + SubCell: 4 + Actor407: e1 + Location: 42,76 + Owner: USSR + SubCell: 4 + Actor408: dog + Location: 32,85 + Owner: USSR + Facing: 160 + SubCell: 1 + Actor409: dog + Location: 46,81 + Owner: USSR + SubCell: 3 + Actor410: e1 + Location: 46,88 + Owner: USSR + SubCell: 4 + Actor411: e1 + Location: 42,88 + Owner: USSR + SubCell: 3 + Actor412: e2 + Location: 45,77 + Owner: USSR + SubCell: 2 + Actor413: e2 + Location: 43,76 + Owner: USSR + SubCell: 2 + Actor414: e2 + Location: 45,76 + Owner: USSR + SubCell: 2 + Actor415: e2 + Location: 43,77 + Owner: USSR + SubCell: 2 + Actor421: e1.autotarget + Location: 21,98 + Owner: USSR + SubCell: 1 + Actor422: e1.autotarget + Location: 25,98 + Owner: USSR + SubCell: 2 + Actor423: e2.autotarget + Location: 21,97 + Owner: USSR + SubCell: 1 + Actor424: e2.autotarget + Location: 25,97 + Owner: USSR + SubCell: 2 + Actor425: e2.autotarget + Location: 21,96 + Owner: USSR + SubCell: 1 + Actor426: e2.autotarget + Location: 25,96 + Owner: USSR + SubCell: 2 + Actor427: dog + Location: 25,93 + Owner: USSR + Facing: 160 + SubCell: 3 + Actor430: e1 + Location: 37,60 + Owner: USSR + Facing: 192 + SubCell: 3 + Actor431: e1 + Location: 36,60 + Owner: USSR + Facing: 192 + SubCell: 4 + Actor94: brik + Location: 39,79 + Owner: Neutral + Actor360: brl3 + Location: 21,108 + Owner: USSR + Actor284: fenc + Location: 26,102 + Owner: USSR + Actor285: fenc + Location: 26,105 + Owner: USSR + Actor292: fenc + Location: 25,105 + Owner: USSR + Actor294: fenc + Location: 25,104 + Owner: USSR + Actor295: fenc + Location: 25,103 + Owner: USSR + Actor298: fenc + Location: 24,105 + Owner: USSR + Actor311: fenc + Location: 24,106 + Owner: USSR + Actor334: fenc + Location: 19,109 + Owner: USSR + Actor344: fenc + Location: 20,109 + Owner: USSR + Actor378: fenc + Location: 21,109 + Owner: USSR + Actor379: fenc + Location: 22,109 + Owner: USSR + Actor383: fenc + Location: 23,109 + Owner: USSR + Actor389: fenc + Location: 24,109 + Owner: USSR + Actor394: fenc + Location: 25,109 + Owner: USSR + Actor398: fenc + Location: 26,109 + Owner: USSR + Actor399: fenc + Location: 27,109 + Owner: USSR + Actor400: fenc + Location: 24,104 + Owner: USSR + Actor290: e1 + Location: 65,83 + Owner: USSR + SubCell: 5 + Actor302: dog + Location: 65,83 + Owner: USSR + SubCell: 4 + Facing: 160 + Mammoth: 4tnk + Location: 41,57 + Owner: USSR + Facing: 192 + Dog1: dog + Location: 24,54 + Owner: USSR + Facing: 224 + SubCell: 0 + Dog2: dog + Location: 23,55 + Owner: USSR + Facing: 192 + SubCell: 0 + PatrolA1: e1 + Location: 28,56 + Owner: USSR + SubCell: 2 + PatrolA2: e1 + Location: 28,56 + Owner: USSR + SubCell: 3 + PatrolA3: e1 + Location: 28,56 + Owner: USSR + SubCell: 4 + PatrolA4: e1 + Location: 28,56 + Owner: USSR + SubCell: 0 + PatrolA5: e1 + Location: 28,56 + Owner: USSR + SubCell: 1 + PatrolB1: dog + Location: 50,52 + Owner: USSR + SubCell: 2 + PatrolB2: dog + Location: 49,52 + Owner: USSR + SubCell: 2 + PatrolB3: e1 + Location: 50,52 + Owner: USSR + SubCell: 3 + Truk: truk.mission + Location: 44,52 + Owner: USSR + Facing: 160 + Prison: miss + Location: 25,106 + Owner: USSR + Warfactory: weap + Location: 43,50 + Owner: USSR + Warfactory2: weap + Location: 49,88 + Owner: USSR + Barracks1: barr + Location: 40,53 + Owner: USSR + Barracks2: barr + Location: 56,83 + Owner: USSR + Barracks3: barr + Location: 27,81 + Owner: USSR + Airfield1: afld + Location: 25,89 + Owner: USSR + Airfield2: afld + Location: 17,88 + Owner: USSR + Refinery: proc + Location: 57,91 + Owner: USSR + FreeActor: False + Factory: fact + Location: 16,78 + Owner: USSR + Harvester: harv + Location: 59,91 + Owner: USSR + Facing: 224 + Sam1: sam + Location: 16,107 + Owner: USSR + Sam2: sam + Location: 28,107 + Owner: USSR + Sam3: sam + Location: 17,94 + Owner: USSR + Sam4: sam + Location: 28,94 + Owner: USSR + SamBarrel: barl + Location: 17,108 + Owner: USSR + ExplosiveBarrel: barl + Location: 22,108 + Owner: USSR + FlameBarrel: brl3 + Location: 37,88 + Owner: USSR + FlameTower: ftur + Location: 36,88 + Owner: USSR + SpyEntry: waypoint + Location: 12,50 + Owner: Neutral + SpyLoadout: waypoint + Location: 15,49 + Owner: Neutral + GreeceLoadout1: waypoint + Location: 15,52 + Owner: Neutral + GreeceLoadout2: waypoint + Location: 13,53 + Owner: Neutral + SpyCamera1: waypoint + Location: 43,55 + Owner: Neutral + SpyCamera2: waypoint + Location: 29,58 + Owner: Neutral + DogPatrolRally1: waypoint + Location: 33,56 + Owner: Neutral + DogPatrolRally2: waypoint + Location: 27,64 + Owner: Neutral + DogPatrolRally3: waypoint + Location: 23,54 + Owner: Neutral + PatrolARally1: waypoint + Location: 36,52 + Owner: Neutral + PatrolARally2: waypoint + Location: 26,58 + Owner: Neutral + PatrolARally3: waypoint + Location: 44,60 + Owner: Neutral + PatrolRally: waypoint + Location: 49,52 + Owner: Neutral + PatrolBRally1: waypoint + Location: 37,52 + Owner: Neutral + PatrolBRally2: waypoint + Location: 37,58 + Owner: Neutral + PatrolBRally3: waypoint + Location: 50,57 + Owner: Neutral + TrukWaypoint1: waypoint + Location: 44,74 + Owner: Neutral + TrukWaypoint2: waypoint + Location: 44,80 + Owner: Neutral + TrukWaypoint3: waypoint + Location: 44,87 + Owner: Neutral + TrukWaypoint4: waypoint + Location: 24,87 + Owner: Neutral + TrukWaypoint5: waypoint + Location: 22,103 + Owner: Neutral + TrukWaypoint6: waypoint + Location: 21,107 + Owner: Neutral + SpyWaypoint: waypoint + Location: 23,104 + Owner: Neutral + ExtractionEntry: waypoint + Location: 12,88 + Owner: Neutral + ExtractionLZ: waypoint + Location: 22,99 + Owner: Neutral + ReinforceCamera: waypoint + Location: 18,54 + Owner: Neutral + MainBaseTopLeft: waypoint + Location: 12,71 + Owner: Neutral + VehicleRallypoint1: waypoint + Location: 39,92 + Owner: Neutral + VehicleRallypoint2: waypoint + Location: 48,91 + Owner: Neutral + VehicleRallypoint3: waypoint + Location: 63,87 + Owner: Neutral + VehicleRallypoint4: waypoint + Location: 53,94 + Owner: Neutral + VehicleRallypoint5: waypoint + Location: 47,84 + Owner: Neutral + +Smudges: + +Rules: + Player: + -ConquestVictoryConditions: + MissionObjectives: + EarlyGameOver: true + World: + -CrateSpawner: + -SpawnMPUnits: + -MPStartLocations: + LuaScript: + Scripts: allies05a.lua, AI.lua + ObjectivesPanel: + PanelName: MISSION_OBJECTIVES + ^Infantry: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + ^Tank: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + Demolishable: + ^Vehicle: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + Demolishable: + ^Building: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + ^Plane: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + MustBeDestroyed: + RequiredForShortGame: false + ^Wall: + Tooltip: + ShowOwnerRow: false + ^Husk: + Tooltip: + GenericVisibility: Enemy, Ally, Neutral + GenericStancePrefix: false + ShowOwnerRow: false + ^Crate: + Tooltip: + ShowOwnerRow: false + Camera.Truk: + Mobile: + TerrainSpeeds: + RevealsShroud: + Range: 4c0 + BodyOrientation: + ScriptTriggers: + FTUR: + DetectCloaked: + Range: 0 + TSLA: + DetectCloaked: + Range: 0 + Buildable: + Prerequisites: ~disabled + SAM: + DetectCloaked: + Range: 0 + Buildable: + Prerequisites: ~disabled + LST: + -Selectable: + TRAN: + -Selectable: + RevealsShroud: + Range: 0c0 + Tooltip: + ShowOwnerRow: false + FLARE: + Tooltip: + ShowOwnerRow: false + TRUK.mission: + Inherits: TRUK + Buildable: + Prerequisites: ~disabled + RenderUnit: + Image: TRUK + -LeavesHusk: + -EjectOnDeath: + SPY: + Infiltrates: + Types: Mission Objectives + DisguiseToolTip: + ShowOwnerRow: false + Cloak@MISS: + UpgradeTypes: miss + UpgradeMinEnabledLevel: 1 + InitialDelay: 0 + CloakDelay: 0 + Palette: + CloakUpgrade: + Immobile: + OccupiesSpace: false + BodyOrientation: + UpgradeActorsNear: + Upgrades: miss + Range: 5c512 + WEAP: + TargetableBuilding: + TargetTypes: Ground, C4, DetonateAttack, Structure, Mission Objectives + MISS: + Tooltip: + Name: Prison + TargetableBuilding: + TargetTypes: Ground, C4, DetonateAttack, Structure, Mission Objectives + E7.noautotarget: + Inherits: E7 + RenderInfantry: + Image: E7 + AutoTarget: + EnableStances: false + -AttackMove: + Colt: + -Huntable: + AutoTargetIgnore: + Inherits: ^Defense + Valued: + Cost: 800 + Building: + Footprint: _ x + Dimensions: 1,2 + Health: + HP: 400 + Armor: + Type: Heavy + RevealsShroud: + Range: 0c0 + Turreted: + ROT: 15 + InitialFacing: 224 + RenderBuildingTurreted: + Image: AGUN + Armament: + Weapon: MissionColt + LocalOffset: 432,150,-30, 432,-150,-30 + AttackTurreted: + AutoTarget: + -RenderBuilding: + -Selectable: + E1.Autotarget: + Inherits: E1 + Buildable: + Prerequisites: ~disabled + RevealsShroud: + Range: 8c0 + AutoTarget: + ScanRadius: 7 + RenderInfantry: + Image: E1 + E2.Autotarget: + Inherits: E2 + Buildable: + Prerequisites: ~disabled + RevealsShroud: + Range: 8c0 + AutoTarget: + ScanRadius: 7 + RenderInfantry: + Image: E2 + AFLD: + AirstrikePower@spyplane: + Prerequisites: ~disabled + ParatroopersPower@paratroopers: + Prerequisites: ~disabled + 4TNK: + Buildable: + Prerequisites: ~disabled + MCV: + Buildable: + Prerequisites: ~disabled + MNLY.AP: + Buildable: + Prerequisites: ~disabled + TTNK: + Buildable: + Prerequisites: ~disabled + FTRK: + Buildable: + Prerequisites: ~disabled + DTRK: + Buildable: + Prerequisites: ~disabled + QTNK: + Buildable: + Prerequisites: ~disabled + MSLO: + Buildable: + Prerequisites: ~disabled + SPEN: + Buildable: + Prerequisites: ~disabled + IRON: + Buildable: + Prerequisites: ~disabled + STEK: + Buildable: + Prerequisites: ~disabled + E6: + Buildable: + Prerequisites: ~disabled + HIJACKER: + Buildable: + Prerequisites: ~disabled + SHOK: + Buildable: + Prerequisites: ~disabled + MIG: + Buildable: + Prerequisites: ~disabled + +Sequences: + +VoxelSequences: + +Weapons: + MissionColt: + ReloadDelay: 6 + Range: 7c0 + Report: GUN5.AUD + Projectile: Bullet + High: true + Speed: 1c682 + Warhead@1Dam: SpreadDamage + Spread: 42 + Damage: 50 + DeathType: 2 + Versus: + None: 0 + Wood: 10 + Light: 0 + Heavy: 0 + Concrete: 0 + Warhead@2Eff: CreateEffect + Explosion: piffs + InvalidImpactTypes: Water + +Voices: + +Notifications: + Sounds: + Notifications: + bombit: bombit1 + laugh: laugh1 + gotit: gotit1 + lefty: lefty1 + keepem: keepem1 + tuffguy: tuffguy1 + +Translations: diff --git a/mods/ra/missions.yaml b/mods/ra/missions.yaml index c20ba149df..d56a312213 100644 --- a/mods/ra/missions.yaml +++ b/mods/ra/missions.yaml @@ -3,6 +3,7 @@ Allied Campaign: ./mods/ra/maps/allies-02 ./mods/ra/maps/allies-03a ./mods/ra/maps/allies-03b + ./mods/ra/maps/allies-05a Soviet Campaign: ./mods/ra/maps/soviet-01