コード例 #1
0
        public void ApplyIncreaseAttackSuffixes(PlayerStatus initialLeftPlayerStatus, PlayerStatus initialRightPlayerStatus,
                                                BatchAdder leftAttackAdder, BatchAdder rightAttackAdder)
        {
            for (int i = 0; i < 4; i++)
            {
                bool isLeft = IsLeft(i);
                switch (this[i].Suffix)
                {
                case SkillSuffix.IncreaseAttackX:
                    if (isLeft)
                    {
                        leftAttackAdder.InsertAddition(skills[i].X);
                    }
                    else
                    {
                        rightAttackAdder.InsertAddition(skills[i].X);
                    }
                    break;

                case SkillSuffix.IncreaseAttackXPerRemainingLife:
                    if (isLeft)
                    {
                        leftAttackAdder.InsertAddition(skills[i].X * initialLeftPlayerStatus.Life);
                    }
                    else
                    {
                        rightAttackAdder.InsertAddition(skills[i].X * initialRightPlayerStatus.Life);
                    }
                    break;

                case SkillSuffix.IncreaseAttackXPerRemainingPillz:
                    if (isLeft)
                    {
                        leftAttackAdder.InsertAddition(skills[i].X * initialLeftPlayerStatus.Pillz);
                    }
                    else
                    {
                        rightAttackAdder.InsertAddition(skills[i].X * initialRightPlayerStatus.Pillz);
                    }
                    break;
                }
            }
        }
コード例 #2
0
 public void ApplyIncreasePowerSuffixes(BatchAdder leftPowerAdder, BatchAdder rightPowerAdder)
 {
     for (int i = 0; i < 4; i++)
     {
         bool isLeft = IsLeft(i);
         switch (this[i].Suffix)
         {
         case SkillSuffix.IncreasePowerAndDamageX:
         case SkillSuffix.IncreasePowerX:
             if (isLeft)
             {
                 leftPowerAdder.InsertAddition(skills[i].X);
             }
             else
             {
                 rightPowerAdder.InsertAddition(skills[i].X);
             }
             break;
         }
     }
 }
コード例 #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;
                }
            }
        }