Combat.DoExplosion now takes a Target
(needs more refactoring)
This commit is contained in:
@@ -75,8 +75,9 @@ namespace OpenRA.Mods.RA.Effects
|
||||
|
||||
var targetPosition = Args.target.CenterLocation + offset;
|
||||
|
||||
var targetUnit = Args.target.traits.GetOrDefault<Unit>();
|
||||
var targetAltitude = targetUnit != null ? targetUnit.Altitude : 0;
|
||||
var targetAltitude = 0;
|
||||
if (Args.target.IsActor && Args.target.Actor.traits.GetOrDefault<Unit>() != null)
|
||||
targetAltitude = Args.target.Actor.traits.GetOrDefault<Unit>().Altitude;
|
||||
Altitude += Math.Sign(targetAltitude - Altitude);
|
||||
|
||||
Traits.Util.TickFacing(ref Facing,
|
||||
@@ -86,7 +87,7 @@ namespace OpenRA.Mods.RA.Effects
|
||||
anim.Tick();
|
||||
|
||||
var dist = targetPosition - Pos;
|
||||
if (dist.LengthSquared < MissileCloseEnough * MissileCloseEnough || Args.target.IsDead)
|
||||
if (dist.LengthSquared < MissileCloseEnough * MissileCloseEnough || !Args.target.IsValid )
|
||||
Explode(world);
|
||||
|
||||
var speed = Scale * Info.Speed * ((targetAltitude > 0 && Info.TurboBoost) ? 1.5f : 1f);
|
||||
|
||||
@@ -76,7 +76,7 @@ namespace OpenRA.Mods.RA.Effects
|
||||
void Explode(World world)
|
||||
{
|
||||
world.AddFrameEndTask(w => w.Remove(this));
|
||||
Combat.DoExplosion(silo.Owner.PlayerActor, weapon, pos.ToInt2(), 0);
|
||||
Combat.DoExplosion(silo.Owner.PlayerActor, weapon, Target.FromPos(pos), 0);
|
||||
world.WorldActor.traits.Get<ScreenShaker>().AddEffect(20, pos, 5);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user