Example #1
0
 public override void ExecutedSkillFast(Skill skill, SkillReport skillreport)
 {
     if (skill.GetRange() != Skill.RANGE_SELF)
     {
         Remove();
     }
 }
 public override void ExecutedSkill(Skill skill, SkillReport skillreport)
 {
     if (skillreport.TargetAfter.MutableStats[AttributeStats.StatType.Health].Value == 0)
     {
         boardEntity.Stats.AddActionPoints(1);
     }
 }
Example #3
0
        private int HealthAfterDamage(SkillReport report, Stats targetStats, DamagePackage damage)
        {
            Stats beforeStats = targetStats.GetCopy();
            Stats afterStats  = targetStats.GetCopy();
            int   tempArmour  = 0;

            if (damage.Type == DamageType.physical)
            {
                tempArmour  = targetStats.GetNonMuttableStat(StatType.Armour).Value;
                tempArmour -= damage.Piercing;
                if (tempArmour < 0)
                {
                    tempArmour = 0;
                }
            }
            if (damage.Type == DamageType.physical || damage.Type == DamageType.pure)
            {
                int tempDamage = damage.Damage;
                if (damage.Type == DamageType.physical)
                {
                    tempDamage -= tempArmour;
                    if (tempDamage < 0)
                    {
                        tempDamage = 0;
                    }
                }
                int oldHealth = targetStats.GetMutableStat(StatType.Health).Value;

                int newHealth = oldHealth - tempDamage;
                if (newHealth <= 0)
                {
                    // dat bibba dead
                    newHealth = 0;
                }

                DamageDisplay damageDisplay = new DamageDisplay();
                damageDisplay.value     = tempDamage;
                damageDisplay.character = (CharacterBoardEntity)targetStats.BoardEntity;
                if (damage.Type == DamageType.physical)
                {
                    damageDisplay.color = Color.red;
                }
                else
                {
                    damageDisplay.color = Color.magenta;
                }
                report.DamageDisplays.Add(damageDisplay);

                afterStats.SetMutableStat(StatType.Health, newHealth);
                report.targetAfter  = afterStats;
                report.targetBefore = beforeStats;

                return(newHealth);
            }
            else
            {
                return(targetStats.GetMutableStat(StatType.Health).Value);
            }
        }
Example #4
0
 public override void ExecutedSkill(Skill skill, SkillReport skillreport)
 {
     if (skill is BasicAttack)
     {
         skillreport.targetAfter.BoardEntity.AddPassive(new BuffStun());
         Remove();
     }
 }
Example #5
0
        public void AddAttackAction(Skill skill, Tile t, Action callBack)
        {
            SkillReport report = skill.TheoreticalAction(t);

            if (report.TargetAfter.MutableStats[AttributeStats.StatType.Health].Value == 0)
            {
                scoredKill = true;
            }
            targetScore = report.targetAfter.GetMutableStat(AttributeStats.StatType.Health).Value;
            apCost     += skill.GetAPCost();
            actions.Add(() => skill.Action(t, callBack));
        }
Example #6
0
 public void QuickDamage(CharacterBoardEntity target, List <DamagePackage> damages)
 {
     foreach (DamagePackage package in damages)
     {
         SkillReport report     = new SkillReport();
         int         health     = HealthAfterDamage(report, target.Stats, package);
         Stats       afterStats = target.Stats.GetCopy();
         afterStats.SetMutableStat(StatType.Health, health);
         report.targets.Add(new Tuple <Stats, Stats>(target.Stats.GetCopy(), afterStats));
         ExecuteSkillReport(report);
     }
     turnManager.CheckEntitiesForDeath();
 }
 public override void ExecutedSkill(Skill skill, SkillReport skillreport)
 {
     if (skillreport != null)
     {
         foreach (Tuple <Stats, Stats> statInstance in skillreport.targets)
         {
             if (statInstance.second.GetMutableStat(StatType.Health).Value == 0)
             {
                 Trigger();
             }
         }
     }
 }
 public override void ExecutedSkill(Skill skill, SkillReport skillReport)
 {
     if (skillReport != null)
     {
         foreach (Tuple <Stats, Stats> report in skillReport.targets)
         {
             int difference      = report.first.GetMutableStat(StatType.Health).Value - report.second.GetMutableStat(StatType.Health).Value;
             int damageThreshold = Mathf.CeilToInt(report.second.GetNonMuttableStat(StatType.Health).Value *damagePercentage);
             if (difference >= damageThreshold)
             {
                 Trigger();
                 //this should only trigger once ?? might change
                 break;
             }
         }
     }
 }
