Пример #1
0
        /// <summary>
        /// Gets Melee Weapon Max Damage
        /// </summary>
        /// <param name="weaponType"></param><param name="wieldDiff"></param><param name="baseWeapon"></param>
        /// <returns>Melee Weapon Max Damage</returns>
        private static int GetMeleeMaxDamage(Skill weaponType, int wieldDiff, LootWeaponType baseWeapon)
        {
            int damageTable = 0;

            switch (weaponType)
            {
            case Skill.HeavyWeapons:
                damageTable = LootTables.HeavyWeaponDamageTable[(int)baseWeapon, GetMeleeWieldToIndex(wieldDiff)];
                break;

            case Skill.FinesseWeapons:
            case Skill.LightWeapons:
                damageTable = LootTables.LightWeaponDamageTable[(int)baseWeapon, GetMeleeWieldToIndex(wieldDiff)];
                break;

            case Skill.TwoHandedCombat:
                damageTable = LootTables.TwoHandedWeaponDamageTable[(int)baseWeapon, GetMeleeWieldToIndex(wieldDiff)];
                break;

            default:
                return(0);
            }

            // To add a little bit of randomness to Max weapon damage
            int maxDamageVariance = ThreadSafeRandom.Next(-4, 0);

            return(damageTable + maxDamageVariance);
        }
