using System.Collections.Generic; using ACE.Server.Factories.Entity; using ACE.Server.Factories.Enum; namespace ACE.Server.Factories.Tables { public static class TreasureProfile_Item { // indexed by TreasureDeath.ItemTreasureTypeSelectionChances private static ChanceTable itemProfile1 = new ChanceTable() { ( TreasureItemType.Weapon, 1.0f ), }; private static ChanceTable itemProfile2 = new ChanceTable() { ( TreasureItemType.Armor, 1.0f ), }; private static ChanceTable itemProfile3 = new ChanceTable() { ( TreasureItemType.Scroll, 1.0f ), }; private static ChanceTable itemProfile4 = new ChanceTable() { ( TreasureItemType.Clothing, 1.0f ), }; private static ChanceTable itemProfile5 = new ChanceTable() { ( TreasureItemType.Jewelry, 1.0f ), }; private static ChanceTable itemProfile6 = new ChanceTable() { ( TreasureItemType.Gem, 1.0f ), }; private static ChanceTable itemProfile7 = new ChanceTable() { ( TreasureItemType.ArtObject, 1.0f ), }; /// /// The second most common ItemProfile /// private static ChanceTable itemProfile8 = new ChanceTable() { ( TreasureItemType.Weapon, 0.125f ), ( TreasureItemType.Armor, 0.125f ), ( TreasureItemType.Scroll, 0.125f ), ( TreasureItemType.Clothing, 0.125f ), ( TreasureItemType.Jewelry, 0.125f ), ( TreasureItemType.Gem, 0.125f ), ( TreasureItemType.ArtObject, 0.125f ), ( TreasureItemType.PetDevice, 0.125f ), }; /// /// The most common ItemProfile /// private static ChanceTable itemProfile9 = new ChanceTable() { ( TreasureItemType.Weapon, 0.20f ), ( TreasureItemType.Armor, 0.20f ), ( TreasureItemType.Scroll, 0.20f ), ( TreasureItemType.Clothing, 0.05f ), ( TreasureItemType.Jewelry, 0.05f ), ( TreasureItemType.Gem, 0.05f ), ( TreasureItemType.ArtObject, 0.05f ), ( TreasureItemType.PetDevice, 0.20f ), }; private static ChanceTable itemProfile10 = new ChanceTable() { ( TreasureItemType.Weapon, 0.30f ), ( TreasureItemType.Armor, 0.30f ), ( TreasureItemType.Scroll, 0.20f ), ( TreasureItemType.PetDevice, 0.20f ), }; private static ChanceTable itemProfile11 = new ChanceTable() { ( TreasureItemType.Clothing, 0.25f ), ( TreasureItemType.Jewelry, 0.25f ), ( TreasureItemType.Gem, 0.25f ), ( TreasureItemType.ArtObject, 0.25f ), }; /// /// TreasureDeath.ItemTreasureTypeSelectionChances indexes into these profiles /// private static readonly List> itemProfiles = new List>() { itemProfile1, itemProfile2, itemProfile3, itemProfile4, itemProfile5, itemProfile6, itemProfile7, itemProfile8, itemProfile9, itemProfile10, itemProfile11, }; /// /// Rolls for a TreasureItemType for a non-magical TreasureItemCategory.Item /// /// From TreasureDeath.ItemTreasureTypeSelectionChances public static TreasureItemType Roll(int itemProfile) { if (itemProfile < 1 || itemProfile > itemProfiles.Count) return TreasureItemType.Undef; return itemProfiles[itemProfile - 1].Roll(); } } }