Vanilla 1.1.4 is a product of Lussumo. More Information: Documentation, Community Support.

-- Enchanting reagents
local VOID = 22450
local NEXUS = 20725
local LPRISMATIC = 22449
local LBRILLIANT = 14344
local LRADIANT = 11178
local LGLOWING = 11139
local LGLIMMERING = 11084
local SPRISMATIC = 22448
local SBRILLIANT = 14343
local SRADIANT = 11177
local SGLOWING = 11138
local SGLIMMERING = 10978
local GPLANAR = 22446
local GETERNAL = 16203
local GNETHER = 11175
local GMYSTIC = 11135
local GASTRAL = 11082
local GMAGIC = 10939
local LPLANAR = 22447
local LETERNAL = 16202
local LNETHER = 11174
local LMYSTIC = 11134
local LASTRAL = 10998
local LMAGIC = 10938
local ARCANE = 22445
local ILLUSION = 16204
local DREAM = 11176
local VISION = 11137
local SOUL = 11083
local STRANGE = 10940
local priceUpperLimit = {
[22450] = 750000, -- Void Crystal
[20725] = 75000, -- Nexus Crystal
[22449] = 180000, -- Large Prismatic Shard
[14344] = 85000, -- Large Brilliant Shard
[11178] = 75000, -- Large Radiant Shard
[11139] = 15000, -- Large Glowing Shard
[11084] = 5000, -- Large Glimmering Shard
[22448] = 50000, -- Small Prismatic Shard
[14343] = 10000, -- Small Brilliant Shard
[11177] = 50000, -- Small Radiant Shard
[11138] = 3500, -- Small Glowing Shard
[10978] = 2500, -- Small Glimmering Shard
[22446] = 52500, -- Greater Planar Essence
[16203] = 82500, -- Greater Eternal Essence
[11175] = 45000, -- Greater Nether Essence
[11135] = 6000, -- Greater Mystic Essence
[11082] = 4500, -- Greater Astral Essence
[10939] = 4500, -- Greater Magic Essence
[22447] = 17500, -- Lesser Planar Essence
[16202] = 27500, -- Lesser Eternal Essence
[11174] = 15000, -- Lesser Nether Essence
[11134] = 2000, -- Lesser Mystic Essence
[10998] = 1500, -- Lesser Astral Essence
[10938] = 1500, -- Lesser Magic Essence
[22445] = 18500, -- Arcane Dust
[16204] = 17500, -- Illusion Dust
[11176] = 5000, -- Dream Dust
[11137] = 1500, -- Vision Dust
[11083] = 1500, -- Soul Dust
[10940] = 750, -- Strange Dust
}
-- A price adjustment to favour/disfavour particular reagents
-- depending on the market and how much of the reagent I have
-- already. Set manually, but I am working on automating this
local priceAdjustment = {
[VOID] = 0.5,
[NEXUS] = 0.5,
[LPRISMATIC] = 1,
[LBRILLIANT] = 1,
[LRADIANT] = 1,
[LGLOWING] = 1,
[LGLIMMERING] = 1,
[SPRISMATIC] = 1,
[SBRILLIANT] = 1,
[SRADIANT] = 1,
[SGLOWING] = 1,
[SGLIMMERING] = 1,
[GPLANAR] = 1,
[GETERNAL] = 1,
[GNETHER] = 1,
[GMYSTIC] = 1,
[GASTRAL] = 1,
[GMAGIC] = 1,
[LPLANAR] = 1,
[LETERNAL] = 1,
[LNETHER] = 1,
[LMYSTIC] = 1,
[LASTRAL] = 1,
[LMAGIC] = 1,
[ARCANE] = 1,
[ILLUSION] = 1,
[DREAM] = 1,
[VISION] = 1,
[SOUL] = 1,
[STRANGE] = 1,
}
-- item types
local WEAPON = 0
local ARMOR = 1
-- item qualities
local UNCOMMON = 2
local RARE = 3
local EPIC = 4
-- convert an item type string to an integer type
local typeStringToType = {
["Weapon"] = WEAPON,
["Armor"] = ARMOR,
}
-- disenchanting level bracket upper bounds, e.g. an ilevel 52 item
-- goes into bracket 55
local levelUpperBounds = { 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 85, 99, 120 }
-- bad items that look like they should be disenchantable but aren't
local badItem = {
[11287] = {}, -- Lesser Magic Wand
[11288] = {}, -- Greater Magic Wand
[11289] = {}, -- Lesser Mystic Wand
[11290] = {}, -- Greater Mystic Wand
[20406] = {}, -- Twilight Cultist Mantle
[20407] = {}, -- Twilight Cultist Robe
[20408] = {}, -- Twilight Cultist Cowl
}
-- the big disenchant table, indexed by [quality][type][level bracket]
-- and yielding { { reagent type, drop probability, average drop quantity }, ... }
-- I would use Enchantrix, but it lacks data for new items
local disenchantTable = {
[UNCOMMON] = {
[WEAPON] = {
[15] = { { STRANGE , 0.20, 1.5 }, { LMAGIC , 0.80, 1.5 }, },
[20] = { { STRANGE , 0.20, 2.5 }, { GMAGIC , 0.75, 1.5 }, { SGLIMMERING, 0.05, 1.0 }, },
[25] = { { STRANGE , 0.15, 5.0 }, { GMAGIC , 0.75, 1.5 }, { SGLIMMERING, 0.10, 1.0 }, },
[30] = { { SOUL , 0.20, 1.5 }, { GMAGIC , 0.75, 1.5 }, { LGLIMMERING, 0.05, 1.0 }, },
[35] = { { SOUL , 0.20, 3.5 }, { LMYSTIC , 0.75, 1.5 }, { SGLOWING , 0.05, 1.0 }, },
[40] = { { VISION , 0.20, 1.5 }, { GMYSTIC , 0.75, 1.5 }, { LGLOWING , 0.05, 1.0 }, },
[45] = { { VISION , 0.15, 3.5 }, { LNETHER , 0.80, 1.5 }, { SRADIANT , 0.05, 1.0 }, },
[50] = { { DREAM , 0.20, 1.5 }, { GNETHER , 0.75, 1.5 }, { LRADIANT , 0.05, 1.0 }, },
[55] = { { DREAM , 0.20, 3.5 }, { LETERNAL, 0.75, 1.5 }, { SBRILLIANT , 0.05, 1.0 }, },
[60] = { { ILLUSION, 0.20, 1.5 }, { GETERNAL, 0.75, 1.5 }, { LBRILLIANT , 0.05, 1.0 }, },
[65] = { { ILLUSION, 0.20, 3.5 }, { GETERNAL, 0.75, 2.5 }, { LBRILLIANT , 0.05, 1.0 }, },
[85] = { { ARCANE , 0.20, 2.5 }, { LPLANAR , 0.75, 2.5 }, { SPRISMATIC , 0.05, 1.0 }, },
[99] = { { ARCANE , 0.20, 2.5 }, { LPLANAR , 0.75, 2.5 }, { SPRISMATIC , 0.05, 1.0 }, },
[120] = { { ARCANE , 0.20, 3.5 }, { GPLANAR , 0.75, 1.5 }, { LPRISMATIC , 0.05, 1.0 }, },
},
[ARMOR] = {
[15] = { { STRANGE , 0.80, 1.5 }, { LMAGIC , 0.20, 1.5 }, },
[20] = { { STRANGE , 0.75, 2.5 }, { GMAGIC , 0.20, 1.5 }, { SGLIMMERING, 0.05, 1.0 }, },
[25] = { { STRANGE , 0.75, 5.0 }, { LASTRAL , 0.15, 1.5 }, { SGLIMMERING, 0.10, 1.0 }, },
[30] = { { SOUL , 0.75, 1.5 }, { GASTRAL , 0.20, 1.5 }, { LGLIMMERING, 0.05, 1.0 }, },
[35] = { { SOUL , 0.75, 3.5 }, { LMYSTIC , 0.20, 1.5 }, { SGLOWING , 0.05, 1.0 }, },
[40] = { { VISION , 0.75, 1.5 }, { GMYSTIC , 0.20, 1.5 }, { LGLOWING , 0.05, 1.0 }, },
[45] = { { VISION , 0.80, 3.5 }, { LNETHER , 0.15, 1.5 }, { SRADIANT , 0.05, 1.0 }, },
[50] = { { DREAM , 0.75, 1.5 }, { GNETHER , 0.20, 1.5 }, { LRADIANT , 0.05, 1.0 }, },
[55] = { { DREAM , 0.75, 3.5 }, { LETERNAL, 0.20, 1.5 }, { SBRILLIANT , 0.05, 1.0 }, },
[60] = { { ILLUSION, 0.75, 1.5 }, { GETERNAL, 0.20, 1.5 }, { LBRILLIANT , 0.05, 1.0 }, },
[65] = { { ILLUSION, 0.75, 3.5 }, { GETERNAL, 0.20, 2.5 }, { LBRILLIANT , 0.05, 1.0 }, },
[85] = { { ARCANE , 0.75, 2.5 }, { LPLANAR , 0.20, 2.5 }, { SPRISMATIC , 0.05, 1.0 }, },
[99] = { { ARCANE , 0.75, 2.5 }, { LPLANAR , 0.20, 2.5 }, { SPRISMATIC , 0.05, 1.0 }, },
[120] = { { ARCANE , 0.75, 3.5 }, { GPLANAR , 0.20, 1.5 }, { LPRISMATIC , 0.05, 1.0 }, },
},
},
[RARE] = {
[WEAPON] = {
[20] = { { SGLIMMERING, 1.00, 1.0 }, }, [25] = { { SGLIMMERING, 1.00, 1.0 }, },
[30] = { { LGLIMMERING, 1.00, 1.0 }, }, [35] = { { SGLOWING , 1.00, 1.0 }, },
[40] = { { LGLOWING , 1.00, 1.0 }, }, [45] = { { SRADIANT , 1.00, 1.0 }, },
[50] = { { LRADIANT , 1.00, 1.0 }, }, [55] = { { SBRILLIANT , 1.00, 1.0 }, },
[60] = { { LBRILLIANT , 0.99, 1.0 }, { NEXUS, 0.01, 1.0 }, },
[65] = { { LBRILLIANT , 0.99, 1.0 }, { NEXUS, 0.01, 1.0 }, },
[85] = { { SPRISMATIC , 0.99, 1.0 }, { NEXUS, 0.01, 1.0 }, },
[99] = { { SPRISMATIC , 0.99, 1.0 }, { VOID , 0.01, 1.0 }, },
[120] = { { LPRISMATIC , 0.99, 1.0 }, { VOID , 0.01, 1.0 }, },
},
[ARMOR] = {
[20] = { { SGLIMMERING, 1.00, 1.0 }, }, [25] = { { SGLIMMERING, 1.00, 1.0 }, },
[30] = { { LGLIMMERING, 1.00, 1.0 }, }, [35] = { { SGLOWING , 1.00, 1.0 }, },
[40] = { { LGLOWING , 1.00, 1.0 }, }, [45] = { { SRADIANT , 1.00, 1.0 }, },
[50] = { { LRADIANT , 1.00, 1.0 }, }, [55] = { { SBRILLIANT , 1.00, 1.0 }, },
[60] = { { LBRILLIANT , 0.99, 1.0 }, { NEXUS, 0.01, 1.0 }, },
[65] = { { LBRILLIANT , 0.99, 1.0 }, { NEXUS, 0.01, 1.0 }, },
[85] = { { SPRISMATIC , 0.99, 1.0 }, { NEXUS, 0.01, 1.0 }, },
[99] = { { SPRISMATIC , 0.99, 1.0 }, { VOID , 0.01, 1.0 }, },
[120] = { { LPRISMATIC , 0.99, 1.0 }, { VOID , 0.01, 1.0 }, },
},
},
[EPIC] = {
[WEAPON] = {
[45] = { { SRADIANT , 1.00, 3.5 }, }, [50] = { { LRADIANT , 1.00, 3.5 }, },
[55] = { { SBRILLIANT, 1.00, 3.5 }, }, [60] = { { NEXUS , 1.00, 1.0 }, },
[65] = { { NEXUS , 1.00, 1.0 }, }, [85] = { { NEXUS , 1.00, 1.0 }, },
[99] = { { VOID , 1.00, 1.0 }, }, [120] = { { VOID , 1.00, 1.5 }, },
},
[ARMOR] = {
[45] = { { SRADIANT , 1.00, 3.5 }, }, [50] = { { LRADIANT , 1.00, 3.5 }, },
[55] = { { SBRILLIANT, 1.00, 3.5 }, }, [60] = { { NEXUS , 1.00, 1.0 }, },
[65] = { { NEXUS , 1.00, 1.0 }, }, [85] = { { NEXUS , 1.00, 1.0 }, },
[99] = { { VOID , 1.00, 1.0 }, }, [120] = { { VOID , 1.00, 1.5 }, },
},
},
}
----------------------------------------
local watchList = {
-- 10-19 weapons
[1935] = 1500000, -- Assassin's Blade
[1482] = 1300000, -- Shadowfang
[890] = 360000, -- Twisted Chanter's Staff
[2567] = 350000, -- Evocator's Blade
[1318] = 340000, -- Night Reaver
[1484] = 300000, -- Witching Stave
-- 10-19 armor
[2059] = 510000, -- Sentry Cloak
[8350] = 490000, -- The 1 Ring
[1486] = 490000, -- Tree Bark Jacket
[1121] = 400000, -- Feet of the Lynx
[12977] = 300000, -- Magefist Gloves
-- 20-29 weapons
[776] = 920000, -- Vendetta
[4454] = 490000, -- Talon of Vultros
[8226] = 450000, -- The Butcher
[4446] = 410000, -- Blackvenom Blade
[13033] = 400000, -- Zealot Blade
[3413] = 390000, -- Doomspike
[7730] = 300000, -- Cobalt Crusher
-- 20-29 armor
[9491] = 630000, -- Hotshot Pilot's Gloves
[2264] = 780000, -- Mantle of Thieves
[1978] = 530000, -- Wolfclaw Gloves
[2039] = 500000, -- Plains Ring
[9510] = 410000, -- Caverndeep Trudgers
[13108] = 400000, -- Tigerstrike Mantle
[2278] = 390000, -- Forest Tracker Epaulets
[2292] = 390000, -- Necrology Robes
[9509] = 370000, -- Petrolspill Leggings
[1491] = 360000, -- Ring of Precision
[7728] = 320000, -- Beguiler Robes
[12998] = 300000, -- Magician's Mantle
-- 30-39 weapons
[873] = 2300000, -- Staff of Jordan
[2825] = 1200000, -- Bow of Searing Arrows
[870] = 1200000, -- Fiery War Axe
[9425] = 1100000, -- Pendulum of Doom
[869] = 1000000, -- Dazzling Longsword
[1982] = 1000000, -- Nightblade
[9424] = 580000, -- Ginn-su Sword
[868] = 550000, -- Ardent Custodian
[9426] = 430000, -- Monolithic Bow
[9718] = 410000, -- Reforged Blade of Heroes
[8223] = 390000, -- Blade of the Basilisk
[13034] = 380000, -- Speedsteel Rapier
[9384] = 380000, -- Stonevault Shiv
[9392] = 330000, -- Annealed Blade
[10570] = 320000, -- Manslayer
[6327] = 320000, -- The Pacifier
[13064] = 300000, -- Jaina's Firestarter
[5756] = 300000, -- Sliverblade
-- 30-39 armor
[10583] = 1500000, -- Quillward Harness
[2955] = 1400000, -- First Mate Hat
[867] = 1100000, -- Gloves of Holy Might
[9429] = 1100000, -- Miner's Hat of the Deep
[1981] = 930000, -- Icemail Jerkin
[7755] = 740000, -- Flintrock Shoulders
[10574] = 660000, -- Corpseshroud
[5257] = 540000, -- Dark Hooded Cape
[9420] = 510000, -- Adventurer's Pith Helmet
[10328] = 500000, -- Scarlet Chestpiece
[1204] = 490000, -- The Green Tower
[9431] = 410000, -- Papal Fez
[1980] = 400000, -- Underworld Band
[9396] = 370000, -- Legguards of the Vault
[10332] = 370000, -- Scarlet Boots
[13110] = 360000, -- Wolffear Harness
[1718] = 350000, -- Basilisk Hide Pants
[2277] = 350000, -- Necromancer Leggings
[2951] = 350000, -- Ring of the Underwood
[9375] = 320000, -- Expert Goldminer's Helmet
[10581] = 310000, -- Death's Head Vestment
[13117] = 300000, -- Ogron's Sash
[13084] = 300000, -- Kaleidoscope Chain
}
----------------------------------------
-- calculate value of a stack of reagents based on
-- auctioneer data and price tables above
local getReagentValue = function(itemID, itemCount)
local upperLimit = priceUpperLimit[itemID]
local adjust = priceAdjustment[itemID] or 1
if not upperLimit then return nil end
local median, snapshot, snapshotCount = nil, nil, nil
local _, link = GetItemInfo(itemID)
if link then
local key = Auctioneer.ItemDB.CreateItemKeyFromLink(link)
if key then
median = Auctioneer.Statistic.GetItemHistoricalMedianBuyout(key)
snapshot, snapshotCount = Auctioneer.Statistic.GetItemSnapshotMedianBuyout(key)
end
end
median = median or upperLimit
snapshot = snapshot or upperLimit
snapshotCount = snapshotCount or 1
median = math.min(median, upperLimit)
snapshot = math.min(snapshot, upperLimit)
local snapshotWeight = 0
if snapshotCount >= 5 and snapshot < median then
snapshotWeight = math.log10(snapshotCount) / math.log10(20)
end
snapshotWeight = math.min(math.max(snapshotWeight, 0), 1)
local medianWeight = 1 - snapshotWeight
local combined = median * medianWeight + snapshot * snapshotWeight
return combined * adjust * itemCount
end
-- take an ilevel and round it up to the corresponding bracket
local roundupLevel = function(level)
for _, bracket in pairs(levelUpperBounds) do
if bracket >= level then
return bracket
end
end
return nil
end
-- get entry from disenchant table (or nil if nothing found)
local getDisenchants = function(quality, type, level)
if disenchantTable[quality] and disenchantTable[quality][type] and disenchantTable[quality][type][level] then
return disenchantTable[quality][type][level]
end
return nil
end
-- calculate disenchant value of item based on disenchant table and
-- calculated reagent values
local getDisenchantValue = function(itemID)
local result = nil
local _, _, quality, level, _, typeString, _, _, _, _ = GetItemInfo(itemID)
if quality >= UNCOMMON and quality <= EPIC and not badItem[itemID] then
local type = typeStringToType[typeString]
if type then
level = roundupLevel(level)
if level then
local disenchants = getDisenchants(quality, type, level)
if disenchants then
result = 0
for _, stats in pairs(disenchants) do
local reagent, chance, count = stats[1], stats[2], stats[3]
result = result + getReagentValue(reagent, chance * count)
end
end
end
end
end
return result
end
--------------------------------------------------------------------------------
-- now decide what to do with the auction
-- min profit for bid
local bidMinProfitRel = 0.25
local bidMinProfitAbs = 5000
-- min profit for buy
local buyMinProfitRel = 0.25
local buyMinProfitAbs = 5000
-- if buyout is close enough to low enough bid, just buy it anyway
local buyMaxBidNear = 0.01
-- adjust low bids upwards, but no closer to maximum bid than this
local bidLess = 0.20
-- assume item is worthless until proven otherwise
basePrice = 0
-- calculate disenchant value or reagent value depending on the type of item
local disenchantValue = getDisenchantValue(itemID)
if disenchantValue then
basePrice = disenchantValue
reason = "Disenchant"
depositCost = 0
depositRate = 0
else
local reagentValue = getReagentValue(itemID, itemCount)
if reagentValue then
basePrice = reagentValue
reason = "Reagent"
depositCost = 0
depositRate = 0
end
end
-- account for AH cut
local resaleValue = basePrice * 0.95
-- decide whether or not to buy
local buyMaxRel = resaleValue * (1 - buyMinProfitRel)
local buyMaxAbs = resaleValue - buyMinProfitAbs
local bidMaxRel = resaleValue * (1 - bidMinProfitRel)
local bidMaxAbs = resaleValue - bidMinProfitAbs
if watchList[itemID] then
basePrice = watchList[itemID]
local bidMax = basePrice * 0.85
if buyPrice ~= 0 and buyPrice <= bidMax then
action = "buy"
reason = "Watch List"
elseif bidPrice ~= 0 and bidPrice <= bidMax then
action = "bid"
reason = "Watch List"
end
else
if buyPrice ~= 0 and buyPrice <= buyMaxRel and buyPrice <= buyMaxAbs then
action = "buy"
reason = reason .. " (buy)"
elseif bidPrice ~= 0 and bidPrice <= bidMaxRel and bidPrice <= bidMaxAbs then
if buyPrice ~= 0 and bidPrice >= buyPrice * (1 - buyMaxBidNear) then
action = "buy"
reason = reason .. " (buy near bid)"
else
action = "bid"
reason = reason .. " (bid, orig = " .. bidPrice .. ")"
local bidRelUp = (resaleValue * (1 - bidMinProfitRel)) * (1 - bidLess)
local bidAbsUp = (resaleValue - bidMinProfitAbs) * (1 - bidLess)
bidPrice = math.max(bidPrice, math.min(bidRelUp, bidAbsUp))
end
end
end
Posted By: DeckardI'm trying to write a watchlist baserule for BTM, but how can I find the itemID for items easily?
local watchList = {
["Enormous Glowing Blade of Sexual Insecurity"] = 10000000,
["Irritable Scarlet Attack Ferret"] = 500000,
-- ...
}
local name = GetItemInfo(itemID)
if watchList[name] and buyPrice ~= 0 and buyPrice <= watchList[name] then
action = "buy"
reason = "gief"
endPosted By: ChardonnayPosted By: DeckardI'm trying to write a watchlist baserule for BTM, but how can I find the itemID for items easily?
If you're sure of the precise name, you could check that directly in your baserule.local watchList = {
["Enormous Glowing Blade of Sexual Insecurity"] = 10000000,
["Irritable Scarlet Attack Ferret"] = 500000,
-- ...
}
local name = GetItemInfo(itemID)
if watchList[name] and buyPrice ~= 0 and buyPrice <= watchList[name] then
action = "buy"
reason = "gief"
end

