osrs-tools 2.6.0 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (954) hide show
  1. package/README.md +257 -270
  2. package/dist/runescape/errors.js +1 -1
  3. package/dist/runescape/model/account/OsrsAccount.d.ts +6 -1
  4. package/dist/runescape/model/account/OsrsAccount.d.ts.map +1 -1
  5. package/dist/runescape/model/account/OsrsAccount.js +7 -4
  6. package/dist/runescape/model/clue/ClueScrollHelper.d.ts +24 -34
  7. package/dist/runescape/model/clue/ClueScrollHelper.d.ts.map +1 -1
  8. package/dist/runescape/model/clue/ClueScrollHelper.js +316 -119
  9. package/dist/runescape/model/npc/ComplexDropSystems.d.ts +166 -0
  10. package/dist/runescape/model/npc/ComplexDropSystems.d.ts.map +1 -0
  11. package/dist/runescape/model/npc/ComplexDropSystems.js +381 -0
  12. package/dist/runescape/model/npc/Npc.d.ts +149 -48
  13. package/dist/runescape/model/npc/Npc.d.ts.map +1 -1
  14. package/dist/runescape/model/npc/Npc.js +157 -71
  15. package/dist/runescape/model/npc/NpcDropExample.d.ts +6 -0
  16. package/dist/runescape/model/npc/NpcDropExample.d.ts.map +1 -0
  17. package/dist/runescape/model/npc/NpcDropExample.js +47 -0
  18. package/dist/runescape/model/npc/examples/AbyssalDemonExample.d.ts +13 -0
  19. package/dist/runescape/model/npc/examples/AbyssalDemonExample.d.ts.map +1 -0
  20. package/dist/runescape/model/npc/examples/AbyssalDemonExample.js +57 -0
  21. package/dist/runescape/model/npc/index.d.ts +4 -0
  22. package/dist/runescape/model/npc/index.d.ts.map +1 -0
  23. package/dist/runescape/model/npc/index.js +3 -0
  24. package/dist/runescape/model/npc/npcs/AbyssalSire.d.ts +10 -0
  25. package/dist/runescape/model/npc/npcs/AbyssalSire.d.ts.map +1 -0
  26. package/dist/runescape/model/npc/npcs/AbyssalSire.js +65 -0
  27. package/dist/runescape/model/npc/npcs/AlbinoBat.d.ts +10 -0
  28. package/dist/runescape/model/npc/npcs/AlbinoBat.d.ts.map +1 -0
  29. package/dist/runescape/model/npc/npcs/AlbinoBat.js +61 -0
  30. package/dist/runescape/model/npc/npcs/Araxxor.d.ts +11 -0
  31. package/dist/runescape/model/npc/npcs/Araxxor.d.ts.map +1 -0
  32. package/dist/runescape/model/npc/npcs/Araxxor.js +93 -0
  33. package/dist/runescape/model/npc/npcs/Araxyte.d.ts +10 -0
  34. package/dist/runescape/model/npc/npcs/Araxyte.d.ts.map +1 -0
  35. package/dist/runescape/model/npc/npcs/Araxyte.js +61 -0
  36. package/dist/runescape/model/npc/npcs/ArmouredZombie.d.ts +10 -0
  37. package/dist/runescape/model/npc/npcs/ArmouredZombie.d.ts.map +1 -0
  38. package/dist/runescape/model/npc/npcs/ArmouredZombie.js +61 -0
  39. package/dist/runescape/model/npc/npcs/Artio.d.ts +9 -0
  40. package/dist/runescape/model/npc/npcs/Artio.d.ts.map +1 -0
  41. package/dist/runescape/model/npc/npcs/Artio.js +56 -0
  42. package/dist/runescape/model/npc/npcs/BATCH_BOSS_IMPLEMENTATIONS.d.ts +186 -0
  43. package/dist/runescape/model/npc/npcs/BATCH_BOSS_IMPLEMENTATIONS.d.ts.map +1 -0
  44. package/dist/runescape/model/npc/npcs/BATCH_BOSS_IMPLEMENTATIONS.js +330 -0
  45. package/dist/runescape/model/npc/npcs/BabyBlackDragon.d.ts +10 -0
  46. package/dist/runescape/model/npc/npcs/BabyBlackDragon.d.ts.map +1 -0
  47. package/dist/runescape/model/npc/npcs/BabyBlackDragon.js +64 -0
  48. package/dist/runescape/model/npc/npcs/BabyBlueDragon.d.ts +10 -0
  49. package/dist/runescape/model/npc/npcs/BabyBlueDragon.d.ts.map +1 -0
  50. package/dist/runescape/model/npc/npcs/BabyBlueDragon.js +64 -0
  51. package/dist/runescape/model/npc/npcs/BabyGreenDragon.d.ts +10 -0
  52. package/dist/runescape/model/npc/npcs/BabyGreenDragon.d.ts.map +1 -0
  53. package/dist/runescape/model/npc/npcs/BabyGreenDragon.js +64 -0
  54. package/dist/runescape/model/npc/npcs/BasiliskKnight.d.ts +13 -0
  55. package/dist/runescape/model/npc/npcs/BasiliskKnight.d.ts.map +1 -0
  56. package/dist/runescape/model/npc/npcs/BasiliskKnight.js +110 -0
  57. package/dist/runescape/model/npc/npcs/BearCub.d.ts +10 -0
  58. package/dist/runescape/model/npc/npcs/BearCub.d.ts.map +1 -0
  59. package/dist/runescape/model/npc/npcs/BearCub.js +61 -0
  60. package/dist/runescape/model/npc/npcs/BigWolf.d.ts +10 -0
  61. package/dist/runescape/model/npc/npcs/BigWolf.d.ts.map +1 -0
  62. package/dist/runescape/model/npc/npcs/BigWolf.js +61 -0
  63. package/dist/runescape/model/npc/npcs/BlackGuard.d.ts +10 -0
  64. package/dist/runescape/model/npc/npcs/BlackGuard.d.ts.map +1 -0
  65. package/dist/runescape/model/npc/npcs/BlackGuard.js +61 -0
  66. package/dist/runescape/model/npc/npcs/BrineRat.d.ts +10 -0
  67. package/dist/runescape/model/npc/npcs/BrineRat.d.ts.map +1 -0
  68. package/dist/runescape/model/npc/npcs/BrineRat.js +61 -0
  69. package/dist/runescape/model/npc/npcs/Buffalo.d.ts +10 -0
  70. package/dist/runescape/model/npc/npcs/Buffalo.d.ts.map +1 -0
  71. package/dist/runescape/model/npc/npcs/Buffalo.js +61 -0
  72. package/dist/runescape/model/npc/npcs/Callisto.d.ts +10 -0
  73. package/dist/runescape/model/npc/npcs/Callisto.d.ts.map +1 -0
  74. package/dist/runescape/model/npc/npcs/Callisto.js +64 -0
  75. package/dist/runescape/model/npc/npcs/CalvarIon.d.ts +10 -0
  76. package/dist/runescape/model/npc/npcs/CalvarIon.d.ts.map +1 -0
  77. package/dist/runescape/model/npc/npcs/CalvarIon.js +64 -0
  78. package/dist/runescape/model/npc/npcs/CaveGoblinGuards.d.ts +10 -0
  79. package/dist/runescape/model/npc/npcs/CaveGoblinGuards.d.ts.map +1 -0
  80. package/dist/runescape/model/npc/npcs/CaveGoblinGuards.js +61 -0
  81. package/dist/runescape/model/npc/npcs/Cerberus.d.ts +11 -0
  82. package/dist/runescape/model/npc/npcs/Cerberus.d.ts.map +1 -0
  83. package/dist/runescape/model/npc/npcs/Cerberus.js +94 -0
  84. package/dist/runescape/model/npc/npcs/ChaosDwarf.d.ts +10 -0
  85. package/dist/runescape/model/npc/npcs/ChaosDwarf.d.ts.map +1 -0
  86. package/dist/runescape/model/npc/npcs/ChaosDwarf.js +61 -0
  87. package/dist/runescape/model/npc/npcs/Chicken.d.ts +11 -0
  88. package/dist/runescape/model/npc/npcs/Chicken.d.ts.map +1 -0
  89. package/dist/runescape/model/npc/npcs/Chicken.js +75 -0
  90. package/dist/runescape/model/npc/npcs/ChompyBird.d.ts +10 -0
  91. package/dist/runescape/model/npc/npcs/ChompyBird.d.ts.map +1 -0
  92. package/dist/runescape/model/npc/npcs/ChompyBird.js +64 -0
  93. package/dist/runescape/model/npc/npcs/CryptRat.d.ts +10 -0
  94. package/dist/runescape/model/npc/npcs/CryptRat.d.ts.map +1 -0
  95. package/dist/runescape/model/npc/npcs/CryptRat.js +61 -0
  96. package/dist/runescape/model/npc/npcs/DeathWing.d.ts +10 -0
  97. package/dist/runescape/model/npc/npcs/DeathWing.d.ts.map +1 -0
  98. package/dist/runescape/model/npc/npcs/DeathWing.js +61 -0
  99. package/dist/runescape/model/npc/npcs/DemonicGorilla.d.ts +12 -0
  100. package/dist/runescape/model/npc/npcs/DemonicGorilla.d.ts.map +1 -0
  101. package/dist/runescape/model/npc/npcs/DemonicGorilla.js +92 -0
  102. package/dist/runescape/model/npc/npcs/DesertLizard.d.ts +10 -0
  103. package/dist/runescape/model/npc/npcs/DesertLizard.d.ts.map +1 -0
  104. package/dist/runescape/model/npc/npcs/DesertLizard.js +61 -0
  105. package/dist/runescape/model/npc/npcs/DesertWolf.d.ts +10 -0
  106. package/dist/runescape/model/npc/npcs/DesertWolf.d.ts.map +1 -0
  107. package/dist/runescape/model/npc/npcs/DesertWolf.js +61 -0
  108. package/dist/runescape/model/npc/npcs/DeviantSpectres.d.ts +10 -0
  109. package/dist/runescape/model/npc/npcs/DeviantSpectres.d.ts.map +1 -0
  110. package/dist/runescape/model/npc/npcs/DeviantSpectres.js +64 -0
  111. package/dist/runescape/model/npc/npcs/DireWolf.d.ts +10 -0
  112. package/dist/runescape/model/npc/npcs/DireWolf.d.ts.map +1 -0
  113. package/dist/runescape/model/npc/npcs/DireWolf.js +61 -0
  114. package/dist/runescape/model/npc/npcs/DropImplementationUtils.d.ts +223 -0
  115. package/dist/runescape/model/npc/npcs/DropImplementationUtils.d.ts.map +1 -0
  116. package/dist/runescape/model/npc/npcs/DropImplementationUtils.js +364 -0
  117. package/dist/runescape/model/npc/npcs/Duck.d.ts +10 -0
  118. package/dist/runescape/model/npc/npcs/Duck.d.ts.map +1 -0
  119. package/dist/runescape/model/npc/npcs/Duck.js +64 -0
  120. package/dist/runescape/model/npc/npcs/Duckling.d.ts +10 -0
  121. package/dist/runescape/model/npc/npcs/Duckling.d.ts.map +1 -0
  122. package/dist/runescape/model/npc/npcs/Duckling.js +61 -0
  123. package/dist/runescape/model/npc/npcs/DungeonRat.d.ts +10 -0
  124. package/dist/runescape/model/npc/npcs/DungeonRat.d.ts.map +1 -0
  125. package/dist/runescape/model/npc/npcs/DungeonRat.js +61 -0
  126. package/dist/runescape/model/npc/npcs/DwarfGangMember.d.ts +10 -0
  127. package/dist/runescape/model/npc/npcs/DwarfGangMember.d.ts.map +1 -0
  128. package/dist/runescape/model/npc/npcs/DwarfGangMember.js +61 -0
  129. package/dist/runescape/model/npc/npcs/ForgottenSoul.d.ts +10 -0
  130. package/dist/runescape/model/npc/npcs/ForgottenSoul.d.ts.map +1 -0
  131. package/dist/runescape/model/npc/npcs/ForgottenSoul.js +61 -0
  132. package/dist/runescape/model/npc/npcs/GiantBat.d.ts +10 -0
  133. package/dist/runescape/model/npc/npcs/GiantBat.d.ts.map +1 -0
  134. package/dist/runescape/model/npc/npcs/GiantBat.js +61 -0
  135. package/dist/runescape/model/npc/npcs/GiantCryptRat.d.ts +9 -0
  136. package/dist/runescape/model/npc/npcs/GiantCryptRat.d.ts.map +1 -0
  137. package/dist/runescape/model/npc/npcs/GiantCryptRat.js +62 -0
  138. package/dist/runescape/model/npc/npcs/GiantCryptSpider.d.ts +8 -0
  139. package/dist/runescape/model/npc/npcs/GiantCryptSpider.d.ts.map +1 -0
  140. package/dist/runescape/model/npc/npcs/GiantCryptSpider.js +66 -0
  141. package/dist/runescape/model/npc/npcs/GiantRat.d.ts +10 -0
  142. package/dist/runescape/model/npc/npcs/GiantRat.d.ts.map +1 -0
  143. package/dist/runescape/model/npc/npcs/GiantRat.js +61 -0
  144. package/dist/runescape/model/npc/npcs/GiantSpider.d.ts +10 -0
  145. package/dist/runescape/model/npc/npcs/GiantSpider.d.ts.map +1 -0
  146. package/dist/runescape/model/npc/npcs/GiantSpider.js +61 -0
  147. package/dist/runescape/model/npc/npcs/GrimyLizard.d.ts +10 -0
  148. package/dist/runescape/model/npc/npcs/GrimyLizard.d.ts.map +1 -0
  149. package/dist/runescape/model/npc/npcs/GrimyLizard.js +61 -0
  150. package/dist/runescape/model/npc/npcs/GrizzlyBear.d.ts +10 -0
  151. package/dist/runescape/model/npc/npcs/GrizzlyBear.d.ts.map +1 -0
  152. package/dist/runescape/model/npc/npcs/GrizzlyBear.js +61 -0
  153. package/dist/runescape/model/npc/npcs/GrizzlyBearCub.d.ts +8 -0
  154. package/dist/runescape/model/npc/npcs/GrizzlyBearCub.d.ts.map +1 -0
  155. package/dist/runescape/model/npc/npcs/GrizzlyBearCub.js +66 -0
  156. package/dist/runescape/model/npc/npcs/GuardDog.d.ts +10 -0
  157. package/dist/runescape/model/npc/npcs/GuardDog.d.ts.map +1 -0
  158. package/dist/runescape/model/npc/npcs/GuardDog.js +61 -0
  159. package/dist/runescape/model/npc/npcs/Hans.d.ts +9 -5
  160. package/dist/runescape/model/npc/npcs/Hans.d.ts.map +1 -1
  161. package/dist/runescape/model/npc/npcs/Hans.js +56 -21
  162. package/dist/runescape/model/npc/npcs/HellRatBehemoth.d.ts +8 -0
  163. package/dist/runescape/model/npc/npcs/HellRatBehemoth.d.ts.map +1 -0
  164. package/dist/runescape/model/npc/npcs/HellRatBehemoth.js +66 -0
  165. package/dist/runescape/model/npc/npcs/IMPLEMENTATION_EXAMPLES.d.ts +143 -0
  166. package/dist/runescape/model/npc/npcs/IMPLEMENTATION_EXAMPLES.d.ts.map +1 -0
  167. package/dist/runescape/model/npc/npcs/IMPLEMENTATION_EXAMPLES.js +218 -0
  168. package/dist/runescape/model/npc/npcs/IceTroll.d.ts +9 -0
  169. package/dist/runescape/model/npc/npcs/IceTroll.d.ts.map +1 -0
  170. package/dist/runescape/model/npc/npcs/IceTroll.js +56 -0
  171. package/dist/runescape/model/npc/npcs/IceWolf.d.ts +8 -0
  172. package/dist/runescape/model/npc/npcs/IceWolf.d.ts.map +1 -0
  173. package/dist/runescape/model/npc/npcs/IceWolf.js +66 -0
  174. package/dist/runescape/model/npc/npcs/Jackal.d.ts +8 -0
  175. package/dist/runescape/model/npc/npcs/Jackal.d.ts.map +1 -0
  176. package/dist/runescape/model/npc/npcs/Jackal.js +66 -0
  177. package/dist/runescape/model/npc/npcs/JungleWolf.d.ts +8 -0
  178. package/dist/runescape/model/npc/npcs/JungleWolf.d.ts.map +1 -0
  179. package/dist/runescape/model/npc/npcs/JungleWolf.js +66 -0
  180. package/dist/runescape/model/npc/npcs/KalphiteGuardian.d.ts +9 -0
  181. package/dist/runescape/model/npc/npcs/KalphiteGuardian.d.ts.map +1 -0
  182. package/dist/runescape/model/npc/npcs/KalphiteGuardian.js +56 -0
  183. package/dist/runescape/model/npc/npcs/KalphiteQueen.d.ts +14 -0
  184. package/dist/runescape/model/npc/npcs/KalphiteQueen.d.ts.map +1 -0
  185. package/dist/runescape/model/npc/npcs/KalphiteQueen.js +99 -0
  186. package/dist/runescape/model/npc/npcs/KalphiteSoldier.d.ts +8 -0
  187. package/dist/runescape/model/npc/npcs/KalphiteSoldier.d.ts.map +1 -0
  188. package/dist/runescape/model/npc/npcs/KalphiteSoldier.js +66 -0
  189. package/dist/runescape/model/npc/npcs/KalphiteWorker.d.ts +8 -0
  190. package/dist/runescape/model/npc/npcs/KalphiteWorker.d.ts.map +1 -0
  191. package/dist/runescape/model/npc/npcs/KalphiteWorker.js +66 -0
  192. package/dist/runescape/model/npc/npcs/KaramjanMonkey.d.ts +8 -0
  193. package/dist/runescape/model/npc/npcs/KaramjanMonkey.d.ts.map +1 -0
  194. package/dist/runescape/model/npc/npcs/KaramjanMonkey.js +66 -0
  195. package/dist/runescape/model/npc/npcs/KingBlackDragon.d.ts +11 -0
  196. package/dist/runescape/model/npc/npcs/KingBlackDragon.d.ts.map +1 -0
  197. package/dist/runescape/model/npc/npcs/KingBlackDragon.js +98 -0
  198. package/dist/runescape/model/npc/npcs/KingScorpion.d.ts +8 -0
  199. package/dist/runescape/model/npc/npcs/KingScorpion.d.ts.map +1 -0
  200. package/dist/runescape/model/npc/npcs/KingScorpion.js +66 -0
  201. package/dist/runescape/model/npc/npcs/Kraken.d.ts +11 -0
  202. package/dist/runescape/model/npc/npcs/Kraken.d.ts.map +1 -0
  203. package/dist/runescape/model/npc/npcs/Kraken.js +91 -0
  204. package/dist/runescape/model/npc/npcs/Lobstrosity.d.ts +9 -0
  205. package/dist/runescape/model/npc/npcs/Lobstrosity.d.ts.map +1 -0
  206. package/dist/runescape/model/npc/npcs/Lobstrosity.js +59 -0
  207. package/dist/runescape/model/npc/npcs/Man.d.ts +3 -2
  208. package/dist/runescape/model/npc/npcs/Man.d.ts.map +1 -1
  209. package/dist/runescape/model/npc/npcs/Man.js +93 -60
  210. package/dist/runescape/model/npc/npcs/ManiacalMonkey.d.ts +8 -0
  211. package/dist/runescape/model/npc/npcs/ManiacalMonkey.d.ts.map +1 -0
  212. package/dist/runescape/model/npc/npcs/ManiacalMonkey.js +66 -0
  213. package/dist/runescape/model/npc/npcs/MonkeyArcher.d.ts +8 -0
  214. package/dist/runescape/model/npc/npcs/MonkeyArcher.d.ts.map +1 -0
  215. package/dist/runescape/model/npc/npcs/MonkeyArcher.js +66 -0
  216. package/dist/runescape/model/npc/npcs/MonkeyGuard.d.ts +8 -0
  217. package/dist/runescape/model/npc/npcs/MonkeyGuard.d.ts.map +1 -0
  218. package/dist/runescape/model/npc/npcs/MonkeyGuard.js +66 -0
  219. package/dist/runescape/model/npc/npcs/MonkeyZombie.d.ts +8 -0
  220. package/dist/runescape/model/npc/npcs/MonkeyZombie.d.ts.map +1 -0
  221. package/dist/runescape/model/npc/npcs/MonkeyZombie.js +66 -0
  222. package/dist/runescape/model/npc/npcs/MountainTroll.d.ts +8 -0
  223. package/dist/runescape/model/npc/npcs/MountainTroll.d.ts.map +1 -0
  224. package/dist/runescape/model/npc/npcs/MountainTroll.js +66 -0
  225. package/dist/runescape/model/npc/npcs/MountedTerrorbird.d.ts +8 -0
  226. package/dist/runescape/model/npc/npcs/MountedTerrorbird.d.ts.map +1 -0
  227. package/dist/runescape/model/npc/npcs/MountedTerrorbird.js +66 -0
  228. package/dist/runescape/model/npc/npcs/MutatedBloodveld.d.ts +12 -0
  229. package/dist/runescape/model/npc/npcs/MutatedBloodveld.d.ts.map +1 -0
  230. package/dist/runescape/model/npc/npcs/MutatedBloodveld.js +94 -0
  231. package/dist/runescape/model/npc/npcs/Nechryarch.d.ts +12 -0
  232. package/dist/runescape/model/npc/npcs/Nechryarch.d.ts.map +1 -0
  233. package/dist/runescape/model/npc/npcs/Nechryarch.js +96 -0
  234. package/dist/runescape/model/npc/npcs/OgresShaman.d.ts +8 -0
  235. package/dist/runescape/model/npc/npcs/OgresShaman.d.ts.map +1 -0
  236. package/dist/runescape/model/npc/npcs/OgresShaman.js +66 -0
  237. package/dist/runescape/model/npc/npcs/OgresWarrior.d.ts +8 -0
  238. package/dist/runescape/model/npc/npcs/OgresWarrior.d.ts.map +1 -0
  239. package/dist/runescape/model/npc/npcs/OgresWarrior.js +66 -0
  240. package/dist/runescape/model/npc/npcs/PeerTheSeer.d.ts +6 -6
  241. package/dist/runescape/model/npc/npcs/PeerTheSeer.d.ts.map +1 -1
  242. package/dist/runescape/model/npc/npcs/PeerTheSeer.js +57 -50
  243. package/dist/runescape/model/npc/npcs/Penguin.d.ts +10 -0
  244. package/dist/runescape/model/npc/npcs/Penguin.d.ts.map +1 -0
  245. package/dist/runescape/model/npc/npcs/Penguin.js +63 -0
  246. package/dist/runescape/model/npc/npcs/PitScorpion.d.ts +8 -0
  247. package/dist/runescape/model/npc/npcs/PitScorpion.d.ts.map +1 -0
  248. package/dist/runescape/model/npc/npcs/PitScorpion.js +66 -0
  249. package/dist/runescape/model/npc/npcs/PoisonScorpion.d.ts +8 -0
  250. package/dist/runescape/model/npc/npcs/PoisonScorpion.d.ts.map +1 -0
  251. package/dist/runescape/model/npc/npcs/PoisonScorpion.js +66 -0
  252. package/dist/runescape/model/npc/npcs/QUICK_REFERENCE.d.ts +140 -0
  253. package/dist/runescape/model/npc/npcs/QUICK_REFERENCE.d.ts.map +1 -0
  254. package/dist/runescape/model/npc/npcs/QUICK_REFERENCE.js +207 -0
  255. package/dist/runescape/model/npc/npcs/ReanimatedBear.d.ts +8 -0
  256. package/dist/runescape/model/npc/npcs/ReanimatedBear.d.ts.map +1 -0
  257. package/dist/runescape/model/npc/npcs/ReanimatedBear.js +66 -0
  258. package/dist/runescape/model/npc/npcs/ReanimatedDog.d.ts +8 -0
  259. package/dist/runescape/model/npc/npcs/ReanimatedDog.d.ts.map +1 -0
  260. package/dist/runescape/model/npc/npcs/ReanimatedDog.js +66 -0
  261. package/dist/runescape/model/npc/npcs/ReanimatedScorpion.d.ts +8 -0
  262. package/dist/runescape/model/npc/npcs/ReanimatedScorpion.d.ts.map +1 -0
  263. package/dist/runescape/model/npc/npcs/ReanimatedScorpion.js +66 -0
  264. package/dist/runescape/model/npc/npcs/Revenants.d.ts +8 -0
  265. package/dist/runescape/model/npc/npcs/Revenants.d.ts.map +1 -0
  266. package/dist/runescape/model/npc/npcs/Revenants.js +66 -0
  267. package/dist/runescape/model/npc/npcs/Rooster.d.ts +10 -0
  268. package/dist/runescape/model/npc/npcs/Rooster.d.ts.map +1 -0
  269. package/dist/runescape/model/npc/npcs/Rooster.js +65 -0
  270. package/dist/runescape/model/npc/npcs/Sarachnis.d.ts +9 -0
  271. package/dist/runescape/model/npc/npcs/Sarachnis.d.ts.map +1 -0
  272. package/dist/runescape/model/npc/npcs/Sarachnis.js +64 -0
  273. package/dist/runescape/model/npc/npcs/Scorpia.d.ts +9 -0
  274. package/dist/runescape/model/npc/npcs/Scorpia.d.ts.map +1 -0
  275. package/dist/runescape/model/npc/npcs/Scorpia.js +66 -0
  276. package/dist/runescape/model/npc/npcs/ScorpiasGuardian.d.ts +9 -0
  277. package/dist/runescape/model/npc/npcs/ScorpiasGuardian.d.ts.map +1 -0
  278. package/dist/runescape/model/npc/npcs/ScorpiasGuardian.js +62 -0
  279. package/dist/runescape/model/npc/npcs/ScorpiasOffspring.d.ts +9 -0
  280. package/dist/runescape/model/npc/npcs/ScorpiasOffspring.d.ts.map +1 -0
  281. package/dist/runescape/model/npc/npcs/ScorpiasOffspring.js +56 -0
  282. package/dist/runescape/model/npc/npcs/Scurrius.d.ts +8 -0
  283. package/dist/runescape/model/npc/npcs/Scurrius.d.ts.map +1 -0
  284. package/dist/runescape/model/npc/npcs/Scurrius.js +66 -0
  285. package/dist/runescape/model/npc/npcs/Seagull.d.ts +10 -0
  286. package/dist/runescape/model/npc/npcs/Seagull.d.ts.map +1 -0
  287. package/dist/runescape/model/npc/npcs/Seagull.js +63 -0
  288. package/dist/runescape/model/npc/npcs/SergeantGrimspike.d.ts +8 -0
  289. package/dist/runescape/model/npc/npcs/SergeantGrimspike.d.ts.map +1 -0
  290. package/dist/runescape/model/npc/npcs/SergeantGrimspike.js +66 -0
  291. package/dist/runescape/model/npc/npcs/SergeantSteelwill.d.ts +8 -0
  292. package/dist/runescape/model/npc/npcs/SergeantSteelwill.d.ts.map +1 -0
  293. package/dist/runescape/model/npc/npcs/SergeantSteelwill.js +66 -0
  294. package/dist/runescape/model/npc/npcs/SergeantStrongstack.d.ts +8 -0
  295. package/dist/runescape/model/npc/npcs/SergeantStrongstack.d.ts.map +1 -0
  296. package/dist/runescape/model/npc/npcs/SergeantStrongstack.js +66 -0
  297. package/dist/runescape/model/npc/npcs/ShadowSpider.d.ts +8 -0
  298. package/dist/runescape/model/npc/npcs/ShadowSpider.d.ts.map +1 -0
  299. package/dist/runescape/model/npc/npcs/ShadowSpider.js +66 -0
  300. package/dist/runescape/model/npc/npcs/ShayziernCryptsSkeletons.d.ts +8 -0
  301. package/dist/runescape/model/npc/npcs/ShayziernCryptsSkeletons.d.ts.map +1 -0
  302. package/dist/runescape/model/npc/npcs/ShayziernCryptsSkeletons.js +66 -0
  303. package/dist/runescape/model/npc/npcs/SkeletonFremennik.d.ts +8 -0
  304. package/dist/runescape/model/npc/npcs/SkeletonFremennik.d.ts.map +1 -0
  305. package/dist/runescape/model/npc/npcs/SkeletonFremennik.js +66 -0
  306. package/dist/runescape/model/npc/npcs/SkeletonMage.d.ts +8 -0
  307. package/dist/runescape/model/npc/npcs/SkeletonMage.d.ts.map +1 -0
  308. package/dist/runescape/model/npc/npcs/SkeletonMage.js +66 -0
  309. package/dist/runescape/model/npc/npcs/SkeletonsInTheStrongholdOfSecurityAndAncientCavern.d.ts +8 -0
  310. package/dist/runescape/model/npc/npcs/SkeletonsInTheStrongholdOfSecurityAndAncientCavern.d.ts.map +1 -0
  311. package/dist/runescape/model/npc/npcs/SkeletonsInTheStrongholdOfSecurityAndAncientCavern.js +66 -0
  312. package/dist/runescape/model/npc/npcs/Skogre.d.ts +8 -0
  313. package/dist/runescape/model/npc/npcs/Skogre.d.ts.map +1 -0
  314. package/dist/runescape/model/npc/npcs/Skogre.js +66 -0
  315. package/dist/runescape/model/npc/npcs/Skotizo.d.ts +8 -0
  316. package/dist/runescape/model/npc/npcs/Skotizo.d.ts.map +1 -0
  317. package/dist/runescape/model/npc/npcs/Skotizo.js +66 -0
  318. package/dist/runescape/model/npc/npcs/SmallLizard.d.ts +8 -0
  319. package/dist/runescape/model/npc/npcs/SmallLizard.d.ts.map +1 -0
  320. package/dist/runescape/model/npc/npcs/SmallLizard.js +66 -0
  321. package/dist/runescape/model/npc/npcs/Spindel.d.ts +8 -0
  322. package/dist/runescape/model/npc/npcs/Spindel.d.ts.map +1 -0
  323. package/dist/runescape/model/npc/npcs/Spindel.js +68 -0
  324. package/dist/runescape/model/npc/npcs/SpiritualMage.d.ts +8 -0
  325. package/dist/runescape/model/npc/npcs/SpiritualMage.d.ts.map +1 -0
  326. package/dist/runescape/model/npc/npcs/SpiritualMage.js +66 -0
  327. package/dist/runescape/model/npc/npcs/SpiritualRanger.d.ts +8 -0
  328. package/dist/runescape/model/npc/npcs/SpiritualRanger.d.ts.map +1 -0
  329. package/dist/runescape/model/npc/npcs/SpiritualRanger.js +66 -0
  330. package/dist/runescape/model/npc/npcs/SpiritualWarrior.d.ts +8 -0
  331. package/dist/runescape/model/npc/npcs/SpiritualWarrior.d.ts.map +1 -0
  332. package/dist/runescape/model/npc/npcs/SpiritualWarrior.js +66 -0
  333. package/dist/runescape/model/npc/npcs/SulphurLizard.d.ts +8 -0
  334. package/dist/runescape/model/npc/npcs/SulphurLizard.d.ts.map +1 -0
  335. package/dist/runescape/model/npc/npcs/SulphurLizard.js +66 -0
  336. package/dist/runescape/model/npc/npcs/TempleSpider.d.ts +8 -0
  337. package/dist/runescape/model/npc/npcs/TempleSpider.d.ts.map +1 -0
  338. package/dist/runescape/model/npc/npcs/TempleSpider.js +66 -0
  339. package/dist/runescape/model/npc/npcs/Terrorbird.d.ts +9 -0
  340. package/dist/runescape/model/npc/npcs/Terrorbird.d.ts.map +1 -0
  341. package/dist/runescape/model/npc/npcs/Terrorbird.js +62 -0
  342. package/dist/runescape/model/npc/npcs/ThermonuclearSmokDevil.d.ts +9 -0
  343. package/dist/runescape/model/npc/npcs/ThermonuclearSmokDevil.d.ts.map +1 -0
  344. package/dist/runescape/model/npc/npcs/ThermonuclearSmokDevil.js +66 -0
  345. package/dist/runescape/model/npc/npcs/ThrowerTroll.d.ts +8 -0
  346. package/dist/runescape/model/npc/npcs/ThrowerTroll.d.ts.map +1 -0
  347. package/dist/runescape/model/npc/npcs/ThrowerTroll.js +66 -0
  348. package/dist/runescape/model/npc/npcs/TorturedGorilla.d.ts +9 -0
  349. package/dist/runescape/model/npc/npcs/TorturedGorilla.d.ts.map +1 -0
  350. package/dist/runescape/model/npc/npcs/TorturedGorilla.js +62 -0
  351. package/dist/runescape/model/npc/npcs/TorturedSoul.d.ts +9 -0
  352. package/dist/runescape/model/npc/npcs/TorturedSoul.d.ts.map +1 -0
  353. package/dist/runescape/model/npc/npcs/TorturedSoul.js +62 -0
  354. package/dist/runescape/model/npc/npcs/TwistedBanshee.d.ts +8 -0
  355. package/dist/runescape/model/npc/npcs/TwistedBanshee.d.ts.map +1 -0
  356. package/dist/runescape/model/npc/npcs/TwistedBanshee.js +66 -0
  357. package/dist/runescape/model/npc/npcs/TzHaarHur.d.ts +10 -0
  358. package/dist/runescape/model/npc/npcs/TzHaarHur.d.ts.map +1 -0
  359. package/dist/runescape/model/npc/npcs/TzHaarHur.js +64 -0
  360. package/dist/runescape/model/npc/npcs/TzHaarKet.d.ts +10 -0
  361. package/dist/runescape/model/npc/npcs/TzHaarKet.d.ts.map +1 -0
  362. package/dist/runescape/model/npc/npcs/TzHaarKet.js +64 -0
  363. package/dist/runescape/model/npc/npcs/TzHaarMej.d.ts +10 -0
  364. package/dist/runescape/model/npc/npcs/TzHaarMej.d.ts.map +1 -0
  365. package/dist/runescape/model/npc/npcs/TzHaarMej.js +64 -0
  366. package/dist/runescape/model/npc/npcs/TzHaarXil.d.ts +10 -0
  367. package/dist/runescape/model/npc/npcs/TzHaarXil.d.ts.map +1 -0
  368. package/dist/runescape/model/npc/npcs/TzHaarXil.js +64 -0
  369. package/dist/runescape/model/npc/npcs/UndeadChicken.d.ts +9 -0
  370. package/dist/runescape/model/npc/npcs/UndeadChicken.d.ts.map +1 -0
  371. package/dist/runescape/model/npc/npcs/UndeadChicken.js +59 -0
  372. package/dist/runescape/model/npc/npcs/UndeadCow.d.ts +8 -0
  373. package/dist/runescape/model/npc/npcs/UndeadCow.d.ts.map +1 -0
  374. package/dist/runescape/model/npc/npcs/UndeadCow.js +66 -0
  375. package/dist/runescape/model/npc/npcs/UndeadDruid.d.ts +9 -0
  376. package/dist/runescape/model/npc/npcs/UndeadDruid.d.ts.map +1 -0
  377. package/dist/runescape/model/npc/npcs/UndeadDruid.js +62 -0
  378. package/dist/runescape/model/npc/npcs/UndeadOne.d.ts +8 -0
  379. package/dist/runescape/model/npc/npcs/UndeadOne.d.ts.map +1 -0
  380. package/dist/runescape/model/npc/npcs/UndeadOne.js +66 -0
  381. package/dist/runescape/model/npc/npcs/Venenatis.d.ts +9 -0
  382. package/dist/runescape/model/npc/npcs/Venenatis.d.ts.map +1 -0
  383. package/dist/runescape/model/npc/npcs/Venenatis.js +62 -0
  384. package/dist/runescape/model/npc/npcs/VetIon.d.ts +9 -0
  385. package/dist/runescape/model/npc/npcs/VetIon.d.ts.map +1 -0
  386. package/dist/runescape/model/npc/npcs/VetIon.js +56 -0
  387. package/dist/runescape/model/npc/npcs/Vorkath.d.ts +12 -0
  388. package/dist/runescape/model/npc/npcs/Vorkath.d.ts.map +1 -0
  389. package/dist/runescape/model/npc/npcs/Vorkath.js +104 -0
  390. package/dist/runescape/model/npc/npcs/WhiteWolf.d.ts +8 -0
  391. package/dist/runescape/model/npc/npcs/WhiteWolf.d.ts.map +1 -0
  392. package/dist/runescape/model/npc/npcs/WhiteWolf.js +66 -0
  393. package/dist/runescape/model/npc/npcs/WildDog.d.ts +9 -0
  394. package/dist/runescape/model/npc/npcs/WildDog.d.ts.map +1 -0
  395. package/dist/runescape/model/npc/npcs/WildDog.js +56 -0
  396. package/dist/runescape/model/npc/npcs/Zogre.d.ts +9 -0
  397. package/dist/runescape/model/npc/npcs/Zogre.d.ts.map +1 -0
  398. package/dist/runescape/model/npc/npcs/Zogre.js +55 -0
  399. package/dist/runescape/model/npc/npcs/ZombiePirate.d.ts +9 -0
  400. package/dist/runescape/model/npc/npcs/ZombiePirate.d.ts.map +1 -0
  401. package/dist/runescape/model/npc/npcs/ZombiePirate.js +62 -0
  402. package/dist/runescape/model/npc/npcs/ZombieRat.d.ts +9 -0
  403. package/dist/runescape/model/npc/npcs/ZombieRat.d.ts.map +1 -0
  404. package/dist/runescape/model/npc/npcs/ZombieRat.js +62 -0
  405. package/dist/runescape/model/quest/QuestList.d.ts.map +1 -1
  406. package/dist/runescape/model/quest/QuestList.js +7 -2
  407. package/dist/runescape/model/quest/all/MountainDaughter.js +1 -1
  408. package/dist/runescape/tools/experience.js +80 -79
  409. package/dist/runescape/utils/validation.d.ts +1 -1
  410. package/dist/runescape/utils/validation.d.ts.map +1 -1
  411. package/dist/runescape/utils/validation.js +23 -23
  412. package/package.json +96 -96
  413. package/public/assets/items/3rd-age-amulet.png +0 -0
  414. package/public/assets/items/3rd-age-axe.png +0 -0
  415. package/public/assets/items/3rd-age-bow.png +0 -0
  416. package/public/assets/items/3rd-age-cloak.png +0 -0
  417. package/public/assets/items/3rd-age-druidic-cloak.png +0 -0
  418. package/public/assets/items/3rd-age-druidic-robe-bottoms.png +0 -0
  419. package/public/assets/items/3rd-age-druidic-robe-top.png +0 -0
  420. package/public/assets/items/3rd-age-druidic-staff.png +0 -0
  421. package/public/assets/items/3rd-age-full-helmet.png +0 -0
  422. package/public/assets/items/3rd-age-kiteshield.png +0 -0
  423. package/public/assets/items/3rd-age-mage-hat.png +0 -0
  424. package/public/assets/items/3rd-age-pickaxe.png +0 -0
  425. package/public/assets/items/3rd-age-plateskirt.png +0 -0
  426. package/public/assets/items/3rd-age-range-coif.png +0 -0
  427. package/public/assets/items/3rd-age-range-legs.png +0 -0
  428. package/public/assets/items/3rd-age-range-top.png +0 -0
  429. package/public/assets/items/3rd-age-robe-top.png +0 -0
  430. package/public/assets/items/3rd-age-robe.png +0 -0
  431. package/public/assets/items/3rd-age-vambraces.png +0 -0
  432. package/public/assets/items/3rd-age-wand.png +0 -0
  433. package/public/assets/items/a-powdered-wig.png +0 -0
  434. package/public/assets/items/adamant-axe.png +0 -0
  435. package/public/assets/items/adamant-battleaxe.png +0 -0
  436. package/public/assets/items/adamant-cane.png +0 -0
  437. package/public/assets/items/adamant-dagger.png +0 -0
  438. package/public/assets/items/adamant-dragon-mask.png +0 -0
  439. package/public/assets/items/adamant-full-helm-g.png +0 -0
  440. package/public/assets/items/adamant-full-helm-t.png +0 -0
  441. package/public/assets/items/adamant-full-helm.png +0 -0
  442. package/public/assets/items/adamant-helm-h1.png +0 -0
  443. package/public/assets/items/adamant-helm-h2.png +0 -0
  444. package/public/assets/items/adamant-helm-h3.png +0 -0
  445. package/public/assets/items/adamant-helm-h4.png +0 -0
  446. package/public/assets/items/adamant-helm-h5.png +0 -0
  447. package/public/assets/items/adamant-kiteshield-g.png +0 -0
  448. package/public/assets/items/adamant-kiteshield-t.png +0 -0
  449. package/public/assets/items/adamant-longsword.png +0 -0
  450. package/public/assets/items/adamant-pickaxe.png +0 -0
  451. package/public/assets/items/adamant-platebody-g.png +0 -0
  452. package/public/assets/items/adamant-platebody-h1.png +0 -0
  453. package/public/assets/items/adamant-platebody-h2.png +0 -0
  454. package/public/assets/items/adamant-platebody-h3.png +0 -0
  455. package/public/assets/items/adamant-platebody-h4.png +0 -0
  456. package/public/assets/items/adamant-platebody-h5.png +0 -0
  457. package/public/assets/items/adamant-platebody-t.png +0 -0
  458. package/public/assets/items/adamant-platelegs-g.png +0 -0
  459. package/public/assets/items/adamant-platelegs-t.png +0 -0
  460. package/public/assets/items/adamant-plateskirt-g.png +0 -0
  461. package/public/assets/items/adamant-plateskirt-t.png +0 -0
  462. package/public/assets/items/adamant-shield-h1.png +0 -0
  463. package/public/assets/items/adamant-shield-h2.png +0 -0
  464. package/public/assets/items/adamant-shield-h3.png +0 -0
  465. package/public/assets/items/adamant-shield-h4.png +0 -0
  466. package/public/assets/items/adamant-shield-h5.png +0 -0
  467. package/public/assets/items/afro.png +0 -0
  468. package/public/assets/items/ale-of-the-gods.png +0 -0
  469. package/public/assets/items/amulet-of-defence-t.png +0 -0
  470. package/public/assets/items/amulet-of-glory-t4.png +0 -0
  471. package/public/assets/items/amulet-of-power.png +0 -0
  472. package/public/assets/items/ancient-blessing.png +0 -0
  473. package/public/assets/items/ancient-bracers.png +0 -0
  474. package/public/assets/items/ancient-chaps.png +0 -0
  475. package/public/assets/items/ancient-cloak.png +0 -0
  476. package/public/assets/items/ancient-coif.png +0 -0
  477. package/public/assets/items/ancient-crozier.png +0 -0
  478. package/public/assets/items/ancient-full-helm.png +0 -0
  479. package/public/assets/items/ancient-kiteshield.png +0 -0
  480. package/public/assets/items/ancient-mitre.png +0 -0
  481. package/public/assets/items/ancient-page-1.png +0 -0
  482. package/public/assets/items/ancient-page-2.png +0 -0
  483. package/public/assets/items/ancient-platebody.png +0 -0
  484. package/public/assets/items/ancient-platelegs.png +0 -0
  485. package/public/assets/items/ancient-robe-top.png +0 -0
  486. package/public/assets/items/ancient-stole.png +0 -0
  487. package/public/assets/items/anguish-ornament-kit.png +0 -0
  488. package/public/assets/items/ankou-gloves.png +0 -0
  489. package/public/assets/items/ankou-mask.png +0 -0
  490. package/public/assets/items/ankou-socks.png +0 -0
  491. package/public/assets/items/ankou-top.png +0 -0
  492. package/public/assets/items/anti-venom-4.png +0 -0
  493. package/public/assets/items/arceuus-banner.png +0 -0
  494. package/public/assets/items/arceuus-hood.png +0 -0
  495. package/public/assets/items/armadyl-bracers.png +0 -0
  496. package/public/assets/items/armadyl-chaps.png +0 -0
  497. package/public/assets/items/armadyl-cloak.png +0 -0
  498. package/public/assets/items/armadyl-coif.png +0 -0
  499. package/public/assets/items/armadyl-crozier.png +0 -0
  500. package/public/assets/items/armadyl-full-helm.png +0 -0
  501. package/public/assets/items/armadyl-godsword-ornament-kit.png +0 -0
  502. package/public/assets/items/armadyl-kiteshield.png +0 -0
  503. package/public/assets/items/armadyl-mitre.png +0 -0
  504. package/public/assets/items/armadyl-page-1.png +0 -0
  505. package/public/assets/items/armadyl-page-2.png +0 -0
  506. package/public/assets/items/armadyl-page-3.png +0 -0
  507. package/public/assets/items/armadyl-page-4.png +0 -0
  508. package/public/assets/items/armadyl-platebody.png +0 -0
  509. package/public/assets/items/armadyl-platelegs.png +0 -0
  510. package/public/assets/items/armadyl-robe-top.png +0 -0
  511. package/public/assets/items/armadyl-stole.png +0 -0
  512. package/public/assets/items/bandos-bracers.png +0 -0
  513. package/public/assets/items/bandos-chaps.png +0 -0
  514. package/public/assets/items/bandos-cloak.png +0 -0
  515. package/public/assets/items/bandos-coif.png +0 -0
  516. package/public/assets/items/bandos-crozier.png +0 -0
  517. package/public/assets/items/bandos-full-helm.png +0 -0
  518. package/public/assets/items/bandos-godsword-ornament-kit.png +0 -0
  519. package/public/assets/items/bandos-kiteshield.png +0 -0
  520. package/public/assets/items/bandos-mitre.png +0 -0
  521. package/public/assets/items/bandos-page-1.png +0 -0
  522. package/public/assets/items/bandos-page-2.png +0 -0
  523. package/public/assets/items/bandos-page-3.png +0 -0
  524. package/public/assets/items/bandos-page-4.png +0 -0
  525. package/public/assets/items/bandos-platebody.png +0 -0
  526. package/public/assets/items/bandos-platelegs.png +0 -0
  527. package/public/assets/items/bandos-robe-top.png +0 -0
  528. package/public/assets/items/bandos-stole.png +0 -0
  529. package/public/assets/items/battlestaff.png +0 -0
  530. package/public/assets/items/beanie.png +0 -0
  531. package/public/assets/items/bear-feet.png +0 -0
  532. package/public/assets/items/big-pirate-hat.png +0 -0
  533. package/public/assets/items/black-2h-sword.png +0 -0
  534. package/public/assets/items/black-beret.png +0 -0
  535. package/public/assets/items/black-boater.png +0 -0
  536. package/public/assets/items/black-cane.png +0 -0
  537. package/public/assets/items/black-cavalier.png +0 -0
  538. package/public/assets/items/black-chainbody.png +0 -0
  539. package/public/assets/items/black-demon-mask.png +0 -0
  540. package/public/assets/items/black-dragon-mask.png +0 -0
  541. package/public/assets/items/black-dragonhide.png +0 -0
  542. package/public/assets/items/black-full-helm-g.png +0 -0
  543. package/public/assets/items/black-headband.png +0 -0
  544. package/public/assets/items/black-helm-h1.png +0 -0
  545. package/public/assets/items/black-kiteshield.png +0 -0
  546. package/public/assets/items/black-leprechaun-hat.png +0 -0
  547. package/public/assets/items/black-mace.png +0 -0
  548. package/public/assets/items/black-med-helm.png +0 -0
  549. package/public/assets/items/black-platebody-g.png +0 -0
  550. package/public/assets/items/black-platelegs-g.png +0 -0
  551. package/public/assets/items/black-plateskirt.png +0 -0
  552. package/public/assets/items/black-robe.png +0 -0
  553. package/public/assets/items/black-scimitar.png +0 -0
  554. package/public/assets/items/black-shield-h1.png +0 -0
  555. package/public/assets/items/black-sq-shield.png +0 -0
  556. package/public/assets/items/black-sword.png +0 -0
  557. package/public/assets/items/black-unicorn-mask.png +0 -0
  558. package/public/assets/items/black-warhammer.png +0 -0
  559. package/public/assets/items/black-wizard-hat-g.png +0 -0
  560. package/public/assets/items/black-wizard-robe-g.png +0 -0
  561. package/public/assets/items/blue-beret.png +0 -0
  562. package/public/assets/items/blue-boater.png +0 -0
  563. package/public/assets/items/blue-dragon-mask.png +0 -0
  564. package/public/assets/items/blue-firelighter.png +0 -0
  565. package/public/assets/items/blue-headband.png +0 -0
  566. package/public/assets/items/blue-wizard-hat-g.png +0 -0
  567. package/public/assets/items/blue-wizard-hat.png +0 -0
  568. package/public/assets/items/blue-wizard-robe-g.png +0 -0
  569. package/public/assets/items/blue-wizard-robe.png +0 -0
  570. package/public/assets/items/boots-of-darkness.png +0 -0
  571. package/public/assets/items/bowl-wig.png +0 -0
  572. package/public/assets/items/briefcase.png +0 -0
  573. package/public/assets/items/bronze-arrow.png +0 -0
  574. package/public/assets/items/bronze-dragon-mask.png +0 -0
  575. package/public/assets/items/brown-headband.png +0 -0
  576. package/public/assets/items/bucket-helm-g.png +0 -0
  577. package/public/assets/items/bucket-helm.png +0 -0
  578. package/public/assets/items/cabbage-round-shield.png +0 -0
  579. package/public/assets/items/cabbage.png +0 -0
  580. package/public/assets/items/cat-mask.png +0 -0
  581. package/public/assets/items/charge-dragonstone-jewellery-scroll.png +0 -0
  582. package/public/assets/items/climbing-boots-g.png +0 -0
  583. package/public/assets/items/crier-bell.png +0 -0
  584. package/public/assets/items/crier-coat.png +0 -0
  585. package/public/assets/items/crier-hat.png +0 -0
  586. package/public/assets/items/dark-bow-tie.png +0 -0
  587. package/public/assets/items/dark-cavalier.png +0 -0
  588. package/public/assets/items/dark-infinity-colour-kit.png +0 -0
  589. package/public/assets/items/dark-trousers.png +0 -0
  590. package/public/assets/items/dark-tuxedo-cuffs.png +0 -0
  591. package/public/assets/items/dark-tuxedo-jacket.png +0 -0
  592. package/public/assets/items/dark-tuxedo-shoes.png +0 -0
  593. package/public/assets/items/death-rune.png +0 -0
  594. package/public/assets/items/deerstalker.png +0 -0
  595. package/public/assets/items/demon-feet.png +0 -0
  596. package/public/assets/items/digsite-teleport.png +0 -0
  597. package/public/assets/items/dragon-battleaxe.png +0 -0
  598. package/public/assets/items/dragon-boots-ornament-kit.png +0 -0
  599. package/public/assets/items/dragon-cane.png +0 -0
  600. package/public/assets/items/dragon-chainbody-ornament-kit.png +0 -0
  601. package/public/assets/items/dragon-dagger.png +0 -0
  602. package/public/assets/items/dragon-defender-ornament-kit.png +0 -0
  603. package/public/assets/items/dragon-full-helm-ornament-kit.png +0 -0
  604. package/public/assets/items/dragon-halberd.png +0 -0
  605. package/public/assets/items/dragon-kiteshield-ornament-kit.png +0 -0
  606. package/public/assets/items/dragon-legs-skirt-ornament-kit.png +0 -0
  607. package/public/assets/items/dragon-longsword.png +0 -0
  608. package/public/assets/items/dragon-mace.png +0 -0
  609. package/public/assets/items/dragon-necklace.png +0 -0
  610. package/public/assets/items/dragon-platebody-ornament-kit.png +0 -0
  611. package/public/assets/items/dragon-scimitar-ornament-kit.png +0 -0
  612. package/public/assets/items/dragon-scimitar.png +0 -0
  613. package/public/assets/items/dragon-sq-shield-ornament-kit.png +0 -0
  614. package/public/assets/items/dragonstone-bracelet.png +0 -0
  615. package/public/assets/items/dragonstone-ring.png +0 -0
  616. package/public/assets/items/enchanted-hat.png +0 -0
  617. package/public/assets/items/enchanted-robe.png +0 -0
  618. package/public/assets/items/enchanted-top.png +0 -0
  619. package/public/assets/items/extended-antifire4.png +0 -0
  620. package/public/assets/items/fancy-tiara.png +0 -0
  621. package/public/assets/items/feldip-hills-teleport.png +0 -0
  622. package/public/assets/items/fire-battlestaff.png +0 -0
  623. package/public/assets/items/fremennik-kilt.png +0 -0
  624. package/public/assets/items/frog-slippers.png +0 -0
  625. package/public/assets/items/fury-ornament-kit.png +0 -0
  626. package/public/assets/items/giant-boot.png +0 -0
  627. package/public/assets/items/gilded-2h-sword.png +0 -0
  628. package/public/assets/items/gilded-axe.png +0 -0
  629. package/public/assets/items/gilded-boots.png +0 -0
  630. package/public/assets/items/gilded-chainbody.png +0 -0
  631. package/public/assets/items/gilded-coif.png +0 -0
  632. package/public/assets/items/gilded-hasta.png +0 -0
  633. package/public/assets/items/gilded-kiteshield.png +0 -0
  634. package/public/assets/items/gilded-med-helm.png +0 -0
  635. package/public/assets/items/gilded-pickaxe.png +0 -0
  636. package/public/assets/items/gilded-platelegs.png +0 -0
  637. package/public/assets/items/gilded-plateskirt.png +0 -0
  638. package/public/assets/items/gilded-scimitar.png +0 -0
  639. package/public/assets/items/gilded-spade.png +0 -0
  640. package/public/assets/items/gilded-spear.png +0 -0
  641. package/public/assets/items/gilded-sq-shield.png +0 -0
  642. package/public/assets/items/gloves-of-darkness.png +0 -0
  643. package/public/assets/items/gnomish-firelighter.png +0 -0
  644. package/public/assets/items/goblin-mask.png +0 -0
  645. package/public/assets/items/gold-headband.png +0 -0
  646. package/public/assets/items/greater-demon-mask.png +0 -0
  647. package/public/assets/items/green-boater.png +0 -0
  648. package/public/assets/items/green-dragon-mask.png +0 -0
  649. package/public/assets/items/green-firelighter.png +0 -0
  650. package/public/assets/items/green-headband.png +0 -0
  651. package/public/assets/items/grimy-ranarr-weed.png +0 -0
  652. package/public/assets/items/grimy-snapdragon.png +0 -0
  653. package/public/assets/items/grimy-toadflax.png +0 -0
  654. package/public/assets/items/guthix-bracers.png +0 -0
  655. package/public/assets/items/guthix-chaps.png +0 -0
  656. package/public/assets/items/guthix-cloak.png +0 -0
  657. package/public/assets/items/guthix-coif.png +0 -0
  658. package/public/assets/items/guthix-full-helm.png +0 -0
  659. package/public/assets/items/guthix-kiteshield.png +0 -0
  660. package/public/assets/items/guthix-mitre.png +0 -0
  661. package/public/assets/items/guthix-page-1.png +0 -0
  662. package/public/assets/items/guthix-page-2.png +0 -0
  663. package/public/assets/items/guthix-page-3.png +0 -0
  664. package/public/assets/items/guthix-page-4.png +0 -0
  665. package/public/assets/items/guthix-platebody.png +0 -0
  666. package/public/assets/items/guthix-platelegs.png +0 -0
  667. package/public/assets/items/guthix-robe-top.png +0 -0
  668. package/public/assets/items/half-moon-spectacles.png +0 -0
  669. package/public/assets/items/ham-joint.png +0 -0
  670. package/public/assets/items/hardleather-body.png +0 -0
  671. package/public/assets/items/harmless-teleport.png +0 -0
  672. package/public/assets/items/herring.png +0 -0
  673. package/public/assets/items/hide-body-g.png +0 -0
  674. package/public/assets/items/hide-body-t.png +0 -0
  675. package/public/assets/items/hide-body.png +0 -0
  676. package/public/assets/items/hide-boots.png +0 -0
  677. package/public/assets/items/hide-chaps-g.png +0 -0
  678. package/public/assets/items/hide-chaps-t.png +0 -0
  679. package/public/assets/items/hide-chaps.png +0 -0
  680. package/public/assets/items/hide-shield.png +0 -0
  681. package/public/assets/items/hide-vambraces.png +0 -0
  682. package/public/assets/items/highwayman-mask.png +0 -0
  683. package/public/assets/items/holy-blessing.png +0 -0
  684. package/public/assets/items/holy-sandals.png +0 -0
  685. package/public/assets/items/holy-wraps.png +0 -0
  686. package/public/assets/items/honourable-blessing.png +0 -0
  687. package/public/assets/items/hood-of-darkness.png +0 -0
  688. package/public/assets/items/hosidius-banner.png +0 -0
  689. package/public/assets/items/hosidius-hood.png +0 -0
  690. package/public/assets/items/imp-mask.png +0 -0
  691. package/public/assets/items/iorwerth-camp-teleport.png +0 -0
  692. package/public/assets/items/iron-arrow.png +0 -0
  693. package/public/assets/items/iron-dragon-mask.png +0 -0
  694. package/public/assets/items/iron-full-helm-t.png +0 -0
  695. package/public/assets/items/iron-pickaxe.png +0 -0
  696. package/public/assets/items/iron-platebody-t.png +0 -0
  697. package/public/assets/items/jester-cape.png +0 -0
  698. package/public/assets/items/jungle-demon-mask.png +0 -0
  699. package/public/assets/items/katana.png +0 -0
  700. package/public/assets/items/lava-dragon-mask.png +0 -0
  701. package/public/assets/items/law-rune.png +0 -0
  702. package/public/assets/items/leather-body-g.png +0 -0
  703. package/public/assets/items/leather-body.png +0 -0
  704. package/public/assets/items/leather-chaps.png +0 -0
  705. package/public/assets/items/leather-cowl.png +0 -0
  706. package/public/assets/items/leather-vambraces.png +0 -0
  707. package/public/assets/items/left-eye-patch.png +0 -0
  708. package/public/assets/items/leprechaun-hat.png +0 -0
  709. package/public/assets/items/lesser-demon-mask.png +0 -0
  710. package/public/assets/items/light-bow-tie.png +0 -0
  711. package/public/assets/items/light-infinity-colour-kit.png +0 -0
  712. package/public/assets/items/light-trousers.png +0 -0
  713. package/public/assets/items/light-tuxedo-cuffs.png +0 -0
  714. package/public/assets/items/light-tuxedo-jacket.png +0 -0
  715. package/public/assets/items/light-tuxedo-shoes.png +0 -0
  716. package/public/assets/items/limpwurt-root.png +0 -0
  717. package/public/assets/items/lobster.png +0 -0
  718. package/public/assets/items/longbow.png +0 -0
  719. package/public/assets/items/loop-half-of-key.png +0 -0
  720. package/public/assets/items/lovakengj-banner.png +0 -0
  721. package/public/assets/items/lovakengj-hood.png +0 -0
  722. package/public/assets/items/lumberyard-teleport.png +0 -0
  723. package/public/assets/items/lunar-isle-teleport.png +0 -0
  724. package/public/assets/items/magic-comp-bow.png +0 -0
  725. package/public/assets/items/magic-longbow.png +0 -0
  726. package/public/assets/items/magic-seed.png +0 -0
  727. package/public/assets/items/magic-shortbow.png +0 -0
  728. package/public/assets/items/mahogany-plank.png +0 -0
  729. package/public/assets/items/manta-ray.png +0 -0
  730. package/public/assets/items/master-scroll-book-empty.png +0 -0
  731. package/public/assets/items/mind-rune.png +0 -0
  732. package/public/assets/items/mithril-dragon-mask.png +0 -0
  733. package/public/assets/items/mithril-full-helm-g.png +0 -0
  734. package/public/assets/items/mithril-full-helm-t.png +0 -0
  735. package/public/assets/items/mithril-kiteshield-g.png +0 -0
  736. package/public/assets/items/mithril-kiteshield-t.png +0 -0
  737. package/public/assets/items/mithril-platebody-g.png +0 -0
  738. package/public/assets/items/mithril-platebody-t.png +0 -0
  739. package/public/assets/items/mithril-platelegs-g.png +0 -0
  740. package/public/assets/items/mithril-platelegs-t.png +0 -0
  741. package/public/assets/items/mithril-plateskirt-g.png +0 -0
  742. package/public/assets/items/mithril-plateskirt-t.png +0 -0
  743. package/public/assets/items/mole-slippers.png +0 -0
  744. package/public/assets/items/monocle.png +0 -0
  745. package/public/assets/items/musketeer-hat.png +0 -0
  746. package/public/assets/items/musketeer-pants.png +0 -0
  747. package/public/assets/items/musketeer-tabard.png +0 -0
  748. package/public/assets/items/nardah-teleport.png +0 -0
  749. package/public/assets/items/nature-rune.png +0 -0
  750. package/public/assets/items/navy-cavalier.png +0 -0
  751. package/public/assets/items/oak-longbow.png +0 -0
  752. package/public/assets/items/oak-plank.png +0 -0
  753. package/public/assets/items/oak-shortbow.png +0 -0
  754. package/public/assets/items/obsidian-cape-r.png +0 -0
  755. package/public/assets/items/occult-ornament-kit.png +0 -0
  756. package/public/assets/items/old-demon-mask.png +0 -0
  757. package/public/assets/items/onyx-bolt-tips.png +0 -0
  758. package/public/assets/items/onyx-bolts-e.png +0 -0
  759. package/public/assets/items/orange-boater.png +0 -0
  760. package/public/assets/items/palm-tree-seed.png +0 -0
  761. package/public/assets/items/peaceful-blessing.png +0 -0
  762. package/public/assets/items/penguin-mask.png +0 -0
  763. package/public/assets/items/pest-control-teleport.png +0 -0
  764. package/public/assets/items/pink-boater.png +0 -0
  765. package/public/assets/items/pink-headband.png +0 -0
  766. package/public/assets/items/piscarilius-banner.png +0 -0
  767. package/public/assets/items/piscarilius-hood.png +0 -0
  768. package/public/assets/items/piscatoris-teleport.png +0 -0
  769. package/public/assets/items/purple-boater.png +0 -0
  770. package/public/assets/items/purple-firelighter.png +0 -0
  771. package/public/assets/items/purple-sweets.png +0 -0
  772. package/public/assets/items/rain-bow.png +0 -0
  773. package/public/assets/items/ranger-boots.png +0 -0
  774. package/public/assets/items/ranger-gloves.png +0 -0
  775. package/public/assets/items/ranging-potion4.png +0 -0
  776. package/public/assets/items/red-boater.png +0 -0
  777. package/public/assets/items/red-cavalier.png +0 -0
  778. package/public/assets/items/red-dragon-mask.png +0 -0
  779. package/public/assets/items/red-elegant-shirt.png +0 -0
  780. package/public/assets/items/red-firelighter.png +0 -0
  781. package/public/assets/items/red-headband.png +0 -0
  782. package/public/assets/items/ring-of-coins.png +0 -0
  783. package/public/assets/items/ring-of-nature.png +0 -0
  784. package/public/assets/items/robe-bottom-of-darkness.png +0 -0
  785. package/public/assets/items/robe-top-of-darkness.png +0 -0
  786. package/public/assets/items/robin-hood-hat.png +0 -0
  787. package/public/assets/items/royal-crown.png +0 -0
  788. package/public/assets/items/royal-gown-bottom.png +0 -0
  789. package/public/assets/items/royal-gown-top.png +0 -0
  790. package/public/assets/items/royal-sceptre.png +0 -0
  791. package/public/assets/items/rune-axe.png +0 -0
  792. package/public/assets/items/rune-battleaxe.png +0 -0
  793. package/public/assets/items/rune-crossbow.png +0 -0
  794. package/public/assets/items/rune-dagger.png +0 -0
  795. package/public/assets/items/rune-dragon-mask.png +0 -0
  796. package/public/assets/items/rune-full-helm-g.png +0 -0
  797. package/public/assets/items/rune-full-helm-t.png +0 -0
  798. package/public/assets/items/rune-full-helm.png +0 -0
  799. package/public/assets/items/rune-helm-h1.png +0 -0
  800. package/public/assets/items/rune-helm-h2.png +0 -0
  801. package/public/assets/items/rune-helm-h3.png +0 -0
  802. package/public/assets/items/rune-helm-h4.png +0 -0
  803. package/public/assets/items/rune-helm-h5.png +0 -0
  804. package/public/assets/items/rune-kiteshield-g.png +0 -0
  805. package/public/assets/items/rune-kiteshield-t.png +0 -0
  806. package/public/assets/items/rune-kiteshield.png +0 -0
  807. package/public/assets/items/rune-longsword.png +0 -0
  808. package/public/assets/items/rune-pickaxe.png +0 -0
  809. package/public/assets/items/rune-platebody-g.png +0 -0
  810. package/public/assets/items/rune-platebody-h1.png +0 -0
  811. package/public/assets/items/rune-platebody-h2.png +0 -0
  812. package/public/assets/items/rune-platebody-h3.png +0 -0
  813. package/public/assets/items/rune-platebody-h4.png +0 -0
  814. package/public/assets/items/rune-platebody-h5.png +0 -0
  815. package/public/assets/items/rune-platebody-t.png +0 -0
  816. package/public/assets/items/rune-platebody.png +0 -0
  817. package/public/assets/items/rune-platelegs-g.png +0 -0
  818. package/public/assets/items/rune-platelegs-t.png +0 -0
  819. package/public/assets/items/rune-platelegs.png +0 -0
  820. package/public/assets/items/rune-plateskirt-g.png +0 -0
  821. package/public/assets/items/rune-plateskirt-t.png +0 -0
  822. package/public/assets/items/rune-plateskirt.png +0 -0
  823. package/public/assets/items/rune-scimitar-ornament-kit-guthix.png +0 -0
  824. package/public/assets/items/rune-scimitar-ornament-kit-saradomin.png +0 -0
  825. package/public/assets/items/rune-scimitar-ornament-kit-zamorak.png +0 -0
  826. package/public/assets/items/rune-shield-h1.png +0 -0
  827. package/public/assets/items/rune-shield-h2.png +0 -0
  828. package/public/assets/items/rune-shield-h3.png +0 -0
  829. package/public/assets/items/rune-shield-h4.png +0 -0
  830. package/public/assets/items/rune-shield-h5.png +0 -0
  831. package/public/assets/items/runite-bar.png +0 -0
  832. package/public/assets/items/runite-ore.png +0 -0
  833. package/public/assets/items/s-body.png +0 -0
  834. package/public/assets/items/s-feet.png +0 -0
  835. package/public/assets/items/s-hands.png +0 -0
  836. package/public/assets/items/s-hat.png +0 -0
  837. package/public/assets/items/s-head.png +0 -0
  838. package/public/assets/items/s-helm.png +0 -0
  839. package/public/assets/items/s-leggings.png +0 -0
  840. package/public/assets/items/s-legs.png +0 -0
  841. package/public/assets/items/s-red-shirt.png +0 -0
  842. package/public/assets/items/s-robe-g.png +0 -0
  843. package/public/assets/items/s-robe-top-g.png +0 -0
  844. package/public/assets/items/s-tights.png +0 -0
  845. package/public/assets/items/s-tunic.png +0 -0
  846. package/public/assets/items/sagacious-spectacles.png +0 -0
  847. package/public/assets/items/salmon.png +0 -0
  848. package/public/assets/items/samurai-boots.png +0 -0
  849. package/public/assets/items/samurai-gloves.png +0 -0
  850. package/public/assets/items/samurai-greaves.png +0 -0
  851. package/public/assets/items/samurai-kasa.png +0 -0
  852. package/public/assets/items/samurai-shirt.png +0 -0
  853. package/public/assets/items/sandwich-lady-bottom.png +0 -0
  854. package/public/assets/items/sandwich-lady-hat.png +0 -0
  855. package/public/assets/items/sandwich-lady-top.png +0 -0
  856. package/public/assets/items/saradomin-bracers.png +0 -0
  857. package/public/assets/items/saradomin-brew4.png +0 -0
  858. package/public/assets/items/saradomin-chaps.png +0 -0
  859. package/public/assets/items/saradomin-cloak.png +0 -0
  860. package/public/assets/items/saradomin-coif.png +0 -0
  861. package/public/assets/items/saradomin-full-helm.png +0 -0
  862. package/public/assets/items/saradomin-godsword-ornament-kit.png +0 -0
  863. package/public/assets/items/saradomin-kiteshield.png +0 -0
  864. package/public/assets/items/saradomin-mitre.png +0 -0
  865. package/public/assets/items/saradomin-page-1.png +0 -0
  866. package/public/assets/items/saradomin-page-2.png +0 -0
  867. package/public/assets/items/saradomin-page-3.png +0 -0
  868. package/public/assets/items/saradomin-page-4.png +0 -0
  869. package/public/assets/items/saradomin-platebody.png +0 -0
  870. package/public/assets/items/saradomin-platelegs.png +0 -0
  871. package/public/assets/items/saradomin-robe-top.png +0 -0
  872. package/public/assets/items/sardine.png +0 -0
  873. package/public/assets/items/shark.png +0 -0
  874. package/public/assets/items/shayzien-banner.png +0 -0
  875. package/public/assets/items/shayzien-hood.png +0 -0
  876. package/public/assets/items/shortbow.png +0 -0
  877. package/public/assets/items/shoulder-parrot.png +0 -0
  878. package/public/assets/items/shrimps.png +0 -0
  879. package/public/assets/items/sleeping-cap.png +0 -0
  880. package/public/assets/items/soul-rune.png +0 -0
  881. package/public/assets/items/spiked-manacles.png +0 -0
  882. package/public/assets/items/staff-of-air.png +0 -0
  883. package/public/assets/items/staff-of-bob-the-cat.png +0 -0
  884. package/public/assets/items/staff-of-earth.png +0 -0
  885. package/public/assets/items/staff-of-fire.png +0 -0
  886. package/public/assets/items/staff-of-water.png +0 -0
  887. package/public/assets/items/steel-axe.png +0 -0
  888. package/public/assets/items/steel-battleaxe.png +0 -0
  889. package/public/assets/items/steel-dagger.png +0 -0
  890. package/public/assets/items/steel-dragon-mask.png +0 -0
  891. package/public/assets/items/steel-full-helm-t.png +0 -0
  892. package/public/assets/items/steel-full-helm.png +0 -0
  893. package/public/assets/items/steel-longsword.png +0 -0
  894. package/public/assets/items/steel-pickaxe.png +0 -0
  895. package/public/assets/items/steel-platebody-t.png +0 -0
  896. package/public/assets/items/steel-platebody.png +0 -0
  897. package/public/assets/items/steel-platelegs.png +0 -0
  898. package/public/assets/items/steel-plateskirt.png +0 -0
  899. package/public/assets/items/strength-amulet-t.png +0 -0
  900. package/public/assets/items/studded-body.png +0 -0
  901. package/public/assets/items/studded-chaps.png +0 -0
  902. package/public/assets/items/summer-pie.png +0 -0
  903. package/public/assets/items/super-restore4.png +0 -0
  904. package/public/assets/items/swordfish.png +0 -0
  905. package/public/assets/items/tai-bwo-wannai-teleport.png +0 -0
  906. package/public/assets/items/tan-cavalier.png +0 -0
  907. package/public/assets/items/teak-plank.png +0 -0
  908. package/public/assets/items/team-cape-i.png +0 -0
  909. package/public/assets/items/team-cape-x.png +0 -0
  910. package/public/assets/items/team-cape-zero.png +0 -0
  911. package/public/assets/items/ton-teleport.png +0 -0
  912. package/public/assets/items/tooth-half-of-key.png +0 -0
  913. package/public/assets/items/top-hat.png +0 -0
  914. package/public/assets/items/tormented-ornament-kit.png +0 -0
  915. package/public/assets/items/torstol.png +0 -0
  916. package/public/assets/items/torture-ornament-kit.png +0 -0
  917. package/public/assets/items/trout.png +0 -0
  918. package/public/assets/items/tuna-potato.png +0 -0
  919. package/public/assets/items/unholy-blessing.png +0 -0
  920. package/public/assets/items/war-blessing.png +0 -0
  921. package/public/assets/items/water-rune.png +0 -0
  922. package/public/assets/items/white-boater.png +0 -0
  923. package/public/assets/items/white-cavalier.png +0 -0
  924. package/public/assets/items/white-firelighter.png +0 -0
  925. package/public/assets/items/white-headband.png +0 -0
  926. package/public/assets/items/white-unicorn-mask.png +0 -0
  927. package/public/assets/items/willow-comp-bow.png +0 -0
  928. package/public/assets/items/willow-longbow.png +0 -0
  929. package/public/assets/items/willow-shortbow.png +0 -0
  930. package/public/assets/items/wine-of-zamorak.png +0 -0
  931. package/public/assets/items/wizard-boots.png +0 -0
  932. package/public/assets/items/wizard-hat.png +0 -0
  933. package/public/assets/items/wolf-cloak.png +0 -0
  934. package/public/assets/items/wolf-mask.png +0 -0
  935. package/public/assets/items/wooden-shield-g.png +0 -0
  936. package/public/assets/items/yew-comp-bow.png +0 -0
  937. package/public/assets/items/yew-longbow.png +0 -0
  938. package/public/assets/items/yew-seed.png +0 -0
  939. package/public/assets/items/yew-shortbow.png +0 -0
  940. package/public/assets/items/zamorak-bracers.png +0 -0
  941. package/public/assets/items/zamorak-chaps.png +0 -0
  942. package/public/assets/items/zamorak-cloak.png +0 -0
  943. package/public/assets/items/zamorak-coif.png +0 -0
  944. package/public/assets/items/zamorak-full-helm.png +0 -0
  945. package/public/assets/items/zamorak-godsword-ornament-kit.png +0 -0
  946. package/public/assets/items/zamorak-kiteshield.png +0 -0
  947. package/public/assets/items/zamorak-mitre.png +0 -0
  948. package/public/assets/items/zamorak-page-1.png +0 -0
  949. package/public/assets/items/zamorak-page-2.png +0 -0
  950. package/public/assets/items/zamorak-page-3.png +0 -0
  951. package/public/assets/items/zamorak-page-4.png +0 -0
  952. package/public/assets/items/zamorak-platebody.png +0 -0
  953. package/public/assets/items/zamorak-platelegs.png +0 -0
  954. package/public/assets/items/zamorak-robe-top.png +0 -0