Example #9
0
        private StatisticsSkillEntity BuildSkillEntity(SkillReport outputskill, string type, string source)
        {
            var entity = new StatisticsSkillEntity();

            entity.Id    = outputskill.SkillId;
            entity.Round = outputskill.Round;
            entity.Name  = ModelMgr.GetSkillStr(outputskill.SkillId.ToString());
            if (outputskill.SkillTargets != null && outputskill.SkillTargets.Length > 0)
            {
                foreach (var t in outputskill.SkillTargets)
                {
                    entity.Target += t.ToString() + ',';
                }
                entity.Target = entity.Target.TrimEnd(',');
            }
            entity.Type   = type;
            entity.Source = source;
            return(entity);
        }
Example #10
0
        public SkillReport getEmployeesBySkill(string skillName)
        {
            var employees =
                graphClient.Cypher
                .Match("(emp:Employee)-[rel:HAS_EXPERIENCE]->(sk:Skill)")
                .Where("sk.name = {skillName}")
                .WithParam("skillName", skillName)
                .ReturnDistinct((emp, rel) => new
            {
                Emp = emp.As <Employee>().name,
                Rel = rel.As <SkillExperience>().level
            })
                .Results;

            SkillReport skrp = new SkillReport(skillName);

            foreach (var employee in employees)
            {
                switch (employee.Rel)
                {
                case "Junior":
                    skrp.junior.Add(employee.Emp);
                    break;

                case "Intermediate":
                    skrp.intermediate.Add(employee.Emp);
                    break;

                case "Senior":
                    skrp.senior.Add(employee.Emp);
                    break;

                case "Lead":
                    skrp.lead.Add(employee.Emp);
                    break;
                }
            }

            return(skrp);
        }
Example #11
0
        public void ExecuteSkillReport(SkillReport skillReport)
        {
            if (skillReport != null)
            {
                foreach (Tuple <Stats, Stats> stats in skillReport.targets)
                {
                    stats.second.BoardEntity.Stats = stats.second;
                    stats.second.UpdateStatHandler();
                }

                // should put this in an couroutine for later and make more better
                foreach (DamageDisplay displayDamage in skillReport.DamageDisplays)
                {
                    displayDamage.character.GetComponent <FloatingTextGenerator>().AddTextDisplay(displayDamage.GetFloatingText());
                }
                foreach (TextDisplay textDisplay in skillReport.TextDisplays)
                {
                    textDisplay.target.GetComponent <FloatingTextGenerator>().AddTextDisplay(textDisplay);
                }
                turnManager.CheckEntitiesForDeath();
            }
        }
Example #12
0
        public SkillReport ExecuteSkillHealing(Skill skill, CharacterBoardEntity source, CharacterBoardEntity target, int value)
        {
            SkillReport report = new SkillReport();

            report.targetBefore = target.Stats.GetCopy();
            report.targetAfter  = target.Stats.GetCopy();

            report.targetAfter.SetMutableStat(StatType.Health, report.targetAfter.GetMutableStat(StatType.Health).Value + value);
            report.targets.Add(new Tuple <Stats, Stats>(report.targetBefore, report.targetAfter));

            int healValue = report.targetAfter.GetMutableStat(StatType.Health).Value - report.targetBefore.GetMutableStat(StatType.Health).Value;

            report.TextDisplays.Add(new TextDisplay()
            {
                text      = "+ " + healValue,
                textColor = Color.green,
                callback  = (() => target.SetAnimation(Common.Animator.AnimatorUtils.animationType.win)),
                target    = target
            });

            return(report);
        }
