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);
        }
Exemple #2
0
    public List <RPGCharacter> GetSidewayCharacter(Vector2Int tilePos)
    {
        List <RPGCharacter> r = new List <RPGCharacter>();
        var sideways          = PositionMath.GetSidewayTilePos(tilePos);

        foreach (var v in sideways)
        {
            var ch = GetCharacterFromCoord(v);
            if (ch != null)
            {
                r.Add(ch);
            }
        }
        return(r);
    }