Beispiel #1
0
        public void ApplyDecreaseDamageSuffixees(BatchSubtracter leftDamageSubstracter, BatchSubtracter rightDamageSubstracter)
        {
            for (int i = 0; i < 4; i++)
            {
                bool isLeft = IsLeft(i);
                switch (this[i].Suffix)
                {
                case SkillSuffix.DecreaseDamageXMinY:
                    if (isLeft)
                    {
                        rightDamageSubstracter.InsertSubstraction(skills[i].X, skills[i].Y);
                    }
                    else
                    {
                        leftDamageSubstracter.InsertSubstraction(skills[i].X, skills[i].Y);
                    }
                    break;

                case SkillSuffix.DecreasePowerAndDamageXMinY:
                    if (isLeft)
                    {
                        rightDamageSubstracter.InsertSubstraction(skills[i].X, skills[i].Y);
                    }
                    else
                    {
                        leftDamageSubstracter.InsertSubstraction(skills[i].X, skills[i].Y);
                    }
                    break;
                }
            }
        }
Beispiel #2
0
        public void ApplyDecreaseAttackSuffixes(BatchSubtracter leftAttackSubstracter, BatchSubtracter rightAttackSubstracter,
                                                PlayerStatus initialLeftPlayerStatus, PlayerStatus initialRightPlayerStatus)
        {
            for (int i = 0; i < 4; i++)
            {
                bool isLeft = IsLeft(i);
                switch (this[i].Suffix)
                {
                case SkillSuffix.DecreaseAttackXMinY:
                    if (isLeft)
                    {
                        rightAttackSubstracter.InsertSubstraction(skills[i].X, skills[i].Y);
                    }
                    else
                    {
                        leftAttackSubstracter.InsertSubstraction(skills[i].X, skills[i].Y);
                    }
                    break;

                case SkillSuffix.DecreaseAttackXPerRemainingLifeMinY:
                    if (isLeft)
                    {
                        rightAttackSubstracter.InsertSubstraction(skills[i].X * initialLeftPlayerStatus.Life, skills[i].Y);
                    }
                    else
                    {
                        leftAttackSubstracter.InsertSubstraction(skills[i].X * initialRightPlayerStatus.Life, skills[i].Y);
                    }
                    break;
                }
            }
        }