Posted By: BishopAm I reading correctly that it does not appear to handle iLevels above 99 very well (or at all, really)?
Posted By: BishopI do actually have a modest amount of iLevel 100+ DE's under my belt, but I did not keep track of them per se. The question is: did Enchantrix? And if so, can I dig out that information?
The only two I know for sure, because I wrote them down, are the Clefthoof Boots and the Clefthoof Leggings, both of which DE'ed into 1 Large Prismatic Shard.
[105] = { { ARCANE , 0.20, 3.5 }, { GPLANAR , 0.75, 1.5 }, { LPRISMATIC , 0.05, 1.0 }, }, [105] = { { LPRISMATIC , 0.99, 1.0 }, { VOID , 0.01, 1.0 }, },what's the highest UNCOMMON itemlevel anyway?
Posted By: BishopHmm, that wowhead-site also has disenchant information for everything I could find. That should be usable to fill out the table completely.
-- disenchanting level bracket upper bounds, e.g. an ilevel 52 item
-- goes into bracket 55
local levelUpperBounds = { 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 85, 99, 120}[120] = { { ARCANE , 0.20, 3.5 }, { GPLANAR , 0.75, 1.5 }, { LPRISMATIC , 0.05, 1.0 }, }, [120] = { { ARCANE , 0.75, 3.5 }, { GPLANAR , 0.20, 1.5 }, { LPRISMATIC , 0.05, 1.0 }, }, 
-- min profit for bid
local bidMinProfitRel = 0.25
local bidMinProfitAbs = 5000
-- min profit for buy
local buyMinProfitRel = 0.30
local buyMinProfitAbs = 10000
So what does the 0.25 for bidMinProfitRel represent, 25 silver? What is bidMinProfitAbs set to 5000? Does the 5000 represent 5000 copper (50 silver)?
Originally when you posted this version, I believe you had it use the manually entered baseline values (almost?) exclusively. But if I am reading the current version correctly, it only ever uses the baseline prices if there is no historical and/or snapshot data?
Posted By: Bishop
If you feel like an active fella, Onyx, you could write up the completed list and, say, put it on the wiki. Or just in this thread for starters. I'm sure that'd be appreciated. At least by me. ;)
Posted By: Deckard
So what does the 0.25 for bidMinProfitRel represent, 25 silver? What is bidMinProfitAbs set to 5000? Does the 5000 represent 5000 copper (50 silver)?
Posted By: OnyxThink Chardonnay beat me to it, he's already updated the baserule posted in this thread. Or were you looking for something else?No, you're right, he did. And it was exactly what I was talking about. :)
Posted By: ChardonnayYeh, in the version I'm currently running I only use the baseline prices as a fallback. Prices are still moving around quite a lot and it was easier to just let Auctioneer figure it out. Unfortunately Auctioneer can be fooled by price-jackers and scammers, so that's not ideal either.Thanks, that confirms that I'm getting better at reading lua. :)
- basePrice = 0
+ local myBasePrice = 0
- basePrice = disenchantValue
+ myBasePrice = disenchantValue
- basePrice = reagentValue
+ myBasePrice = reagentValue
- local resaleValue = basePrice * 0.95
+ local resaleValue = myBasePrice * 0.95
+ local _,_, quality, _, _, class, _,_,_ = GetItemInfo(itemID)
+ if (quality==2 and (class =="Weapon" or class == "Armor"))
+ then
+ basePrice = 0
+ end
Posted By: DeckardBishop, sound dandy to me. How would I do that? As I explained in my first post above, I'm not a Lua coder, nor do I know what all the variables and constants are. I assume the section you're referring to is this:-- min profit for bidSo what does the 0.25 for bidMinProfitRel represent, 25 silver? What is bidMinProfitAbs set to 5000? Does the 5000 represent 5000 copper (50 silver)?
local bidMinProfitRel = 0.25
local bidMinProfitAbs = 5000
-- min profit for buy
local buyMinProfitRel = 0.30
local buyMinProfitAbs = 10000
When I stated I'm a noob at coding and trying to understand it, I wasn't joking.
local bidMinProfitRel = 0.50
local buyMinProfitRel = 0.50... which is likely what I would do. Chardonnay likes to make sure he makes a bigger profit on buys than on bids, I personally don't care. I believe I have it set even higher in my basic btm config at the moment.-- These are market norm prices.
-- Median prices from Allakhazam.com, Mar 15, 2007
const.StaticPrices = {
[20725] = 75000, -- Nexus Crystal
[14344] = 110000, -- Large Brilliant Shard
[11178] = 87710, -- Large Radiant Shard
[11139] = 26125, -- Large Glowing Shard
[11084] = 10000, -- Large Glimmering Shard
[14343] = 22500, -- Small Brilliant Shard
[11177] = 70000, -- Small Radiant Shard
[11138] = 5349, -- Small Glowing Shard
[10978] = 3500, -- Small Glimmering Shard
[16203] = 115000, -- Greater Eternal Essence
[11175] = 60000, -- Greater Nether Essence
[11135] = 10000, -- Greater Mystic Essence
[11082] = 9285, -- Greater Astral Essence
[10939] = 5998, -- Greater Magic Essence
[16202] = 43500, -- Lesser Eternal Essence
[11174] = 23333, -- Lesser Nether Essence
[11134] = 5000, -- Lesser Mystic Essence
[10998] = 4066, -- Lesser Astral Essence
[10938] = 3000, -- Lesser Magic Essence
[16204] = 21000, -- Illusion Dust
[11176] = 8750, -- Dream Dust
[11137] = 5500, -- Vision Dust
[11083] = 3453, -- Soul Dust
[10940] = 1275, -- Strange Dust
[22445] = 20000, -- Arcane Dust
[22447] = 22325, -- Lesser Planar Essence
[22446] = 68000, -- Greater Planar Essence
[22448] = 64600, -- Small Prismatic Shard
[22449] = 190000, -- Large Prismatic Shard
[22450] = 997500, -- Void Crystal
} Posted By: BishopHowever, I have a question/suggestion. Currently, your baserule will effectively prevent buying/bidding on items for resale, because it sets basePrice = 0 for all items we do not specifically want to buy.
But if I am figuring correctly, it really does not have to be that way. We could simply return nil for items that we do not care about, rather than setting basePrice, thus allowing the main BTM function to bid or buy for resale. And on top of that, I would personally like to use my don't-resell-greens rule.
Chardonnay likes to make sure he makes a bigger profit on buys than on bids, I personally don't care.


