fixed taking over sam/pillbox/etc. to stop firing
fixed issue with powered down samsites more optimization very small optimization undo changes to powerdown samsite fixes refixed powered down sam sites removed debug line redid the fix in another approach by queueing a sell activity on the top of the queue. This was already present but didn't always work fixed line I removed prevented attack activity to be queued when actor is disabled another style fail of me reverse and queueactivity activities are now executed on top of the queue for a sell action
This commit is contained in:
@@ -164,6 +164,9 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
public void AttackTarget(Target target, bool queued, bool allowMove)
|
||||
{
|
||||
if (self.IsDisabled())
|
||||
return;
|
||||
|
||||
if (!target.IsValidFor(self))
|
||||
return;
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
public override object Create(ActorInitializer init) { return new AttackFollow(init.Self, this); }
|
||||
}
|
||||
|
||||
public class AttackFollow : AttackBase, ITick, ISync
|
||||
public class AttackFollow : AttackBase, ITick, INotifyOwnerChanged, ISync
|
||||
{
|
||||
public Target Target { get; protected set; }
|
||||
|
||||
@@ -46,6 +46,11 @@ namespace OpenRA.Mods.Common.Traits
|
||||
Target = Target.Invalid;
|
||||
}
|
||||
|
||||
public void OnOwnerChanged(Actor self, Player oldOwner, Player newOwner)
|
||||
{
|
||||
Target = Target.Invalid;
|
||||
}
|
||||
|
||||
class AttackActivity : Activity
|
||||
{
|
||||
readonly AttackFollow attack;
|
||||
|
||||
@@ -35,12 +35,11 @@ namespace OpenRA.Mods.Common.Traits
|
||||
if (!base.CanAttack(self, target))
|
||||
return false;
|
||||
|
||||
var canAttack = false;
|
||||
foreach (var t in turrets)
|
||||
if (t.FaceTarget(self, target))
|
||||
canAttack = true;
|
||||
return true;
|
||||
|
||||
return canAttack;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,13 +46,13 @@ namespace OpenRA.Mods.Common.Traits
|
||||
}
|
||||
}
|
||||
|
||||
public void Reverse(Actor self, Activity activity)
|
||||
public void Reverse(Actor self, Activity activity, bool queued = true)
|
||||
{
|
||||
renderBuilding.PlayCustomAnimBackwards(self, info.Sequence, () =>
|
||||
{
|
||||
// avoids visual glitches as we wait for the actor to get destroyed
|
||||
renderBuilding.DefaultAnimation.PlayFetchIndex(info.Sequence, () => 0);
|
||||
self.QueueActivity(activity);
|
||||
self.QueueActivity(queued, activity);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,9 +53,9 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
var makeAnimation = self.TraitOrDefault<WithMakeAnimation>();
|
||||
if (makeAnimation != null)
|
||||
makeAnimation.Reverse(self, new Sell());
|
||||
makeAnimation.Reverse(self, new Sell(), false);
|
||||
else
|
||||
self.QueueActivity(new Sell());
|
||||
self.QueueActivity(false, new Sell());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user