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); }
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); }