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