Beispiel #1
0
        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);
        }
Beispiel #4
0
        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(); });
            }
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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);
 }