diff --git a/OpenRa.Game/Traits/APMine.cs b/OpenRa.Game/Traits/APMine.cs index deebaf87f1..41a6b3db9c 100644 --- a/OpenRa.Game/Traits/APMine.cs +++ b/OpenRa.Game/Traits/APMine.cs @@ -16,6 +16,9 @@ namespace OpenRa.Game.Traits public void OnCrush(Actor crusher) { + if (crusher.traits.Contains() && crusher.Owner == self.Owner) + return; + Game.world.AddFrameEndTask(_ => { Game.world.Remove(self); @@ -34,7 +37,11 @@ namespace OpenRa.Game.Traits // Mines should explode indiscriminantly of player switch (umt) { - case UnitMovementType.Foot: return true; + case UnitMovementType.Foot: + case UnitMovementType.Wheel: + case UnitMovementType.Track: + return true; + default: return false; } } diff --git a/OpenRa.Game/Traits/ATMine.cs b/OpenRa.Game/Traits/ATMine.cs index 5dcff3c452..9ee444195c 100644 --- a/OpenRa.Game/Traits/ATMine.cs +++ b/OpenRa.Game/Traits/ATMine.cs @@ -17,6 +17,9 @@ namespace OpenRa.Game.Traits public void OnCrush(Actor crusher) { + if (crusher.traits.Contains() && crusher.Owner == self.Owner) + return; + Game.world.AddFrameEndTask(_ => { Game.world.Remove(self); diff --git a/units.ini b/units.ini index 2f40525bee..dd3807c0bc 100755 --- a/units.ini +++ b/units.ini @@ -92,13 +92,13 @@ LongDesc=Deploys into another Construction Yard.\n Unarmed [MNLY.AP] Description=Minelayer (Anti-Personnel) -Traits=Unit, Mobile, RenderUnit, Minelayer +Traits=Unit, Mobile, RenderUnit, Minelayer, MineImmune Voice=VehicleVoice LongDesc=Lays mines to destroy unwary enemy units.\n Unarmed Primary=MINP ;; temporary hack [MNLY.AT] Description=Minelayer (Anti-Tank) -Traits=Unit, Mobile, RenderUnit, Minelayer +Traits=Unit, Mobile, RenderUnit, Minelayer, MineImmune Voice=VehicleVoice LongDesc=Lays mines to destroy unwary enemy units.\n Unarmed Primary=MINV ;; temporary hack