Advertisement
Guest User

Untitled

a guest
Jun 25th, 2016
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.63 KB | None | 0 0
  1. local recipes = {
  2. [1] = {
  3. name = "Vials",
  4. options = {
  5. [1] = {
  6. name = "Small Vial", learned = false, learnStorage = 0, storage = {40041}, level = {10}, tries = 1, count = 1, id = 21425,
  7. needed = {
  8. [1] = {name = "iron ingot", id = 18337, count = 1},
  9. }
  10. },
  11. [2] = {
  12. name = "Advanced Small Vial", learned = false, learnStorage = 0, storage = {40041}, level = {70}, tries = 1, count = 2, id = 21425,
  13. needed = {
  14. [1] = {name = "iron ingot", id = 18337, count = 1},
  15. }
  16. },
  17. [3] = {
  18. name = "Expert Small Vial", learned = false, learnStorage = 0, storage = {40041}, level = {100}, tries = 1, count = 3, id = 21425,
  19. needed = {
  20. [1] = {name = "iron ingot", id = 18337, count = 1},
  21. }
  22. },
  23. }
  24. },
  25. [2] = {
  26. name = "Elixirs",
  27. options = {
  28. [1] = {
  29. name = "Experience Elixir", learned = false, learnStorage = 0, storage = {40041}, level = {20}, tries = 5, count = 1, id = 21426,
  30. needed = {
  31. [1] = {name = "small vial", id = 21425, count = 1},
  32. [2] = {name = "holy orchid", id = 5922, count = 2},
  33. }
  34. },
  35. [2] = {
  36. name = "Infused Marijuana Elixir", learned = false, learnStorage = 0, storage = {40041}, level = {80}, tries = 1, count = 1, id = 23474,
  37. needed = {
  38. [1] = {name = "small vial", id = 21425, count = 1},
  39. [2] = {name = "marijuana", id = 5953, count = 5},
  40. }
  41. },
  42. [3] = {
  43. name = "Mastermind Elixir", learned = false, learnStorage = 0, storage = {40041}, level = {60}, tries = 5, count = 1, id = 7440,
  44. needed = {
  45. [1] = {name = "small vial", id = 21425, count = 1},
  46. [2] = {name = "demonic essence", id = 6500, count = 5}
  47. }
  48. },
  49. [4] = {
  50. name = "Berserk Elixir", learned = false, learnStorage = 0, storage = {40041}, level = {60}, tries = 5, count = 1, id = 7439,
  51. needed = {
  52. [1] = {name = "small vial", id = 21425, count = 1},
  53. [2] = {name = "demonic essence", id = 6500, count = 5}
  54. }
  55. },
  56. [5] = {
  57. name = "Bullseye Elixir", learned = false, learnStorage = 0, storage = {40041}, level = {60}, tries = 5, count = 1, id = 7443,
  58. needed = {
  59. [1] = {name = "small vial", id = 21425, count = 1},
  60. [2] = {name = "demonic essence", id = 6500, count = 5}
  61. }
  62. },
  63. [6] = {
  64. name = "Fortifying Elixir", learned = false, learnStorage = 0, storage = {40041}, level = {50}, tries = 10, count = 1, id = 21245,
  65. needed = {
  66. [1] = {name = "small vial", id = 21425, count = 1},
  67. [2] = {name = "pieces of royal steel", id = 5887, count = 1},
  68. [3] = {name = "pieces of draconian steel", id = 5889, count = 1},
  69. }
  70. },
  71. [7] = {
  72. name = "Strong Brewed Fortifying Elixir", learned = false, learnStorage = 0, storage = {40041}, level = {90}, tries = 30, count = 1, id = 21424,
  73. needed = {
  74. [1] = {name = "small vial", id = 21425, count = 1},
  75. [2] = {name = "pieces of royal steel", id = 5887, count = 2},
  76. [3] = {name = "pieces of draconian steel", id = 5889, count = 2},
  77. [4] = {name = "red piece of cloth", id = 5911, count = 3},
  78. }
  79. },
  80. [8] = {
  81. name = "Supreme Health Potion", learned = false, learnStorage = 0, storage = {40041}, level = {100}, tries = 15, count = 1, id = 21403,
  82. needed = {
  83. [1] = {name = "small vial", id = 21425, count = 1},
  84. [2] = {name = "heaven blossom", id = 5921, count = 10}
  85. }
  86. },
  87. [9] = {
  88. name = "Supreme Mana Potion", learned = false, learnStorage = 0, storage = {40041}, level = {100}, tries = 15, count = 1, id = 23875,
  89. needed = {
  90. [1] = {name = "small vial", id = 21425, count = 1},
  91. [2] = {name = "giant shimmering pearl", id = 7632, count = 5}
  92. }
  93. },
  94. [10] = {
  95. name = "Strong Skill Boost Potion", learned = false, learnStorage = 0, storage = {40041}, level = {30}, tries = 3, count = 1, id = 22472,
  96. needed = {
  97. [1] = {name = "skill boost potion", id = 12544, count = 20}
  98. }
  99. },
  100. }
  101. },
  102. [3] = {
  103. name = "Mastercraft Runes and Summons",
  104. options = {
  105. [1] = {
  106. name = "Miner Rune", learned = false, learnStorage = 0, storage = {40041}, level = {90}, tries = 20, count = 1, id = 2297,
  107. needed = {
  108. [1] = {name = "mastercraft tools", id = 10944, count = 3},
  109. [2] = {name = "archlight bar", id = 15515, count = 15},
  110. [3] = {name = "elite arena medal", id = 21253, count = 15},
  111. }
  112. },
  113. [2] = {
  114. name = "Holy Shock Rune", learned = false, learnStorage = 0, storage = {40041}, level = {90}, tries = 20, count = 1, id = 2299,
  115. needed = {
  116. [1] = {name = "mastercraft tools", id = 10944, count = 3},
  117. [2] = {name = "archlight bar", id = 15515, count = 15},
  118. [3] = {name = "elite arena medal", id = 21253, count = 15},
  119. }
  120. },
  121. [3] = {
  122. name = "Heatstrike Rune", learned = false, learnStorage = 0, storage = {40041}, level = {90}, tries = 20, count = 1, id = 2306,
  123. needed = {
  124. [1] = {name = "mastercraft tools", id = 10944, count = 3},
  125. [2] = {name = "archlight bar", id = 15515, count = 15},
  126. [3] = {name = "elite arena medal", id = 21253, count = 15},
  127. }
  128. },
  129. [4] = {
  130. name = "Lightning Strike Rune", learned = false, learnStorage = 0, storage = {40041}, level = {90}, tries = 20, count = 1, id = 2312,
  131. needed = {
  132. [1] = {name = "mastercraft tools", id = 10944, count = 3},
  133. [2] = {name = "archlight bar", id = 15515, count = 15},
  134. [3] = {name = "elite arena medal", id = 21253, count = 15},
  135. }
  136. },
  137. [5] = {
  138. name = "Frostland Rune", learned = false, learnStorage = 0, storage = {40041}, level = {90}, tries = 20, count = 1, id = 2275,
  139. needed = {
  140. [1] = {name = "mastercraft tools", id = 10944, count = 3},
  141. [2] = {name = "archlight bar", id = 15515, count = 15},
  142. [3] = {name = "elite arena medal", id = 21253, count = 15},
  143. }
  144. },
  145. [6] = {
  146. name = "Demonic Shadowfiend Relic", learned = false, learnStorage = 0, storage = {40041}, level = {90}, tries = 20, count = 1, id = 2363,
  147. needed = {
  148. [1] = {name = "mastercraft tools", id = 10944, count = 4},
  149. [2] = {name = "archlight bar", id = 15515, count = 20},
  150. [3] = {name = "elite arena medal", id = 21253, count = 20},
  151. }
  152. },
  153. [7] = {
  154. name = "Demonic Bonefiend Relic", learned = false, learnStorage = 0, storage = {40041}, level = {90}, tries = 20, count = 1, id = 11076,
  155. needed = {
  156. [1] = {name = "mastercraft tools", id = 10944, count = 4},
  157. [2] = {name = "archlight bar", id = 15515, count = 20},
  158. [3] = {name = "elite arena medal", id = 21253, count = 20},
  159. }
  160. },
  161. [8] = {
  162. name = "Demonic Fleshfiend Relic", learned = false, learnStorage = 0, storage = {40041}, level = {90}, tries = 20, count = 1, id = 13830,
  163. needed = {
  164. [1] = {name = "mastercraft tools", id = 10944, count = 4},
  165. [2] = {name = "archlight bar", id = 15515, count = 20},
  166. [3] = {name = "elite arena medal", id = 21253, count = 20},
  167. }
  168. },
  169. [9] = {
  170. name = "Demonic Bloodfiend Relic", learned = false, learnStorage = 0, storage = {40041}, level = {90}, tries = 20, count = 1, id = 13028,
  171. needed = {
  172. [1] = {name = "mastercraft tools", id = 10944, count = 4},
  173. [2] = {name = "archlight bar", id = 15515, count = 20},
  174. [3] = {name = "elite arena medal", id = 21253, count = 20},
  175. }
  176. },
  177. [10] = {
  178. name = "Monk Storm Spirit Summon", learned = false, learnStorage = 0, storage = {40041}, level = {90}, tries = 20, count = 1, id = 18457,
  179. needed = {
  180. [1] = {name = "mastercraft tools", id = 10944, count = 4},
  181. [2] = {name = "archlight bar", id = 15515, count = 20},
  182. [3] = {name = "elite arena medal", id = 21253, count = 20},
  183. }
  184. },
  185. [11] = {
  186. name = "Monk Lava Spirit Summon", learned = false, learnStorage = 0, storage = {40041}, level = {90}, tries = 20, count = 1, id = 18312,
  187. needed = {
  188. [1] = {name = "mastercraft tools", id = 10944, count = 4},
  189. [2] = {name = "archlight bar", id = 15515, count = 20},
  190. [3] = {name = "elite arena medal", id = 21253, count = 20},
  191. }
  192. },
  193. }
  194. },
  195. }
  196.  
  197. local modalId = 1015
  198. local Type = {}
  199. local Option = {}
  200.  
  201. local training = {
  202. [40041] = "Alchemy",
  203. }
  204. -- 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
  205. function Player:hasAlchemyRecipeItems(recipe)
  206. for i = 1, #recipe.needed do
  207. if self:getItemCount(recipe.needed[i].id) < recipe.needed[i].count then
  208. return false
  209. end
  210. end
  211. return true
  212. end
  213.  
  214. function Player:sendAlchemySortedWindow(type)
  215. 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")
  216. local choices = 0
  217. local temp = 0
  218. for i = 40041, 40041 do
  219. if self:getCSkill(training[i]) >= 10 then
  220. temp = temp + 1
  221. window:setMessage(window:getMessage() .. training[i] .. " (" .. self:getCSkill(training[i]) .. ")\n")
  222. end
  223. end
  224. if temp == 0 then
  225. window:setMessage(window:getMessage() .. "No specialty training.\n")
  226. end
  227. for i = 1, #recipes[type].options do
  228. if (recipes[type].options[i].learned and self:getStorageValue(recipes[type].options[i].learnStorage) >= 1) or not recipes[type].options[i].learned then
  229. if recipes[type].options[i].count > 1 then
  230. window:addChoice(i, recipes[type].options[i].count .. " " .. recipes[type].options[i].name)
  231. else
  232. window:addChoice(i, recipes[type].options[i].name)
  233. end
  234. end
  235. end
  236. window:addButton(1, "Expand")
  237. window:setDefaultEnterButton(1)
  238. window:addButton(2, "Back")
  239. window:setDefaultEscapeButton(2)
  240. window:sendToPlayer(self)
  241. self:registerEvent("alchemy_modal")
  242. return true
  243. end
  244.  
  245. function Player:sendAlchemyEquipmentWindow()
  246. 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")
  247. local choices = 0
  248. local temp = 0
  249. for i = 40041, 40041 do
  250. if self:getCSkill(training[i]) >= 10 then
  251. temp = temp + 1
  252. window:setMessage(window:getMessage() .. training[i] .. " (" .. self:getCSkill(training[i]) .. ")\n")
  253. end
  254. end
  255. if temp == 0 then
  256. window:setMessage(window:getMessage() .. "No specialty training.\n")
  257. end
  258.  
  259. for i = 1, #recipes do
  260. local t = false
  261. for j = 1, #recipes[i].options do
  262. if (recipes[i].options[j].learned and self:getStorageValue(recipes[i].options[j].learnStorage) >= 1) or not recipes[i].options[j].learned then
  263. t = true
  264. break
  265. end
  266. end
  267. if t then
  268. window:addChoice(i, recipes[i].name)
  269. end
  270. end
  271.  
  272. window:addButton(1, "Expand")
  273. window:setDefaultEnterButton(1)
  274.  
  275. window:addButton(2, "Exit")
  276. window:setDefaultEscapeButton(2)
  277. window:sendToPlayer(self)
  278. self:registerEvent("alchemy_modal")
  279. return true
  280. end
  281.  
  282. function Player:sendAlchemyRecipeWindow(type, option)
  283. local window = ModalWindow(modalId + 1, recipes[type].options[option].name, "To produce this item, you need:\n")
  284. for i = 1, #recipes[type].options[option].needed do
  285. 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")
  286. end
  287. if recipes[type].options[option].storage then
  288. for i = 1, #recipes[type].options[option].storage do
  289. local lev = self:getCSkill(training[recipes[type].options[option].storage[i]])
  290. window:setMessage(window:getMessage() .. training[recipes[type].options[option].storage[i]] .. " " .. recipes[type].options[option].level[i] .. " (" .. lev .. ")\n")
  291. end
  292. end
  293. for i = 1, #recipes[type].options[option].needed do
  294. if self:getItemCount(recipes[type].options[option].needed[i].id) < recipes[type].options[option].needed[i].count then
  295. return window:addButton(2, "Back"), window:setDefaultEscapeButton(2), window:setDefaultEnterButton(2), window:sendToPlayer(self)
  296. end
  297. end
  298. for i = 1, #recipes[type].options[option].storage do
  299. if self:getCSkill(training[recipes[type].options[option].storage[i]]) < recipes[type].options[option].level[i] then
  300. return window:addButton(2, "Back"), window:setDefaultEscapeButton(2), window:setDefaultEnterButton(2), window:sendToPlayer(self)
  301. end
  302. end
  303. window:addButton(1, "Make It!")
  304. window:setDefaultEnterButton(1)
  305. window:addButton(2, "Back")
  306. window:setDefaultEscapeButton(2)
  307. window:sendToPlayer(self)
  308. self:registerEvent("alchemy_modal")
  309. return true
  310. end
  311.  
  312. function Player:alchemySortedWindowChoice(windowId, buttonId, choiceId)
  313. local p = self:getGuid()
  314. if windowId == modalId + 2 then
  315. if buttonId == 1 then
  316. Option[p] = choiceId
  317. self:sendAlchemyRecipeWindow(Type[p], Option[p])
  318. return true
  319. elseif buttonId == 2 then
  320. self:sendAlchemyEquipmentWindow()
  321. return true
  322. end
  323. return false
  324. end
  325. return false
  326. end
  327.  
  328. function Player:alchemyEquipmentWindowChoice(windowId, buttonId, choiceId)
  329. local p = self:getGuid()
  330. if windowId == modalId then
  331. if buttonId == 1 then
  332. Type[p] = choiceId
  333. self:sendAlchemySortedWindow(Type[p])
  334. return true
  335. else
  336. Type[p] = nil
  337. Option[p] = nil
  338. return false
  339. end
  340. end
  341. return false
  342. end
  343.  
  344. function Player:alchemyRecipeWindowChoice(windowId, buttonId, choiceId)
  345. local p = self:getGuid()
  346. if windowId == modalId + 1 then
  347. if buttonId == 1 then
  348. local rand = math.random(1,100000)
  349. local half = false
  350. 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
  351. if rand < chance * 1000 then
  352. half = true
  353. end
  354. for i = 1, #recipes[Type[p]].options[Option[p]].needed do
  355. if half then
  356. self:removeItem(recipes[Type[p]].options[Option[p]].needed[i].id, math.ceil(recipes[Type[p]].options[Option[p]].needed[i].count / 2))
  357. else
  358. self:removeItem(recipes[Type[p]].options[Option[p]].needed[i].id, recipes[Type[p]].options[Option[p]].needed[i].count)
  359. end
  360. end
  361. self:addItem(recipes[Type[p]].options[Option[p]].id, recipes[Type[p]].options[Option[p]].count)
  362. if half then
  363. 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!")
  364. else
  365. self:sendTextMessage(MESSAGE_INFO_DESCR, "You have crafted " .. recipes[Type[p]].options[Option[p]].count .. " " .. recipes[Type[p]].options[Option[p]].name .. "!")
  366. end
  367. for i = 1, #recipes[Type[p]].options[Option[p]].storage do
  368. self:addCSkillTries(training[recipes[Type[p]].options[Option[p]].storage[i]], recipes[Type[p]].options[Option[p]].tries)
  369. end
  370. if recipes[Type[p]].options[Option[p]].set then
  371. if self:getStorageValue(sets[recipes[Type[p]].options[Option[p]].set].pieces[recipes[Type[p]].options[Option[p]].piece].storage) ~= 1 then
  372. self:setStorageValue(sets[recipes[Type[p]].options[Option[p]].set].pieces[recipes[Type[p]].options[Option[p]].piece].storage, 1)
  373. end
  374. local tempStore = true
  375. for i = 1, #sets[recipes[Type[p]].options[Option[p]].set].pieces do
  376. if self:getStorageValue(sets[recipes[Type[p]].options[Option[p]].set].pieces[recipes[Type[p]].options[Option[p]].piece].storage) ~= 1 then
  377. tempStore = false
  378. end
  379. end
  380. if tempStore then
  381. self:addAchievement(sets[recipes[Type[p]].options[Option[p]].set].achievement)
  382. end
  383. end
  384. return self:hasAlchemyRecipeItems(recipes[Type[p]].options[Option[p]]) and self:sendAlchemyRecipeWindow(Type[p], Option[p]) or self:sendAlchemySortedWindow(Type[p])
  385. elseif buttonId == 2 then
  386. self:sendAlchemySortedWindow(Type[p])
  387. end
  388. return false
  389. end
  390.  
  391. return false
  392. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement