osrs-tools 0.2.3 → 1.0.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 (235) hide show
  1. package/README.md +39 -66
  2. package/dist/Requirement.d.ts +1 -0
  3. package/dist/account/OsrsAccount.d.ts +76 -27
  4. package/dist/account/OsrsAccount.js +172 -48
  5. package/dist/quest/Quest.d.ts +37 -9
  6. package/dist/quest/QuestTool.d.ts +22 -37
  7. package/dist/quest/QuestTool.js +115 -56
  8. package/dist/quest/all/AHandInTheSand.d.ts +3 -0
  9. package/dist/quest/all/AHandInTheSand.js +46 -0
  10. package/dist/quest/all/AKingdomDivided.d.ts +3 -0
  11. package/dist/quest/all/AKingdomDivided.js +56 -0
  12. package/dist/quest/all/APorcineOfInterest.js +7 -2
  13. package/dist/quest/all/ASoulsBane.js +8 -2
  14. package/dist/quest/all/ATailOfTwoCats.js +5 -4
  15. package/dist/quest/all/ATasteOfHope.js +5 -2
  16. package/dist/quest/all/ATheatreOfBlood.d.ts +3 -0
  17. package/dist/quest/all/ATheatreOfBlood.js +38 -0
  18. package/dist/quest/all/AnimalMagnetism.js +13 -4
  19. package/dist/quest/all/AnotherSliceOfHAM.js +8 -2
  20. package/dist/quest/all/BelowIceMountain.js +9 -6
  21. package/dist/quest/all/BetweenARock.js +9 -2
  22. package/dist/quest/all/BigChompyBirdHunting.js +9 -2
  23. package/dist/quest/all/Biohazard.js +7 -2
  24. package/dist/quest/all/BlackKnightsFortress.js +5 -2
  25. package/dist/quest/all/BoneVoyage.js +5 -2
  26. package/dist/quest/all/CabinFever.js +9 -2
  27. package/dist/quest/all/ClientOfKourend.js +5 -2
  28. package/dist/quest/all/ClockTower.js +5 -2
  29. package/dist/quest/all/ColdWar.js +10 -2
  30. package/dist/quest/all/Contact.js +8 -2
  31. package/dist/quest/all/CookAssistant.js +7 -2
  32. package/dist/quest/all/CooksAssistant.js +8 -2
  33. package/dist/quest/all/CreatureOfFenkenstrain.js +8 -2
  34. package/dist/quest/all/DarknessOfHallowvale.js +10 -2
  35. package/dist/quest/all/DeathPlateau.js +8 -2
  36. package/dist/quest/all/DeathToTheDorgeshuun.js +9 -2
  37. package/dist/quest/all/DemonSlayer.js +5 -2
  38. package/dist/quest/all/DesertTreasure.d.ts +14 -0
  39. package/dist/quest/all/DesertTreasure.js +15 -0
  40. package/dist/quest/all/DeviousMinds.js +10 -2
  41. package/dist/quest/all/DoricQuest.d.ts +16 -0
  42. package/dist/quest/all/DoricQuest.js +20 -0
  43. package/dist/quest/all/DoricsQuest.js +8 -2
  44. package/dist/quest/all/DragonSlayer.js +9 -2
  45. package/dist/quest/all/DragonSlayerII.js +13 -4
  46. package/dist/quest/all/DreamMentor.d.ts +16 -0
  47. package/dist/quest/all/DreamMentor.js +21 -0
  48. package/dist/quest/all/DruidicRitual.js +8 -2
  49. package/dist/quest/all/DwarfCannon.js +8 -2
  50. package/dist/quest/all/EadgarsRuse.js +8 -2
  51. package/dist/quest/all/EaglesPeak.js +8 -2
  52. package/dist/quest/all/ElementalWorkshopI.js +9 -2
  53. package/dist/quest/all/ElementalWorkshopII.js +9 -2
  54. package/dist/quest/all/EnakhrasLament.js +5 -2
  55. package/dist/quest/all/EnlightenedJourney.js +5 -2
  56. package/dist/quest/all/FairytaleIGrowingPains.js +5 -2
  57. package/dist/quest/all/FairytaleIICureAQueen.js +5 -2
  58. package/dist/quest/all/FamilyCrest.js +5 -2
  59. package/dist/quest/all/FightArena.js +5 -2
  60. package/dist/quest/all/FishingContest.js +5 -2
  61. package/dist/quest/all/ForgettableTale.js +5 -2
  62. package/dist/quest/all/GardenOfTranquillity.js +5 -2
  63. package/dist/quest/all/GertrudesCat.js +5 -2
  64. package/dist/quest/all/GettingAhead.js +5 -2
  65. package/dist/quest/all/GhostsAhoy.js +5 -2
  66. package/dist/quest/all/GoblinDiplomacy.js +6 -3
  67. package/dist/quest/all/GrimTales.js +13 -2
  68. package/dist/quest/all/HauntedMine.js +8 -2
  69. package/dist/quest/all/HazeelCult.js +8 -2
  70. package/dist/quest/all/HeroesQuest.js +19 -15
  71. package/dist/quest/all/HolyGrail.js +8 -2
  72. package/dist/quest/all/HorrorFromTheDeep.js +10 -2
  73. package/dist/quest/all/IcthlarinsLittleHelper.js +10 -2
  74. package/dist/quest/all/ImpCatcher.js +8 -2
  75. package/dist/quest/all/InAidOfTheMyreque.js +11 -2
  76. package/dist/quest/all/InSearchOfTheMyreque.js +12 -8
  77. package/dist/quest/all/JunglePotion.js +8 -2
  78. package/dist/quest/all/KingsRansom.js +11 -5
  79. package/dist/quest/all/LegendsQuest.d.ts +3 -0
  80. package/dist/quest/all/LegendsQuest.js +56 -0
  81. package/dist/quest/all/LostCity.d.ts +3 -0
  82. package/dist/quest/all/LostCity.js +42 -0
  83. package/dist/quest/all/LunarDiplomacy.d.ts +3 -0
  84. package/dist/quest/all/LunarDiplomacy.js +55 -0
  85. package/dist/quest/all/MakingHistory.d.ts +3 -0
  86. package/dist/quest/all/MakingHistory.js +42 -0
  87. package/dist/quest/all/MerlinsCrystal.d.ts +3 -0
  88. package/dist/quest/all/MerlinsCrystal.js +39 -0
  89. package/dist/quest/all/MonkeyMadness.d.ts +3 -0
  90. package/dist/quest/all/MonkeyMadness.js +46 -0
  91. package/dist/quest/all/MonkeyMadnessII.d.ts +3 -0
  92. package/dist/quest/all/MonkeyMadnessII.js +57 -0
  93. package/dist/quest/all/MonksFriend.d.ts +3 -0
  94. package/dist/quest/all/MonksFriend.js +42 -0
  95. package/dist/quest/all/MurderMystery.d.ts +3 -0
  96. package/dist/quest/all/MurderMystery.js +39 -0
  97. package/dist/quest/all/MyArmsBigAdventure.d.ts +3 -0
  98. package/dist/quest/all/MyArmsBigAdventure.js +48 -0
  99. package/dist/quest/all/NatureSpirit.d.ts +3 -0
  100. package/dist/quest/all/NatureSpirit.js +43 -0
  101. package/dist/quest/all/ObservatoryQuest.d.ts +3 -0
  102. package/dist/quest/all/ObservatoryQuest.js +39 -0
  103. package/dist/quest/all/OlafsQuest.d.ts +3 -0
  104. package/dist/quest/all/OlafsQuest.js +47 -0
  105. package/dist/quest/all/OneSmallFavour.d.ts +3 -0
  106. package/dist/quest/all/OneSmallFavour.js +47 -0
  107. package/dist/quest/all/PlagueCity.d.ts +3 -0
  108. package/dist/quest/all/PlagueCity.js +39 -0
  109. package/dist/quest/all/PriestInPeril.d.ts +3 -0
  110. package/dist/quest/all/PriestInPeril.js +42 -0
  111. package/dist/quest/all/RagAndBoneMan.d.ts +3 -0
  112. package/dist/quest/all/RagAndBoneMan.js +39 -0
  113. package/dist/quest/all/Ratcatchers.d.ts +3 -0
  114. package/dist/quest/all/Ratcatchers.js +42 -0
  115. package/dist/quest/all/RecipeForDisaster.d.ts +3 -0
  116. package/dist/quest/all/RecipeForDisaster.js +62 -0
  117. package/dist/quest/all/RecruitmentDrive.d.ts +3 -0
  118. package/dist/quest/all/RecruitmentDrive.js +43 -0
  119. package/dist/quest/all/Regicide.d.ts +3 -0
  120. package/dist/quest/all/Regicide.js +43 -0
  121. package/dist/quest/all/RovingElves.d.ts +3 -0
  122. package/dist/quest/all/RovingElves.js +43 -0
  123. package/dist/quest/all/RoyalTrouble.d.ts +3 -0
  124. package/dist/quest/all/RoyalTrouble.js +44 -0
  125. package/dist/quest/all/RumDeal.d.ts +3 -0
  126. package/dist/quest/all/RumDeal.js +47 -0
  127. package/dist/quest/all/ScorpionCatcher.d.ts +3 -0
  128. package/dist/quest/all/ScorpionCatcher.js +39 -0
  129. package/dist/quest/all/SeaSlug.d.ts +3 -0
  130. package/dist/quest/all/SeaSlug.js +39 -0
  131. package/dist/quest/all/ShadesOfMortton.d.ts +3 -0
  132. package/dist/quest/all/ShadesOfMortton.js +43 -0
  133. package/dist/quest/all/ShadowOfTheStorm.d.ts +3 -0
  134. package/dist/quest/all/ShadowOfTheStorm.js +44 -0
  135. package/dist/quest/all/SheepHerder.d.ts +3 -0
  136. package/dist/quest/all/SheepHerder.js +39 -0
  137. package/dist/quest/all/ShiloVillage.d.ts +3 -0
  138. package/dist/quest/all/ShiloVillage.js +43 -0
  139. package/dist/quest/all/SlugMenace.d.ts +3 -0
  140. package/dist/quest/all/SlugMenace.js +48 -0
  141. package/dist/quest/all/SongOfTheElves.d.ts +3 -0
  142. package/dist/quest/all/SongOfTheElves.js +50 -0
  143. package/dist/quest/all/SpiritsOfTheElid.d.ts +3 -0
  144. package/dist/quest/all/SpiritsOfTheElid.js +43 -0
  145. package/dist/quest/all/SwanSong.d.ts +3 -0
  146. package/dist/quest/all/SwanSong.js +47 -0
  147. package/dist/quest/all/TaiBwoWannaiTrio.d.ts +3 -0
  148. package/dist/quest/all/TaiBwoWannaiTrio.js +45 -0
  149. package/dist/quest/all/TheAscentOfArceuus.d.ts +3 -0
  150. package/dist/quest/all/TheAscentOfArceuus.js +39 -0
  151. package/dist/quest/all/TheDepthsOfDespair.d.ts +3 -0
  152. package/dist/quest/all/TheDepthsOfDespair.js +43 -0
  153. package/dist/quest/all/TheForsakenTower.d.ts +3 -0
  154. package/dist/quest/all/TheForsakenTower.js +42 -0
  155. package/dist/quest/all/TheFremennikExiles.d.ts +3 -0
  156. package/dist/quest/all/TheFremennikExiles.js +47 -0
  157. package/dist/quest/all/TheFremennikIsles.d.ts +3 -0
  158. package/dist/quest/all/TheFremennikIsles.js +44 -0
  159. package/dist/quest/all/TheFremennikTrials.d.ts +3 -0
  160. package/dist/quest/all/TheFremennikTrials.js +39 -0
  161. package/dist/quest/all/TheGiantDwarf.d.ts +3 -0
  162. package/dist/quest/all/TheGiantDwarf.js +44 -0
  163. package/dist/quest/all/TheGolem.d.ts +3 -0
  164. package/dist/quest/all/TheGolem.js +39 -0
  165. package/dist/quest/all/TheGrandTree.d.ts +3 -0
  166. package/dist/quest/all/TheGrandTree.js +39 -0
  167. package/dist/quest/all/TheGreatBrainRobbery.d.ts +3 -0
  168. package/dist/quest/all/TheGreatBrainRobbery.js +46 -0
  169. package/dist/quest/all/TheHandInTheSand.d.ts +3 -0
  170. package/dist/quest/all/TheHandInTheSand.js +43 -0
  171. package/dist/quest/all/TheKnightsSword.d.ts +3 -0
  172. package/dist/quest/all/TheKnightsSword.js +39 -0
  173. package/dist/quest/all/TheLostTribe.d.ts +3 -0
  174. package/dist/quest/all/TheLostTribe.js +43 -0
  175. package/dist/quest/all/TheQueenOfThieves.d.ts +3 -0
  176. package/dist/quest/all/TheQueenOfThieves.js +43 -0
  177. package/dist/quest/all/TheSlugMenace.d.ts +3 -0
  178. package/dist/quest/all/TheSlugMenace.js +48 -0
  179. package/dist/quest/all/TheTaleOfTheRighteous.d.ts +3 -0
  180. package/dist/quest/all/TheTaleOfTheRighteous.js +43 -0
  181. package/dist/quest/all/TheTempleOfIkov.d.ts +3 -0
  182. package/dist/quest/all/TheTempleOfIkov.js +42 -0
  183. package/dist/quest/all/TheTouristTrap.d.ts +3 -0
  184. package/dist/quest/all/TheTouristTrap.js +43 -0
  185. package/dist/quest/all/ThroneOfMiscellania.d.ts +3 -0
  186. package/dist/quest/all/ThroneOfMiscellania.js +46 -0
  187. package/dist/quest/all/TowerOfLife.d.ts +3 -0
  188. package/dist/quest/all/TowerOfLife.js +42 -0
  189. package/dist/quest/all/TreeGnomeVillage.d.ts +3 -0
  190. package/dist/quest/all/TreeGnomeVillage.js +39 -0
  191. package/dist/quest/all/TribalTotem.d.ts +3 -0
  192. package/dist/quest/all/TribalTotem.js +39 -0
  193. package/dist/quest/all/TrollRomance.d.ts +3 -0
  194. package/dist/quest/all/TrollRomance.js +43 -0
  195. package/dist/quest/all/TrollStronghold.d.ts +3 -0
  196. package/dist/quest/all/TrollStronghold.js +42 -0
  197. package/dist/quest/all/UndergroundPass.d.ts +3 -0
  198. package/dist/quest/all/UndergroundPass.js +43 -0
  199. package/dist/quest/all/VampyreSlayer.d.ts +3 -0
  200. package/dist/quest/all/VampyreSlayer.js +39 -0
  201. package/dist/quest/all/Wanted.d.ts +3 -0
  202. package/dist/quest/all/Wanted.js +48 -0
  203. package/dist/quest/all/Watchtower.d.ts +3 -0
  204. package/dist/quest/all/Watchtower.js +45 -0
  205. package/dist/quest/all/WaterfallQuest.d.ts +3 -0
  206. package/dist/quest/all/WaterfallQuest.js +39 -0
  207. package/dist/quest/all/WhatLiesBelow.d.ts +3 -0
  208. package/dist/quest/all/WhatLiesBelow.js +42 -0
  209. package/dist/quest/all/WitchesPotion.d.ts +3 -0
  210. package/dist/quest/all/WitchesPotion.js +39 -0
  211. package/dist/quest/all/WitchsHouse.d.ts +3 -0
  212. package/dist/quest/all/WitchsHouse.js +39 -0
  213. package/dist/quest/all/ZogreFleshEaters.d.ts +3 -0
  214. package/dist/quest/all/ZogreFleshEaters.js +44 -0
  215. package/dist/slayer/Assignment.d.ts +1 -1
  216. package/dist/slayer/Masters.js +14 -10
  217. package/dist/slayer/task/ChaelderTasks.d.ts +2 -2
  218. package/dist/slayer/task/ChaelderTasks.js +55 -65
  219. package/dist/slayer/task/DuradelTasks.d.ts +2 -1
  220. package/dist/slayer/task/DuradelTasks.js +32 -14
  221. package/dist/slayer/task/KonarTasks.d.ts +2 -2
  222. package/dist/slayer/task/KonarTasks.js +34 -3
  223. package/dist/slayer/task/KrystiliaTasks.d.ts +3 -0
  224. package/dist/slayer/task/KrystiliaTasks.js +36 -0
  225. package/dist/slayer/task/MazchnaTasks.d.ts +2 -2
  226. package/dist/slayer/task/MazchnaTasks.js +83 -2
  227. package/dist/slayer/task/NieveTasks.d.ts +2 -2
  228. package/dist/slayer/task/NieveTasks.js +38 -64
  229. package/dist/slayer/task/SpriaTasks.d.ts +2 -1
  230. package/dist/slayer/task/SpriaTasks.js +39 -34
  231. package/dist/slayer/task/TurealTasks.d.ts +3 -0
  232. package/dist/slayer/task/TurealTasks.js +125 -0
  233. package/dist/slayer/task/VannakaTasks.d.ts +2 -1
  234. package/dist/slayer/task/VannakaTasks.js +54 -69
  235. package/package.json +2 -2
