/// <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); }
// 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); }