use CenterLocation, not Location, to determine facing during attack
This commit is contained in:
@@ -42,22 +42,16 @@ namespace OpenRA.Mods.RA.Activities
|
|||||||
if (!Target.IsValid)
|
if (!Target.IsValid)
|
||||||
return NextActivity;
|
return NextActivity;
|
||||||
|
|
||||||
var mobile = self.Trait<Mobile>();
|
|
||||||
var targetCell = Util.CellContaining(Target.CenterLocation);
|
|
||||||
|
|
||||||
if (!Combat.IsInRange( self.CenterLocation, Range, Target))
|
if (!Combat.IsInRange( self.CenterLocation, Range, Target))
|
||||||
return Util.SequenceActivities( mobile.MoveTo( Target, Range ), this );
|
return Util.SequenceActivities( self.Trait<Mobile>().MoveTo( Target, Range ), this );
|
||||||
|
|
||||||
var desiredFacing = Util.GetFacing((targetCell - self.Location).ToFloat2(), 0);
|
var desiredFacing = Util.GetFacing(Target.CenterLocation - self.CenterLocation, 0);
|
||||||
var renderUnit = self.TraitOrDefault<RenderUnit>();
|
var renderUnit = self.TraitOrDefault<RenderUnit>();
|
||||||
var numDirs = (renderUnit != null)
|
var numDirs = (renderUnit != null)
|
||||||
? renderUnit.anim.CurrentSequence.Facings : 8;
|
? renderUnit.anim.CurrentSequence.Facings : 8;
|
||||||
|
|
||||||
if (Util.QuantizeFacing(facing.Facing, numDirs)
|
if (facing.Facing != desiredFacing)
|
||||||
!= Util.QuantizeFacing(desiredFacing, numDirs))
|
|
||||||
{
|
|
||||||
return Util.SequenceActivities( new Turn( desiredFacing ), this );
|
return Util.SequenceActivities( new Turn( desiredFacing ), this );
|
||||||
}
|
|
||||||
|
|
||||||
attack.target = Target;
|
attack.target = Target;
|
||||||
attack.DoAttack(self, Target);
|
attack.DoAttack(self, Target);
|
||||||
|
|||||||
Reference in New Issue
Block a user