Advertisement
Guest User

Untitled

a guest
Apr 8th, 2023
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.66 KB | None | 0 0
  1. local specialQuests = {
  2.     [2215] = PlayerStorageKeys.AnnihilatorDone,
  3.     [2016] = PlayerStorageKeys.DreamersChallenge.Reward,
  4.     [10544] = PlayerStorageKeys.PitsOfInferno.WeaponReward,
  5.     [12513] = PlayerStorageKeys.thievesGuild.Reward,
  6.     [12374] = PlayerStorageKeys.WrathoftheEmperor.mainReward,
  7.     [26300] = PlayerStorageKeys.SvargrondArena.RewardGreenhorn,
  8.     [27300] = PlayerStorageKeys.SvargrondArena.RewardScrapper,
  9.     [28300] = PlayerStorageKeys.SvargrondArena.RewardWarlord
  10. }
  11.  
  12. function onUse(player, item, fromPosition, target, toPosition, isHotkey)
  13.     local storage = specialQuests[item.actionid]
  14.     if not storage then
  15.         storage = item.uid
  16.         if storage > 65535 then
  17.             return false
  18.         end
  19.     end
  20.  
  21.     if player:getStorageValue(storage) > 0 then
  22.         player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The ' .. ItemType(item.itemid):getName() .. ' is empty.')
  23.         return true
  24.     end
  25.  
  26.     local items, reward = {}
  27.     local size = item:isContainer() and item:getSize() or 0
  28.     if size == 0 then
  29.         reward = item:clone()
  30.     else
  31.         local container = Container(item.uid)
  32.         for i = 0, container:getSize() - 1 do
  33.             items[#items + 1] = container:getItem(i):clone()
  34.         end
  35.     end
  36.  
  37.     size = #items
  38.     if size == 1 then
  39.         reward = items[1]:clone()
  40.     end
  41.  
  42.     local result = ''
  43.     if reward then
  44.         local ret = ItemType(reward.itemid)
  45.         if ret:isRune() then
  46.             result = ret:getArticle() .. ' ' .. ret:getName() .. ' (' .. reward.type .. ' charges)'
  47.         elseif ret:isStackable() and reward:getCount() > 1 then
  48.             result = reward:getCount() .. ' ' .. ret:getPluralName()
  49.         elseif ret:getArticle() ~= '' then
  50.             result = ret:getArticle() .. ' ' .. ret:getName()
  51.         else
  52.             result = ret:getName()
  53.         end
  54.     else
  55.         if size > 20 then
  56.             reward = Game.createItem(item.itemid, 1)
  57.         elseif size > 8 then
  58.             reward = Game.createItem(1988, 1)
  59.         else
  60.             reward = Game.createItem(ITEM_BAG, 1)
  61.         end
  62.  
  63.         for i = 1, size do
  64.             local tmp = items[i]
  65.             if reward:addItemEx(tmp) ~= RETURNVALUE_NOERROR then
  66.                 print('[Warning] QuestSystem:', 'Could not add quest reward to container')
  67.             end
  68.         end
  69.         local ret = ItemType(reward.itemid)
  70.         result = ret:getArticle() .. ' ' .. ret:getName()
  71.     end
  72.  
  73.     if player:addItemEx(reward) ~= RETURNVALUE_NOERROR then
  74.         local weight = reward:getWeight()
  75.         if player:getFreeCapacity() < weight then
  76.             player:sendCancelMessage(string.format('You have found %s weighing %.2f oz. You have no capacity.', result, (weight / 100)))
  77.         else
  78.             player:sendCancelMessage('You have found ' .. result .. ', but you have no room to take it.')
  79.         end
  80.         return true
  81.     end
  82.  
  83.     player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You have found ' .. result .. '.')
  84.     player:setStorageValue(storage, 1)
  85.     return true
  86. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement