Spy drops disguise on attacking
This commit is contained in:
@@ -73,7 +73,7 @@ namespace OpenRA.Mods.RA
|
|||||||
|
|
||||||
class SpyInfo : TraitInfo<Spy> { }
|
class SpyInfo : TraitInfo<Spy> { }
|
||||||
|
|
||||||
class Spy : IIssueOrder, IResolveOrder, IOrderVoice, IRadarColorModifier
|
class Spy : IIssueOrder, IResolveOrder, IOrderVoice, IRadarColorModifier, INotifyAttack
|
||||||
{
|
{
|
||||||
public Player disguisedAsPlayer;
|
public Player disguisedAsPlayer;
|
||||||
public string disguisedAsSprite, disguisedAsName;
|
public string disguisedAsSprite, disguisedAsName;
|
||||||
@@ -113,18 +113,9 @@ namespace OpenRA.Mods.RA
|
|||||||
var target = order.TargetActor == self ? null : order.TargetActor;
|
var target = order.TargetActor == self ? null : order.TargetActor;
|
||||||
|
|
||||||
if (target != null && target.IsInWorld)
|
if (target != null && target.IsInWorld)
|
||||||
{
|
DisguiseAs(target);
|
||||||
var tooltip = target.TraitsImplementing<IToolTip>().FirstOrDefault();
|
|
||||||
disguisedAsName = tooltip.Name();
|
|
||||||
disguisedAsPlayer = tooltip.Owner();
|
|
||||||
disguisedAsSprite = target.Trait<RenderSimple>().GetImage(target);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
DropDisguise();
|
||||||
disguisedAsName = null;
|
|
||||||
disguisedAsPlayer = null;
|
|
||||||
disguisedAsSprite = null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -141,6 +132,24 @@ namespace OpenRA.Mods.RA
|
|||||||
|
|
||||||
return disguisedAsPlayer.ColorRamp.GetColor(0);
|
return disguisedAsPlayer.ColorRamp.GetColor(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DisguiseAs(Actor target)
|
||||||
|
{
|
||||||
|
var tooltip = target.TraitsImplementing<IToolTip>().FirstOrDefault();
|
||||||
|
disguisedAsName = tooltip.Name();
|
||||||
|
disguisedAsPlayer = tooltip.Owner();
|
||||||
|
disguisedAsSprite = target.Trait<RenderSimple>().GetImage(target);
|
||||||
|
}
|
||||||
|
|
||||||
|
void DropDisguise()
|
||||||
|
{
|
||||||
|
disguisedAsName = null;
|
||||||
|
disguisedAsPlayer = null;
|
||||||
|
disguisedAsSprite = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* lose our disguise if we attack anything */
|
||||||
|
public void Attacking(Actor self, Target target) { DropDisguise(); }
|
||||||
}
|
}
|
||||||
|
|
||||||
class IgnoresDisguiseInfo : TraitInfo<IgnoresDisguise> {}
|
class IgnoresDisguiseInfo : TraitInfo<IgnoresDisguise> {}
|
||||||
|
|||||||
Reference in New Issue
Block a user