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)); }
protected override SkillReport ActionHelper(List <Tile> t) { SkillReport report = new SkillReport() { targetAfter = t[0].BoardEntity.Stats.GetCopy(), targetBefore = t[0].BoardEntity.Stats.GetCopy() }; report.Buffs = GetBuffs(); return(report); }
protected override SkillReport ActionHelper(List <Tile> tiles) { List <DamagePackage> packages = GenerateDamagePackages(); List <BoardEntity> entities = TeamTiles(tiles, OtherTeam()); SkillReport report = null; foreach (BoardEntity entity in entities) { if (entity.Team != boardEntity.Team) { report = battleCalculator.ExecuteSkillDamage(boardEntity, this, (CharacterBoardEntity)entity, packages); } } return(report); }
private void previewCallback(SkillReport report, bool free, List <Tile> tiles, Action callback) { battleCalculator.ExecuteSkillReport(report); foreach (Tile t in tiles) { if (TileHasTarget(t)) { foreach (Buff b in GetBuffs()) { ((CharacterBoardEntity)t.BoardEntity).AddPassive(b); } } } if (!free) { currentCoolDown = GetCoolDown(); if (GetAPCost() > 0) { boardEntity.Stats.SubtractAPPoints(GetAPCost(), boardEntity.Team == Team.Player); } } // tell the passives what just happened foreach (Passive passive in boardEntity.Passives) { passive.ExecutedSkillFast(this, report); } // tell the passives what just happened foreach (Passive passive in boardEntity.Passives) { passive.ExecutedSkill(this, report); } skillModifiers = new List <SkillModifier>(); turnManager.CheckEntitiesForDeath(); if (callback != null) { Core.CallbackDelay(.8f, () => { callback(); }); } }
protected override SkillReport ActionHelper(List <Tile> tiles) { SkillReport skillReport = null; if (tiles != null) { foreach (Tile t in tiles) { if (t.BoardEntity != null && TileHasTarget(t)) { // warning hack, I need to refigure out combining skill reports if (skillReport != null) { battleCalculator.ExecuteSkillReport(skillReport); } skillReport = battleCalculator.ExecuteSkillDamage(boardEntity, this, (CharacterBoardEntity)t.BoardEntity, GenerateDamagePackages()); } } } return(skillReport); }
public virtual List <TileSelectOption> TileOptionSet() { List <Tile> tiles = TileSetHelper(boardEntity.Position); HashSet <Tile> usedTiles = new HashSet <Tile>(); List <TileSelectOption> tileOptions = new List <TileSelectOption>(); foreach (Tile t in tiles) { usedTiles.Add(t); bool clickable = TileOptionClickable(t); SkillReport skillReport = null; if (clickable) { skillReport = TheoreticalAction(t); } Stats targetAfter = null; if (clickable && skillReport != null) { targetAfter = skillReport.TargetAfter; } tileOptions.Add(new TileSelectOption { Selection = t, OnHover = TileReturnHelper(t), HighlightColor = selectColor, HoverColor = highlightColor, DisplayStats = targetAfter, skillReport = skillReport, Clickable = TileOptionClickable(t), ReturnObject = TileReturnHelper(t) }); } return(tileOptions); }
public void AddTogether(SkillReport skillReport) { targets.AddRange(skillReport.targets); }