--[[
Config table. Set your UpgradeSpell if this will be used, your token ID,
and what items should be upgradeable and what said item upgrades to.
]]
local ItemUpgrade = {
UpgradeSpell = 61335, -- Temp spell to test OnCast
UpgradeToken = 6948, -- Hearthstone, use dummy token
Upgradeable_Items = {
-- {OldItemEntry, NewItemEntry},
{2092, 3296}, -- Worn Dagger, Deadman Dagger
{3296, 4565}, -- Deadman Dagger, Simple Dagger
};
};
-- End config table. Do not touch anything below unless you know what you're doing.
function ItemUpgrade.GetUpgradeEntry(original_entry)
for i = 1, #ItemUpgrade.Upgradeable_Items do
if ItemUpgrade.Upgradeable_Items[i][1] == original_entry then
return ItemUpgrade.Upgradeable_Items[i][2];
end
end
end
function ItemUpgrade.OnCast(event, player, spell, skipCheck)
if spell:GetEntry() == ItemUpgrade.UpgradeSpell then
for i = 1, #ItemUpgrade.Upgradeable_Items do
if player:HasItem(ItemUpgrade.Upgradeable_Items[i][1]) then
ItemUpgrade.OnHello(event, player, original_item)
end
end
end
end
function ItemUpgrade.OnHello(event, player, original_item)
player:GossipClearMenu()
for i = 1, #ItemUpgrade.Upgradeable_Items do
if player:HasItem(ItemUpgrade.Upgradeable_Items[i][1]) then
player:GossipMenuAddItem(0, "Upgrade "..GetItemLink(ItemUpgrade.Upgradeable_Items[i][1]), 0, ItemUpgrade.Upgradeable_Items[i][1], false, "Are you sure you want to upgrade "..GetItemLink(ItemUpgrade.Upgradeable_Items[i][1]).." to "..GetItemLink(ItemUpgrade.Upgradeable_Items[i][2]).."?")
end
end
player:GossipSendMenu(1, player, 100)
end
function ItemUpgrade.OnSelect(event, player, original_item, sender, intid, code)
local old_entry = intid
local new_entry = ItemUpgrade.GetUpgradeEntry(old_entry)
player:GossipComplete()
-- This automatically removes the old item and adds the new item. This could be replaced
player:RemoveItem(ItemUpgrade.UpgradeToken, 1)
player:RemoveItem(old_entry, 1)
player:AddItem(new_entry, 1)
-- ie. with player:SendQuestTemplate(questId, activeAccept) -- Sends quest template to player
end
RegisterPlayerEvent(5, ItemUpgrade.OnCast)
RegisterItemGossipEvent(ItemUpgrade.UpgradeToken, 1, ItemUpgrade.OnHello)
RegisterPlayerGossipEvent(100, 2, ItemUpgrade.OnSelect)