public Shove ( Creature target, int distance ) : Position | ||
target | Creature | Entity to be knocked back |
distance | int | Distance to knock back the target |
return | Position |
public Position Shove(Creature target, int distance)
{
var attackerPosition = this.GetPosition();
var targetPosition = target.GetPosition();
var newPos = attackerPosition.GetRelative(targetPosition, distance);
Position intersection;
if (target.Region.Collisions.Find(targetPosition, newPos, out intersection))
newPos = targetPosition.GetRelative(intersection, -50);
target.SetPosition(newPos.X, newPos.Y);
return newPos;
}
/// <summary> /// Handles knock back/stun/death. /// </summary> protected override void HandleKnockBack(Creature attacker, Creature target, TargetAction tAction, bool overcharge) { attacker.Shove(target, KnockbackDistance); if (target.IsDead) tAction.Set(TargetOptions.FinishingKnockDown); else tAction.Set(TargetOptions.KnockDown); }