Posted By: Bishop
Accordingly, I am considering using the baserule above with the following modifications:- basePrice = 0
+ local myBasePrice = 0
- basePrice = disenchantValue
+ myBasePrice = disenchantValue
- basePrice = reagentValue
+ myBasePrice = reagentValue
- local resaleValue = basePrice * 0.95
+ local resaleValue = myBasePrice * 0.95
+ local _,_, quality, _, _, class, _,_,_ = GetItemInfo(itemID)
+ if (quality==2 and (class =="Weapon" or class == "Armor"))
+ then
+ basePrice = 0
+ end
Comments, suggestions or pointing out mistakes in my reasoning and/or lua would be most welcome. :)

Posted By: dineshI can appreciate that advanced users might WANT to turn off the default processing, but I don't want to have to force every baserule user to HAVE TO turn it off. Perhaps the best way to accomplish this would be to have two ignore switches - one which turns it off just for resale, and one which turns it off for all three. But this solution seems somewhat inelegant to me - I'm sure we can come up with something better.
when we added the action tag, we added it so that it continued the trend of only affecting the resale calculation.
if (iBuy > vendorValue * 100) then ignoreIt = true endPosted By: NorgannaI think that what you guys are talking about should include:
Bringing the vendorPrice and disenchantPrice values into the baserule, if modified, bottomscanner will use them instead.
Perhaps adding a force = true to the baserule should cause the action to be carried out to the exclusion of all other rules.
Ie: if you set both an action and force = true, then upon the exit of the baserule it immediatly executes the action and exits the loop, thereby skipping all the other checks and balances.
Posted By: NorgannaI think that what you guys are talking about should include:
Bringing the vendorPrice and disenchantPrice values into the baserule, if modified, bottomscanner will use them instead.


