diff --git a/OpenRA.Mods.Common/Traits/RepairsBridges.cs b/OpenRA.Mods.Common/Traits/RepairsBridges.cs index b09b56bab6..5e9e3c7b1e 100644 --- a/OpenRA.Mods.Common/Traits/RepairsBridges.cs +++ b/OpenRA.Mods.Common/Traits/RepairsBridges.cs @@ -62,14 +62,16 @@ namespace OpenRA.Mods.Common.Traits public string VoicePhraseForOrder(Actor self, Order order) { - if (order.OrderString != "RepairBridge") + // TODO: Add support for FrozenActors + if (order.OrderString != "RepairBridge" || order.Target.Type != TargetType.Actor) return null; - var legacyHut = order.TargetActor.TraitOrDefault(); + var targetActor = order.Target.Actor; + var legacyHut = targetActor.TraitOrDefault(); if (legacyHut != null) return legacyHut.BridgeDamageState == DamageState.Undamaged || legacyHut.Repairing || legacyHut.Bridge.IsDangling ? null : info.Voice; - var hut = order.TargetActor.TraitOrDefault(); + var hut = targetActor.TraitOrDefault(); if (hut != null) return hut.BridgeDamageState == DamageState.Undamaged || hut.Repairing ? null : info.Voice; @@ -78,10 +80,12 @@ namespace OpenRA.Mods.Common.Traits public void ResolveOrder(Actor self, Order order) { - if (order.OrderString == "RepairBridge") + // TODO: Add support for FrozenActors + if (order.OrderString == "RepairBridge" && order.Target.Type == TargetType.Actor) { - var legacyHut = order.TargetActor.TraitOrDefault(); - var hut = order.TargetActor.TraitOrDefault(); + var targetActor = order.Target.Actor; + var legacyHut = targetActor.TraitOrDefault(); + var hut = targetActor.TraitOrDefault(); if (legacyHut != null) { if (legacyHut.BridgeDamageState == DamageState.Undamaged || legacyHut.Repairing || legacyHut.Bridge.IsDangling) @@ -98,8 +102,8 @@ namespace OpenRA.Mods.Common.Traits if (!order.Queued) self.CancelActivity(); - self.SetTargetLine(Target.FromOrder(self.World, order), Color.Yellow); - self.QueueActivity(new RepairBridge(self, order.TargetActor, info.EnterBehaviour, info.RepairNotification)); + self.SetTargetLine(order.Target, Color.Yellow); + self.QueueActivity(new RepairBridge(self, targetActor, info.EnterBehaviour, info.RepairNotification)); } }