Exemplo n.º 1
0
 private static bool HasThisFlag(this CanceledModifiers setOfFlags, CanceledModifiers flag)
 {
     return((setOfFlags & flag) == flag);
 }
Exemplo n.º 2
0
 public static bool Pillz(this CanceledModifiers flags)
 {
     return(flags.HasThisFlag(CanceledModifiers.Pillz));
 }
Exemplo n.º 3
0
 public static bool Power(this CanceledModifiers flags)
 {
     return(flags.HasThisFlag(CanceledModifiers.Power));
 }
Exemplo n.º 4
0
 public static bool Life(this CanceledModifiers flags)
 {
     return(flags.HasThisFlag(CanceledModifiers.Life));
 }
Exemplo n.º 5
0
 public static bool Damage(this CanceledModifiers flags)
 {
     return(flags.HasThisFlag(CanceledModifiers.Damage));
 }
Exemplo n.º 6
0
 public static bool Attack(this CanceledModifiers flags)
 {
     return(flags.HasThisFlag(CanceledModifiers.Attack));
 }
Exemplo n.º 7
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;
                }
            }
        }
Exemplo n.º 8
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;
                    }
                }
            }
        }