@@ -1,79 +1,69 @@
1
1
  /**
2
2
  * Helper class for OSRS Clue Scrolls
3
3
  * Handles casket opening simulation with accurate wiki-based reward odds
4
+ *
5
+ * WIKI REFERENCE: https://oldschool.runescape.wiki/w/Clue_scrolls
6
+ * Each tier has unique mechanics documented in the reward casket pages
4
7
  */
5
- import { Item } from '../Item/Item';
8
+ import { Item } from "../Item/Item";
6
9
  /**
7
10
  * Result of opening a casket - contains all rewards obtained
8
11
  */
9
12
  export interface CasketReward {
10
13
  items: Item[];
11
14
  count: number;
15
+ /** Optional: master clue if obtained from certain tiers */
16
+ masterClue?: Item;
12
17
  }
13
18
  /**
14
- * Main ClueScrollHelper class that provides methods to simulate clue scroll rewards, calculate probabilities, and list possible rewards
15
- *
16
- * Reference: https://oldschool.runescape.wiki/w/Clue_scrolls
19
+ * Main ClueScrollHelper class that provides methods to simulate clue scroll rewards
17
20
  */
18
21
  export declare class ClueScrollHelper {
19
- /**
20
- * Select a random reward based on rarity tiers
21
- * Uses item rarity values to create weighted selection
22
- */
23
- private static selectRandomReward;
24
- /**
25
- * Determine the number of rewards in a casket
26
- * Different tiers have different distributions
27
- * For beginner: min 1, max 3, average 2
28
- * For easy: min 2, max 4, average 3
29
- * For medium: min 3, max 5, average 4
30
- * For hard: min 4, max 6, average 5
31
- * For elite: min 4, max 6, average 5
32
- * For master: min 5, max 7, average 6
33
- * @returns Number of rewards based on tier
34
- */
35
- private static getRewardCount;
36
- /**
37
- * Select a reward table for the given tier (for tiers with table-based mechanics)
38
- * Returns items from the selected table
39
- */
40
- private static selectRewardTable;
41
22
  /**
42
23
  * Simulate opening a clue casket and return all rewards
24
+ *
25
+ * Uses tier-specific mechanics per OSRS Wiki documented behavior:
26
+ * - Beginner: 1-3 rewards with unique/cabbage sub-mechanic
27
+ * - Easy: 2-4 rewards + 1/50 master clue
28
+ * - Medium: 3-5 rewards (standard)
29
+ * - Hard: 4-6 rewards (standard)
30
+ * - Elite: 4-6 rewards + 1/5 master clue (bonus, doesn't consume slot)
31
+ * - Master: 5-7 rewards (standard)
32
+ *
43
33
  * @param tier The difficulty tier of the clue scroll
44
- * @returns CasketReward containing all items and count
34
+ * @returns CasketReward containing all items, count, and optional master clue
45
35
  */
46
- static openCasket(tier: 'beginner' | 'easy' | 'medium' | 'hard' | 'elite' | 'master'): CasketReward;
36
+ static openCasket(tier: "beginner" | "easy" | "medium" | "hard" | "elite" | "master"): CasketReward;
47
37
  /**
48
38
  * Get the probability of obtaining a specific item from a casket as a fraction
49
39
  * @param tier The difficulty tier
50
40
  * @param itemName The item name to check probability for
51
41
  * @returns The probability as a fraction (e.g., 0.0278 for 1/36)
52
42
  */
53
- static getItemProbability(tier: 'beginner' | 'easy' | 'medium' | 'hard' | 'elite' | 'master', itemName: string): number;
43
+ static getItemProbability(tier: "beginner" | "easy" | "medium" | "hard" | "elite" | "master", itemName: string): number;
54
44
  /**
55
45
  * Get the rarity denominator (X in "1 in X") for an item
56
46
  */
57
- static getItemRarity(tier: 'beginner' | 'easy' | 'medium' | 'hard' | 'elite' | 'master', itemName: string): number;
47
+ static getItemRarity(tier: "beginner" | "easy" | "medium" | "hard" | "elite" | "master", itemName: string): number;
58
48
  /**
59
49
  * Get all possible rewards for a tier as Item objects
60
50
  */
61
- static getPossibleRewards(tier: 'beginner' | 'easy' | 'medium' | 'hard' | 'elite' | 'master'): Item[];
51
+ static getPossibleRewards(tier: "beginner" | "easy" | "medium" | "hard" | "elite" | "master"): Item[];
62
52
  /**
63
53
  * Get all possible reward items names for a tier
64
54
  */
65
- static getPossibleRewardNames(tier: 'beginner' | 'easy' | 'medium' | 'hard' | 'elite' | 'master'): string[];
55
+ static getPossibleRewardNames(tier: "beginner" | "easy" | "medium" | "hard" | "elite" | "master"): string[];
66
56
  /**
67
57
  * Simulate opening multiple caskets
68
58
  * @param tier The clue tier
69
59
  * @param count Number of caskets to open
70
60
  * @returns Array of all reward items
71
61
  */
72
- static simulateMultiple(tier: 'beginner' | 'easy' | 'medium' | 'hard' | 'elite' | 'master', count: number): Item[];
62
+ static simulateMultiple(tier: "beginner" | "easy" | "medium" | "hard" | "elite" | "master", count: number): Item[];
73
63
  /**
74
64
  * Get reward statistics for a tier
75
65
  */
76
- static getRewardStats(tier: 'beginner' | 'easy' | 'medium' | 'hard' | 'elite' | 'master'): {
66
+ static getRewardStats(tier: "beginner" | "easy" | "medium" | "hard" | "elite" | "master"): {
77
67
  tier: string;
78
68
  totalUnique: number;
79
69
  rareItems: number;
@@ -1 +1 @@
1
- {"version":3,"file":"ClueScrollHelper.d.ts","sourceRoot":"","sources":["../../../../source/runescape/model/clue/ClueScrollHelper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAYpC;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,qBAAa,gBAAgB;IAC3B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAwBjC;;;;;;;;;;OAUG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAwC7B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IA0BhC;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,YAAY;IAkBnG;;;;;OAKG;IACH,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAMvH;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAMlH;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,IAAI,EAAE;IAKrG;;OAEG;IACH,MAAM,CAAC,sBAAsB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,EAAE;IAK3G;;;;;OAKG;IACH,MAAM,CAAC,gBAAgB,CACrB,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,EAClE,KAAK,EAAE,MAAM,GACZ,IAAI,EAAE;IAST;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG;QACzF,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;KACrB;CAWF"}
1
+ {"version":3,"file":"ClueScrollHelper.d.ts","sourceRoot":"","sources":["../../../../source/runescape/model/clue/ClueScrollHelper.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAGpC;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,UAAU,CAAC,EAAE,IAAI,CAAC;CACnB;AA+TD;;GAEG;AACH,qBAAa,gBAAgB;IAC3B;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,YAAY;IAmBnG;;;;;OAKG;IACH,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAMvH;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAMlH;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,IAAI,EAAE;IAKrG;;OAEG;IACH,MAAM,CAAC,sBAAsB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,EAAE;IAK3G;;;;;OAKG;IACH,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE;IASlH;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG;QACzF,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;KACrB;CAWF"}
@@ -1,138 +1,335 @@
1
1
  /**
2
2
  * Helper class for OSRS Clue Scrolls
3
3
  * Handles casket opening simulation with accurate wiki-based reward odds
4
+ *
5
+ * WIKI REFERENCE: https://oldschool.runescape.wiki/w/Clue_scrolls
6
+ * Each tier has unique mechanics documented in the reward casket pages
4
7
  */
5
- import { getClueRewardsByTier, getClueRewardTables, } from './ClueScrollRewards';
8
+ import { getClueRewardsByTier, getClueRewardTables } from "./ClueScrollRewards";
9
+ //======================================================================================
10
+ // CORE UTILITY METHODS - Weighted Selection
11
+ //======================================================================================
6
12
  /**
7
- * Main ClueScrollHelper class that provides methods to simulate clue scroll rewards, calculate probabilities, and list possible rewards
8
- *
9
- * Reference: https://oldschool.runescape.wiki/w/Clue_scrolls
13
+ * Select a random item from a reward table using probability weights
14
+ * Higher rarity number = lower chance of selection
15
+ * @param rewards Table mapping item names to {item, rarity} pairs
16
+ * @returns A randomly selected Item based on rarity weights
10
17
  */
11
- export class ClueScrollHelper {
12
- /**
13
- * Select a random reward based on rarity tiers
14
- * Uses item rarity values to create weighted selection
15
- */
16
- static selectRandomReward(rewards) {
17
- const items = [];
18
- let totalWeight = 0;
19
- for (const { item, rarity } of Object.values(rewards)) {
20
- const probability = 1 / rarity;
21
- items.push({ item, probability });
22
- totalWeight += probability;
23
- }
24
- const random = Math.random() * totalWeight;
25
- let cumulative = 0;
26
- for (const { item, probability } of items) {
27
- cumulative += probability;
28
- if (random < cumulative) {
29
- return item;
30
- }
18
+ function selectRandomReward(rewards) {
19
+ const items = [];
20
+ let totalWeight = 0;
21
+ // Convert rarity values to probability weights
22
+ for (const { item, rarity } of Object.values(rewards)) {
23
+ const probability = 1 / rarity;
24
+ items.push({ item, probability });
25
+ totalWeight += probability;
26
+ }
27
+ // Weighted random selection
28
+ const random = Math.random() * totalWeight;
29
+ let cumulative = 0;
30
+ for (const { item, probability } of items) {
31
+ cumulative += probability;
32
+ if (random < cumulative) {
33
+ return item;
31
34
  }
32
- // Fallback to last item if rounding errors occur
33
- return items[items.length - 1].item;
34
35
  }
35
- /**
36
- * Determine the number of rewards in a casket
37
- * Different tiers have different distributions
38
- * For beginner: min 1, max 3, average 2
39
- * For easy: min 2, max 4, average 3
40
- * For medium: min 3, max 5, average 4
41
- * For hard: min 4, max 6, average 5
42
- * For elite: min 4, max 6, average 5
43
- * For master: min 5, max 7, average 6
44
- * @returns Number of rewards based on tier
45
- */
46
- static getRewardCount(tier) {
47
- const random = Math.random();
48
- switch (tier.toLowerCase()) {
49
- case 'beginner':
50
- // Distribution: 25% = 1, 50% = 2, 25% = 3 (average = 2)
51
- if (random < 0.25)
52
- return 1;
53
- if (random < 0.75)
54
- return 2;
55
- return 3;
56
- case 'easy':
57
- // Distribution: 25% = 2, 50% = 3, 25% = 4 (average = 3)
58
- if (random < 0.25)
59
- return 2;
60
- if (random < 0.75)
61
- return 3;
62
- return 4;
63
- case 'medium':
64
- // Distribution: 33.3% = 3, 33.3% = 4, 33.3% = 5 (average = 4)
65
- if (random < 0.333)
66
- return 3;
67
- if (random < 0.667)
68
- return 4;
69
- return 5;
70
- case 'hard':
71
- // Distribution: 25% = 4, 50% = 5, 25% = 6 (average = 5)
72
- if (random < 0.25)
73
- return 4;
74
- if (random < 0.75)
75
- return 5;
76
- return 6;
77
- case 'elite':
78
- // Distribution: 25% = 4, 50% = 5, 25% = 6 (average = 5)
79
- // Note: Plus 1/5 chance of master clue (doesn't take a slot)
80
- if (random < 0.25)
81
- return 4;
82
- if (random < 0.75)
83
- return 5;
84
- return 6;
85
- case 'master':
86
- // Distribution: 20% = 5, 60% = 6, 20% = 7 (average = 6)
87
- if (random < 0.2)
88
- return 5;
89
- if (random < 0.8)
90
- return 6;
91
- return 7;
92
- default:
93
- return 2;
36
+ // Fallback (should never reach here with valid data)
37
+ return items[items.length - 1].item;
38
+ }
39
+ /**
40
+ * Select a reward table using weighted table selection
41
+ * Each table has a weight representing its probability of being selected
42
+ * @param tables Array of weighted reward tables for a tier
43
+ * @returns The selected reward table
44
+ */
45
+ function selectWeightedTable(tables) {
46
+ const totalWeight = tables.reduce((sum, t) => sum + t.weight, 0);
47
+ const random = Math.random() * totalWeight;
48
+ let cumulative = 0;
49
+ for (const table of tables) {
50
+ cumulative += table.weight;
51
+ if (random < cumulative) {
52
+ return table.items;
94
53
  }
95
54
  }
96
- /**
97
- * Select a reward table for the given tier (for tiers with table-based mechanics)
98
- * Returns items from the selected table
99
- */
100
- static selectRewardTable(tier) {
101
- const tables = getClueRewardTables(tier);
102
- if (!tables) {
103
- // No table structure, use flat rewards
104
- return getClueRewardsByTier(tier);
55
+ // Fallback
56
+ return tables[0].items;
57
+ }
58
+ //======================================================================================
59
+ // TIER-SPECIFIC REWARD COUNT METHODS
60
+ //======================================================================================
61
+ /**
62
+ * Beginner: 1-3 items, weighting towards 2
63
+ * Distribution: 25% = 1, 50% = 2, 25% = 3 (average = 2)
64
+ * Wiki: https://oldschool.runescape.wiki/w/Reward_casket_(beginner)
65
+ */
66
+ function getBeginnerRewardCount() {
67
+ const r = Math.random();
68
+ if (r < 0.25)
69
+ return 1;
70
+ if (r < 0.75)
71
+ return 2;
72
+ return 3;
73
+ }
74
+ /**
75
+ * Easy: 2-4 items, weighting towards 3
76
+ * Distribution: 25% = 2, 50% = 3, 25% = 4 (average = 3)
77
+ * Wiki: https://oldschool.runescape.wiki/w/Reward_casket_(easy)
78
+ */
79
+ function getEasyRewardCount() {
80
+ const r = Math.random();
81
+ if (r < 0.25)
82
+ return 2;
83
+ if (r < 0.75)
84
+ return 3;
85
+ return 4;
86
+ }
87
+ /**
88
+ * Medium: 3-5 items, uniform distribution
89
+ * Distribution: 33.3% each (average = 4)
90
+ * Wiki: https://oldschool.runescape.wiki/w/Reward_casket_(medium)
91
+ */
92
+ function getMediumRewardCount() {
93
+ const r = Math.random();
94
+ if (r < 0.333333)
95
+ return 3;
96
+ if (r < 0.666666)
97
+ return 4;
98
+ return 5;
99
+ }
100
+ /**
101
+ * Hard: 4-6 items, weighting towards 5
102
+ * Distribution: 25% = 4, 50% = 5, 25% = 6 (average = 5)
103
+ * Wiki: https://oldschool.runescape.wiki/w/Reward_casket_(hard)
104
+ */
105
+ function getHardRewardCount() {
106
+ const r = Math.random();
107
+ if (r < 0.25)
108
+ return 4;
109
+ if (r < 0.75)
110
+ return 5;
111
+ return 6;
112
+ }
113
+ /**
114
+ * Elite: 4-6 items, weighting towards 5
115
+ * Distribution: 25% = 4, 50% = 5, 25% = 6 (average = 5)
116
+ * NOTE: Master clue is separate (1/5 chance, doesn't consume a slot)
117
+ * Wiki: https://oldschool.runescape.wiki/w/Reward_casket_(elite)
118
+ */
119
+ function getEliteRewardCount() {
120
+ const r = Math.random();
121
+ if (r < 0.25)
122
+ return 4;
123
+ if (r < 0.75)
124
+ return 5;
125
+ return 6;
126
+ }
127
+ /**
128
+ * Master: 5-7 items, weighting towards 6
129
+ * Distribution: 20% = 5, 60% = 6, 20% = 7 (average = 6)
130
+ * Wiki: https://oldschool.runescape.wiki/w/Reward_casket_(master)
131
+ */
132
+ function getMasterRewardCount() {
133
+ const r = Math.random();
134
+ if (r < 0.2)
135
+ return 5;
136
+ if (r < 0.8)
137
+ return 6;
138
+ return 7;
139
+ }
140
+ //======================================================================================
141
+ // TIER-SPECIFIC OPENING MECHANICS
142
+ //======================================================================================
143
+ /**
144
+ * Beginner casket opening with special unique/cabbage mechanics
145
+ *
146
+ * WIKI MECHANICS:
147
+ * - Unique/Cabbage roll: 1/12 (41/492 weight)
148
+ * - When hitting this table: 50% Cabbage, 50% Specific unique item
149
+ * - This is handled in the reward data structure
150
+ * - Black items table: 11/492 weight, then 1/18 for each item
151
+ * - Common items: 440/492 weight
152
+ *
153
+ * The key insight is that the weighted table selection naturally handles these
154
+ * mechanics since the reward data is properly structured.
155
+ *
156
+ * Wiki: https://oldschool.runescape.wiki/w/Reward_casket_(beginner)
157
+ */
158
+ function openBeginnerCasket() {
159
+ const rewardCount = getBeginnerRewardCount();
160
+ const rewards = [];
161
+ const tables = getClueRewardTables("beginner");
162
+ for (let i = 0; i < rewardCount; i++) {
163
+ const selectedTable = selectWeightedTable(tables);
164
+ const item = selectRandomReward(selectedTable);
165
+ rewards.push(item);
166
+ }
167
+ return { items: rewards, count: rewardCount };
168
+ }
169
+ /**
170
+ * Easy casket opening with master clue special mechanic
171
+ *
172
+ * WIKI MECHANICS:
173
+ * - Main rewards: 2-4 items per casket roll
174
+ * - Master clue scroll: SEPARATE 1/50 chance per casket opening
175
+ * - Not part of the main reward slots
176
+ * - Is an additional reward if rolled successfully
177
+ * - Unique items: High probability tier (~22.9%)
178
+ * - Standard items: Common weapons, armor, runes, food
179
+ *
180
+ * Wiki: https://oldschool.runescape.wiki/w/Reward_casket_(easy)
181
+ */
182
+ function openEasyCasket() {
183
+ const rewardCount = getEasyRewardCount();
184
+ const rewards = [];
185
+ const tables = getClueRewardTables("easy");
186
+ // Main rewards using weighted table selection
187
+ for (let i = 0; i < rewardCount; i++) {
188
+ const selectedTable = selectWeightedTable(tables);
189
+ const item = selectRandomReward(selectedTable);
190
+ rewards.push(item);
191
+ }
192
+ // Master clue: 1/50 chance (separate roll)
193
+ const masterClueRoll = Math.random();
194
+ let masterClue;
195
+ if (masterClueRoll < 1 / 50) {
196
+ // Get master clue from the master clue table
197
+ const masterTable = tables.find((t) => t.weight === 0 && "items" in t);
198
+ if (masterTable && "Clue scroll (master)" in masterTable.items) {
199
+ masterClue = masterTable.items["Clue scroll (master)"].item;
105
200
  }
106
- // Calculate total weight
107
- const totalWeight = tables.reduce((sum, table) => sum + table.weight, 0);
108
- const random = Math.random() * totalWeight;
109
- let cumulative = 0;
110
- for (const table of tables) {
111
- cumulative += table.weight;
112
- if (random < cumulative) {
113
- return table.items;
114
- }
201
+ }
202
+ const result = { items: rewards, count: rewardCount };
203
+ if (masterClue) {
204
+ result.masterClue = masterClue;
205
+ }
206
+ return result;
207
+ }
208
+ /**
209
+ * Medium casket opening
210
+ * Standard weighted table selection with no special mechanics
211
+ *
212
+ * Wiki: https://oldschool.runescape.wiki/w/Reward_casket_(medium)
213
+ */
214
+ function openMediumCasket() {
215
+ const rewardCount = getMediumRewardCount();
216
+ const rewards = [];
217
+ const tables = getClueRewardTables("medium");
218
+ for (let i = 0; i < rewardCount; i++) {
219
+ const selectedTable = selectWeightedTable(tables);
220
+ const item = selectRandomReward(selectedTable);
221
+ rewards.push(item);
222
+ }
223
+ return { items: rewards, count: rewardCount };
224
+ }
225
+ /**
226
+ * Hard casket opening
227
+ * Standard weighted table selection with no special mechanics
228
+ *
229
+ * Wiki: https://oldschool.runescape.wiki/w/Reward_casket_(hard)
230
+ */
231
+ function openHardCasket() {
232
+ const rewardCount = getHardRewardCount();
233
+ const rewards = [];
234
+ const tables = getClueRewardTables("hard");
235
+ for (let i = 0; i < rewardCount; i++) {
236
+ const selectedTable = selectWeightedTable(tables);
237
+ const item = selectRandomReward(selectedTable);
238
+ rewards.push(item);
239
+ }
240
+ return { items: rewards, count: rewardCount };
241
+ }
242
+ /**
243
+ * Elite casket opening with master clue special mechanic
244
+ *
245
+ * WIKI MECHANICS:
246
+ * - Main rewards: 4-6 items per casket
247
+ * - Master clue scroll: 1/5 chance (20%), DOES NOT consume a reward slot
248
+ * - This is an additional reward beyond the main reward count
249
+ * - If obtained, casket total rewards = rewardCount + 1
250
+ *
251
+ * Wiki: https://oldschool.runescape.wiki/w/Reward_casket_(elite)
252
+ */
253
+ function openEliteCasket() {
254
+ const rewardCount = getEliteRewardCount();
255
+ const rewards = [];
256
+ const tables = getClueRewardTables("elite");
257
+ // Main rewards
258
+ for (let i = 0; i < rewardCount; i++) {
259
+ const selectedTable = selectWeightedTable(tables);
260
+ const item = selectRandomReward(selectedTable);
261
+ rewards.push(item);
262
+ }
263
+ // Master clue: 1/5 chance (20%), DOES NOT consume a slot
264
+ const masterClueRoll = Math.random();
265
+ let masterClue;
266
+ if (masterClueRoll < 1 / 5) {
267
+ const masterTable = tables.find((t) => t.weight === 0 && "items" in t);
268
+ if (masterTable && "Clue scroll (master)" in masterTable.items) {
269
+ masterClue = masterTable.items["Clue scroll (master)"].item;
115
270
  }
116
- // Fallback to first table
117
- return tables[0].items;
118
271
  }
272
+ const result = { items: rewards, count: rewardCount };
273
+ if (masterClue) {
274
+ result.masterClue = masterClue;
275
+ }
276
+ return result;
277
+ }
278
+ /**
279
+ * Master casket opening
280
+ * Standard weighted table selection with no special mechanics
281
+ *
282
+ * Wiki: https://oldschool.runescape.wiki/w/Reward_casket_(master)
283
+ */
284
+ function openMasterCasket() {
285
+ const rewardCount = getMasterRewardCount();
286
+ const rewards = [];
287
+ const tables = getClueRewardTables("master");
288
+ for (let i = 0; i < rewardCount; i++) {
289
+ const selectedTable = selectWeightedTable(tables);
290
+ const item = selectRandomReward(selectedTable);
291
+ rewards.push(item);
292
+ }
293
+ return { items: rewards, count: rewardCount };
294
+ }
295
+ //======================================================================================
296
+ // PUBLIC API
297
+ //======================================================================================
298
+ /**
299
+ * Main ClueScrollHelper class that provides methods to simulate clue scroll rewards
300
+ */
301
+ export class ClueScrollHelper {
119
302
  /**
120
303
  * Simulate opening a clue casket and return all rewards
304
+ *
305
+ * Uses tier-specific mechanics per OSRS Wiki documented behavior:
306
+ * - Beginner: 1-3 rewards with unique/cabbage sub-mechanic
307
+ * - Easy: 2-4 rewards + 1/50 master clue
308
+ * - Medium: 3-5 rewards (standard)
309
+ * - Hard: 4-6 rewards (standard)
310
+ * - Elite: 4-6 rewards + 1/5 master clue (bonus, doesn't consume slot)
311
+ * - Master: 5-7 rewards (standard)
312
+ *
121
313
  * @param tier The difficulty tier of the clue scroll
122
- * @returns CasketReward containing all items and count
314
+ * @returns CasketReward containing all items, count, and optional master clue
123
315
  */
124
316
  static openCasket(tier) {
125
- const rewardCount = this.getRewardCount(tier);
126
- const rewards = [];
127
- for (let i = 0; i < rewardCount; i++) {
128
- const rewardTable = this.selectRewardTable(tier);
129
- const item = this.selectRandomReward(rewardTable);
130
- rewards.push(item);
317
+ switch (tier.toLowerCase()) {
318
+ case "beginner":
319
+ return openBeginnerCasket();
320
+ case "easy":
321
+ return openEasyCasket();
322
+ case "medium":
323
+ return openMediumCasket();
324
+ case "hard":
325
+ return openHardCasket();
326
+ case "elite":
327
+ return openEliteCasket();
328
+ case "master":
329
+ return openMasterCasket();
330
+ default:
331
+ throw new Error(`Unknown clue tier: ${tier}`);
131
332
  }
132
- return {
133
- items: rewards,
134
- count: rewardCount,
135
- };
136
333
  }
137
334
  /**
138
335
  * Get the probability of obtaining a specific item from a casket as a fraction
@@ -158,7 +355,7 @@ export class ClueScrollHelper {
158
355
  */
159
356
  static getPossibleRewards(tier) {
160
357
  const rewards = getClueRewardsByTier(tier);
161
- return Object.values(rewards).map(r => r.item);
358
+ return Object.values(rewards).map((r) => r.item);
162
359
  }
163
360
  /**
164
361
  * Get all possible reward items names for a tier
@@ -190,8 +387,8 @@ export class ClueScrollHelper {
190
387
  return {
191
388
  tier,
192
389
  totalUnique: items.length,
193
- rareItems: items.filter(r => r.rarity > 100).length,
194
- commonItems: items.filter(r => r.rarity <= 50).length,
390
+ rareItems: items.filter((r) => r.rarity > 100).length,
391
+ commonItems: items.filter((r) => r.rarity <= 50).length,
195
392
  };
196
393
  }
197
394
  }