Esempio n. 1
0
 public void HalfTurn() => tp.HalfTurn();
Esempio n. 2
0
        private void ReduceBar(ProgressBar bar, int index, Skill skill, TextBox e_box)
        {
            Enemy target = d.enemies[index];

            // generalize this for boss battle
            bool critWeak = false;

            int damage = SkillManager.CalculateDamage(skill.Damage, skill.Multiplier) + p.stats[Stat.ATTACK];

            if (p.elementalAttackModifier[skill.Element] == 1)
            {
                damage += (int)(damage * .25);
            }

            int c = r.Next(0, 100);

            if (c < 25)
            {
                damage = (damage * 2) + p.stats[Stat.CRITS]; // crit damge + critboost
                CombatLog.AppendText("A critical was hit.");
                CombatLog.AppendText(Environment.NewLine);
                critWeak = true;
            }

            if (d.enemies[index].weakness.Contains(skill.Element))
            {
                damage = (damage * 2) + p.stats[Stat.CRITS]; // treated like crits too
                CombatLog.AppendText($"A weakness was hit! {target.name} was weak to {SkillManager.ElementToString(skill.Element)}!");

                if (d.IsNewWeakness(target.image, skill.Element))
                {
                    d.NewWeaknessFound(target, skill.Element);
                    e_box.Text = target.weakName;
                    UpdateTextBoxes();
                }

                CombatLog.AppendText(Environment.NewLine);
                critWeak = true;
            }

            if (d.isBoss)
            {
                DamageBoss(target, damage);
                CombatLog.AppendText($"It hit for {damage} damage.");
                CombatLog.AppendText(Environment.NewLine);
                CombatLog.AppendText(Environment.NewLine);
            }
            else
            {
                DamageEnemy(target, bar, damage, index);
            }

            if (critWeak)
            {
                tp.HalfTurn();
            }
            else
            {
                tp.FullTurn();
            }

            if (!d.isBoss)
            {
                CheckHP();
            }
            CheckTurnPlayer();
        }