diff --git a/OpenRA.Mods.Cnc/Traits/Disguise.cs b/OpenRA.Mods.Cnc/Traits/Disguise.cs index ec476a9f457e..3658c6776501 100644 --- a/OpenRA.Mods.Cnc/Traits/Disguise.cs +++ b/OpenRA.Mods.Cnc/Traits/Disguise.cs @@ -122,6 +122,8 @@ public Disguise(Actor self, DisguiseInfo info) { this.self = self; this.info = info; + + AsActor = self.Info; } void INotifyCreated.Created(Actor self) @@ -149,8 +151,12 @@ void IResolveOrder.ResolveOrder(Actor self, Order order) { if (order.OrderString == "Disguise") { - var target = order.TargetActor != self && order.TargetActor.IsInWorld ? order.TargetActor : null; - DisguiseAs(target); + var target = order.Target; + if (target.Type == TargetType.Actor) + DisguiseAs((target.Actor != self && target.Actor.IsInWorld) ? target.Actor : null); + + if (target.Type == TargetType.FrozenActor) + DisguiseAs(target.FrozenActor.Info, target.FrozenActor.Owner); } } diff --git a/OpenRA.Mods.Cnc/Traits/Render/WithDisguisingInfantryBody.cs b/OpenRA.Mods.Cnc/Traits/Render/WithDisguisingInfantryBody.cs index 7e4385c49c37..7e7cd6600f11 100644 --- a/OpenRA.Mods.Cnc/Traits/Render/WithDisguisingInfantryBody.cs +++ b/OpenRA.Mods.Cnc/Traits/Render/WithDisguisingInfantryBody.cs @@ -45,7 +45,7 @@ protected override void Tick(Actor self) disguisePlayer = disguise.AsPlayer; disguiseImage = null; - if (disguiseActor != null) + if (disguisePlayer != null) { var renderSprites = disguiseActor.TraitInfoOrDefault(); if (renderSprites != null)