Prevent attack move crashing if selected actors die.
- Cancel attack move if all actors die. - Command bar no longer shows available actions from any dead units.
This commit is contained in:
@@ -165,6 +165,12 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void Tick(World world)
|
||||||
|
{
|
||||||
|
if (subjects.All(s => s.Actor.IsDead))
|
||||||
|
world.CancelInputMode();
|
||||||
|
}
|
||||||
|
|
||||||
public override string GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi)
|
public override string GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi)
|
||||||
{
|
{
|
||||||
var prefix = mi.Modifiers.HasModifier(Modifiers.Ctrl) ? "assaultmove" : "attackmove";
|
var prefix = mi.Modifiers.HasModifier(Modifiers.Ctrl) ? "assaultmove" : "attackmove";
|
||||||
|
|||||||
@@ -267,7 +267,7 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
selectedActors = world.Selection.Actors
|
selectedActors = world.Selection.Actors
|
||||||
.Where(a => a.Owner == world.LocalPlayer && a.IsInWorld)
|
.Where(a => a.Owner == world.LocalPlayer && a.IsInWorld && !a.IsDead)
|
||||||
.ToArray();
|
.ToArray();
|
||||||
|
|
||||||
attackMoveDisabled = !selectedActors.Any(a => a.Info.HasTraitInfo<AttackMoveInfo>() && a.Info.HasTraitInfo<AutoTargetInfo>());
|
attackMoveDisabled = !selectedActors.Any(a => a.Info.HasTraitInfo<AttackMoveInfo>() && a.Info.HasTraitInfo<AutoTargetInfo>());
|
||||||
|
|||||||
Reference in New Issue
Block a user