Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local recipes = {
- [1] = {
- name = "Vials",
- options = {
- [1] = {
- name = "Small Vial", learned = false, learnStorage = 0, storage = {40041}, level = {10}, tries = 1, count = 1, id = 21425,
- needed = {
- [1] = {name = "iron ingot", id = 18337, count = 1},
- }
- },
- [2] = {
- name = "Advanced Small Vial", learned = false, learnStorage = 0, storage = {40041}, level = {70}, tries = 1, count = 2, id = 21425,
- needed = {
- [1] = {name = "iron ingot", id = 18337, count = 1},
- }
- },
- [3] = {
- name = "Expert Small Vial", learned = false, learnStorage = 0, storage = {40041}, level = {100}, tries = 1, count = 3, id = 21425,
- needed = {
- [1] = {name = "iron ingot", id = 18337, count = 1},
- }
- },
- }
- },
- [2] = {
- name = "Elixirs",
- options = {
- [1] = {
- name = "Experience Elixir", learned = false, learnStorage = 0, storage = {40041}, level = {20}, tries = 5, count = 1, id = 21426,
- needed = {
- [1] = {name = "small vial", id = 21425, count = 1},
- [2] = {name = "holy orchid", id = 5922, count = 2},
- }
- },
- [2] = {
- name = "Infused Marijuana Elixir", learned = false, learnStorage = 0, storage = {40041}, level = {80}, tries = 1, count = 1, id = 23474,
- needed = {
- [1] = {name = "small vial", id = 21425, count = 1},
- [2] = {name = "marijuana", id = 5953, count = 5},
- }
- },
- [3] = {
- name = "Mastermind Elixir", learned = false, learnStorage = 0, storage = {40041}, level = {60}, tries = 5, count = 1, id = 7440,
- needed = {
- [1] = {name = "small vial", id = 21425, count = 1},
- [2] = {name = "demonic essence", id = 6500, count = 5}
- }
- },
- [4] = {
- name = "Berserk Elixir", learned = false, learnStorage = 0, storage = {40041}, level = {60}, tries = 5, count = 1, id = 7439,
- needed = {
- [1] = {name = "small vial", id = 21425, count = 1},
- [2] = {name = "demonic essence", id = 6500, count = 5}
- }
- },
- [5] = {
- name = "Bullseye Elixir", learned = false, learnStorage = 0, storage = {40041}, level = {60}, tries = 5, count = 1, id = 7443,
- needed = {
- [1] = {name = "small vial", id = 21425, count = 1},
- [2] = {name = "demonic essence", id = 6500, count = 5}
- }
- },
- [6] = {
- name = "Fortifying Elixir", learned = false, learnStorage = 0, storage = {40041}, level = {50}, tries = 10, count = 1, id = 21245,
- needed = {
- [1] = {name = "small vial", id = 21425, count = 1},
- [2] = {name = "pieces of royal steel", id = 5887, count = 1},
- [3] = {name = "pieces of draconian steel", id = 5889, count = 1},
- }
- },
- [7] = {
- name = "Strong Brewed Fortifying Elixir", learned = false, learnStorage = 0, storage = {40041}, level = {90}, tries = 30, count = 1, id = 21424,
- needed = {
- [1] = {name = "small vial", id = 21425, count = 1},
- [2] = {name = "pieces of royal steel", id = 5887, count = 2},
- [3] = {name = "pieces of draconian steel", id = 5889, count = 2},
- [4] = {name = "red piece of cloth", id = 5911, count = 3},
- }
- },
- [8] = {
- name = "Supreme Health Potion", learned = false, learnStorage = 0, storage = {40041}, level = {100}, tries = 15, count = 1, id = 21403,
- needed = {
- [1] = {name = "small vial", id = 21425, count = 1},
- [2] = {name = "heaven blossom", id = 5921, count = 10}
- }
- },
- [9] = {
- name = "Supreme Mana Potion", learned = false, learnStorage = 0, storage = {40041}, level = {100}, tries = 15, count = 1, id = 23875,
- needed = {
- [1] = {name = "small vial", id = 21425, count = 1},
- [2] = {name = "giant shimmering pearl", id = 7632, count = 5}
- }
- },
- [10] = {
- name = "Strong Skill Boost Potion", learned = false, learnStorage = 0, storage = {40041}, level = {30}, tries = 3, count = 1, id = 22472,
- needed = {
- [1] = {name = "skill boost potion", id = 12544, count = 20}
- }
- },
- }
- },
- [3] = {
- name = "Mastercraft Runes and Summons",
- options = {
- [1] = {
- name = "Miner Rune", learned = false, learnStorage = 0, storage = {40041}, level = {90}, tries = 20, count = 1, id = 2297,
- needed = {
- [1] = {name = "mastercraft tools", id = 10944, count = 3},
- [2] = {name = "archlight bar", id = 15515, count = 15},
- [3] = {name = "elite arena medal", id = 21253, count = 15},
- }
- },
- [2] = {
- name = "Holy Shock Rune", learned = false, learnStorage = 0, storage = {40041}, level = {90}, tries = 20, count = 1, id = 2299,
- needed = {
- [1] = {name = "mastercraft tools", id = 10944, count = 3},
- [2] = {name = "archlight bar", id = 15515, count = 15},
- [3] = {name = "elite arena medal", id = 21253, count = 15},
- }
- },
- [3] = {
- name = "Heatstrike Rune", learned = false, learnStorage = 0, storage = {40041}, level = {90}, tries = 20, count = 1, id = 2306,
- needed = {
- [1] = {name = "mastercraft tools", id = 10944, count = 3},
- [2] = {name = "archlight bar", id = 15515, count = 15},
- [3] = {name = "elite arena medal", id = 21253, count = 15},
- }
- },
- [4] = {
- name = "Lightning Strike Rune", learned = false, learnStorage = 0, storage = {40041}, level = {90}, tries = 20, count = 1, id = 2312,
- needed = {
- [1] = {name = "mastercraft tools", id = 10944, count = 3},
- [2] = {name = "archlight bar", id = 15515, count = 15},
- [3] = {name = "elite arena medal", id = 21253, count = 15},
- }
- },
- [5] = {
- name = "Frostland Rune", learned = false, learnStorage = 0, storage = {40041}, level = {90}, tries = 20, count = 1, id = 2275,
- needed = {
- [1] = {name = "mastercraft tools", id = 10944, count = 3},
- [2] = {name = "archlight bar", id = 15515, count = 15},
- [3] = {name = "elite arena medal", id = 21253, count = 15},
- }
- },
- [6] = {
- name = "Demonic Shadowfiend Relic", learned = false, learnStorage = 0, storage = {40041}, level = {90}, tries = 20, count = 1, id = 2363,
- needed = {
- [1] = {name = "mastercraft tools", id = 10944, count = 4},
- [2] = {name = "archlight bar", id = 15515, count = 20},
- [3] = {name = "elite arena medal", id = 21253, count = 20},
- }
- },
- [7] = {
- name = "Demonic Bonefiend Relic", learned = false, learnStorage = 0, storage = {40041}, level = {90}, tries = 20, count = 1, id = 11076,
- needed = {
- [1] = {name = "mastercraft tools", id = 10944, count = 4},
- [2] = {name = "archlight bar", id = 15515, count = 20},
- [3] = {name = "elite arena medal", id = 21253, count = 20},
- }
- },
- [8] = {
- name = "Demonic Fleshfiend Relic", learned = false, learnStorage = 0, storage = {40041}, level = {90}, tries = 20, count = 1, id = 13830,
- needed = {
- [1] = {name = "mastercraft tools", id = 10944, count = 4},
- [2] = {name = "archlight bar", id = 15515, count = 20},
- [3] = {name = "elite arena medal", id = 21253, count = 20},
- }
- },
- [9] = {
- name = "Demonic Bloodfiend Relic", learned = false, learnStorage = 0, storage = {40041}, level = {90}, tries = 20, count = 1, id = 13028,
- needed = {
- [1] = {name = "mastercraft tools", id = 10944, count = 4},
- [2] = {name = "archlight bar", id = 15515, count = 20},
- [3] = {name = "elite arena medal", id = 21253, count = 20},
- }
- },
- [10] = {
- name = "Monk Storm Spirit Summon", learned = false, learnStorage = 0, storage = {40041}, level = {90}, tries = 20, count = 1, id = 18457,
- needed = {
- [1] = {name = "mastercraft tools", id = 10944, count = 4},
- [2] = {name = "archlight bar", id = 15515, count = 20},
- [3] = {name = "elite arena medal", id = 21253, count = 20},
- }
- },
- [11] = {
- name = "Monk Lava Spirit Summon", learned = false, learnStorage = 0, storage = {40041}, level = {90}, tries = 20, count = 1, id = 18312,
- needed = {
- [1] = {name = "mastercraft tools", id = 10944, count = 4},
- [2] = {name = "archlight bar", id = 15515, count = 20},
- [3] = {name = "elite arena medal", id = 21253, count = 20},
- }
- },
- }
- },
- }
- local modalId = 1015
- local Type = {}
- local Option = {}
- local training = {
- [40041] = "Alchemy",
- }
- -- Checks if player has the items required for a recipe - used for bringing the craft option back up after each craft if they have enough to do it again - enables quick, easy crafting
- function Player:hasAlchemyRecipeItems(recipe)
- for i = 1, #recipe.needed do
- if self:getItemCount(recipe.needed[i].id) < recipe.needed[i].count then
- return false
- end
- end
- return true
- end
- function Player:sendAlchemySortedWindow(type)
- local window = ModalWindow(modalId + 2, recipes[type].name, "Expand the item you want to produce to view the requirements.\nYou are trained in the following specialties:\n")
- local choices = 0
- local temp = 0
- for i = 40041, 40041 do
- if self:getCSkill(training[i]) >= 10 then
- temp = temp + 1
- window:setMessage(window:getMessage() .. training[i] .. " (" .. self:getCSkill(training[i]) .. ")\n")
- end
- end
- if temp == 0 then
- window:setMessage(window:getMessage() .. "No specialty training.\n")
- end
- for i = 1, #recipes[type].options do
- if (recipes[type].options[i].learned and self:getStorageValue(recipes[type].options[i].learnStorage) >= 1) or not recipes[type].options[i].learned then
- if recipes[type].options[i].count > 1 then
- window:addChoice(i, recipes[type].options[i].count .. " " .. recipes[type].options[i].name)
- else
- window:addChoice(i, recipes[type].options[i].name)
- end
- end
- end
- window:addButton(1, "Expand")
- window:setDefaultEnterButton(1)
- window:addButton(2, "Back")
- window:setDefaultEscapeButton(2)
- window:sendToPlayer(self)
- self:registerEvent("alchemy_modal")
- return true
- end
- function Player:sendAlchemyEquipmentWindow()
- local window = ModalWindow(modalId, "Smithing", "Expand the type of item you want to craft to view the available items.\nYou are trained in the following specialties:\n")
- local choices = 0
- local temp = 0
- for i = 40041, 40041 do
- if self:getCSkill(training[i]) >= 10 then
- temp = temp + 1
- window:setMessage(window:getMessage() .. training[i] .. " (" .. self:getCSkill(training[i]) .. ")\n")
- end
- end
- if temp == 0 then
- window:setMessage(window:getMessage() .. "No specialty training.\n")
- end
- for i = 1, #recipes do
- local t = false
- for j = 1, #recipes[i].options do
- if (recipes[i].options[j].learned and self:getStorageValue(recipes[i].options[j].learnStorage) >= 1) or not recipes[i].options[j].learned then
- t = true
- break
- end
- end
- if t then
- window:addChoice(i, recipes[i].name)
- end
- end
- window:addButton(1, "Expand")
- window:setDefaultEnterButton(1)
- window:addButton(2, "Exit")
- window:setDefaultEscapeButton(2)
- window:sendToPlayer(self)
- self:registerEvent("alchemy_modal")
- return true
- end
- function Player:sendAlchemyRecipeWindow(type, option)
- local window = ModalWindow(modalId + 1, recipes[type].options[option].name, "To produce this item, you need:\n")
- for i = 1, #recipes[type].options[option].needed do
- window:setMessage(window:getMessage() .. recipes[type].options[option].needed[i].count .. " " .. recipes[type].options[option].needed[i].name .. " (" .. self:getItemCount(recipes[type].options[option].needed[i].id) .. ")\n")
- end
- if recipes[type].options[option].storage then
- for i = 1, #recipes[type].options[option].storage do
- local lev = self:getCSkill(training[recipes[type].options[option].storage[i]])
- window:setMessage(window:getMessage() .. training[recipes[type].options[option].storage[i]] .. " " .. recipes[type].options[option].level[i] .. " (" .. lev .. ")\n")
- end
- end
- for i = 1, #recipes[type].options[option].needed do
- if self:getItemCount(recipes[type].options[option].needed[i].id) < recipes[type].options[option].needed[i].count then
- return window:addButton(2, "Back"), window:setDefaultEscapeButton(2), window:setDefaultEnterButton(2), window:sendToPlayer(self)
- end
- end
- for i = 1, #recipes[type].options[option].storage do
- if self:getCSkill(training[recipes[type].options[option].storage[i]]) < recipes[type].options[option].level[i] then
- return window:addButton(2, "Back"), window:setDefaultEscapeButton(2), window:setDefaultEnterButton(2), window:sendToPlayer(self)
- end
- end
- window:addButton(1, "Make It!")
- window:setDefaultEnterButton(1)
- window:addButton(2, "Back")
- window:setDefaultEscapeButton(2)
- window:sendToPlayer(self)
- self:registerEvent("alchemy_modal")
- return true
- end
- function Player:alchemySortedWindowChoice(windowId, buttonId, choiceId)
- local p = self:getGuid()
- if windowId == modalId + 2 then
- if buttonId == 1 then
- Option[p] = choiceId
- self:sendAlchemyRecipeWindow(Type[p], Option[p])
- return true
- elseif buttonId == 2 then
- self:sendAlchemyEquipmentWindow()
- return true
- end
- return false
- end
- return false
- end
- function Player:alchemyEquipmentWindowChoice(windowId, buttonId, choiceId)
- local p = self:getGuid()
- if windowId == modalId then
- if buttonId == 1 then
- Type[p] = choiceId
- self:sendAlchemySortedWindow(Type[p])
- return true
- else
- Type[p] = nil
- Option[p] = nil
- return false
- end
- end
- return false
- end
- function Player:alchemyRecipeWindowChoice(windowId, buttonId, choiceId)
- local p = self:getGuid()
- if windowId == modalId + 1 then
- if buttonId == 1 then
- local rand = math.random(1,100000)
- local half = false
- local chance = (cSkills[training[recipes[Type[p]].options[Option[p]].storage[1]]].bonus * self:getCSkill(training[recipes[Type[p]].options[Option[p]].storage[1]])) * 100
- if rand < chance * 1000 then
- half = true
- end
- for i = 1, #recipes[Type[p]].options[Option[p]].needed do
- if half then
- self:removeItem(recipes[Type[p]].options[Option[p]].needed[i].id, math.ceil(recipes[Type[p]].options[Option[p]].needed[i].count / 2))
- else
- self:removeItem(recipes[Type[p]].options[Option[p]].needed[i].id, recipes[Type[p]].options[Option[p]].needed[i].count)
- end
- end
- self:addItem(recipes[Type[p]].options[Option[p]].id, recipes[Type[p]].options[Option[p]].count)
- if half then
- self:sendTextMessage(MESSAGE_INFO_DESCR, "Congratulations! You have crafted " .. recipes[Type[p]].options[Option[p]].count .. " " .. recipes[Type[p]].options[Option[p]].name .. " at half the usual cost!")
- else
- self:sendTextMessage(MESSAGE_INFO_DESCR, "You have crafted " .. recipes[Type[p]].options[Option[p]].count .. " " .. recipes[Type[p]].options[Option[p]].name .. "!")
- end
- for i = 1, #recipes[Type[p]].options[Option[p]].storage do
- self:addCSkillTries(training[recipes[Type[p]].options[Option[p]].storage[i]], recipes[Type[p]].options[Option[p]].tries)
- end
- if recipes[Type[p]].options[Option[p]].set then
- if self:getStorageValue(sets[recipes[Type[p]].options[Option[p]].set].pieces[recipes[Type[p]].options[Option[p]].piece].storage) ~= 1 then
- self:setStorageValue(sets[recipes[Type[p]].options[Option[p]].set].pieces[recipes[Type[p]].options[Option[p]].piece].storage, 1)
- end
- local tempStore = true
- for i = 1, #sets[recipes[Type[p]].options[Option[p]].set].pieces do
- if self:getStorageValue(sets[recipes[Type[p]].options[Option[p]].set].pieces[recipes[Type[p]].options[Option[p]].piece].storage) ~= 1 then
- tempStore = false
- end
- end
- if tempStore then
- self:addAchievement(sets[recipes[Type[p]].options[Option[p]].set].achievement)
- end
- end
- return self:hasAlchemyRecipeItems(recipes[Type[p]].options[Option[p]]) and self:sendAlchemyRecipeWindow(Type[p], Option[p]) or self:sendAlchemySortedWindow(Type[p])
- elseif buttonId == 2 then
- self:sendAlchemySortedWindow(Type[p])
- end
- return false
- end
- return false
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement