Merge pull request #3726 from pchote/cloak-fix

Cloak fixes
This commit is contained in:
Matthias Mailänder
2013-08-23 09:27:56 -07:00
36 changed files with 135 additions and 132 deletions

View File

@@ -36,6 +36,7 @@ namespace OpenRA.Mods.RA.Effects
Lazy<HiddenUnderFog> huf;
Lazy<FrozenUnderFog> fuf;
Lazy<Spy> spy;
Lazy<Cloak> cloak;
Cache<Player, GpsWatcher> watcher;
Cache<Player, FrozenActorLayer> frozen;
@@ -53,15 +54,15 @@ namespace OpenRA.Mods.RA.Effects
huf = Lazy.New(() => self.TraitOrDefault<HiddenUnderFog>());
fuf = Lazy.New(() => self.TraitOrDefault<FrozenUnderFog>());
spy = Lazy.New(() => self.TraitOrDefault<Spy>());
cloak = Lazy.New(() => self.TraitOrDefault<Cloak>());
watcher = new Cache<Player, GpsWatcher>(p => p.PlayerActor.Trait<GpsWatcher>());
frozen = new Cache<Player, FrozenActorLayer>(p => p.PlayerActor.Trait<FrozenActorLayer>());
}
bool ShouldShowIndicator()
{
// Can be granted at runtime via a crate, so can't cache
var cloak = self.TraitOrDefault<Cloak>();
if (cloak != null && cloak.Cloaked)
if (cloak.Value != null && cloak.Value.Cloaked)
return false;
if (spy.Value != null && spy.Value.Disguised)

View File

@@ -59,7 +59,7 @@ namespace OpenRA.Mods.RA.Effects
public void Tick(World world)
{
// Beam tracks target
if (args.guidedTarget.IsValid)
if (args.guidedTarget.IsValidFor(args.sourceActor))
target = args.guidedTarget.CenterPosition;
if (!doneDamage)

View File

@@ -120,7 +120,7 @@ namespace OpenRA.Mods.RA.Effects
anim.Tick();
// Missile tracks target
if (args.guidedTarget.IsValid)
if (args.guidedTarget.IsValidFor(args.sourceActor))
target = args.guidedTarget.CenterPosition;
var dist = target + offset - pos;
@@ -133,7 +133,7 @@ namespace OpenRA.Mods.RA.Effects
desiredFacing = facing + world.SharedRandom.Next(-20, 21);
desiredAltitude = world.SharedRandom.Next(-43, 86);
}
else if (!args.guidedTarget.IsValid)
else if (!args.guidedTarget.IsValidFor(args.sourceActor))
desiredFacing = facing;
facing = Traits.Util.TickFacing(facing, desiredFacing, info.ROT);

View File

@@ -48,7 +48,7 @@ namespace OpenRA.Mods.RA.Effects
if (!doneDamage)
{
var pos = Args.guidedTarget.IsValid ? Args.guidedTarget.CenterPosition : Args.passiveTarget;
var pos = Args.guidedTarget.IsValidFor(Args.sourceActor) ? Args.guidedTarget.CenterPosition : Args.passiveTarget;
Combat.DoImpacts(pos, Args.sourceActor, Args.weapon, Args.firepowerModifier);
doneDamage = true;
}
@@ -58,7 +58,7 @@ namespace OpenRA.Mods.RA.Effects
{
if (!initialized)
{
var pos = Args.guidedTarget.IsValid ? Args.guidedTarget.CenterPosition : Args.passiveTarget;
var pos = Args.guidedTarget.IsValidFor(Args.sourceActor) ? Args.guidedTarget.CenterPosition : Args.passiveTarget;
zap = new TeslaZapRenderable(Args.source, 0, pos - Args.source, Info.Image, Info.BrightZaps, Info.DimZaps);
}
yield return zap;