diff --git a/OpenRA.Mods.RA/Missions/Allies01Script.cs b/OpenRA.Mods.RA/Missions/Allies01Script.cs index 391723f862..73cc011b9d 100644 --- a/OpenRA.Mods.RA/Missions/Allies01Script.cs +++ b/OpenRA.Mods.RA/Missions/Allies01Script.cs @@ -180,8 +180,10 @@ namespace OpenRA.Mods.RA.Missions void ManageSovietOre() { var res = soviets.PlayerActor.Trait(); - res.TakeOre(res.Ore); - res.TakeCash(res.Cash); + if (res.Ore > res.OreCapacity * 0.8) + { + res.TakeOre(res.OreCapacity / 10); + } } void SpawnSignalFlare() diff --git a/OpenRA.Mods.RA/Missions/Allies04Script.cs b/OpenRA.Mods.RA/Missions/Allies04Script.cs index 18ec3f0458..54c0912277 100644 --- a/OpenRA.Mods.RA/Missions/Allies04Script.cs +++ b/OpenRA.Mods.RA/Missions/Allies04Script.cs @@ -192,8 +192,10 @@ namespace OpenRA.Mods.RA.Missions void ManageSovietOre() { var res = soviets.PlayerActor.Trait(); - res.TakeOre(res.Ore); - res.TakeCash(res.Cash); + if (res.Ore > res.OreCapacity * 0.8) + { + res.TakeOre(res.OreCapacity / 10); + } } void BaseGuardTick() @@ -513,4 +515,30 @@ namespace OpenRA.Mods.RA.Missions class Allies04TrivialBuildingInfo : TraitInfo { } class Allies04TrivialBuilding { } + + class Allies04TryRepairBuildingInfo : ITraitInfo + { + public readonly string Player; + + public object Create(ActorInitializer init) { return new Allies04TryRepairBuilding(this); } + } + + class Allies04TryRepairBuilding : INotifyDamage + { + Allies04TryRepairBuildingInfo info; + + public Allies04TryRepairBuilding(Allies04TryRepairBuildingInfo info) + { + this.info = info; + } + + public void Damaged(Actor self, AttackInfo e) + { + if (self.HasTrait() && self.Owner.InternalName == info.Player && Game.IsHost + && e.DamageState > DamageState.Undamaged && e.PreviousDamageState == DamageState.Undamaged) + { + self.World.IssueOrder(new Order("RepairBuilding", self.Owner.PlayerActor, false) { TargetActor = self }); + } + } + } } diff --git a/mods/ra/maps/allies-04/map.yaml b/mods/ra/maps/allies-04/map.yaml index 1ff5743281..6d640c2cfc 100644 --- a/mods/ra/maps/allies-04/map.yaml +++ b/mods/ra/maps/allies-04/map.yaml @@ -1623,6 +1623,9 @@ Rules: Allies04Script: MissionObjectivesPanel: ObjectivesPanel: MISSION_OBJECTIVES + ^Building: + Allies04TryRepairBuilding: + Player: Soviets MISS: AutoTargetIgnore: LST.Unselectable: