public override void Action()
        {
            base.Action();
            RPGCharacter target = Target();

            if (target == null)
            {
                return;
            }
            EquipWeapon(target.Logic);

            var side      = PositionMath.GetSidewayTilePos(target.GetTileCoord());
            var avSidePos = PositionMath.MoveableAreaPoints.Intersect(side).ToList();

            if (avSidePos.Count == 0)
            {
                return;
            }
            Vector2Int        bestPos  = PositionMath.GetBestTilePos(avSidePos);
            List <Vector2Int> routines = PositionMath.GetMoveRoutine(bestPos);
            var move = AddSequenceEvent <MoveCharacter>();

            move.CameraFollow      = true;
            move.Routine           = routines;
            move.CharacterID       = -1;
            move.WaitUntilFinished = true;
            move.Speed             = EModeSpeed.Normal;

            BattlePlayer.AssembleAttackSequenceEvent(AddSequenceEvent <AttackAnimation>, logic, target.Logic);
        }