AuctionLite-classic/Disenchant.lua

828 lignes
21 KiB
Lua

-------------------------------------------------------------------------------
-- Disenchant.lua
--
-- Compute expected disenchant value. The data here is based on info from
-- WowWiki (http://www.wowwiki.com/Disenchanting_tables) with some updates
-- based on Wowhead queries.
-------------------------------------------------------------------------------
local _
-- Item ids for disenchanting materials.
local AbyssCrystal_Id = 34057;
local ArcaneDust_Id = 22445;
local DreamDust_Id = 11176;
local DreamShard_Id = 34052;
local EtherealShard_Id = 74247;
local HeavenlyShard_Id = 52721;
local HypnoticDust_Id = 52555;
local GreaterAstralEssence_Id = 11082;
local GreaterCelestialEssence_Id = 52719;
local GreaterCosmicEssence_Id = 34055;
local GreaterEternalEssence_Id = 16203;
local GreaterMagicEssence_Id = 10939;
local GreaterMysticEssence_Id = 11135;
local GreaterNetherEssence_Id = 11175;
local GreaterPlanarEssence_Id = 22446;
local IllusionDust_Id = 16204;
local InfiniteDust_Id = 34054;
local LargeBrilliantShard_Id = 14344;
local LargeGlimmeringShard_Id = 11084;
local LargeGlowingShard_Id = 11139;
local LargePrismaticShard_Id = 22449;
local LargeRadiantShard_Id = 11178;
local LesserAstralEssence_Id = 10998;
local LesserCelestialEssence_Id = 52718;
local LesserCosmicEssence_Id = 34056;
local LesserEternalEssence_Id = 16202;
local LesserMagicEssence_Id = 10938;
local LesserMysticEssence_Id = 11134;
local LesserNetherEssence_Id = 11174;
local LesserPlanarEssence_Id = 22447;
local MaelstromCrystal_Id = 72722;
local MysteriousEssence_Id = 74250;
local NexusCrystal_Id = 20725;
local ShaCrystal_Id = 74248;
local SmallBrilliantShard_Id = 14343;
local SmallDreamShard_Id = 34053;
local SmallEtherealShard_Id = 74252;
local SmallGlimmeringShard_Id = 10978;
local SmallGlowingShard_Id = 11138;
local SmallHeavenlyShard_Id = 52720;
local SmallPrismaticShard_Id = 22448;
local SmallRadiantShard_Id = 11177;
local SoulDust_Id = 11083;
local SpiritDust_Id = 74249;
local StrangeDust_Id = 10940;
local VisionDust_Id = 11137;
local VoidCrystal_Id = 22450;
local UncommonArmor = {
{
minlvl = 5,
maxlvl = 15,
shards = {
{ p = 0.80, min = 1, max = 2, id = StrangeDust_Id, },
{ p = 0.20, min = 1, max = 2, id = LesserMagicEssence_Id, },
},
},
{
minlvl = 16,
maxlvl = 20,
shards = {
{ p = 0.75, min = 2, max = 3, id = StrangeDust_Id, },
{ p = 0.20, min = 1, max = 2, id = GreaterMagicEssence_Id, },
{ p = 0.05, min = 1, max = 1, id = SmallGlimmeringShard_Id, },
},
},
{
minlvl = 21,
maxlvl = 25,
shards = {
{ p = 0.75, min = 4, max = 6, id = StrangeDust_Id, },
{ p = 0.15, min = 1, max = 2, id = LesserAstralEssence_Id, },
{ p = 0.10, min = 1, max = 1, id = SmallGlimmeringShard_Id, },
},
},
{
minlvl = 26,
maxlvl = 30,
shards = {
{ p = 0.75, min = 1, max = 2, id = SoulDust_Id, },
{ p = 0.20, min = 1, max = 2, id = GreaterAstralEssence_Id, },
{ p = 0.05, min = 1, max = 1, id = LargeGlimmeringShard_Id, },
},
},
{
minlvl = 31,
maxlvl = 35,
shards = {
{ p = 0.75, min = 2, max = 5, id = SoulDust_Id, },
{ p = 0.20, min = 1, max = 2, id = LesserMysticEssence_Id, },
{ p = 0.05, min = 1, max = 1, id = SmallGlowingShard_Id, },
},
},
{
minlvl = 36,
maxlvl = 40,
shards = {
{ p = 0.75, min = 1, max = 2, id = VisionDust_Id, },
{ p = 0.20, min = 1, max = 2, id = GreaterMysticEssence_Id, },
{ p = 0.05, min = 1, max = 1, id = LargeGlowingShard_Id, },
},
},
{
minlvl = 41,
maxlvl = 45,
shards = {
{ p = 0.75, min = 2, max = 5, id = VisionDust_Id, },
{ p = 0.20, min = 1, max = 2, id = LesserNetherEssence_Id, },
{ p = 0.05, min = 1, max = 1, id = SmallRadiantShard_Id, },
},
},
{
minlvl = 46,
maxlvl = 50,
shards = {
{ p = 0.75, min = 1, max = 2, id = DreamDust_Id, },
{ p = 0.20, min = 1, max = 2, id = GreaterNetherEssence_Id, },
{ p = 0.05, min = 1, max = 1, id = LargeRadiantShard_Id, },
},
},
{
minlvl = 51,
maxlvl = 55,
shards = {
{ p = 0.75, min = 2, max = 5, id = DreamDust_Id, },
{ p = 0.20, min = 1, max = 2, id = LesserEternalEssence_Id, },
{ p = 0.05, min = 1, max = 1, id = SmallBrilliantShard_Id, },
},
},
{
minlvl = 56,
maxlvl = 60,
shards = {
{ p = 0.75, min = 1, max = 2, id = IllusionDust_Id, },
{ p = 0.20, min = 1, max = 2, id = GreaterEternalEssence_Id, },
{ p = 0.05, min = 1, max = 1, id = LargeBrilliantShard_Id, },
},
},
{
minlvl = 61,
maxlvl = 65,
shards = {
{ p = 0.75, min = 2, max = 5, id = IllusionDust_Id, },
{ p = 0.20, min = 2, max = 3, id = GreaterEternalEssence_Id, },
{ p = 0.05, min = 1, max = 1, id = LargeBrilliantShard_Id, },
},
},
{
minlvl = 79,
maxlvl = 80,
shards = {
{ p = 0.75, min = 1, max = 2, id = ArcaneDust_Id, },
{ p = 0.22, min = 1, max = 2, id = LesserPlanarEssence_Id, },
{ p = 0.03, min = 1, max = 1, id = SmallPrismaticShard_Id, },
},
},
{
minlvl = 81,
maxlvl = 100,
shards = {
{ p = 0.75, min = 2, max = 3, id = ArcaneDust_Id, },
{ p = 0.22, min = 2, max = 3, id = LesserPlanarEssence_Id, },
{ p = 0.03, min = 1, max = 1, id = SmallPrismaticShard_Id, },
},
},
{
minlvl = 101,
maxlvl = 120,
shards = {
{ p = 0.75, min = 2, max = 5, id = ArcaneDust_Id, },
{ p = 0.22, min = 1, max = 2, id = GreaterPlanarEssence_Id, },
{ p = 0.03, min = 1, max = 1, id = LargePrismaticShard_Id, },
},
},
{
minlvl = 130,
maxlvl = 151,
shards = {
{ p = 0.75, min = 1, max = 3, id = InfiniteDust_Id, },
{ p = 0.22, min = 1, max = 2, id = LesserCosmicEssence_Id, },
{ p = 0.03, min = 1, max = 1, id = SmallDreamShard_Id, },
},
},
{
minlvl = 152,
maxlvl = 182,
shards = {
{ p = 0.75, min = 2, max = 7, id = InfiniteDust_Id, },
{ p = 0.22, min = 1, max = 2, id = GreaterCosmicEssence_Id, },
{ p = 0.03, min = 1, max = 1, id = DreamShard_Id, },
},
},
{
minlvl = 272,
maxlvl = 275,
shards = {
{ p = 0.75, min = 1, max = 2, id = HypnoticDust_Id, },
{ p = 0.25, min = 1, max = 2, id = LesserCelestialEssence_Id, },
},
},
{
minlvl = 276,
maxlvl = 290,
shards = {
{ p = 0.75, min = 1, max = 3, id = HypnoticDust_Id, },
{ p = 0.25, min = 1, max = 3, id = LesserCelestialEssence_Id, },
},
},
{
minlvl = 291,
maxlvl = 305,
shards = {
{ p = 0.75, min = 1, max = 4, id = HypnoticDust_Id, },
{ p = 0.25, min = 1, max = 4, id = LesserCelestialEssence_Id, },
},
},
{
minlvl = 306,
maxlvl = 315,
shards = {
{ p = 0.75, min = 1, max = 5, id = HypnoticDust_Id, },
{ p = 0.25, min = 1, max = 2, id = GreaterCelestialEssence_Id, },
},
},
{
minlvl = 316,
maxlvl = 325,
shards = {
{ p = 0.75, min = 1, max = 6, id = HypnoticDust_Id, },
{ p = 0.25, min = 1, max = 4, id = GreaterCelestialEssence_Id, },
},
},
{
minlvl = 326,
maxlvl = 350,
shards = {
{ p = 0.75, min = 1, max = 7, id = HypnoticDust_Id, },
{ p = 0.25, min = 1, max = 5, id = GreaterCelestialEssence_Id, },
},
},
{
minlvl = 351,
maxlvl = 380,
shards = {
{ p = 0.85, min = 1, max = 3, id = SpiritDust_Id, },
{ p = 0.15, min = 1, max = 1, id = MysteriousEssence_Id, },
},
},
{
minlvl = 381,
maxlvl = 390,
shards = {
{ p = 0.85, min = 1, max = 4, id = SpiritDust_Id, },
{ p = 0.15, min = 1, max = 1, id = MysteriousEssence_Id, },
},
},
{
minlvl = 391,
maxlvl = 410,
shards = {
{ p = 0.85, min = 1, max = 5, id = SpiritDust_Id, },
{ p = 0.15, min = 1, max = 2, id = MysteriousEssence_Id, },
},
},
{
minlvl = 411,
maxlvl = 450,
shards = {
{ p = 0.85, min = 1, max = 6, id = SpiritDust_Id, },
{ p = 0.15, min = 1, max = 3, id = MysteriousEssence_Id, },
},
},
};
local UncommonWeapon = {
{
minlvl = 10,
maxlvl = 15,
shards = {
{ p = 0.80, min = 1, max = 2, id = LesserMagicEssence_Id, },
{ p = 0.20, min = 1, max = 2, id = StrangeDust_Id, },
},
},
{
minlvl = 16,
maxlvl = 20,
shards = {
{ p = 0.75, min = 1, max = 2, id = GreaterMagicEssence_Id, },
{ p = 0.20, min = 2, max = 3, id = StrangeDust_Id, },
{ p = 0.05, min = 1, max = 1, id = SmallGlimmeringShard_Id, },
},
},
{
minlvl = 21,
maxlvl = 25,
shards = {
{ p = 0.75, min = 1, max = 2, id = LesserAstralEssence_Id, },
{ p = 0.15, min = 4, max = 6, id = StrangeDust_Id, },
{ p = 0.10, min = 1, max = 1, id = SmallGlimmeringShard_Id, },
},
},
{
minlvl = 26,
maxlvl = 30,
shards = {
{ p = 0.75, min = 1, max = 2, id = GreaterAstralEssence_Id, },
{ p = 0.20, min = 1, max = 2, id = SoulDust_Id, },
{ p = 0.05, min = 1, max = 1, id = LargeGlimmeringShard_Id, },
},
},
{
minlvl = 31,
maxlvl = 35,
shards = {
{ p = 0.75, min = 1, max = 2, id = LesserMysticEssence_Id, },
{ p = 0.20, min = 2, max = 5, id = SoulDust_Id, },
{ p = 0.05, min = 1, max = 1, id = SmallGlowingShard_Id, },
},
},
{
minlvl = 36,
maxlvl = 40,
shards = {
{ p = 0.75, min = 1, max = 2, id = GreaterMysticEssence_Id, },
{ p = 0.20, min = 1, max = 2, id = VisionDust_Id, },
{ p = 0.05, min = 1, max = 1, id = LargeGlowingShard_Id, },
},
},
{
minlvl = 41,
maxlvl = 45,
shards = {
{ p = 0.75, min = 1, max = 2, id = LesserNetherEssence_Id, },
{ p = 0.20, min = 2, max = 5, id = VisionDust_Id, },
{ p = 0.05, min = 1, max = 1, id = SmallRadiantShard_Id, },
},
},
{
minlvl = 46,
maxlvl = 50,
shards = {
{ p = 0.75, min = 1, max = 2, id = GreaterNetherEssence_Id, },
{ p = 0.20, min = 1, max = 2, id = DreamDust_Id, },
{ p = 0.05, min = 1, max = 1, id = LargeRadiantShard_Id, },
},
},
{
minlvl = 51,
maxlvl = 55,
shards = {
{ p = 0.75, min = 1, max = 2, id = LesserEternalEssence_Id, },
{ p = 0.22, min = 2, max = 5, id = DreamDust_Id, },
{ p = 0.03, min = 1, max = 1, id = SmallBrilliantShard_Id, },
},
},
{
minlvl = 56,
maxlvl = 60,
shards = {
{ p = 0.75, min = 1, max = 2, id = GreaterEternalEssence_Id, },
{ p = 0.22, min = 1, max = 2, id = IllusionDust_Id, },
{ p = 0.03, min = 1, max = 1, id = LargeBrilliantShard_Id, },
},
},
{
minlvl = 61,
maxlvl = 65,
shards = {
{ p = 0.75, min = 2, max = 3, id = GreaterEternalEssence_Id, },
{ p = 0.22, min = 2, max = 5, id = IllusionDust_Id, },
{ p = 0.03, min = 1, max = 1, id = LargeBrilliantShard_Id, },
},
},
{
minlvl = 80,
maxlvl = 100,
shards = {
{ p = 0.75, min = 2, max = 3, id = LesserPlanarEssence_Id, },
{ p = 0.22, min = 2, max = 3, id = ArcaneDust_Id, },
{ p = 0.03, min = 1, max = 1, id = SmallPrismaticShard_Id, },
},
},
{
minlvl = 101,
maxlvl = 120,
shards = {
{ p = 0.75, min = 1, max = 2, id = GreaterPlanarEssence_Id, },
{ p = 0.22, min = 2, max = 5, id = ArcaneDust_Id, },
{ p = 0.03, min = 1, max = 1, id = LargePrismaticShard_Id, },
},
},
{
minlvl = 130,
maxlvl = 151,
shards = {
{ p = 0.75, min = 1, max = 2, id = LesserCosmicEssence_Id, },
{ p = 0.22, min = 1, max = 3, id = InfiniteDust_Id, },
{ p = 0.03, min = 1, max = 1, id = SmallDreamShard_Id, },
},
},
{
minlvl = 152,
maxlvl = 187,
shards = {
{ p = 0.75, min = 1, max = 2, id = GreaterCosmicEssence_Id, },
{ p = 0.22, min = 2, max = 7, id = InfiniteDust_Id, },
{ p = 0.03, min = 1, max = 1, id = DreamShard_Id, },
},
},
{
minlvl = 272,
maxlvl = 275,
shards = {
{ p = 0.75, min = 1, max = 2, id = LesserCelestialEssence_Id, },
{ p = 0.25, min = 1, max = 2, id = HypnoticDust_Id, },
},
},
{
minlvl = 276,
maxlvl = 290,
shards = {
{ p = 0.75, min = 1, max = 3, id = LesserCelestialEssence_Id, },
{ p = 0.25, min = 1, max = 3, id = HypnoticDust_Id, },
},
},
{
minlvl = 291,
maxlvl = 305,
shards = {
{ p = 0.75, min = 1, max = 4, id = LesserCelestialEssence_Id, },
{ p = 0.25, min = 1, max = 4, id = HypnoticDust_Id, },
},
},
{
minlvl = 306,
maxlvl = 315,
shards = {
{ p = 0.75, min = 1, max = 2, id = GreaterCelestialEssence_Id, },
{ p = 0.25, min = 1, max = 5, id = HypnoticDust_Id, },
},
},
{
minlvl = 316,
maxlvl = 325,
shards = {
{ p = 0.75, min = 1, max = 4, id = GreaterCelestialEssence_Id, },
{ p = 0.25, min = 1, max = 6, id = HypnoticDust_Id, },
},
},
{
minlvl = 326,
maxlvl = 350,
shards = {
{ p = 0.75, min = 1, max = 5, id = GreaterCelestialEssence_Id, },
{ p = 0.25, min = 1, max = 7, id = HypnoticDust_Id, },
},
},
{
minlvl = 351,
maxlvl = 380,
shards = {
{ p = 0.85, min = 1, max = 4, id = SpiritDust_Id, },
{ p = 0.15, min = 1, max = 1, id = MysteriousEssence_Id, },
},
},
{
minlvl = 381,
maxlvl = 390,
shards = {
{ p = 0.85, min = 1, max = 5, id = SpiritDust_Id, },
{ p = 0.15, min = 1, max = 1, id = MysteriousEssence_Id, },
},
},
{
minlvl = 391,
maxlvl = 410,
shards = {
{ p = 0.85, min = 1, max = 6, id = SpiritDust_Id, },
{ p = 0.15, min = 1, max = 2, id = MysteriousEssence_Id, },
},
},
{
minlvl = 411,
maxlvl = 450,
shards = {
{ p = 0.85, min = 1, max = 7, id = SpiritDust_Id, },
{ p = 0.15, min = 1, max = 3, id = MysteriousEssence_Id, },
},
},
};
local Rare = {
{
minlvl = 11,
maxlvl = 25,
shards = {
{ p = 1.00, min = 1, max = 1, id = SmallGlimmeringShard_Id, },
},
},
{
minlvl = 26,
maxlvl = 30,
shards = {
{ p = 1.00, min = 1, max = 1, id = LargeGlimmeringShard_Id, },
},
},
{
minlvl = 31,
maxlvl = 35,
shards = {
{ p = 1.00, min = 1, max = 1, id = SmallGlowingShard_Id, },
},
},
{
minlvl = 36,
maxlvl = 40,
shards = {
{ p = 1.00, min = 1, max = 1, id = LargeGlowingShard_Id, },
},
},
{
minlvl = 41,
maxlvl = 45,
shards = {
{ p = 1.00, min = 1, max = 1, id = SmallRadiantShard_Id, },
},
},
{
minlvl = 46,
maxlvl = 50,
shards = {
{ p = 1.00, min = 1, max = 1, id = LargeRadiantShard_Id, },
},
},
{
minlvl = 51,
maxlvl = 55,
shards = {
{ p = 1.00, min = 1, max = 1, id = SmallBrilliantShard_Id, },
},
},
{
minlvl = 56,
maxlvl = 65,
shards = {
{ p = 0.995, min = 1, max = 1, id = LargeBrilliantShard_Id, },
{ p = 0.005, min = 1, max = 1, id = NexusCrystal_Id, },
},
},
{
minlvl = 66,
maxlvl = 99,
shards = {
{ p = 0.995, min = 1, max = 1, id = SmallPrismaticShard_Id, },
{ p = 0.005, min = 1, max = 1, id = NexusCrystal_Id, },
},
},
{
minlvl = 100,
maxlvl = 115,
shards = {
{ p = 0.995, min = 1, max = 1, id = LargePrismaticShard_Id, },
{ p = 0.005, min = 1, max = 1, id = VoidCrystal_Id, },
},
},
{
minlvl = 130,
maxlvl = 166,
shards = {
{ p = 0.995, min = 1, max = 1, id = SmallDreamShard_Id, },
{ p = 0.005, min = 1, max = 1, id = AbyssCrystal_Id, },
},
},
{
minlvl = 167,
maxlvl = 200,
shards = {
{ p = 0.995, min = 1, max = 1, id = DreamShard_Id, },
{ p = 0.005, min = 1, max = 1, id = AbyssCrystal_Id, },
},
},
{
minlvl = 201,
maxlvl = 316,
shards = {
{ p = 1, min = 1, max = 1, id = SmallHeavenlyShard_Id, },
},
},
{
minlvl = 317,
maxlvl = 380,
shards = {
{ p = 1, min = 1, max = 1, id = HeavenlyShard_Id, },
},
},
{
minlvl = 381,
maxlvl = 424,
shards = {
{ p = 1, min = 1, max = 1, id = SmallEtherealShard_Id, },
},
},
{
minlvl = 425,
maxlvl = 449,
shards = {
{ p = 1, min = 1, max = 1, id = EtherealShard_Id, },
},
},
{
minlvl = 449,
maxlvl = 450,
shards = {
{ p = 0.8, min = 1, max = 1, id = SmallEtherealShard_Id, },
{ p = 0.2, min = 1, max = 1, id = EtherealShard_Id, },
},
},
{
minlvl = 451,
maxlvl = 500,
shards = {
{ p = 1, min = 1, max = 1, id = EtherealShard_Id, },
},
},
};
local Epic = {
{
minlvl = 40,
maxlvl = 45,
shards = {
{ p = 1.00, min = 2, max = 4, id = SmallRadiantShard_Id, },
},
},
{
minlvl = 46,
maxlvl = 50,
shards = {
{ p = 1.00, min = 2, max = 4, id = LargeRadiantShard_Id, },
},
},
{
minlvl = 51,
maxlvl = 55,
shards = {
{ p = 1.00, min = 2, max = 4, id = SmallBrilliantShard_Id, },
},
},
{
minlvl = 56,
maxlvl = 60,
shards = {
{ p = 1.00, min = 1, max = 1, id = NexusCrystal_Id, },
},
},
{
minlvl = 61,
maxlvl = 94,
shards = {
{ p = 1.00, min = 1, max = 2, id = NexusCrystal_Id, },
},
},
{
minlvl = 95,
maxlvl = 165,
shards = {
{ p = 1.00, min = 1, max = 2, id = VoidCrystal_Id, },
},
},
{
minlvl = 200,
maxlvl = 277,
shards = {
{ p = 1.00, min = 1, max = 1, id = AbyssCrystal_Id, },
},
},
{
minlvl = 278,
maxlvl = 419,
shards = {
{ p = 1.00, min = 1, max = 1, id = MaelstromCrystal_Id, },
},
},
{
minlvl = 420,
maxlvl = 600,
shards = {
{ p = 1.00, min = 1, max = 1, id = ShaCrystal_Id, },
},
},
};
-- Constants used to build the disenchant table.
local ITEM_TYPE_ARMOR = 1;
local ITEM_TYPE_WEAPON = 2;
-- Warlords compatibility - these constants moved to a LuaEnum.
local ITEM_QUALITY_UNCOMMON = LE_ITEM_QUALITY_UNCOMMON or ITEM_QUALITY_UNCOMMON
local ITEM_QUALITY_RARE = LE_ITEM_QUALITY_RARE or ITEM_QUALITY_RARE
local ITEM_QUALITY_EPIC = LE_ITEM_QUALITY_EPIC or ITEM_QUALITY_EPIC
local Qualities = {
ITEM_QUALITY_UNCOMMON,
ITEM_QUALITY_RARE,
ITEM_QUALITY_EPIC,
};
local Types = {
ITEM_TYPE_ARMOR,
ITEM_TYPE_WEAPON,
};
-- This table collects the raw data above.
local DisenchantInfo = {
[ITEM_QUALITY_UNCOMMON] = {
[ITEM_TYPE_ARMOR] = UncommonArmor,
[ITEM_TYPE_WEAPON] = UncommonWeapon,
},
[ITEM_QUALITY_RARE] = {
[ITEM_TYPE_ARMOR] = Rare,
[ITEM_TYPE_WEAPON] = Rare,
},
[ITEM_QUALITY_EPIC] = {
[ITEM_TYPE_ARMOR] = Epic,
[ITEM_TYPE_WEAPON] = Epic,
},
};
-- Here's the official disenchant table, built on startup.
local DisenchantTable;
local LocalizedWeapon;
local LocalizedArmor;
-- Flesh out the disenchant table for quick lookup.
function AuctionLite:BuildDisenchantTable()
-- Get the localized names for weapons and armor, which we use to
-- determine item type.
--LocalizedWeapon, LocalizedArmor = GetAuctionItemClasses();
LocalizedWeapon, LocalizedArmor = AUCTION_CATEGORY_WEAPONS, AUCTION_CATEGORY_ARMOR;
-- Build the lookup table.
DisenchantTable = {};
local quality;
for _, quality in ipairs(Qualities) do
DisenchantTable[quality] = {};
local typ;
for _, typ in ipairs(Types) do
DisenchantTable[quality][typ] = {};
local table = DisenchantTable[quality][typ];
local ranges = DisenchantInfo[quality][typ];
for _, range in ipairs(ranges) do
local i;
for i = range.minlvl, range.maxlvl do
table[i] = range.shards;
end
end
end
end
-- We're done with the original data, so free it.
DisenchantInfo = nil;
end
-- Compute the expected disenchant value for this item.
function AuctionLite:GetDisenchantValue(item)
local result = nil;
-- Get the item quality, level, and type.
local _, _, quality, ilvl, _, typeStr = GetItemInfo(item);
local disenchantable =
quality == ITEM_QUALITY_UNCOMMON or
quality == ITEM_QUALITY_RARE or
quality == ITEM_QUALITY_EPIC;
local typ;
if typeStr == LocalizedWeapon then
typ = ITEM_TYPE_WEAPON;
elseif typeStr == LocalizedArmor then
typ = ITEM_TYPE_ARMOR;
end
-- If it's disenchantable, look it up.
if disenchantable and typ ~= nil then
local shards = DisenchantTable[quality][typ][ilvl];
if shards ~= nil then
-- Iterate through all the possible shards we could generate
-- to compute the expected value.
local failed = false;
local total = 0;
local shard;
for _, shard in ipairs(shards) do
local shardValue = self:GetAuctionValue(shard.id);
if shardValue ~= nil then
total = total + shardValue * shard.p *
(shard.min + (shard.max - shard.min) / 2);
else
failed = true;
end
end
-- If we looked up all the shards successfully, we're done.
if not failed then
result = total;
end
end
end
return result;
end