using System.Collections.Generic; using ACE.Server.Factories.Entity; using ACE.Server.Factories.Enum; namespace ACE.Server.Factories.Tables { public static class TreasureProfile_MagicItem { // indexed by TreasureDeath.MagicItemTreasureTypeSelectionChances private static ChanceTable magicItemProfile1 = new ChanceTable() { ( TreasureItemType.Weapon, 1.0f ), }; private static ChanceTable magicItemProfile2 = new ChanceTable() { ( TreasureItemType.Armor, 1.0f ), }; private static ChanceTable magicItemProfile3 = new ChanceTable() { ( TreasureItemType.Scroll, 1.0f ), }; private static ChanceTable magicItemProfile4 = new ChanceTable() { ( TreasureItemType.Clothing, 1.0f ), }; private static ChanceTable magicItemProfile5 = new ChanceTable() { ( TreasureItemType.Jewelry, 1.0f ), }; private static ChanceTable magicItemProfile6 = new ChanceTable() { ( TreasureItemType.Gem, 1.0f ), }; private static ChanceTable magicItemProfile7 = new ChanceTable() { ( TreasureItemType.ArtObject, 1.0f ), }; /// /// A very common MagicItem profile /// private static ChanceTable magicItemProfile8 = new ChanceTable() { ( TreasureItemType.Weapon, 0.15f ), ( TreasureItemType.Armor, 0.15f ), ( TreasureItemType.Scroll, 0.14f ), ( TreasureItemType.Clothing, 0.14f ), ( TreasureItemType.Jewelry, 0.14f ), ( TreasureItemType.Gem, 0.14f ), ( TreasureItemType.ArtObject, 0.125f ), ( TreasureItemType.Cloak, 0.01f ), ( TreasureItemType.EncapsulatedSpirit, 0.005f ), }; /// /// A very common MagicItem profile /// private static ChanceTable magicItemProfile9 = new ChanceTable() { ( TreasureItemType.Weapon, 0.30f ), ( TreasureItemType.Armor, 0.30f ), ( TreasureItemType.Scroll, 0.10f ), ( TreasureItemType.Clothing, 0.10f ), ( TreasureItemType.Jewelry, 0.10f ), ( TreasureItemType.Gem, 0.05f ), ( TreasureItemType.ArtObject, 0.035f ), ( TreasureItemType.Cloak, 0.01f ), ( TreasureItemType.EncapsulatedSpirit, 0.005f ), }; private static ChanceTable magicItemProfile10 = new ChanceTable() { ( TreasureItemType.Weapon, 0.30f ), ( TreasureItemType.Armor, 0.30f ), ( TreasureItemType.Scroll, 0.185f ), ( TreasureItemType.Clothing, 0.10f ), ( TreasureItemType.Jewelry, 0.10f ), ( TreasureItemType.Cloak, 0.01f ), ( TreasureItemType.EncapsulatedSpirit, 0.005f ), }; private static ChanceTable magicItemProfile11 = new ChanceTable() { ( TreasureItemType.Jewelry, 0.33f ), ( TreasureItemType.Gem, 0.34f ), ( TreasureItemType.ArtObject, 0.315f ), ( TreasureItemType.Cloak, 0.01f ), ( TreasureItemType.EncapsulatedSpirit, 0.005f ), }; private static ChanceTable magicItemProfile12 = new ChanceTable() { ( TreasureItemType.Scroll, 0.40f ), ( TreasureItemType.Jewelry, 0.20f ), ( TreasureItemType.Gem, 0.20f ), ( TreasureItemType.ArtObject, 0.185f ), ( TreasureItemType.Cloak, 0.01f ), ( TreasureItemType.EncapsulatedSpirit, 0.005f ), }; // added private static ChanceTable magicItemProfile13 = new ChanceTable() { ( TreasureItemType.SocietyBreastplate, 1.0f ), }; private static ChanceTable magicItemProfile14 = new ChanceTable() { ( TreasureItemType.SocietyGauntlets, 1.0f ), }; private static ChanceTable magicItemProfile15 = new ChanceTable() { ( TreasureItemType.SocietyGirth, 1.0f ), }; private static ChanceTable magicItemProfile16 = new ChanceTable() { ( TreasureItemType.SocietyGreaves, 1.0f ), }; private static ChanceTable magicItemProfile17 = new ChanceTable() { ( TreasureItemType.SocietyHelm, 1.0f ), }; private static ChanceTable magicItemProfile18 = new ChanceTable() { ( TreasureItemType.SocietyPauldrons, 1.0f ), }; private static ChanceTable magicItemProfile19 = new ChanceTable() { ( TreasureItemType.SocietyTassets, 1.0f ), }; private static ChanceTable magicItemProfile20 = new ChanceTable() { ( TreasureItemType.SocietyVambraces, 1.0f ), }; private static ChanceTable magicItemProfile21 = new ChanceTable() { ( TreasureItemType.SocietySollerets, 1.0f ), }; // Legendary Chest private static ChanceTable magicItemProfile22 = new ChanceTable() { ( TreasureItemType.Weapon, 0.35f ), ( TreasureItemType.Armor, 0.35f ), ( TreasureItemType.Clothing, 0.10f ), ( TreasureItemType.Jewelry, 0.10f ), ( TreasureItemType.Cloak, 0.05f ), ( TreasureItemType.PetDevice, 0.05f ), }; // Legendary Magic Chest private static ChanceTable magicItemProfile23 = new ChanceTable() { ( TreasureItemType.Clothing, 0.30f ), ( TreasureItemType.Jewelry, 0.20f ), ( TreasureItemType.Cloak, 0.20f ), ( TreasureItemType.PetDevice, 0.30f ), }; // Mana Forge Chest private static ChanceTable magicItemProfile24 = new ChanceTable() { ( TreasureItemType.Weapon, 0.20f ), ( TreasureItemType.Armor, 0.20f ), ( TreasureItemType.Clothing, 0.30f ), ( TreasureItemType.Jewelry, 0.30f ), }; /// /// TreasureDeath.MagicItemTreasureTypeSelectionChances indexes into these profiles /// public static List> magicItemProfiles = new List>() { magicItemProfile1, magicItemProfile2, magicItemProfile3, magicItemProfile4, magicItemProfile5, magicItemProfile6, magicItemProfile7, magicItemProfile8, magicItemProfile9, magicItemProfile10, magicItemProfile11, magicItemProfile12, magicItemProfile13, magicItemProfile14, magicItemProfile15, magicItemProfile16, magicItemProfile17, magicItemProfile18, magicItemProfile19, magicItemProfile20, magicItemProfile21, magicItemProfile22, magicItemProfile23, magicItemProfile24, }; /// /// Rolls for a TreasureItemType for a TreasureItemCategory.MagicItem /// /// From TreasureDeath.MagicItemTreasureTypeSelectionChances public static TreasureItemType Roll(int magicItemProfile) { if (magicItemProfile < 1 || magicItemProfile > magicItemProfiles.Count) return TreasureItemType.Undef; return magicItemProfiles[magicItemProfile - 1].Roll(); } } }