osrs-tools 2.8.1 → 2.9.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.
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/runescape/model/collection-log/CollectionLog.d.ts +8 -0
- package/dist/runescape/model/collection-log/CollectionLog.d.ts.map +1 -0
- package/dist/runescape/model/collection-log/CollectionLog.js +124 -0
- package/dist/runescape/model/collection-log/CollectionLog.model.d.ts +48 -0
- package/dist/runescape/model/collection-log/CollectionLog.model.d.ts.map +1 -0
- package/dist/runescape/model/collection-log/CollectionLog.model.js +13 -0
- package/dist/runescape/model/collection-log/index.d.ts +4 -0
- package/dist/runescape/model/collection-log/index.d.ts.map +1 -0
- package/dist/runescape/model/collection-log/index.js +2 -0
- package/dist/runescape/model/combat-achievements/CombatAchievement.model.d.ts +37 -0
- package/dist/runescape/model/combat-achievements/CombatAchievement.model.d.ts.map +1 -0
- package/dist/runescape/model/combat-achievements/CombatAchievement.model.js +17 -0
- package/dist/runescape/model/combat-achievements/CombatAchievements.d.ts +8 -0
- package/dist/runescape/model/combat-achievements/CombatAchievements.d.ts.map +1 -0
- package/dist/runescape/model/combat-achievements/CombatAchievements.js +80 -0
- package/dist/runescape/model/combat-achievements/index.d.ts +4 -0
- package/dist/runescape/model/combat-achievements/index.d.ts.map +1 -0
- package/dist/runescape/model/combat-achievements/index.js +2 -0
- package/dist/runescape/model/guilds/HunterGuild.d.ts +18 -0
- package/dist/runescape/model/guilds/HunterGuild.d.ts.map +1 -0
- package/dist/runescape/model/guilds/HunterGuild.js +65 -0
- package/dist/runescape/model/guilds/HunterGuildMaster.d.ts +29 -0
- package/dist/runescape/model/guilds/HunterGuildMaster.d.ts.map +1 -0
- package/dist/runescape/model/guilds/HunterGuildMaster.js +39 -0
- package/dist/runescape/model/guilds/HunterGuildProgress.d.ts +12 -0
- package/dist/runescape/model/guilds/HunterGuildProgress.d.ts.map +1 -0
- package/dist/runescape/model/guilds/HunterGuildProgress.js +27 -0
- package/dist/runescape/model/guilds/HunterRumour.d.ts +23 -0
- package/dist/runescape/model/guilds/HunterRumour.d.ts.map +1 -0
- package/dist/runescape/model/guilds/HunterRumour.js +43 -0
- package/dist/runescape/model/guilds/RumourLocation.d.ts +10 -0
- package/dist/runescape/model/guilds/RumourLocation.d.ts.map +1 -0
- package/dist/runescape/model/guilds/RumourLocation.js +12 -0
- package/dist/runescape/model/guilds/Rumours.d.ts +3 -0
- package/dist/runescape/model/guilds/Rumours.d.ts.map +1 -0
- package/dist/runescape/model/guilds/Rumours.js +303 -0
- package/dist/runescape/model/guilds/hunter/HunterGuild.d.ts +33 -0
- package/dist/runescape/model/guilds/hunter/HunterGuild.d.ts.map +1 -0
- package/dist/runescape/model/guilds/hunter/HunterGuild.js +107 -0
- package/dist/runescape/model/guilds/hunter/HunterGuildMaster.d.ts +52 -0
- package/dist/runescape/model/guilds/hunter/HunterGuildMaster.d.ts.map +1 -0
- package/dist/runescape/model/guilds/hunter/HunterGuildMaster.js +71 -0
- package/dist/runescape/model/guilds/hunter/HunterGuildMasterName.d.ts +21 -0
- package/dist/runescape/model/guilds/hunter/HunterGuildMasterName.d.ts.map +1 -0
- package/dist/runescape/model/guilds/hunter/HunterGuildMasterName.js +8 -0
- package/dist/runescape/model/guilds/hunter/HunterRumour.d.ts +33 -0
- package/dist/runescape/model/guilds/hunter/HunterRumour.d.ts.map +1 -0
- package/dist/runescape/model/guilds/hunter/HunterRumour.js +52 -0
- package/dist/runescape/model/guilds/hunter/RumourLocation.d.ts +48 -0
- package/dist/runescape/model/guilds/hunter/RumourLocation.d.ts.map +1 -0
- package/dist/runescape/model/guilds/hunter/RumourLocation.js +42 -0
- package/dist/runescape/model/guilds/hunter/Rumours.d.ts +11 -0
- package/dist/runescape/model/guilds/hunter/Rumours.d.ts.map +1 -0
- package/dist/runescape/model/guilds/hunter/Rumours.js +325 -0
- package/dist/runescape/model/guilds/hunter/index.d.ts +5 -0
- package/dist/runescape/model/guilds/hunter/index.d.ts.map +1 -0
- package/dist/runescape/model/guilds/hunter/index.js +4 -0
- package/dist/runescape/model/guilds/hunter/types.d.ts +32 -0
- package/dist/runescape/model/guilds/hunter/types.d.ts.map +1 -0
- package/dist/runescape/model/guilds/hunter/types.js +10 -0
- package/dist/runescape/model/guilds/index.d.ts +2 -0
- package/dist/runescape/model/guilds/index.d.ts.map +1 -0
- package/dist/runescape/model/guilds/index.js +1 -0
- package/dist/runescape/model/guilds/types.d.ts +44 -0
- package/dist/runescape/model/guilds/types.d.ts.map +1 -0
- package/dist/runescape/model/guilds/types.js +21 -0
- package/dist/runescape/model/hunter/HunterRumour.d.ts +155 -0
- package/dist/runescape/model/hunter/HunterRumour.d.ts.map +1 -0
- package/dist/runescape/model/hunter/HunterRumour.js +183 -0
- package/dist/runescape/model/hunter/HunterRumours.d.ts +70 -0
- package/dist/runescape/model/hunter/HunterRumours.d.ts.map +1 -0
- package/dist/runescape/model/hunter/HunterRumours.js +346 -0
- package/dist/runescape/model/hunter/index.d.ts +9 -0
- package/dist/runescape/model/hunter/index.d.ts.map +1 -0
- package/dist/runescape/model/hunter/index.js +9 -0
- package/dist/runescape/model/leagues/DemonicPact.d.ts +23 -0
- package/dist/runescape/model/leagues/DemonicPact.d.ts.map +1 -0
- package/dist/runescape/model/leagues/DemonicPact.js +210 -0
- package/dist/runescape/model/leagues/DemonicPact.model.d.ts +103 -0
- package/dist/runescape/model/leagues/DemonicPact.model.d.ts.map +1 -0
- package/dist/runescape/model/leagues/DemonicPact.model.js +17 -0
- package/dist/runescape/model/leagues/DemonicPactClasses.d.ts +539 -0
- package/dist/runescape/model/leagues/DemonicPactClasses.d.ts.map +1 -0
- package/dist/runescape/model/leagues/DemonicPactClasses.js +1085 -0
- package/dist/runescape/model/leagues/DemonicPactPlanningData.d.ts +4 -0
- package/dist/runescape/model/leagues/DemonicPactPlanningData.d.ts.map +1 -0
- package/dist/runescape/model/leagues/DemonicPactPlanningData.js +174 -0
- package/dist/runescape/model/leagues/DemonicPacts.d.ts +4 -0
- package/dist/runescape/model/leagues/DemonicPacts.d.ts.map +1 -0
- package/dist/runescape/model/leagues/DemonicPacts.js +66 -0
- package/dist/runescape/model/leagues/DemonicPactsLeague/DemonicPactsLeagueAreas.d.ts +23 -0
- package/dist/runescape/model/leagues/DemonicPactsLeague/DemonicPactsLeagueAreas.d.ts.map +1 -0
- package/dist/runescape/model/leagues/DemonicPactsLeague/DemonicPactsLeagueAreas.js +442 -0
- package/dist/runescape/model/leagues/LeaguesRegion.model.d.ts +33 -0
- package/dist/runescape/model/leagues/LeaguesRegion.model.d.ts.map +1 -0
- package/dist/runescape/model/leagues/LeaguesRegion.model.js +14 -0
- package/dist/runescape/model/leagues/LeaguesRegions.d.ts +10 -0
- package/dist/runescape/model/leagues/LeaguesRegions.d.ts.map +1 -0
- package/dist/runescape/model/leagues/LeaguesRegions.js +69 -0
- package/dist/runescape/model/leagues/LeaguesRelic.model.d.ts +31 -0
- package/dist/runescape/model/leagues/LeaguesRelic.model.d.ts.map +1 -0
- package/dist/runescape/model/leagues/LeaguesRelic.model.js +11 -0
- package/dist/runescape/model/leagues/LeaguesRelics.d.ts +8 -0
- package/dist/runescape/model/leagues/LeaguesRelics.d.ts.map +1 -0
- package/dist/runescape/model/leagues/LeaguesRelics.js +237 -0
- package/dist/runescape/model/leagues/RagingEchoesLeague/RagingEchoesLeague.d.ts +749 -0
- package/dist/runescape/model/leagues/RagingEchoesLeague/RagingEchoesLeague.d.ts.map +1 -0
- package/dist/runescape/model/leagues/RagingEchoesLeague/RagingEchoesLeague.js +856 -0
- package/dist/runescape/model/leagues/general/Leagues.d.ts +70 -0
- package/dist/runescape/model/leagues/general/Leagues.d.ts.map +1 -0
- package/dist/runescape/model/leagues/general/Leagues.js +141 -0
- package/dist/runescape/model/leagues/index.d.ts +4 -0
- package/dist/runescape/model/leagues/index.d.ts.map +1 -0
- package/dist/runescape/model/leagues/index.js +3 -0
- package/dist/runescape/model/leagues/model.d.ts +32 -0
- package/dist/runescape/model/leagues/model.d.ts.map +1 -0
- package/dist/runescape/model/leagues/model.js +19 -0
- package/dist/runescape/model/skills/Skill.d.ts +22 -0
- package/dist/runescape/model/skills/Skill.d.ts.map +1 -0
- package/dist/runescape/model/skills/Skill.js +1 -0
- package/dist/runescape/model/skills/attack/Attack.d.ts +15 -0
- package/dist/runescape/model/skills/attack/Attack.d.ts.map +1 -0
- package/dist/runescape/model/skills/attack/Attack.js +19 -0
- package/dist/runescape/model/skills/attack/AttackLevelUnlocks.d.ts +6 -0
- package/dist/runescape/model/skills/attack/AttackLevelUnlocks.d.ts.map +1 -0
- package/dist/runescape/model/skills/attack/AttackLevelUnlocks.js +47 -0
- package/dist/runescape/model/skills/attack/index.d.ts +3 -0
- package/dist/runescape/model/skills/attack/index.d.ts.map +1 -0
- package/dist/runescape/model/skills/attack/index.js +2 -0
- package/dist/runescape/model/skills/hunter/Hunter.d.ts +5 -0
- package/dist/runescape/model/skills/hunter/Hunter.d.ts.map +1 -0
- package/dist/runescape/model/skills/hunter/Hunter.js +6 -0
- package/dist/runescape/model/skills/hunter/HunterNpcs.d.ts +1 -0
- package/dist/runescape/model/skills/hunter/HunterNpcs.d.ts.map +1 -0
- package/dist/runescape/model/skills/hunter/HunterNpcs.js +1 -0
- package/dist/runescape/model/skills/hunter/index.d.ts +2 -0
- package/dist/runescape/model/skills/hunter/index.d.ts.map +1 -0
- package/dist/runescape/model/skills/hunter/index.js +1 -0
- package/dist/runescape/model/skills/index.d.ts +3 -0
- package/dist/runescape/model/skills/index.d.ts.map +1 -0
- package/dist/runescape/model/skills/index.js +2 -0
- package/dist/runescape/resources/QuestData.json +5454 -0
- package/dist/runescape/resources/diary/diaries.json +1484 -0
- package/dist/runescape/resources/diary/diariesArray.json +0 -0
- package/dist/runescape/resources/leagues/demonicPacts.leagues7.json +2449 -0
- package/dist/runescape/resources/quest/exp.json +1333 -0
- package/dist/runescape/resources/quest/questData.json +5790 -0
- package/dist/runescape/resources/quest/questDataArray.json +5489 -0
- package/dist/runescape/resources/quest/subquestArray.json +58 -0
- package/dist/runescape/resources/quest/testObj.json +5682 -0
- package/dist/runescape/resources/quest/testarray.json +5589 -0
- package/dist/runescape/resources/quests/CooksAssistant.json +34 -0
- package/dist/runescape/resources/slayer/slayer.json +3581 -0
- package/dist/runescape/resources/slayer/slayerData.json +4431 -0
- package/dist/runescape/resources/slayer/tasks/json/Chaeldar.json +348 -0
- package/dist/runescape/resources/slayer/tasks/json/Duradel.json +541 -0
- package/dist/runescape/resources/slayer/tasks/json/Krystilia.json +2 -0
- package/dist/runescape/resources/slayer/tasks/json/Mazchna.json +379 -0
- package/dist/runescape/resources/slayer/tasks/json/Neive.json +320 -0
- package/dist/runescape/resources/slayer/tasks/json/Spria.json +345 -0
- package/dist/runescape/resources/slayer/tasks/json/Tureal.json +341 -0
- package/dist/runescape/resources/slayer/tasks/json/Vannaka.json +547 -0
- package/package.json +1 -1
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export type HunterRumourTier = 'Novice' | 'Adept' | 'Expert' | 'Master';
|
|
2
|
+
export declare const HunterRumourMethods: {
|
|
3
|
+
readonly BIRD_SNARE: "Bird snare";
|
|
4
|
+
readonly DEADFALL: "Deadfall";
|
|
5
|
+
readonly BUTTERFLY_NET: "Butterfly net";
|
|
6
|
+
readonly NET_TRAP: "Net trap";
|
|
7
|
+
readonly SPIKED_PIT: "Spiked pit";
|
|
8
|
+
readonly BOX_TRAP: "Box trap";
|
|
9
|
+
readonly FALCONRY: "Falconry";
|
|
10
|
+
readonly TRACKING: "Tracking";
|
|
11
|
+
};
|
|
12
|
+
export type HunterRumourMethod = typeof HunterRumourMethods[keyof typeof HunterRumourMethods];
|
|
13
|
+
import type { RumourLocation } from './RumourLocation';
|
|
14
|
+
export interface HunterRumourDefinition {
|
|
15
|
+
id: string;
|
|
16
|
+
creature: string;
|
|
17
|
+
method: HunterRumourMethod;
|
|
18
|
+
locations: RumourLocation[];
|
|
19
|
+
requiredHunterLevel: number;
|
|
20
|
+
tier: HunterRumourTier;
|
|
21
|
+
masterNames: string[];
|
|
22
|
+
questRequirements?: string[];
|
|
23
|
+
notes?: string;
|
|
24
|
+
leagueRegions?: string[];
|
|
25
|
+
}
|
|
26
|
+
export interface HunterRumourAssignment {
|
|
27
|
+
id: string;
|
|
28
|
+
masterName: string;
|
|
29
|
+
rumourId: string;
|
|
30
|
+
assignedAt: Date;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../source/runescape/model/guilds/hunter/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAExE,eAAO,MAAM,mBAAmB;;;;;;;;;CAStB,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,OAAO,mBAAmB,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAC;AAE9F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGvD,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,IAAI,EAAE,gBAAgB,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,IAAI,CAAC;CAClB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../source/runescape/model/guilds/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './hunter';
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export type HunterRumourTier = 'Novice' | 'Adept' | 'Expert' | 'Master';
|
|
2
|
+
export declare const HunterRumourMethods: {
|
|
3
|
+
readonly BIRD_SNARE: "Bird snare";
|
|
4
|
+
readonly DEADFALL: "Deadfall";
|
|
5
|
+
readonly BUTTERFLY_NET: "Butterfly net";
|
|
6
|
+
readonly NET_TRAP: "Net trap";
|
|
7
|
+
readonly SPIKED_PIT: "Spiked pit";
|
|
8
|
+
readonly BOX_TRAP: "Box trap";
|
|
9
|
+
readonly FALCONRY: "Falconry";
|
|
10
|
+
readonly TRACKING: "Tracking";
|
|
11
|
+
};
|
|
12
|
+
export type HunterRumourMethod = typeof HunterRumourMethods[keyof typeof HunterRumourMethods];
|
|
13
|
+
import type { RumourLocation } from './RumourLocation';
|
|
14
|
+
export declare const HunterLeagueRegions: {
|
|
15
|
+
readonly KANDARIN: "Kandarin";
|
|
16
|
+
readonly VARLAMORE: "Varlamore";
|
|
17
|
+
readonly FREMENNIK: "Fremennik";
|
|
18
|
+
readonly KOUREND: "Kourend";
|
|
19
|
+
readonly MORYTANIA: "Morytania";
|
|
20
|
+
readonly KARAMJA: "Karamja";
|
|
21
|
+
readonly DESERT: "Desert";
|
|
22
|
+
readonly MISHTHALIN: "Misthalin";
|
|
23
|
+
readonly TIRANNWN: "Tirannwn";
|
|
24
|
+
};
|
|
25
|
+
export type HunterLeagueRegion = typeof HunterLeagueRegions[keyof typeof HunterLeagueRegions];
|
|
26
|
+
export interface HunterRumourDefinition {
|
|
27
|
+
id: string;
|
|
28
|
+
creature: string;
|
|
29
|
+
method: HunterRumourMethod;
|
|
30
|
+
locations: RumourLocation[];
|
|
31
|
+
requiredHunterLevel: number;
|
|
32
|
+
tier: HunterRumourTier;
|
|
33
|
+
masterNames: string[];
|
|
34
|
+
questRequirements?: string[];
|
|
35
|
+
notes?: string;
|
|
36
|
+
leagueRegions?: HunterLeagueRegion[];
|
|
37
|
+
}
|
|
38
|
+
export interface HunterRumourAssignment {
|
|
39
|
+
id: string;
|
|
40
|
+
masterName: string;
|
|
41
|
+
rumourId: string;
|
|
42
|
+
assignedAt: Date;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../source/runescape/model/guilds/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAExE,eAAO,MAAM,mBAAmB;;;;;;;;;CAStB,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,OAAO,mBAAmB,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAC;AAE9F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,eAAO,MAAM,mBAAmB;;;;;;;;;;CAUtB,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,OAAO,mBAAmB,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAC;AAE9F,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,IAAI,EAAE,gBAAgB,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,kBAAkB,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,IAAI,CAAC;CAClB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export const HunterRumourMethods = {
|
|
2
|
+
BIRD_SNARE: 'Bird snare',
|
|
3
|
+
DEADFALL: 'Deadfall',
|
|
4
|
+
BUTTERFLY_NET: 'Butterfly net',
|
|
5
|
+
NET_TRAP: 'Net trap',
|
|
6
|
+
SPIKED_PIT: 'Spiked pit',
|
|
7
|
+
BOX_TRAP: 'Box trap',
|
|
8
|
+
FALCONRY: 'Falconry',
|
|
9
|
+
TRACKING: 'Tracking',
|
|
10
|
+
};
|
|
11
|
+
export const HunterLeagueRegions = {
|
|
12
|
+
KANDARIN: 'Kandarin',
|
|
13
|
+
VARLAMORE: 'Varlamore',
|
|
14
|
+
FREMENNIK: 'Fremennik',
|
|
15
|
+
KOUREND: 'Kourend',
|
|
16
|
+
MORYTANIA: 'Morytania',
|
|
17
|
+
KARAMJA: 'Karamja',
|
|
18
|
+
DESERT: 'Desert',
|
|
19
|
+
MISHTHALIN: 'Misthalin',
|
|
20
|
+
TIRANNWN: 'Tirannwn',
|
|
21
|
+
};
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { LevelRequirement, Requirement } from "../Requirement";
|
|
2
|
+
/**
|
|
3
|
+
* Hunting methods used for Hunters' Rumours.
|
|
4
|
+
* Each method has its own drop rate for rare creature parts.
|
|
5
|
+
* Reference: https://oldschool.runescape.wiki/w/Hunters%27_Rumours
|
|
6
|
+
*/
|
|
7
|
+
export declare enum HuntingMethod {
|
|
8
|
+
BirdSnare = "Bird snare",
|
|
9
|
+
BoxTrap = "Box trap",
|
|
10
|
+
ButterflyNet = "Butterfly net",
|
|
11
|
+
Deadfall = "Deadfall",
|
|
12
|
+
Falconry = "Falconry",
|
|
13
|
+
NetTrap = "Net trap",
|
|
14
|
+
SpikedPit = "Spiked pit",
|
|
15
|
+
TrackingKebbit = "Tracking (kebbit)",
|
|
16
|
+
TrackingHerbiboar = "Tracking (herbiboar)"
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Tier of a Hunter's Rumour.
|
|
20
|
+
* Each tier has its own Hunter level requirement and reward quality.
|
|
21
|
+
*/
|
|
22
|
+
export declare enum RumourTier {
|
|
23
|
+
Novice = "Novice",
|
|
24
|
+
Adept = "Adept",
|
|
25
|
+
Expert = "Expert",
|
|
26
|
+
Master = "Master"
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Hunters' loot sack variants by rumour tier.
|
|
30
|
+
*/
|
|
31
|
+
export declare enum HunterLootSackType {
|
|
32
|
+
Basic = "Hunters' loot sack (basic)",
|
|
33
|
+
Adept = "Hunters' loot sack (adept)",
|
|
34
|
+
Expert = "Hunters' loot sack (expert)",
|
|
35
|
+
Master = "Hunters' loot sack (master)"
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Guild hunters who assign Hunters' Rumours.
|
|
39
|
+
* Each hunter has a distinct list of rumours they can assign.
|
|
40
|
+
*/
|
|
41
|
+
export declare enum GuildHunterName {
|
|
42
|
+
Gilman = "Huntmaster Gilman",
|
|
43
|
+
Cervus = "Guild Hunter Cervus",
|
|
44
|
+
Ornus = "Guild Hunter Ornus",
|
|
45
|
+
Aco = "Guild Hunter Aco",
|
|
46
|
+
Teco = "Guild Hunter Teco",
|
|
47
|
+
Wolf = "Guild Hunter Wolf"
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Drop rate data for rare creature parts by hunting method.
|
|
51
|
+
*/
|
|
52
|
+
export interface DropRateInfo {
|
|
53
|
+
/** Base drop rate denominator (e.g. 20 means 1/20) */
|
|
54
|
+
baseRate: number;
|
|
55
|
+
/** Pity threshold without guild hunter outfit */
|
|
56
|
+
pityThreshold: number;
|
|
57
|
+
/** Pity threshold with guild hunter outfit */
|
|
58
|
+
pityThresholdWithOutfit: number;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* A hunter creature that can be hunted for Hunters' Rumours.
|
|
62
|
+
*/
|
|
63
|
+
export interface HunterRumour {
|
|
64
|
+
/** The creature's name */
|
|
65
|
+
creature: string;
|
|
66
|
+
/** Hunter level requirement to hunt this creature (unboostable) */
|
|
67
|
+
hunterRequirement: LevelRequirement;
|
|
68
|
+
/** Hunting method used to catch this creature */
|
|
69
|
+
method: HuntingMethod;
|
|
70
|
+
/** Locations where this creature can be found */
|
|
71
|
+
locations: string[];
|
|
72
|
+
/** Additional requirements beyond Hunter level (quests, other skills, diaries) */
|
|
73
|
+
requirements: Requirement[];
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* A guild hunter who assigns Hunters' Rumours.
|
|
77
|
+
*/
|
|
78
|
+
export interface GuildHunter {
|
|
79
|
+
/** The guild hunter's full name */
|
|
80
|
+
name: GuildHunterName;
|
|
81
|
+
/** The tier of rumours this hunter assigns */
|
|
82
|
+
tier: RumourTier;
|
|
83
|
+
/** Hunter level required to receive rumours from this hunter (unboostable) */
|
|
84
|
+
levelRequired: LevelRequirement;
|
|
85
|
+
/** Quest required to access this hunter's rumours */
|
|
86
|
+
questRequired?: string;
|
|
87
|
+
/** Rumours this guild hunter can assign */
|
|
88
|
+
rumours: HunterRumour[];
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Loot sack metadata by tier.
|
|
92
|
+
*/
|
|
93
|
+
export interface HunterLootSackInfo {
|
|
94
|
+
sackType: HunterLootSackType;
|
|
95
|
+
estimatedGpValue: number;
|
|
96
|
+
minimumHunterLevel: number;
|
|
97
|
+
minimumHunterXp: number;
|
|
98
|
+
maximumHunterXp: number;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Milestone unlocks from total rumours completed.
|
|
102
|
+
*/
|
|
103
|
+
export interface RumourMilestoneUnlock {
|
|
104
|
+
rumoursCompleted: number;
|
|
105
|
+
unlock: string;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Result returned when opening a hunters' loot sack.
|
|
109
|
+
*/
|
|
110
|
+
export interface OpenLootSackResult {
|
|
111
|
+
sackType: HunterLootSackType;
|
|
112
|
+
tier: RumourTier;
|
|
113
|
+
estimatedGpValue: number;
|
|
114
|
+
hunterExperience: number;
|
|
115
|
+
milestonesUnlocked: RumourMilestoneUnlock[];
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Drop rates for rare creature parts by hunting method.
|
|
119
|
+
* Reference: https://oldschool.runescape.wiki/w/Hunters%27_Rumours#Drop_rates
|
|
120
|
+
*/
|
|
121
|
+
export declare const DROP_RATES: Record<HuntingMethod, DropRateInfo>;
|
|
122
|
+
/**
|
|
123
|
+
* Experience modifier per rumour tier, used in the reward formula:
|
|
124
|
+
* Experience = (HunterLevel + 5) * Modifier
|
|
125
|
+
*/
|
|
126
|
+
export declare const TIER_XP_MODIFIER: Record<RumourTier, number>;
|
|
127
|
+
/**
|
|
128
|
+
* Loot sack metadata from the wiki's rewards table.
|
|
129
|
+
*/
|
|
130
|
+
export declare const HUNTER_LOOT_SACK_INFO: Record<RumourTier, HunterLootSackInfo>;
|
|
131
|
+
/**
|
|
132
|
+
* Rumour completion milestone unlocks.
|
|
133
|
+
*/
|
|
134
|
+
export declare const RUMOUR_MILESTONE_UNLOCKS: readonly RumourMilestoneUnlock[];
|
|
135
|
+
/**
|
|
136
|
+
* Calculate the Hunter experience rewarded for completing a rumour.
|
|
137
|
+
* @param hunterLevel - The player's current Hunter level
|
|
138
|
+
* @param tier - The tier of the completed rumour
|
|
139
|
+
* @returns The experience awarded
|
|
140
|
+
*/
|
|
141
|
+
export declare function calculateRumourExperience(hunterLevel: number, tier: RumourTier): number;
|
|
142
|
+
/**
|
|
143
|
+
* Create an unboostable Hunter level requirement helper.
|
|
144
|
+
*/
|
|
145
|
+
export declare function createHunterLevelRequirement(level: number): LevelRequirement;
|
|
146
|
+
/**
|
|
147
|
+
* Get milestones unlocked at a total rumour completion count.
|
|
148
|
+
*/
|
|
149
|
+
export declare function getMilestoneUnlocks(rumoursCompleted: number): RumourMilestoneUnlock[];
|
|
150
|
+
/**
|
|
151
|
+
* Open a hunters' loot sack for a completed rumour.
|
|
152
|
+
* Returns deterministic reward metadata and XP calculation from official formula.
|
|
153
|
+
*/
|
|
154
|
+
export declare function openHuntersLootSack(tier: RumourTier, hunterLevel: number, rumoursCompleted?: number): OpenLootSackResult;
|
|
155
|
+
//# sourceMappingURL=HunterRumour.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HunterRumour.d.ts","sourceRoot":"","sources":["../../../../source/runescape/model/hunter/HunterRumour.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG/D;;;;GAIG;AACH,oBAAY,aAAa;IACvB,SAAS,eAAe;IACxB,OAAO,aAAa;IACpB,YAAY,kBAAkB;IAC9B,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,OAAO,aAAa;IACpB,SAAS,eAAe;IACxB,cAAc,sBAAsB;IACpC,iBAAiB,yBAAyB;CAC3C;AAED;;;GAGG;AACH,oBAAY,UAAU;IACpB,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAED;;GAEG;AACH,oBAAY,kBAAkB;IAC5B,KAAK,+BAA+B;IACpC,KAAK,+BAA+B;IACpC,MAAM,gCAAgC;IACtC,MAAM,gCAAgC;CACvC;AAED;;;GAGG;AACH,oBAAY,eAAe;IACzB,MAAM,sBAAsB;IAC5B,MAAM,wBAAwB;IAC9B,KAAK,uBAAuB;IAC5B,GAAG,qBAAqB;IACxB,IAAI,sBAAsB;IAC1B,IAAI,sBAAsB;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,sDAAsD;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,aAAa,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,uBAAuB,EAAE,MAAM,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,iBAAiB,EAAE,gBAAgB,CAAC;IACpC,iDAAiD;IACjD,MAAM,EAAE,aAAa,CAAC;IACtB,iDAAiD;IACjD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,kFAAkF;IAClF,YAAY,EAAE,WAAW,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,mCAAmC;IACnC,IAAI,EAAE,eAAe,CAAC;IACtB,8CAA8C;IAC9C,IAAI,EAAE,UAAU,CAAC;IACjB,8EAA8E;IAC9E,aAAa,EAAE,gBAAgB,CAAC;IAChC,qDAAqD;IACrD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2CAA2C;IAC3C,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,qBAAqB,EAAE,CAAC;CAC7C;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,aAAa,EAAE,YAAY,CAU1D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAKvD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,UAAU,EAAE,kBAAkB,CA6BxE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,SAAS,qBAAqB,EAiCpE,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAEvF;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAE5E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,gBAAgB,EAAE,MAAM,GAAG,qBAAqB,EAAE,CAErF;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,UAAU,EAChB,WAAW,EAAE,MAAM,EACnB,gBAAgB,GAAE,MAAU,GAC3B,kBAAkB,CASpB"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { LevelRequirement } from "../Requirement";
|
|
2
|
+
import { Skill } from "../account/Skill";
|
|
3
|
+
/**
|
|
4
|
+
* Hunting methods used for Hunters' Rumours.
|
|
5
|
+
* Each method has its own drop rate for rare creature parts.
|
|
6
|
+
* Reference: https://oldschool.runescape.wiki/w/Hunters%27_Rumours
|
|
7
|
+
*/
|
|
8
|
+
export var HuntingMethod;
|
|
9
|
+
(function (HuntingMethod) {
|
|
10
|
+
HuntingMethod["BirdSnare"] = "Bird snare";
|
|
11
|
+
HuntingMethod["BoxTrap"] = "Box trap";
|
|
12
|
+
HuntingMethod["ButterflyNet"] = "Butterfly net";
|
|
13
|
+
HuntingMethod["Deadfall"] = "Deadfall";
|
|
14
|
+
HuntingMethod["Falconry"] = "Falconry";
|
|
15
|
+
HuntingMethod["NetTrap"] = "Net trap";
|
|
16
|
+
HuntingMethod["SpikedPit"] = "Spiked pit";
|
|
17
|
+
HuntingMethod["TrackingKebbit"] = "Tracking (kebbit)";
|
|
18
|
+
HuntingMethod["TrackingHerbiboar"] = "Tracking (herbiboar)";
|
|
19
|
+
})(HuntingMethod || (HuntingMethod = {}));
|
|
20
|
+
/**
|
|
21
|
+
* Tier of a Hunter's Rumour.
|
|
22
|
+
* Each tier has its own Hunter level requirement and reward quality.
|
|
23
|
+
*/
|
|
24
|
+
export var RumourTier;
|
|
25
|
+
(function (RumourTier) {
|
|
26
|
+
RumourTier["Novice"] = "Novice";
|
|
27
|
+
RumourTier["Adept"] = "Adept";
|
|
28
|
+
RumourTier["Expert"] = "Expert";
|
|
29
|
+
RumourTier["Master"] = "Master";
|
|
30
|
+
})(RumourTier || (RumourTier = {}));
|
|
31
|
+
/**
|
|
32
|
+
* Hunters' loot sack variants by rumour tier.
|
|
33
|
+
*/
|
|
34
|
+
export var HunterLootSackType;
|
|
35
|
+
(function (HunterLootSackType) {
|
|
36
|
+
HunterLootSackType["Basic"] = "Hunters' loot sack (basic)";
|
|
37
|
+
HunterLootSackType["Adept"] = "Hunters' loot sack (adept)";
|
|
38
|
+
HunterLootSackType["Expert"] = "Hunters' loot sack (expert)";
|
|
39
|
+
HunterLootSackType["Master"] = "Hunters' loot sack (master)";
|
|
40
|
+
})(HunterLootSackType || (HunterLootSackType = {}));
|
|
41
|
+
/**
|
|
42
|
+
* Guild hunters who assign Hunters' Rumours.
|
|
43
|
+
* Each hunter has a distinct list of rumours they can assign.
|
|
44
|
+
*/
|
|
45
|
+
export var GuildHunterName;
|
|
46
|
+
(function (GuildHunterName) {
|
|
47
|
+
GuildHunterName["Gilman"] = "Huntmaster Gilman";
|
|
48
|
+
GuildHunterName["Cervus"] = "Guild Hunter Cervus";
|
|
49
|
+
GuildHunterName["Ornus"] = "Guild Hunter Ornus";
|
|
50
|
+
GuildHunterName["Aco"] = "Guild Hunter Aco";
|
|
51
|
+
GuildHunterName["Teco"] = "Guild Hunter Teco";
|
|
52
|
+
GuildHunterName["Wolf"] = "Guild Hunter Wolf";
|
|
53
|
+
})(GuildHunterName || (GuildHunterName = {}));
|
|
54
|
+
/**
|
|
55
|
+
* Drop rates for rare creature parts by hunting method.
|
|
56
|
+
* Reference: https://oldschool.runescape.wiki/w/Hunters%27_Rumours#Drop_rates
|
|
57
|
+
*/
|
|
58
|
+
export const DROP_RATES = {
|
|
59
|
+
[HuntingMethod.BirdSnare]: { baseRate: 20, pityThreshold: 40, pityThresholdWithOutfit: 38 },
|
|
60
|
+
[HuntingMethod.BoxTrap]: { baseRate: 50, pityThreshold: 100, pityThresholdWithOutfit: 94 },
|
|
61
|
+
[HuntingMethod.ButterflyNet]: { baseRate: 75, pityThreshold: 150, pityThresholdWithOutfit: 142 },
|
|
62
|
+
[HuntingMethod.Deadfall]: { baseRate: 15, pityThreshold: 30, pityThresholdWithOutfit: 28 },
|
|
63
|
+
[HuntingMethod.Falconry]: { baseRate: 10, pityThreshold: 20, pityThresholdWithOutfit: 18 },
|
|
64
|
+
[HuntingMethod.NetTrap]: { baseRate: 25, pityThreshold: 50, pityThresholdWithOutfit: 46 },
|
|
65
|
+
[HuntingMethod.SpikedPit]: { baseRate: 15, pityThreshold: 30, pityThresholdWithOutfit: 28 },
|
|
66
|
+
[HuntingMethod.TrackingKebbit]: { baseRate: 15, pityThreshold: 30, pityThresholdWithOutfit: 28 },
|
|
67
|
+
[HuntingMethod.TrackingHerbiboar]: { baseRate: 7, pityThreshold: 14, pityThresholdWithOutfit: 12 },
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* Experience modifier per rumour tier, used in the reward formula:
|
|
71
|
+
* Experience = (HunterLevel + 5) * Modifier
|
|
72
|
+
*/
|
|
73
|
+
export const TIER_XP_MODIFIER = {
|
|
74
|
+
[RumourTier.Novice]: 50,
|
|
75
|
+
[RumourTier.Adept]: 50,
|
|
76
|
+
[RumourTier.Expert]: 55,
|
|
77
|
+
[RumourTier.Master]: 60,
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Loot sack metadata from the wiki's rewards table.
|
|
81
|
+
*/
|
|
82
|
+
export const HUNTER_LOOT_SACK_INFO = {
|
|
83
|
+
[RumourTier.Novice]: {
|
|
84
|
+
sackType: HunterLootSackType.Basic,
|
|
85
|
+
estimatedGpValue: 7705.71,
|
|
86
|
+
minimumHunterLevel: 46,
|
|
87
|
+
minimumHunterXp: 2550,
|
|
88
|
+
maximumHunterXp: 5200,
|
|
89
|
+
},
|
|
90
|
+
[RumourTier.Adept]: {
|
|
91
|
+
sackType: HunterLootSackType.Adept,
|
|
92
|
+
estimatedGpValue: 21802.42,
|
|
93
|
+
minimumHunterLevel: 57,
|
|
94
|
+
minimumHunterXp: 3100,
|
|
95
|
+
maximumHunterXp: 5200,
|
|
96
|
+
},
|
|
97
|
+
[RumourTier.Expert]: {
|
|
98
|
+
sackType: HunterLootSackType.Expert,
|
|
99
|
+
estimatedGpValue: 28609.94,
|
|
100
|
+
minimumHunterLevel: 72,
|
|
101
|
+
minimumHunterXp: 4235,
|
|
102
|
+
maximumHunterXp: 5720,
|
|
103
|
+
},
|
|
104
|
+
[RumourTier.Master]: {
|
|
105
|
+
sackType: HunterLootSackType.Master,
|
|
106
|
+
estimatedGpValue: 34604.61,
|
|
107
|
+
minimumHunterLevel: 91,
|
|
108
|
+
minimumHunterXp: 5760,
|
|
109
|
+
maximumHunterXp: 6240,
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* Rumour completion milestone unlocks.
|
|
114
|
+
*/
|
|
115
|
+
export const RUMOUR_MILESTONE_UNLOCKS = [
|
|
116
|
+
{
|
|
117
|
+
rumoursCompleted: 10,
|
|
118
|
+
unlock: "A basic quetzal whistle blueprint from Soar Leader Pitri, to craft a basic quetzal whistle.",
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
rumoursCompleted: 25,
|
|
122
|
+
unlock: "The ability to cook raw graahk, raw kyatt, and raw pyre foxes.",
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
rumoursCompleted: 50,
|
|
126
|
+
unlock: "The ability to cook raw dashing kebbit, raw sunlight antelope, and raw moonlight antelope.",
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
rumoursCompleted: 50,
|
|
130
|
+
unlock: "A tattered request note from Guildmaster Apatura.",
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
rumoursCompleted: 100,
|
|
134
|
+
unlock: "A torn enhanced quetzal whistle blueprint from any hunters' loot sack, to craft an enhanced quetzal whistle.",
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
rumoursCompleted: 100,
|
|
138
|
+
unlock: "A guild history excerpt from Guildmaster Apatura.",
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
rumoursCompleted: 150,
|
|
142
|
+
unlock: "A special chest key from Guildmaster Apatura.",
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
rumoursCompleted: 250,
|
|
146
|
+
unlock: "A torn perfected quetzal whistle blueprint from any expert or master hunters' loot sack, to craft a perfected quetzal whistle.",
|
|
147
|
+
},
|
|
148
|
+
];
|
|
149
|
+
/**
|
|
150
|
+
* Calculate the Hunter experience rewarded for completing a rumour.
|
|
151
|
+
* @param hunterLevel - The player's current Hunter level
|
|
152
|
+
* @param tier - The tier of the completed rumour
|
|
153
|
+
* @returns The experience awarded
|
|
154
|
+
*/
|
|
155
|
+
export function calculateRumourExperience(hunterLevel, tier) {
|
|
156
|
+
return (hunterLevel + 5) * TIER_XP_MODIFIER[tier];
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Create an unboostable Hunter level requirement helper.
|
|
160
|
+
*/
|
|
161
|
+
export function createHunterLevelRequirement(level) {
|
|
162
|
+
return new LevelRequirement(Skill.Hunter, level, false);
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Get milestones unlocked at a total rumour completion count.
|
|
166
|
+
*/
|
|
167
|
+
export function getMilestoneUnlocks(rumoursCompleted) {
|
|
168
|
+
return RUMOUR_MILESTONE_UNLOCKS.filter((milestone) => milestone.rumoursCompleted === rumoursCompleted);
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Open a hunters' loot sack for a completed rumour.
|
|
172
|
+
* Returns deterministic reward metadata and XP calculation from official formula.
|
|
173
|
+
*/
|
|
174
|
+
export function openHuntersLootSack(tier, hunterLevel, rumoursCompleted = 0) {
|
|
175
|
+
const info = HUNTER_LOOT_SACK_INFO[tier];
|
|
176
|
+
return {
|
|
177
|
+
sackType: info.sackType,
|
|
178
|
+
tier,
|
|
179
|
+
estimatedGpValue: info.estimatedGpValue,
|
|
180
|
+
hunterExperience: calculateRumourExperience(hunterLevel, tier),
|
|
181
|
+
milestonesUnlocked: getMilestoneUnlocks(rumoursCompleted),
|
|
182
|
+
};
|
|
183
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { GuildHunter, HunterRumour, RumourTier } from "./HunterRumour";
|
|
2
|
+
/** All hunter rumours sorted by Hunter level */
|
|
3
|
+
export declare const ALL_RUMOURS: readonly HunterRumour[];
|
|
4
|
+
/**
|
|
5
|
+
* Huntmaster Gilman (Novice) - Can assign all rumours.
|
|
6
|
+
*/
|
|
7
|
+
export declare const Gilman: GuildHunter;
|
|
8
|
+
/**
|
|
9
|
+
* Guild Hunter Cervus (Adept) - Has a distinct adept rumour list.
|
|
10
|
+
*/
|
|
11
|
+
export declare const Cervus: GuildHunter;
|
|
12
|
+
/**
|
|
13
|
+
* Guild Hunter Ornus (Adept) - Has a distinct adept rumour list.
|
|
14
|
+
*/
|
|
15
|
+
export declare const Ornus: GuildHunter;
|
|
16
|
+
/**
|
|
17
|
+
* Guild Hunter Aco (Expert) - Has a distinct expert rumour list.
|
|
18
|
+
*/
|
|
19
|
+
export declare const Aco: GuildHunter;
|
|
20
|
+
/**
|
|
21
|
+
* Guild Hunter Teco (Expert) - Has a distinct expert rumour list.
|
|
22
|
+
*/
|
|
23
|
+
export declare const Teco: GuildHunter;
|
|
24
|
+
/**
|
|
25
|
+
* Guild Hunter Wolf (Master) - Requires completion of At First Light.
|
|
26
|
+
*/
|
|
27
|
+
export declare const Wolf: GuildHunter;
|
|
28
|
+
/** All guild hunters */
|
|
29
|
+
export declare const ALL_GUILD_HUNTERS: readonly GuildHunter[];
|
|
30
|
+
/**
|
|
31
|
+
* Get a guild hunter by name.
|
|
32
|
+
* @param name - The guild hunter's name (enum or string)
|
|
33
|
+
* @returns The guild hunter, or undefined if not found
|
|
34
|
+
*/
|
|
35
|
+
export declare function getGuildHunterByName(name: string): GuildHunter | undefined;
|
|
36
|
+
/**
|
|
37
|
+
* Get all guild hunters for a specific tier.
|
|
38
|
+
* @param tier - The rumour tier
|
|
39
|
+
* @returns Array of guild hunters for that tier
|
|
40
|
+
*/
|
|
41
|
+
export declare function getGuildHuntersByTier(tier: RumourTier): GuildHunter[];
|
|
42
|
+
/**
|
|
43
|
+
* Get the available rumours for a guild hunter, excluding any creatures
|
|
44
|
+
* already assigned as active rumours from other hunters.
|
|
45
|
+
*
|
|
46
|
+
* This implements the "blocking" mechanic: players cannot receive the same
|
|
47
|
+
* task from multiple guild hunters at once. By obtaining a task from one
|
|
48
|
+
* hunter first, it is blocked from appearing with another.
|
|
49
|
+
*
|
|
50
|
+
* Example: If Gilman assigns "Swamp lizard", Cervus cannot assign "Swamp lizard"
|
|
51
|
+
* until the Gilman assignment is completed or reset.
|
|
52
|
+
*
|
|
53
|
+
* @param hunter - The guild hunter to get available rumours for
|
|
54
|
+
* @param activeRumours - Rumours currently assigned from other guild hunters
|
|
55
|
+
* @returns Rumours the hunter can assign, excluding blocked ones
|
|
56
|
+
*/
|
|
57
|
+
export declare function getAvailableRumours(hunter: GuildHunter, activeRumours?: HunterRumour[]): HunterRumour[];
|
|
58
|
+
/**
|
|
59
|
+
* Find a rumour by creature name.
|
|
60
|
+
* @param creature - The creature name to search for (case-insensitive)
|
|
61
|
+
* @returns The matching rumour, or undefined if not found
|
|
62
|
+
*/
|
|
63
|
+
export declare function getRumourByCreature(creature: string): HunterRumour | undefined;
|
|
64
|
+
/**
|
|
65
|
+
* Get all guild hunters that can assign a specific rumour.
|
|
66
|
+
* @param rumour - The rumour to check
|
|
67
|
+
* @returns Array of guild hunters who include this rumour in their list
|
|
68
|
+
*/
|
|
69
|
+
export declare function getHuntersForRumour(rumour: HunterRumour): GuildHunter[];
|
|
70
|
+
//# sourceMappingURL=HunterRumours.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HunterRumours.d.ts","sourceRoot":"","sources":["../../../../source/runescape/model/hunter/HunterRumours.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAmB,YAAY,EAAiB,UAAU,EAAgC,MAAM,gBAAgB,CAAC;AA0OrI,gDAAgD;AAChD,eAAO,MAAM,WAAW,EAAE,SAAS,YAAY,EA6B9C,CAAC;AAIF;;GAEG;AACH,eAAO,MAAM,MAAM,EAAE,WAKpB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,MAAM,EAAE,WAKpB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,KAAK,EAAE,WAKnB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,GAAG,EAAE,WAKjB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,IAAI,EAAE,WAKlB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,IAAI,EAAE,WAMlB,CAAC;AAEF,wBAAwB;AACxB,eAAO,MAAM,iBAAiB,EAAE,SAAS,WAAW,EAA6C,CAAC;AAIlG;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAE1E;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW,EAAE,CAErE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,aAAa,GAAE,YAAY,EAAO,GAAG,YAAY,EAAE,CAG3G;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAG9E;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,WAAW,EAAE,CAEvE"}
|