I want my watchlist, which is included in my baserule (Chardonnay's from this thread), to OVERRIDE the recommendations the rest of the baserule is making for me, the DE suggestions. That is, if something is priced more than my watchlist has it set to, it will be ignored and skipped, never popping up a BTM dialog at all. I don't what the DE portion of the baserule to be ignored completely, just for those items in my watchlist. Get it?
Posted By: handnaviHello, can one of you please share his baserule? :-)
I followed this thread for a long time and now i want to try it by myself, but the link ( http://pastebin.ca/397681 ) is down :X
Thanks in advance
Posted By: MentalPowerYou do know we have our own pasting service right? Although I would prefer that any good-ish baserules be in the Wiki for posterity.
Posted By: jeff2007Hello all. Thanks for making this great tool. I just found this the other day and started to use it. It has helped out a lot. Bishop, I copied your baserule and was wondering how to make updates to it. I noticed that Onyx showed an update of the median prices from Allakhazam. So how do you upated that info? just fine where the info is in the baserule and copy over it with the new info? Thanks

Posted By: OnyxBishop is right about the baselines not really being necesarry if your scans are up to date.
Posted By: ChardonnayThe baserule as posted doesn't reference an object called "const" anywhere. Did you modify it locally?
Posted By: BishopVery nifty watchlist, Chardonnay. Isn't it about time this thread died and a new one took its place, though? This forum doesn't seem to lend itself too well to super-long threads. :)

1 to 87 of 87