Beispiel #3
0
        public void ApplyAfterDuelNormalSuffixes(BatchSubtracter leftLifeSubstracter, BatchSubtracter rightLifeSubstracter,
                                                 BatchSubtracter leftPillzSubstracter, BatchSubtracter rightPillzSubstracter,
                                                 BatchAdder leftLifeAdder, BatchAdder rightLifeAdder,
                                                 BatchAdder leftPillzAdder, BatchAdder rightPillzAdder,
                                                 Heal healToLeft, Heal healToRight,
                                                 Poison poisonToLeft, Poison poisonToRight,
                                                 int leftDamage, int rightDamage,
                                                 int leftUsedPillz, int rightUsedPillz,
                                                 bool leftUsedFury, bool rightUsedFury,
                                                 CanceledModifiers leftCanceledModifiers, CanceledModifiers rightCanceledModifiers)
        {
            for (int i = 0; i < 4; i++)
            {
                bool isLeft = IsLeft(i);
                switch (skills[i].Suffix)
                {
                case SkillSuffix.DecreaseLifeXMinY:
                    if (isLeft)
                    {
                        rightLifeSubstracter.InsertSubstraction(skills[i].X, skills[i].Y);
                    }
                    else
                    {
                        leftLifeSubstracter.InsertSubstraction(skills[i].X, skills[i].Y);
                    }
                    break;

                case SkillSuffix.DecreasePillzXMinY:
                    if (isLeft)
                    {
                        rightPillzSubstracter.InsertSubstraction(skills[i].X, skills[i].Y);
                    }
                    else
                    {
                        leftPillzSubstracter.InsertSubstraction(skills[i].X, skills[i].Y);
                    }
                    break;

                case SkillSuffix.HealXMaxY:
                    if (isLeft)
                    {
                        if (!leftCanceledModifiers.Life())
                        {
                            healToLeft = new Heal(skills[i]);
                        }
                    }
                    else
                    {
                        if (!rightCanceledModifiers.Life())
                        {
                            healToRight = new Heal(skills[i]);
                        }
                    }
                    break;

                case SkillSuffix.IncreaseLifeX:
                    if (isLeft)
                    {
                        leftLifeAdder.InsertAddition(skills[i].X);
                    }
                    else
                    {
                        rightLifeAdder.InsertAddition(skills[i].X);
                    }
                    break;

                case SkillSuffix.IncreaseLifeXMaxY:
                    if (isLeft)
                    {
                        leftLifeAdder.InsertAddition(skills[i].Y, skills[i].X);
                    }
                    else
                    {
                        rightLifeAdder.InsertAddition(skills[i].Y, skills[i].X);
                    }
                    break;

                case SkillSuffix.IncreaseLifeXPerDamage:
                    if (isLeft)
                    {
                        leftLifeAdder.InsertAddition(skills[i].X * leftDamage);
                    }
                    else
                    {
                        rightLifeAdder.InsertAddition(skills[i].X * rightDamage);
                    }
                    break;

                case SkillSuffix.IncreaseLifeXPerDamageMaxY:
                    if (isLeft)
                    {
                        leftLifeAdder.InsertAddition(skills[i].Y, skills[i].X * leftDamage);
                    }
                    else
                    {
                        rightLifeAdder.InsertAddition(skills[i].Y, skills[i].X * rightDamage);
                    }
                    break;

                case SkillSuffix.IncreasePillzX:
                    if (isLeft)
                    {
                        leftPillzAdder.InsertAddition(skills[i].X);
                    }
                    else
                    {
                        rightPillzAdder.InsertAddition(skills[i].X);
                    }
                    break;

                case SkillSuffix.IncreasePillzXMaxY:
                    if (isLeft)
                    {
                        leftPillzAdder.InsertAddition(skills[i].Y, skills[i].X);
                    }
                    else
                    {
                        rightPillzAdder.InsertAddition(skills[i].Y, skills[i].X);
                    }
                    break;

                case SkillSuffix.IncreasePillzXPerDamage:
                    if (isLeft)
                    {
                        leftPillzAdder.InsertAddition(skills[i].X * leftDamage);
                    }
                    else
                    {
                        rightPillzAdder.InsertAddition(skills[i].X * rightDamage);
                    }
                    break;

                case SkillSuffix.PoisonXMinY:
                    if (isLeft)
                    {
                        if (!leftCanceledModifiers.Life())
                        {
                            poisonToRight = new Poison(skills[i]);
                        }
                    }
                    else
                    {
                        if (!rightCanceledModifiers.Life())
                        {
                            poisonToLeft = new Poison(skills[i]);
                        }
                    }
                    break;

                case SkillSuffix.RecoverXPillzOutOfY:
                    if (isLeft)
                    {
                        leftPillzAdder.InsertAddition(CalculateRecoveredPillz(leftUsedPillz, leftUsedFury, skills[i].X, skills[i].Y));
                    }
                    else
                    {
                        rightPillzAdder.InsertAddition(CalculateRecoveredPillz(rightUsedPillz, rightUsedFury, skills[i].X, skills[i].Y));
                    }
                    break;

                case SkillSuffix.RegenXMaxY:
                    if (isLeft)
                    {
                        if (!leftCanceledModifiers.Life())
                        {
                            leftLifeAdder.InsertAddition(skills[i].Y, skills[i].X);
                            healToLeft = new Heal(skills[i]);
                        }
                    }
                    else
                    {
                        if (!rightCanceledModifiers.Life())
                        {
                            rightLifeAdder.InsertAddition(skills[i].Y, skills[i].X);
                            healToRight = new Heal(skills[i]);
                        }
                    }
                    break;

                case SkillSuffix.ToxinXMinY:
                    if (isLeft)
                    {
                        if (!leftCanceledModifiers.Life())
                        {
                            rightLifeSubstracter.InsertSubstraction(skills[i].Y, skills[i].X);
                            poisonToRight = new Poison(skills[i]);
                        }
                    }
                    else
                    {
                        if (!rightCanceledModifiers.Life())
                        {
                            leftLifeSubstracter.InsertSubstraction(skills[i].Y, skills[i].X);
                            poisonToLeft = new Poison(skills[i]);
                        }
                    }
                    break;
                }
            }
        }
Beispiel #4
0
        public void ApplyBacklashVariantSuffixes(BatchSubtracter leftLifeSubstracter, BatchSubtracter rightLifeSubstracter,
                                                 BatchSubtracter leftPillzSubstracter, BatchSubtracter rightPillzSubstracter,
                                                 Poison poisonToLeft, Poison poisonToRight,
                                                 CanceledModifiers leftCanceledModifiers, CanceledModifiers rightCanceledModifiers)
        {
            for (int i = 0; i < 4; i++)
            {
                bool isLeft = IsLeft(i);
                // Backlash has some distinctions so we treat it in an individual loop
                if (skills[i].Prefix == SkillPrefix.Backlash)
                {
                    switch (skills[i].Suffix)
                    {
                    case SkillSuffix.DecreaseLifeXMinY:
                        if (isLeft)
                        {
                            if (!leftCanceledModifiers.Life())
                            {
                                leftLifeSubstracter.InsertSubstraction(skills[i].X, skills[i].Y);
                            }
                        }
                        else
                        {
                            if (!rightCanceledModifiers.Life())
                            {
                                rightLifeSubstracter.InsertSubstraction(skills[i].X, skills[i].Y);
                            }
                        }
                        break;

                    case SkillSuffix.DecreasePillzXMinY:
                        if (isLeft)
                        {
                            if (!leftCanceledModifiers.Pillz())
                            {
                                leftPillzSubstracter.InsertSubstraction(skills[i].X, skills[i].Y);
                            }
                        }
                        else
                        {
                            if (!rightCanceledModifiers.Pillz())
                            {
                                rightPillzSubstracter.InsertSubstraction(skills[i].X, skills[i].Y);
                            }
                        }
                        break;

                    case SkillSuffix.PoisonXMinY:
                        if (isLeft)
                        {
                            if (!leftCanceledModifiers.Life())
                            {
                                poisonToLeft = new Poison(skills[i]);
                            }
                        }
                        else
                        {
                            if (!rightCanceledModifiers.Life())
                            {
                                poisonToRight = new Poison(skills[i]);
                            }
                        }
                        break;
                    }
                }
            }
        }