diff --git a/OpenRA.Mods.RA/Missions/Allies01Script.cs b/OpenRA.Mods.RA/Missions/Allies01Script.cs index 3a1aa79299..00bd27572d 100644 --- a/OpenRA.Mods.RA/Missions/Allies01Script.cs +++ b/OpenRA.Mods.RA/Missions/Allies01Script.cs @@ -190,27 +190,15 @@ namespace OpenRA.Mods.RA.Missions void ManageSovietUnits() { - foreach (var unit in world.Actors.Where(a => a != world.WorldActor && a.IsInWorld && a.Owner == soviets && !a.IsDead() && a.IsIdle + foreach (var unit in world.Actors.Where(a => a.IsInWorld && a.Owner == soviets && !a.IsDead() && a.IsIdle && a.HasTrait() && a.HasTrait())) { - Activity innerActivity; - if (einstein != null) - { - if (einstein.IsInWorld) - innerActivity = new Attack(Target.FromActor(einstein), 3); - - else - { - var container = world.UnitContaining(einstein); - - if (container != null && !container.HasTrait() && container.HasTrait()) - innerActivity = new Attack(Target.FromActor(container), 3); - - else - innerActivity = new Move.Move(extractionLZ.Location, 3); - } - unit.QueueActivity(new AttackMove.AttackMoveActivity(unit, innerActivity)); - } + Activity inner; + if (einstein != null && einstein.IsInWorld) + inner = new Attack(Target.FromActor(einstein), 3); + else + inner = new Move.Move(extractionLZ.Location, 3); + unit.QueueActivity(new AttackMove.AttackMoveActivity(unit, inner)); } } @@ -290,6 +278,8 @@ namespace OpenRA.Mods.RA.Missions allies = w.Players.Single(p => p.InternalName == "Allies"); soviets = w.Players.Single(p => p.InternalName == "Soviets"); + allies.PlayerActor.Trait().Cash = 0; + var actors = w.WorldActor.Trait().Actors; insertionLZ = actors["InsertionLZ"]; extractionLZ = actors["ExtractionLZ"]; @@ -303,10 +293,6 @@ namespace OpenRA.Mods.RA.Missions attackEntryPoint2 = actors["SovietAttackEntryPoint2"]; SetAlliedUnitsToDefensiveStance(); - var alliesRes = allies.PlayerActor.Trait(); - alliesRes.TakeCash(alliesRes.Cash); - alliesRes.TakeOre(alliesRes.Ore); - Game.MoveViewport(insertionLZ.Location.ToFloat2()); if (MissionUtils.IsSingleClient(world)) diff --git a/OpenRA.Mods.RA/Missions/Allies02Script.cs b/OpenRA.Mods.RA/Missions/Allies02Script.cs index 1fd3c1be01..5050e5cd67 100644 --- a/OpenRA.Mods.RA/Missions/Allies02Script.cs +++ b/OpenRA.Mods.RA/Missions/Allies02Script.cs @@ -459,7 +459,8 @@ namespace OpenRA.Mods.RA.Missions void TransferTownUnitsToAllies() { - foreach (var unit in world.FindAliveNonCombatantActorsInCircle(townPoint.CenterLocation, AlliedTownTransferRange).Where(a => a.HasTrait())) + foreach (var unit in world.FindAliveNonCombatantActorsInCircle(townPoint.CenterLocation, AlliedTownTransferRange) + .Where(a => a.HasTrait())) unit.ChangeOwner(allies1); } @@ -480,8 +481,14 @@ namespace OpenRA.Mods.RA.Missions allies1 = w.Players.Single(p => p.InternalName == "Allies1"); allies2 = w.Players.SingleOrDefault(p => p.InternalName == "Allies2"); + + var res = allies1.PlayerActor.Trait().Cash = 5000; if (allies2 == null) allies2 = allies1; + else + { + allies2.PlayerActor.Trait().Cash = 5000; + } allies = w.Players.Single(p => p.InternalName == "Allies"); soviets = w.Players.Single(p => p.InternalName == "Soviets"); diff --git a/OpenRA.Mods.RA/Missions/Allies03Script.cs b/OpenRA.Mods.RA/Missions/Allies03Script.cs index 0057d87f1a..ed23e76954 100644 --- a/OpenRA.Mods.RA/Missions/Allies03Script.cs +++ b/OpenRA.Mods.RA/Missions/Allies03Script.cs @@ -298,10 +298,8 @@ namespace OpenRA.Mods.RA.Missions void AttackNearestAlliedActor(Actor self) { - var enemies = world.Actors - .Where(u => (u.Owner == allies1 || u.Owner == allies2) - && ((u.HasTrait() && !u.HasTrait()) || u.HasTrait()) && u.IsInWorld && !u.IsDead() - && (!u.HasTrait() || !u.Trait().Disguised || (u.Trait().Disguised && u.Trait().disguisedAsPlayer != soviets))); + var enemies = world.Actors.Where(u => u.AppearsHostileTo(self) && (u.Owner == allies1 || u.Owner == allies2) + && ((u.HasTrait() && !u.HasTrait()) || u.HasTrait()) && u.IsInWorld && !u.IsDead()); var enemy = FirstUnshroudedOrDefault(enemies.OrderBy(u => (self.CenterLocation - u.CenterLocation).LengthSquared), world, 10); if (enemy != null) @@ -396,8 +394,19 @@ namespace OpenRA.Mods.RA.Missions allies1 = w.Players.Single(p => p.InternalName == "Allies1"); allies2 = w.Players.SingleOrDefault(p => p.InternalName == "Allies2"); + + var res = allies1.PlayerActor.Trait(); if (allies2 == null) + { + res.Cash = 10000; allies2 = allies1; + } + else + { + res.Cash = 5000; + res = allies2.PlayerActor.Trait(); + res.Cash = 5000; + } attackAtFrame = attackAtFrameIncrement = difficulty == "Hard" || difficulty == "Normal" ? 500 : 600; minAttackAtFrame = difficulty == "Hard" || difficulty == "Normal" ? 100 : 150; @@ -441,7 +450,7 @@ namespace OpenRA.Mods.RA.Missions var topLeft = actors["ParadropBoxTopLeft"]; var bottomRight = actors["ParadropBoxBottomRight"]; paradropBox = new Rectangle(topLeft.Location.X, topLeft.Location.Y, bottomRight.Location.X - topLeft.Location.X, bottomRight.Location.Y - topLeft.Location.Y); - + if (w.LocalPlayer == null || w.LocalPlayer == allies1) Game.MoveViewport(allies1EntryPoint.Location.ToFloat2()); diff --git a/OpenRA.Mods.RA/Missions/Allies04Script.cs b/OpenRA.Mods.RA/Missions/Allies04Script.cs index b7bb33ae79..3b934584de 100644 --- a/OpenRA.Mods.RA/Missions/Allies04Script.cs +++ b/OpenRA.Mods.RA/Missions/Allies04Script.cs @@ -13,7 +13,6 @@ using System.Collections.Generic; using System.Linq; using OpenRA.FileFormats; using OpenRA.Mods.RA.Activities; -using OpenRA.Mods.RA.Air; using OpenRA.Mods.RA.Buildings; using OpenRA.Mods.RA.Move; using OpenRA.Mods.RA.Render; @@ -360,8 +359,14 @@ namespace OpenRA.Mods.RA.Missions allies1 = w.Players.Single(p => p.InternalName == "Allies1"); allies2 = w.Players.SingleOrDefault(p => p.InternalName == "Allies2"); + + allies1.PlayerActor.Trait().Cash = 0; if (allies2 == null) allies2 = allies1; + else + { + allies2.PlayerActor.Trait().Cash = 0; + } soviets = w.Players.Single(p => p.InternalName == "Soviets"); neutral = w.Players.Single(p => p.InternalName == "Neutral"); @@ -447,16 +452,6 @@ namespace OpenRA.Mods.RA.Missions OnObjectivesUpdated(false); SetupSubStances(); - var res = allies1.PlayerActor.Trait(); - res.TakeOre(res.Ore); - res.TakeCash(res.Cash); - if (allies1 != allies2) - { - res = allies2.PlayerActor.Trait(); - res.TakeOre(res.Ore); - res.TakeCash(res.Cash); - } - Game.MoveViewport(spyReinforcementsEntryPoint.Location.ToFloat2()); MissionUtils.PlayMissionMusic(); }