Properly account for disabled Armaments in various places

These places didn't care if an Armament was disabled, which could lead to unexpected behavior.
This commit is contained in:
reaperrr
2017-08-19 14:01:48 +02:00
committed by Paul Chote
parent 951ee2210c
commit c75e64a952
3 changed files with 7 additions and 1 deletions

View File

@@ -59,7 +59,7 @@ namespace OpenRA.Mods.Common.Activities
return NextActivity; return NextActivity;
// TODO: This should fire each weapon at its maximum range // TODO: This should fire each weapon at its maximum range
if (attackPlane != null && target.IsInRange(self.CenterPosition, attackPlane.Armaments.Select(a => a.Weapon.MinRange).Min())) if (attackPlane != null && target.IsInRange(self.CenterPosition, attackPlane.Armaments.Where(Exts.IsTraitEnabled).Select(a => a.Weapon.MinRange).Min()))
ChildActivity = ActivityUtils.SequenceActivities(new FlyTimed(ticksUntilTurn, self), new Fly(self, target), new FlyTimed(ticksUntilTurn, self)); ChildActivity = ActivityUtils.SequenceActivities(new FlyTimed(ticksUntilTurn, self), new Fly(self, target), new FlyTimed(ticksUntilTurn, self));
else else
ChildActivity = ActivityUtils.SequenceActivities(new Fly(self, target), new FlyTimed(ticksUntilTurn, self)); ChildActivity = ActivityUtils.SequenceActivities(new Fly(self, target), new FlyTimed(ticksUntilTurn, self));

View File

@@ -151,6 +151,9 @@ namespace OpenRA.Mods.Common.Traits
foreach (var a in Armaments) foreach (var a in Armaments)
{ {
if (a.IsTraitDisabled)
continue;
var port = SelectFirePort(self, targetYaw); var port = SelectFirePort(self, targetYaw);
if (port == null) if (port == null)
return; return;

View File

@@ -115,6 +115,9 @@ namespace OpenRA.Mods.Common.Traits
foreach (var a in attack.Armaments) foreach (var a in attack.Armaments)
{ {
if (a.IsTraitDisabled)
continue;
foreach (var b in a.Barrels) foreach (var b in a.Barrels)
{ {
var muzzle = self.CenterPosition + a.MuzzleOffset(self, b); var muzzle = self.CenterPosition + a.MuzzleOffset(self, b);