public void Action(List <Tile> tiles, Action callback = null, bool free = false, List <SkillModifier> mods = null, bool animation = true) { if (mods != null) { skillModifiers = mods; } if (tiles.Count > 0) { boardEntity.SetAnimationDirection(AnimatorUtils.GetAttackDirectionCode(boardEntity.GetTile().Position, tiles[0].Position)); if (animationType != AnimatorUtils.animationType.none && animation) { boardEntity.SetAnimation(animationType); } } SkillReport report = ActionHelper(tiles); if (report != null) { foreach (Tuple <Stats, Stats> stat in report.targets) { foreach (Passive p in ((CharacterBoardEntity)stat.first.BoardEntity).Passives) { p.AttackedBy(boardEntity); } } } ActionHelperNoPreview(tiles, () => previewCallback(report, free, tiles, callback)); }
private void ChangeTarget() { // we gotta check to see if we just walked into a taunt, we will have to do this for stun as well /*if (GetTauntTiles().Count != 0) * { * HashSet<Tile> tauntTiles = GetTauntTiles(); * for(int a = 0; a < path.Count; a++) * { * if (tauntTiles.Contains(path[a])) * { * path.RemoveRange(a, path.Count - a); * interupted = true; * } * } * } */ if (path.Count > 0) { AnimatorUtils.animationDirection dir = AnimatorUtils.GetAttackDirectionCode(GetTile().Position, path[0].Position); if (!pushing) { SetAnimationDirection(dir); } target = path[0]; path.RemoveAt(0); pathCounter++; if (charging) { Position targetTile = position + direction; Tile t = tileManager.GetTile(targetTile); if (t != null && t.BoardEntity != null && t.BoardEntity.Team != Team) { chargeCounter++; Tile newTile = tileManager.GetTile(targetTile + direction); AnimatorUtils.animationDirection pushDir = AnimatorUtils.GetAttackDirectionCode(newTile.Position, position); ((CharacterBoardEntity)t.BoardEntity).ExecutePush(newTile, pushDir); } } } else { bool display = team == Team.Player; if (!charging) { stats.SubtractMovementPoints(pathCounter, display); } if (interuptClearMovement) { stats.SetMutableStat(AttributeStats.StatType.Movement, 0); stats.SetMutableStat(AttributeStats.StatType.AP, 0); interuptClearMovement = false; } // all done moving target = null; PathOnClick.pause = false; OutlineOnHover.disabled = false; if (characterAnimation != null) { SetAnimation(AnimatorUtils.animationType.idle); } if (moveDoneCallback != null) { Action <bool> tempMoveDoneCallback = moveDoneCallback; moveDoneCallback = null; tempMoveDoneCallback(interupted); } if (charging) { Position targetTile = position + direction; Tile t = tileManager.GetTile(targetTile); if (t != null && t.BoardEntity != null && t.BoardEntity.Team != Team) { chargeCallback(chargeCounter, Core.Instance.convert(t.BoardEntity)); } else { chargeCallback(chargeCounter, null); } charging = false; } } }