Пример #2
0
        // The percentages for variances need to be fixed
        /// <summary>
        /// Gets Melee Weapon Variance
        /// </summary>
        /// <param name="category"></param><param name="type"></param>
        /// <returns>Returns Melee Weapon Variance</returns>
        private static double GetVariance(Skill category, LootWeaponType type)
        {
            double variance = 0;
            int    chance   = ThreadSafeRandom.Next(0, 99);

            switch (category)
            {
            case Skill.HeavyWeapons:
                switch (type)
                {
                case LootWeaponType.Axe:
                    if (chance < 10)
                    {
                        variance = .90;
                    }
                    else if (chance < 30)
                    {
                        variance = .93;
                    }
                    else if (chance < 70)
                    {
                        variance = .95;
                    }
                    else if (chance < 90)
                    {
                        variance = .97;
                    }
                    else
                    {
                        variance = .99;
                    }
                    break;

                case LootWeaponType.Dagger:
                    if (chance < 10)
                    {
                        variance = .47;
                    }
                    else if (chance < 30)
                    {
                        variance = .50;
                    }
                    else if (chance < 70)
                    {
                        variance = .53;
                    }
                    else if (chance < 90)
                    {
                        variance = .57;
                    }
                    else
                    {
                        variance = .62;
                    }
                    break;

                case LootWeaponType.DaggerMulti:
                    if (chance < 10)
                    {
                        variance = .40;
                    }
                    else if (chance < 30)
                    {
                        variance = .43;
                    }
                    else if (chance < 70)
                    {
                        variance = .48;
                    }
                    else if (chance < 90)
                    {
                        variance = .53;
                    }
                    else
                    {
                        variance = .58;
                    }
                    break;

                case LootWeaponType.Mace:
                    if (chance < 10)
                    {
                        variance = .30;
                    }
                    else if (chance < 30)
                    {
                        variance = .33;
                    }
                    else if (chance < 70)
                    {
                        variance = .37;
                    }
                    else if (chance < 90)
                    {
                        variance = .42;
                    }
                    else
                    {
                        variance = .46;
                    }
                    break;

                case LootWeaponType.Spear:
                    if (chance < 10)
                    {
                        variance = .59;
                    }
                    else if (chance < 30)
                    {
                        variance = .63;
                    }
                    else if (chance < 70)
                    {
                        variance = .68;
                    }
                    else if (chance < 90)
                    {
                        variance = .72;
                    }
                    else
                    {
                        variance = .75;
                    }
                    break;

                case LootWeaponType.Staff:
                    if (chance < 10)
                    {
                        variance = .38;
                    }
                    else if (chance < 30)
                    {
                        variance = .42;
                    }
                    else if (chance < 70)
                    {
                        variance = .45;
                    }
                    else if (chance < 90)
                    {
                        variance = .50;
                    }
                    else
                    {
                        variance = .52;
                    }
                    break;

                case LootWeaponType.Sword:
                    if (chance < 10)
                    {
                        variance = .47;
                    }
                    else if (chance < 30)
                    {
                        variance = .50;
                    }
                    else if (chance < 70)
                    {
                        variance = .53;
                    }
                    else if (chance < 90)
                    {
                        variance = .57;
                    }
                    else
                    {
                        variance = .62;
                    }
                    break;

                case LootWeaponType.SwordMulti:
                    if (chance < 10)
                    {
                        variance = .40;
                    }
                    else if (chance < 30)
                    {
                        variance = .43;
                    }
                    else if (chance < 70)
                    {
                        variance = .48;
                    }
                    else if (chance < 90)
                    {
                        variance = .53;
                    }
                    else
                    {
                        variance = .60;
                    }
                    break;

                case LootWeaponType.UA:
                    if (chance < 10)
                    {
                        variance = .44;
                    }
                    else if (chance < 30)
                    {
                        variance = .48;
                    }
                    else if (chance < 70)
                    {
                        variance = .53;
                    }
                    else if (chance < 90)
                    {
                        variance = .58;
                    }
                    else
                    {
                        variance = .60;
                    }
                    break;
                }
                break;

            case Skill.LightWeapons:
            case Skill.FinesseWeapons:
                switch (type)
                {
                case LootWeaponType.Axe:
                    // Axe
                    if (chance < 10)
                    {
                        variance = .80;
                    }
                    else if (chance < 30)
                    {
                        variance = .83;
                    }
                    else if (chance < 70)
                    {
                        variance = .85;
                    }
                    else if (chance < 90)
                    {
                        variance = .90;
                    }
                    else
                    {
                        variance = .95;
                    }
                    break;

                case LootWeaponType.Dagger:
                    // Dagger
                    if (chance < 10)
                    {
                        variance = .42;
                    }
                    else if (chance < 30)
                    {
                        variance = .47;
                    }
                    else if (chance < 70)
                    {
                        variance = .52;
                    }
                    else if (chance < 90)
                    {
                        variance = .56;
                    }
                    else
                    {
                        variance = .60;
                    }
                    break;

                case LootWeaponType.DaggerMulti:
                    // Dagger MultiStrike
                    if (chance < 10)
                    {
                        variance = .24;
                    }
                    else if (chance < 30)
                    {
                        variance = .28;
                    }
                    else if (chance < 70)
                    {
                        variance = .35;
                    }
                    else if (chance < 90)
                    {
                        variance = .40;
                    }
                    else
                    {
                        variance = .45;
                    }
                    break;

                case LootWeaponType.Mace:
                    // Mace
                    if (chance < 10)
                    {
                        variance = .23;
                    }
                    else if (chance < 30)
                    {
                        variance = .28;
                    }
                    else if (chance < 70)
                    {
                        variance = .32;
                    }
                    else if (chance < 90)
                    {
                        variance = .37;
                    }
                    else
                    {
                        variance = .43;
                    }
                    break;

                case LootWeaponType.Jitte:
                    // Jitte
                    if (chance < 10)
                    {
                        variance = .325;
                    }
                    else if (chance < 30)
                    {
                        variance = .35;
                    }
                    else if (chance < 70)
                    {
                        variance = .40;
                    }
                    else if (chance < 90)
                    {
                        variance = .45;
                    }
                    else
                    {
                        variance = .50;
                    }
                    break;

                case LootWeaponType.Spear:
                    // Spear
                    if (chance < 10)
                    {
                        variance = .65;
                    }
                    else if (chance < 30)
                    {
                        variance = .68;
                    }
                    else if (chance < 70)
                    {
                        variance = .71;
                    }
                    else if (chance < 90)
                    {
                        variance = .75;
                    }
                    else
                    {
                        variance = .80;
                    }
                    break;

                case LootWeaponType.Staff:
                    // Staff
                    if (chance < 10)
                    {
                        variance = .325;
                    }
                    else if (chance < 30)
                    {
                        variance = .35;
                    }
                    else if (chance < 70)
                    {
                        variance = .40;
                    }
                    else if (chance < 90)
                    {
                        variance = .45;
                    }
                    else
                    {
                        variance = .50;
                    }
                    break;

                case LootWeaponType.Sword:
                    // Sword
                    if (chance < 10)
                    {
                        variance = .42;
                    }
                    else if (chance < 30)
                    {
                        variance = .47;
                    }
                    else if (chance < 70)
                    {
                        variance = .52;
                    }
                    else if (chance < 90)
                    {
                        variance = .56;
                    }
                    else
                    {
                        variance = .60;
                    }
                    break;

                case LootWeaponType.SwordMulti:
                    // Sword Multistrike
                    if (chance < 10)
                    {
                        variance = .24;
                    }
                    else if (chance < 30)
                    {
                        variance = .28;
                    }
                    else if (chance < 70)
                    {
                        variance = .35;
                    }
                    else if (chance < 90)
                    {
                        variance = .40;
                    }
                    else
                    {
                        variance = .45;
                    }
                    break;

                case LootWeaponType.UA:
                    // UA
                    if (chance < 10)
                    {
                        variance = .44;
                    }
                    else if (chance < 30)
                    {
                        variance = .48;
                    }
                    else if (chance < 70)
                    {
                        variance = .53;
                    }
                    else if (chance < 90)
                    {
                        variance = .58;
                    }
                    else
                    {
                        variance = .60;
                    }
                    break;
                }
                break;

            case Skill.TwoHandedCombat:
                // Two Handed only have one set of variances
                if (chance < 5)
                {
                    variance = .30;
                }
                else if (chance < 20)
                {
                    variance = .35;
                }
                else if (chance < 50)
                {
                    variance = .40;
                }
                else if (chance < 80)
                {
                    variance = .45;
                }
                else if (chance < 95)
                {
                    variance = .50;
                }
                else
                {
                    variance = .55;
                }
                break;

            default:
                return(0);
            }

            return(variance);
        }