Merge pull request #7940 from Unit158/AttackTurreted-fix
Fixed turrets not firing at fast moving targets.
This commit is contained in:
@@ -73,16 +73,28 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
public virtual void Tick(Actor self)
|
public virtual void Tick(Actor self)
|
||||||
{
|
{
|
||||||
if (attack != null && !attack.IsAttacking)
|
// NOTE: FaceTarget is called in AttackTurreted.CanAttack if the turret has a target.
|
||||||
|
if (attack != null)
|
||||||
{
|
{
|
||||||
if (realignTick < info.RealignDelay)
|
if (!attack.IsAttacking)
|
||||||
realignTick++;
|
{
|
||||||
else if (info.RealignDelay > -1)
|
if (realignTick < info.RealignDelay)
|
||||||
DesiredFacing = null;
|
realignTick++;
|
||||||
|
else if (info.RealignDelay > -1)
|
||||||
|
DesiredFacing = null;
|
||||||
|
|
||||||
|
MoveTurret();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
realignTick = 0;
|
realignTick = 0;
|
||||||
|
MoveTurret();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MoveTurret()
|
||||||
|
{
|
||||||
var df = DesiredFacing ?? (facing != null ? facing.Facing : TurretFacing);
|
var df = DesiredFacing ?? (facing != null ? facing.Facing : TurretFacing);
|
||||||
TurretFacing = Util.TickFacing(TurretFacing, df, info.ROT);
|
TurretFacing = Util.TickFacing(TurretFacing, df, info.ROT);
|
||||||
}
|
}
|
||||||
@@ -90,7 +102,8 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public bool FaceTarget(Actor self, Target target)
|
public bool FaceTarget(Actor self, Target target)
|
||||||
{
|
{
|
||||||
DesiredFacing = Util.GetFacing(target.CenterPosition - self.CenterPosition, TurretFacing);
|
DesiredFacing = Util.GetFacing(target.CenterPosition - self.CenterPosition, TurretFacing);
|
||||||
return TurretFacing == DesiredFacing;
|
MoveTurret();
|
||||||
|
return TurretFacing == DesiredFacing.Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Turret offset in world-space
|
// Turret offset in world-space
|
||||||
|
|||||||
Reference in New Issue
Block a user