Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[
- 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)
Advertisement
Add Comment
Please, Sign In to add comment