Example #13
0
        public SkillReport ExecuteSkillDamage(CharacterBoardEntity source, Skill skill, CharacterBoardEntity target, List <DamagePackage> damage)
        {
            SkillReport skillReport = ExecuteSkillHelper(source, skill, target, damage);

            return(skillReport);
        }
Example #14
0
 /// <summary>
 /// when a skill is executed
 /// </summary>
 /// <param name="skillreport"></param>
 public virtual void ExecutedSkill(Skill skill, SkillReport skillreport)
 {
 }
Example #15
0
 private void processBoardEntity(BoardEntity boardEntity, Stats previewStats = null, SkillReport skillreport = null)
 {
     if (previewStats != null)
     {
         apDisplay.DisplayAp(boardEntity, previewStats);
     }
     else
     {
         apDisplay.DisplayAp(boardEntity);
     }
     UpdateProfilePic(boardEntity.ProfileImage);
     foreach (GameObject g in texts)
     {
         Destroy(g);
     }
     foreach (GameObject g in passives)
     {
         Destroy(g);
     }
     AddTitle(boardEntity.Name);
     EvaluateStats(boardEntity, previewStats, skillreport);
     if (showPassives)
     {
         if (boardEntity is CharacterBoardEntity)
         {
             AddPassives(((CharacterBoardEntity)boardEntity).Passives);
         }
     }
 }
Example #16
0
        private void EvaluateStats(BoardEntity boardEntity, Stats previewStats = null, SkillReport skillReport = null)
        {
            foreach (StatType type in displayOrder)
            {
                string text = boardEntity.Stats.StatToString(type);
                if (previewStats != null)
                {
                    Color?col = GetStatChangeColor(boardEntity, previewStats, type);
                    if (col != null)
                    {
                        text += ColorText((Color)col, " -> " + previewStats.StatValueString(type));
                    }
                }
                if (skillReport != null)
                {
                    List <StatModifier> mods = new List <StatModifier>();
                    foreach (Buff buff in skillReport.Buffs)
                    {
                        mods.AddRange(buff.GetStatModifiers());
                    }
                    int value = skillReport.targetAfter.GetDefaultStat(type, mods).Value;
                    skillReport.targetAfter.modifiers = mods;

                    Color?col = GetStatChangeColor(boardEntity, skillReport.targetAfter, type);
                    if (col != null)
                    {
                        text += ColorText((Color)col, " -> " + skillReport.targetAfter.StatValueString(type));
                    }
                    skillReport.targetAfter.modifiers = new List <StatModifier>();
                }
                AddText(text, Stats.StatTypeToTooltip(type));
            }
            AddRangeText(boardEntity);
        }
Example #17
0
 public override void ExecutedSkill(Skill skill, SkillReport skillreport)
 {
     base.ExecutedSkill(skill, skillreport);
     Remove();
 }
Example #18
0
        public void UpdateProfile(BoardEntity boardEntity, Stats previewStats = null, SkillReport skillReport = null)
        {
            if (currentBoardEntity != null)
            {
                currentBoardEntity.updateStatHandler -= RefreshProfile;
            }
            currentBoardEntity = boardEntity;
            if (boardEntity == null)
            {
                gameObject.SetActive(false);
            }
            else
            {
                currentBoardEntity.updateStatHandler += RefreshProfile;
                gameObject.SetActive(true);
                processBoardEntity(boardEntity, previewStats, skillReport);
            }

            CharacterBoardEntity characterBoardEntity = Core.Instance.convert(boardEntity);

            if (characterBoardEntity != null && characterBoardEntity.Ka != null)
            {
                kaProfile.SetActive(true);
                kaProfile.GetComponent <Image>().sprite = characterBoardEntity.Ka.ProfilePic;
            }
            else
            {
                kaProfile.SetActive(false);
            }
        }