@@ -1,78 +1,137 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.QuestTool = void 0;
4
+ const Requirement_1 = require("../Requirement");
4
5
  class QuestTool {
5
- constructor() {
6
- // todo need to import these data from a typescript file where its defined/stored
7
- this.questObject = [];
8
- this.questArray = [];
9
- this.subQuestArray = [];
6
+ constructor(account) {
7
+ this.osrsAccount = account;
10
8
  }
11
- /**
12
- * to string func
13
- * @todo Implement this function
14
- * @return {String} The string representation of the class object.
15
- */
16
- toString() {
17
- return 'QuestTool :) WIP';
18
- }
19
- /**
20
- * Get the data for a quest
21
- * @param {String} questName The name of the quest
22
- * @return {Object} The data for the input quest in a JSON object.
23
- * */
24
- getQuest(questName) {
25
- if (typeof questName === 'string' && this.questObject[questName]) {
26
- // return new Quest(this.questObject[questName]); TODO
27
- }
28
- return undefined;
29
- }
30
- /**
31
- * Get the data for a quest
32
- * @param {String} questName The name of the quest
33
- * @return {Object} The data for the input quest in a JSON object.
34
- * */
35
- getQuestByName(questName) {
36
- return this.getQuest(questName);
37
- }
38
- /**
39
- * Get the data for a quest
40
- * @param {String} subQuestName The name of the subquest
41
- * @return {Object} The data for the input subquest in a JSON object.
42
- * */
43
- getSubQuest(subQuestName) {
44
- return this.subQuestArray.find((x) => x.name === subQuestName);
45
- }
46
- // Define highestBoost method, switch case omitted for brevity
47
- /**
48
- * Add two numbers together
49
- * @todo Need to implement Recipe for disaster functionality
50
- * @param {String} quest The either string or quest object of the quest to be determined completeable or not.
51
- * @return {Boolean} If the account currently tied to the tool can complete the quest.
52
- * */
53
- canCompleteQuest(quest) {
54
- // Implementation omitted for brevity
55
- return true; // Placeholder return value
56
- }
57
- // Define completableQuests method, implementation omitted for brevity
58
9
  /**
59
10
  * Set the account to be used in this quest tool
60
11
  * @param {OsrsAccount} acc1 The osrs Account to be associated with this class object.
61
- * */
12
+ */
62
13
  setOsrsAccount(acc1) {
63
14
  if (acc1) {
64
- // this.osrsAccount = new OsrsAccount(acc1); TODO
15
+ this.osrsAccount = acc1;
65
16
  return true;
66
17
  }
67
18
  return false;
68
19
  }
69
- // Define other methods, implementation omitted for brevity
70
20
  /**
71
21
  * Get the osrs account associated with this quest tool
72
22
  * @return {OsrsAccount | undefined} The osrs Account associated with this class object.
73
- * */
23
+ */
74
24
  getOsrsAccount() {
75
25
  return this.osrsAccount;
76
26
  }
27
+ /**
28
+ * Determine if the account can complete a quest, including recursively checking quest requirements.
29
+ * @param quest The quest to check (must be a Quest instance)
30
+ * @param visited (internal) Set of quest names already checked to prevent infinite recursion
31
+ */
32
+ canCompleteQuest(quest, visited = new Set()) {
33
+ if (!this.osrsAccount)
34
+ return false;
35
+ if (!quest)
36
+ return false;
37
+ if (visited.has(quest.name))
38
+ return true; // Prevent infinite loops
39
+ visited.add(quest.name);
40
+ // check requirements
41
+ if (!quest.requirements || quest.requirements.length === 0)
42
+ return true;
43
+ for (const req of quest.requirements) {
44
+ if (req.type === Requirement_1.RequirementType.Quest) {
45
+ // Recursively check quest requirements
46
+ const questReq = req;
47
+ if (!questReq ||
48
+ !this.canCompleteQuest(QuestTool.getQuestByName(questReq.questName), visited)) {
49
+ return false;
50
+ }
51
+ }
52
+ else if (req.type === Requirement_1.RequirementType.Level) {
53
+ // Check if the account meets the level requirement
54
+ const levelReq = req;
55
+ const skill = this.osrsAccount.getSkill(levelReq.skillName);
56
+ if (!skill) {
57
+ return false; // Skill not found in account
58
+ }
59
+ // If the skill is boostable, we can check if the current level + max boost is enough
60
+ if (levelReq.boostable) {
61
+ if (skill.level + QuestTool.getMaxSkillBoost(levelReq.skillName) <
62
+ levelReq.level) {
63
+ return false;
64
+ }
65
+ }
66
+ else if (skill.level < levelReq.level) {
67
+ return false;
68
+ }
69
+ }
70
+ }
71
+ return true;
72
+ }
73
+ /**
74
+ * Static utility to get a Quest instance by its name.
75
+ * This assumes all quests are exported as default from their respective files in quest/all/.
76
+ * @param questName The name of the quest to retrieve
77
+ * @returns Quest instance or undefined if not found
78
+ */
79
+ static getQuestByName(questName) {
80
+ // Normalize quest name to match file naming convention
81
+ const normalized = questName
82
+ .replace(/[^a-zA-Z0-9]/g, '') // Remove non-alphanumeric
83
+ .replace(/\s+/g, '') // Remove spaces
84
+ .replace(/^./, (c) => c.toUpperCase());
85
+ try {
86
+ // Dynamically require the quest file
87
+ // Note: This only works in Node.js, not in browser environments
88
+ // and assumes all quest files are named as <QuestName>.ts/js and exported as default
89
+ // Example: 'Dragon Slayer' => './all/DragonSlayer'
90
+ // You may want to maintain a map for production use
91
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
92
+ const questModule = require(`./all/${normalized}`);
93
+ return questModule.default || questModule;
94
+ }
95
+ catch (e) {
96
+ return undefined;
97
+ }
98
+ }
99
+ /**
100
+ * Get the maximum boost for a given skill, based on OSRS Wiki data.
101
+ * @param skillName The name of the skill (case-insensitive, e.g. 'Attack', 'Herblore')
102
+ * @returns The maximum boost amount for the skill (positive integer, or 0 if unboostable)
103
+ */
104
+ static getMaxSkillBoost(skillName) {
105
+ var _a;
106
+ // Data from https://oldschool.runescape.wiki/w/Temporary_skill_boost
107
+ const boosts = {
108
+ Attack: 5, // Super combat potion, Overload(+)
109
+ Strength: 5, // Super combat potion, Overload(+)
110
+ Defence: 5, // Super combat potion, Overload(+)
111
+ Magic: 4, // Overload(+), Imbued heart
112
+ Ranged: 4, // Ranging potion, Overload(+)
113
+ Prayer: 2, // Preserve, Prayer-boosting items
114
+ Hitpoints: 0, // No boost
115
+ Agility: 5, // Summer pie
116
+ Herblore: 5, // Botanical pie
117
+ Thieving: 5, // Volcanic ash, Summer pie
118
+ Crafting: 3, // Mushroom pie
119
+ Fletching: 3, // Fletching potion
120
+ Slayer: 2, // Wild pie
121
+ Hunter: 5, // Hunter potion
122
+ Mining: 3, // Dwarven stout(m)
123
+ Smithing: 4, // Spicy stew (orange)
124
+ Fishing: 5, // Admiral pie
125
+ Cooking: 5, // Chef's delight(m)
126
+ Firemaking: 4, // Spicy stew (red)
127
+ Woodcutting: 3, // Spicy stew (yellow)
128
+ Farming: 5, // Garden pie
129
+ Runecraft: 5, // Spicy stew (orange)
130
+ Construction: 5, // Spicy stew (orange)
131
+ // Add more as needed
132
+ };
133
+ const normalized = skillName.charAt(0).toUpperCase() + skillName.slice(1).toLowerCase();
134
+ return (_a = boosts[normalized]) !== null && _a !== void 0 ? _a : 0;
135
+ }
77
136
  }
78
137
  exports.QuestTool = QuestTool;
@@ -0,0 +1,3 @@
1
+ import { Quest } from '../Quest';
2
+ declare const AHandInTheSand: Quest;
3
+ export default AHandInTheSand;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const Quest_1 = require("../Quest");
4
+ const Requirement_1 = require("../../Requirement");
5
+ const AHandInTheSand = {
6
+ id: 0,
7
+ name: 'A Hand in the Sand',
8
+ members: true,
9
+ difficulty: 'Intermediate',
10
+ length: 'Medium',
11
+ requirements: [
12
+ new Requirement_1.LevelRequirement('Crafting', 49, false),
13
+ new Requirement_1.LevelRequirement('Thieving', 40, false),
14
+ ],
15
+ questPoints: 1,
16
+ startLocation: '',
17
+ description: '',
18
+ steps: [],
19
+ status: Quest_1.QuestStatus.NotStarted,
20
+ miniquest: false,
21
+ shortName: 'aHandInTheSand',
22
+ url: 'https://oldschool.runescape.wiki/w/A_Hand_in_the_Sand',
23
+ series: null,
24
+ age: '',
25
+ difficultyLevel: 'Intermediate',
26
+ officialDifficulty: 'Intermediate',
27
+ officialLength: 'Medium',
28
+ officialAge: '',
29
+ recommendedItems: [],
30
+ recommendedSkills: {},
31
+ recommendedPrayers: [],
32
+ rewards: {
33
+ experience: [
34
+ { skill: 'Crafting', amount: 9000 },
35
+ { skill: 'Thieving', amount: 1000 },
36
+ ],
37
+ questPoints: 1,
38
+ items: [],
39
+ areas: [],
40
+ unlocks: [],
41
+ lamps: [],
42
+ points: [],
43
+ pets: [],
44
+ },
45
+ };
46
+ exports.default = AHandInTheSand;
@@ -0,0 +1,3 @@
1
+ import { Quest } from '../Quest';
2
+ declare const AKingdomDivided: Quest;
3
+ export default AKingdomDivided;
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const Quest_1 = require("../Quest");
4
+ const Requirement_1 = require("../../Requirement");
5
+ const AKingdomDivided = {
6
+ id: 0,
7
+ name: 'A Kingdom Divided',
8
+ members: true,
9
+ difficulty: 'Master',
10
+ length: 'Long',
11
+ requirements: [
12
+ new Requirement_1.QuestRequirement('Client of Kourend'),
13
+ new Requirement_1.QuestRequirement('The Depths of Despair'),
14
+ new Requirement_1.QuestRequirement('The Queen of Thieves'),
15
+ new Requirement_1.QuestRequirement('The Ascent of Arceuus'),
16
+ new Requirement_1.QuestRequirement('The Forsaken Tower'),
17
+ new Requirement_1.LevelRequirement('Thieving', 54, false),
18
+ new Requirement_1.LevelRequirement('Agility', 52, false),
19
+ new Requirement_1.LevelRequirement('Woodcutting', 52, false),
20
+ new Requirement_1.LevelRequirement('Magic', 50, false),
21
+ new Requirement_1.LevelRequirement('Mining', 42, false),
22
+ new Requirement_1.LevelRequirement('Smithing', 42, false),
23
+ new Requirement_1.LevelRequirement('Farming', 35, false),
24
+ new Requirement_1.LevelRequirement('Crafting', 38, false),
25
+ new Requirement_1.LevelRequirement('Hunter', 42, false),
26
+ new Requirement_1.LevelRequirement('Herblore', 45, false),
27
+ ],
28
+ questPoints: 2,
29
+ startLocation: '',
30
+ description: '',
31
+ steps: [],
32
+ status: Quest_1.QuestStatus.NotStarted,
33
+ miniquest: false,
34
+ shortName: 'aKingdomDivided',
35
+ url: 'https://oldschool.runescape.wiki/w/A_Kingdom_Divided',
36
+ series: 'Great Kourend',
37
+ age: '',
38
+ difficultyLevel: 'Master',
39
+ officialDifficulty: 'Master',
40
+ officialLength: 'Long',
41
+ officialAge: '',
42
+ recommendedItems: [],
43
+ recommendedSkills: {},
44
+ recommendedPrayers: [],
45
+ rewards: {
46
+ experience: [],
47
+ questPoints: 2,
48
+ items: [],
49
+ areas: [],
50
+ unlocks: [],
51
+ lamps: [],
52
+ points: [],
53
+ pets: [],
54
+ },
55
+ };
56
+ exports.default = AKingdomDivided;
@@ -32,11 +32,16 @@ const APorcineOfInterest = {
32
32
  recommendedSkills: {},
33
33
  recommendedPrayers: [],
34
34
  rewards: {
35
- experience: { Slayer: 1000 },
35
+ experience: [
36
+ { skill: 'Slayer', amount: 1000 },
37
+ ],
36
38
  questPoints: 1,
37
39
  items: [],
38
40
  areas: [],
39
- grants: ["30 Slayer Rewards Points", "Some Reinforced Goggles"],
41
+ unlocks: [],
42
+ lamps: [],
43
+ points: [],
44
+ pets: [],
40
45
  },
41
46
  };
42
47
  exports.default = APorcineOfInterest;
@@ -26,11 +26,17 @@ const ASoulsBane = {
26
26
  recommendedSkills: {},
27
27
  recommendedPrayers: [],
28
28
  rewards: {
29
- experience: { Defence: 500, Hitpoints: 500 },
29
+ experience: [
30
+ { skill: 'Defence', amount: 500 },
31
+ { skill: 'Hitpoints', amount: 500 },
32
+ ],
30
33
  questPoints: 1,
31
34
  items: [],
32
35
  areas: [],
33
- grants: [],
36
+ unlocks: [],
37
+ lamps: [],
38
+ points: [],
39
+ pets: [],
34
40
  },
35
41
  };
36
42
  exports.default = ASoulsBane;
@@ -26,11 +26,12 @@ const ATailOfTwoCats = {
26
26
  recommendedSkills: {},
27
27
  recommendedPrayers: [],
28
28
  rewards: {
29
- experience: {},
29
+ experience: [],
30
30
  questPoints: 2,
31
- items: [],
32
- areas: [],
33
- grants: [],
31
+ unlocks: [],
32
+ lamps: [],
33
+ points: [],
34
+ pets: [],
34
35
  },
35
36
  };
36
37
  exports.default = ATailOfTwoCats;
@@ -26,11 +26,14 @@ const ATasteOfHope = {
26
26
  recommendedSkills: {},
27
27
  recommendedPrayers: [],
28
28
  rewards: {
29
- experience: {},
29
+ experience: [],
30
30
  questPoints: 1,
31
31
  items: [],
32
32
  areas: [],
33
- grants: [],
33
+ unlocks: [],
34
+ lamps: [],
35
+ points: [],
36
+ pets: [],
34
37
  },
35
38
  };
36
39
  exports.default = ATasteOfHope;
@@ -0,0 +1,3 @@
1
+ import { Quest } from '../Quest';
2
+ declare const ATheatreOfBlood: Quest;
3
+ export default ATheatreOfBlood;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const Quest_1 = require("../Quest");
4
+ const ATheatreOfBlood = {
5
+ id: 0,
6
+ name: 'A Theatre of Blood',
7
+ members: true,
8
+ difficulty: 'Master',
9
+ length: 'Long',
10
+ requirements: [],
11
+ questPoints: 1,
12
+ startLocation: '',
13
+ description: '',
14
+ steps: [],
15
+ status: Quest_1.QuestStatus.NotStarted,
16
+ miniquest: false,
17
+ shortName: 'aTheatreOfBlood',
18
+ url: 'https://oldschool.runescape.wiki/w/Theatre_of_Blood',
19
+ series: null,
20
+ age: '',
21
+ difficultyLevel: 'Master',
22
+ officialDifficulty: 'Master',
23
+ officialLength: 'Long',
24
+ officialAge: '',
25
+ recommendedItems: [],
26
+ recommendedSkills: {},
27
+ recommendedPrayers: [],
28
+ rewards: {
29
+ experience: [],
30
+ questPoints: 1,
31
+ items: [],
32
+ unlocks: [],
33
+ lamps: [],
34
+ points: [],
35
+ pets: [],
36
+ },
37
+ };
38
+ exports.default = ATheatreOfBlood;
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const Quest_1 = require("../Quest");
4
+ const Skill_1 = require("../../account/Skill");
4
5
  const AnimalMagnetism = {
5
6
  id: 0, // Assign a unique ID if available
6
- name: "Animal Magnetism",
7
+ name: 'Animal Magnetism',
7
8
  members: true,
8
9
  difficulty: 'Intermediate',
9
10
  length: 'Medium - Long',
@@ -14,7 +15,7 @@ const AnimalMagnetism = {
14
15
  steps: [],
15
16
  status: Quest_1.QuestStatus.NotStarted,
16
17
  miniquest: false,
17
- shortName: "animalMagnetism",
18
+ shortName: 'animalMagnetism',
18
19
  url: 'https://oldschool.runescape.wiki/w/Animal_Magnetism',
19
20
  series: null,
20
21
  age: '',
@@ -26,11 +27,19 @@ const AnimalMagnetism = {
26
27
  recommendedSkills: {},
27
28
  recommendedPrayers: [],
28
29
  rewards: {
29
- experience: { Crafting: 1000, Fletching: 1000, Slayer: 1000, Woodcutting: 2500 },
30
+ experience: [
31
+ { skill: Skill_1.Skill.Crafting, amount: 1000 },
32
+ { skill: Skill_1.Skill.Fletching, amount: 1000 },
33
+ { skill: Skill_1.Skill.Slayer, amount: 1000 },
34
+ { skill: Skill_1.Skill.Woodcutting, amount: 2500 },
35
+ ],
30
36
  questPoints: 1,
31
37
  items: [],
32
38
  areas: [],
33
- grants: [],
39
+ unlocks: [],
40
+ lamps: [],
41
+ points: [],
42
+ pets: [],
34
43
  },
35
44
  };
36
45
  exports.default = AnimalMagnetism;
@@ -26,11 +26,17 @@ const AnotherSliceOfHAM = {
26
26
  recommendedSkills: {},
27
27
  recommendedPrayers: [],
28
28
  rewards: {
29
- experience: { Mining: 3000, Prayer: 3000 },
29
+ experience: [
30
+ { skill: 'Mining', amount: 3000 },
31
+ { skill: 'Prayer', amount: 3000 },
32
+ ],
30
33
  questPoints: 1,
31
34
  items: [],
32
35
  areas: [],
33
- grants: [],
36
+ unlocks: [],
37
+ lamps: [],
38
+ points: [],
39
+ pets: [],
34
40
  },
35
41
  };
36
42
  exports.default = AnotherSliceOfHAM;
@@ -29,16 +29,19 @@ const BelowIceMountain = {
29
29
  recommendedSkills: {},
30
30
  recommendedPrayers: [],
31
31
  rewards: {
32
- experience: {},
32
+ experience: [],
33
33
  questPoints: 1,
34
34
  items: [],
35
35
  areas: [],
36
- grants: [
37
- "2,000 coins",
38
- "Access to the Ruins of Camdozaal",
39
- "Flex emote",
40
- "The ability to make steak sandwich"
36
+ unlocks: [
37
+ { description: "2,000 coins" },
38
+ { description: "Access to the Ruins of Camdozaal" },
39
+ { description: "Flex emote" },
40
+ { description: "The ability to make steak sandwich" }
41
41
  ],
42
+ lamps: [],
43
+ points: [],
44
+ pets: [],
42
45
  },
43
46
  };
44
47
  exports.default = BelowIceMountain;
@@ -26,11 +26,18 @@ const BetweenARock = {
26
26
  recommendedSkills: {},
27
27
  recommendedPrayers: [],
28
28
  rewards: {
29
- experience: { Defence: 5000, Mining: 5000, Smithing: 5000 },
29
+ experience: [
30
+ { skill: 'Defence', amount: 5000 },
31
+ { skill: 'Mining', amount: 5000 },
32
+ { skill: 'Smithing', amount: 5000 },
33
+ ],
30
34
  questPoints: 2,
31
35
  items: [],
32
36
  areas: [],
33
- grants: [],
37
+ unlocks: [],
38
+ lamps: [],
39
+ points: [],
40
+ pets: [],
34
41
  },
35
42
  };
36
43
  exports.default = BetweenARock;
@@ -26,11 +26,18 @@ const BigChompyBirdHunting = {
26
26
  recommendedSkills: {},
27
27
  recommendedPrayers: [],
28
28
  rewards: {
29
- experience: { Cooking: 1470, Fletching: 262, Ranged: 735 },
29
+ experience: [
30
+ { skill: 'Cooking', amount: 1470 },
31
+ { skill: 'Fletching', amount: 262 },
32
+ { skill: 'Ranged', amount: 735 },
33
+ ],
30
34
  questPoints: 2,
31
35
  items: [],
32
36
  areas: [],
33
- grants: [],
37
+ unlocks: [],
38
+ lamps: [],
39
+ points: [],
40
+ pets: [],
34
41
  },
35
42
  };
36
43
  exports.default = BigChompyBirdHunting;
@@ -26,11 +26,16 @@ const Biohazard = {
26
26
  recommendedSkills: {},
27
27
  recommendedPrayers: [],
28
28
  rewards: {
29
- experience: { Thieving: 1250 },
29
+ experience: [
30
+ { skill: 'Thieving', amount: 1250 },
31
+ ],
30
32
  questPoints: 3,
31
33
  items: [],
32
34
  areas: [],
33
- grants: [],
35
+ unlocks: [],
36
+ lamps: [],
37
+ points: [],
38
+ pets: [],
34
39
  },
35
40
  };
36
41
  exports.default = Biohazard;
@@ -26,11 +26,14 @@ const BlackKnightsFortress = {
26
26
  recommendedSkills: {},
27
27
  recommendedPrayers: [],
28
28
  rewards: {
29
- experience: {},
29
+ experience: [],
30
30
  questPoints: 3,
31
31
  items: [],
32
32
  areas: [],
33
- grants: [],
33
+ unlocks: [],
34
+ lamps: [],
35
+ points: [],
36
+ pets: [],
34
37
  },
35
38
  };
36
39
  exports.default = BlackKnightsFortress;
@@ -26,11 +26,14 @@ const BoneVoyage = {
26
26
  recommendedSkills: {},
27
27
  recommendedPrayers: [],
28
28
  rewards: {
29
- experience: {},
29
+ experience: [],
30
30
  questPoints: 1,
31
31
  items: [],
32
32
  areas: [],
33
- grants: [],
33
+ unlocks: [],
34
+ lamps: [],
35
+ points: [],
36
+ pets: [],
34
37
  },
35
38
  };
36
39
  exports.default = BoneVoyage;
@@ -26,11 +26,18 @@ const CabinFever = {
26
26
  recommendedSkills: {},
27
27
  recommendedPrayers: [],
28
28
  rewards: {
29
- experience: { Agility: 7000, Crafting: 7000, Smithing: 7000 },
29
+ experience: [
30
+ { skill: 'Agility', amount: 7000 },
31
+ { skill: 'Crafting', amount: 7000 },
32
+ { skill: 'Smithing', amount: 7000 },
33
+ ],
30
34
  questPoints: 2,
31
35
  items: [],
32
36
  areas: [],
33
- grants: [],
37
+ unlocks: [],
38
+ lamps: [],
39
+ points: [],
40
+ pets: [],
34
41
  },
35
42
  };
36
43
  exports.default = CabinFever;
@@ -26,11 +26,14 @@ const ClientOfKourend = {
26
26
  recommendedSkills: {},
27
27
  recommendedPrayers: [],
28
28
  rewards: {
29
- experience: {},
29
+ experience: [],
30
30
  questPoints: 1,
31
31
  items: [],
32
32
  areas: [],
33
- grants: [],
33
+ unlocks: [],
34
+ lamps: [],
35
+ points: [],
36
+ pets: [],
34
37
  },
35
38
  };
36
39
  exports.default = ClientOfKourend;
@@ -26,11 +26,14 @@ const ClockTower = {
26
26
  recommendedSkills: {},
27
27
  recommendedPrayers: [],
28
28
  rewards: {
29
- experience: {},
29
+ experience: [],
30
30
  questPoints: 1,
31
31
  items: [],
32
32
  areas: [],
33
- grants: [],
33
+ unlocks: [],
34
+ lamps: [],
35
+ points: [],
36
+ pets: [],
34
37
  },
35
38
  };
36
39
  exports.default = ClockTower;