コード例 #1
0
ファイル: Enums.cs プロジェクト: warcraker/UrbanRivalsManager
 private static bool HasThisFlag(this CanceledModifiers setOfFlags, CanceledModifiers flag)
 {
     return((setOfFlags & flag) == flag);
 }
コード例 #2
0
ファイル: Enums.cs プロジェクト: warcraker/UrbanRivalsManager
 public static bool Pillz(this CanceledModifiers flags)
 {
     return(flags.HasThisFlag(CanceledModifiers.Pillz));
 }
コード例 #3
0
ファイル: Enums.cs プロジェクト: warcraker/UrbanRivalsManager
 public static bool Power(this CanceledModifiers flags)
 {
     return(flags.HasThisFlag(CanceledModifiers.Power));
 }
コード例 #4
0
ファイル: Enums.cs プロジェクト: warcraker/UrbanRivalsManager
 public static bool Life(this CanceledModifiers flags)
 {
     return(flags.HasThisFlag(CanceledModifiers.Life));
 }
コード例 #5
0
ファイル: Enums.cs プロジェクト: warcraker/UrbanRivalsManager
 public static bool Damage(this CanceledModifiers flags)
 {
     return(flags.HasThisFlag(CanceledModifiers.Damage));
 }
コード例 #6
0
ファイル: Enums.cs プロジェクト: warcraker/UrbanRivalsManager
 public static bool Attack(this CanceledModifiers flags)
 {
     return(flags.HasThisFlag(CanceledModifiers.Attack));
 }
コード例 #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;
                }
            }
        }
コード例 #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;
                    }
                }
            }
        }