Example #19
0
        public SkillReport ExecuteSkillHelper(CharacterBoardEntity source, Skill skill, CharacterBoardEntity target, List <DamagePackage> damages)
        {
            SkillReport report = new SkillReport();

            report.Buffs = skill.GetBuffs();

            Stats sourceBefore = source.Stats.GetCopy();
            Stats sourceAfter  = source.Stats.GetCopy();
            Stats targetBefore = target.Stats.GetCopy();
            Stats targetAfter  = target.Stats.GetCopy();

            report.sourceBefore = sourceBefore;
            report.targetBefore = targetBefore;

            foreach (DamagePackage package in damages)
            {
                List <Passive>   passives = target.Passives;
                TakeDamageReturn usingTakeDamageReturn = new TakeDamageReturn()
                {
                    type = TakeDamageReturnType.Normal
                };
                foreach (Passive passive in passives)
                {
                    usingTakeDamageReturn = passive.TakeDamage(skill, package, usingTakeDamageReturn);
                }


                if (usingTakeDamageReturn.type == TakeDamageReturnType.Normal)
                {
                    targetAfter = targetBefore.GetCopy();

                    int newTargetHealthDamage = HealthAfterDamage(report, targetAfter, package);
                    targetAfter.SetMutableStat(StatType.Health, newTargetHealthDamage);
                }
                else if (usingTakeDamageReturn.type == TakeDamageReturnType.NoDamage)
                {
                    report.TextDisplays.Add(new TextDisplay()
                    {
                        target = target, text = "MISS"
                    });
                }
                else if (usingTakeDamageReturn.type == TakeDamageReturnType.Mitigate)
                {
                    targetAfter = targetBefore.GetCopy();

                    int           newDamage                    = (int)(package.Damage * (1 - usingTakeDamageReturn.value));
                    DamagePackage newDamagePackage             = new DamagePackage(newDamage, package.Type, package.Piercing);
                    int           newReflectTargetHealthDamage = HealthAfterDamage(report, targetAfter, newDamagePackage);
                    targetAfter.SetMutableStat(StatType.Health, newReflectTargetHealthDamage);
                }
                else if (usingTakeDamageReturn.type == TakeDamageReturnType.Reflect)
                {
                    sourceAfter = sourceBefore.GetCopy();
                    targetAfter = targetBefore.GetCopy();

                    int newDamage     = (int)(package.Damage * (1 - usingTakeDamageReturn.value));
                    int reflectDamage = (int)(package.Damage * (usingTakeDamageReturn.value));

                    DamagePackage newDamagePackage     = new DamagePackage(newDamage, package.Type, package.Piercing);
                    DamagePackage reflectDamagePackage = new DamagePackage(reflectDamage, DamageType.physical);

                    int newReflectTargetHealthDamage = HealthAfterDamage(report, targetAfter, newDamagePackage);
                    int newReflectSourceHealthDamage = HealthAfterDamage(report, sourceAfter, reflectDamagePackage);

                    targetAfter.SetMutableStat(StatType.Health, newReflectTargetHealthDamage);
                    sourceAfter.SetMutableStat(StatType.Health, newReflectSourceHealthDamage);
                }

                sourceBefore = sourceAfter;
                targetBefore = targetAfter;
            }
            report.targets.Add(new Tuple <Stats, Stats>(target.Stats.GetCopy(), targetAfter));

            report.targetAfter  = targetAfter;
            report.targetBefore = target.Stats.GetCopy();
            report.sourceAfter  = sourceAfter;
            report.sourceBefore = source.Stats.GetCopy();

            return(report);
        }