diff --git a/docs/src/content/docs/getting-started/wiki.md b/docs/src/content/docs/getting-started/wiki.md index 57a4e91057..af540805ed 100644 --- a/docs/src/content/docs/getting-started/wiki.md +++ b/docs/src/content/docs/getting-started/wiki.md @@ -229,7 +229,7 @@ This is an automatically generated list of pages with possible issues to be look [/bso/Skills/divination.md](https://github.com/oldschoolgg/oldschoolbot/blob/master/docs/src/content/docs/bso/Skills/divination.md): Doesnt use the new command formatting -[/bso/Skills/dungeoneering.md](https://github.com/oldschoolgg/oldschoolbot/blob/master/docs/src/content/docs/bso/Skills/dungeoneering.md): Doesnt use the new command formatting +[/bso/Skills/Dungeoneering.md](https://github.com/oldschoolgg/oldschoolbot/blob/master/docs/src/content/docs/bso/Skills/Dungeoneering.md): Doesnt use the new command formatting [/bso/Skills/farming.md](https://github.com/oldschoolgg/oldschoolbot/blob/master/docs/src/content/docs/bso/Skills/farming.md): Doesnt use the new command formatting @@ -251,9 +251,9 @@ This is an automatically generated list of pages with possible issues to be look [/bso/Skills/runecraft.md](https://github.com/oldschoolgg/oldschoolbot/blob/master/docs/src/content/docs/bso/Skills/runecraft.md): Doesnt use the new command formatting, Contains unintended HTML (e.g. ``) -[/bso/Skills/Slayer/README.md](https://github.com/oldschoolgg/oldschoolbot/blob/master/docs/src/content/docs/bso/Skills/Slayer/README.md): Doesnt use the new command formatting +[/bso/Skills/slayer/README.md](https://github.com/oldschoolgg/oldschoolbot/blob/master/docs/src/content/docs/bso/Skills/slayer/README.md): Doesnt use the new command formatting -[/bso/Skills/Slayer/slayer-masks-helms.md](https://github.com/oldschoolgg/oldschoolbot/blob/master/docs/src/content/docs/bso/Skills/Slayer/slayer-masks-helms.md): Doesnt use the new command formatting, Contains unintended HTML (e.g. ``) +[/bso/Skills/slayer/slayer-masks-helms.md](https://github.com/oldschoolgg/oldschoolbot/blob/master/docs/src/content/docs/bso/Skills/slayer/slayer-masks-helms.md): Doesnt use the new command formatting, Contains unintended HTML (e.g. ``) [/bso/Skills/smithing.md](https://github.com/oldschoolgg/oldschoolbot/blob/master/docs/src/content/docs/bso/Skills/smithing.md): Doesnt use the new command formatting diff --git a/docs/src/content/docs/osb/Skills/mining.md b/docs/src/content/docs/osb/Skills/mining.md index 47accbc84f..4c3c82666c 100644 --- a/docs/src/content/docs/osb/Skills/mining.md +++ b/docs/src/content/docs/osb/Skills/mining.md @@ -106,42 +106,42 @@ The only other thing unidentified minerals can be used to purchase are: {/_ DO NOT EDIT - This section is auto-generated by the build script _/} | Ore | XP/hr | Powermining | | --- | --- | --- | -| [[6983]] | 125 000 | Yes | -| [[6975]] | 93 000 | Yes | -| [[6975]] | 83 000 | No | -| [[440]] | 82 000 | Yes | -| [[6983]] | 66 000 | No | -| [[440]] | 58 000 | No | -| [[442]] | 58 000 | Yes | -| [[442]] | 53 000 | No | -| [[453]] | 45 000 | Yes | -| [[444]] | 42 000 | Yes | -| [[444]] | 40 000 | No | -| [[453]] | 38 000 | No | -| [[436]] | 38 000 | Yes | -| [[1625]] | 38 000 | Yes | -| [[438]] | 38 000 | Yes | -| [[1625]] | 36 000 | No | -| [[447]] | 32 000 | Yes | -| [[447]] | 30 000 | No | -| [[21347]] | 22 000 | Yes | -| [[21347]] | 22 000 | No | -| [[449]] | 19 000 | Yes | -| [[449]] | 19 000 | No | -| [[436]] | 19 000 | No | -| [[438]] | 19 000 | No | -| [[451]] | 13 000 | Yes | -| [[451]] | 13 000 | No | -| [[21622]] | 13 000 | Yes | -| [[21622]] | 13 000 | No | -| [[434]] | 11 000 | Yes | -| [[24706]] | 10 000 | Yes | -| [[24706]] | 10 000 | No | -| [[7936]] | 10 000 | Yes | -| [[1436]] | 10 000 | Yes | -| [[7936]] | 7 000 | No | -| [[1436]] | 7 000 | No | -| [[434]] | 5 000 | No | +| [[6983]] | 125,000 | Yes | +| [[6975]] | 93,000 | Yes | +| [[6975]] | 83,000 | No | +| [[440]] | 82,000 | Yes | +| [[6983]] | 66,000 | No | +| [[440]] | 58,000 | No | +| [[442]] | 58,000 | Yes | +| [[442]] | 53,000 | No | +| [[453]] | 45,000 | Yes | +| [[444]] | 42,000 | Yes | +| [[444]] | 40,000 | No | +| [[453]] | 38,000 | No | +| [[436]] | 38,000 | Yes | +| [[1625]] | 38,000 | Yes | +| [[438]] | 38,000 | Yes | +| [[1625]] | 36,000 | No | +| [[447]] | 32,000 | Yes | +| [[447]] | 30,000 | No | +| [[21347]] | 22,000 | Yes | +| [[21347]] | 22,000 | No | +| [[449]] | 19,000 | Yes | +| [[449]] | 19,000 | No | +| [[436]] | 19,000 | No | +| [[438]] | 19,000 | No | +| [[451]] | 13,000 | Yes | +| [[21622]] | 13,000 | Yes | +| [[21622]] | 13,000 | No | +| [[451]] | 12,000 | No | +| [[434]] | 11,000 | Yes | +| [[24706]] | 10,000 | Yes | +| [[24706]] | 10,000 | No | +| [[7936]] | 10,000 | Yes | +| [[1436]] | 10,000 | Yes | +| [[7936]] | 7,000 | No | +| [[1436]] | 7,000 | No | +| [[434]] | 5,000 | No | | [[13421]] | 0 | Yes | | [[13421]] | 0 | No | diff --git a/package.json b/package.json index ae0a94b35f..7839d9c087 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "murmurhash": "^2.0.1", "node-cron": "^3.0.3", "node-fetch": "^2.6.7", - "oldschooljs": "git+https://github.com/oldschoolgg/oldschooljs.git#3c165d84fb79abca6f6b85877165f94dcf7e2940", + "oldschooljs": "git+https://github.com/oldschoolgg/oldschooljs.git#7094eb4a53e5301fb401adadb25f6993448b1c83", "p-queue": "^6.6.2", "piscina": "^4.7.0", "postgres": "^3.4.4", diff --git a/src/lib/constants.ts b/src/lib/constants.ts index 0da5401092..2c24ad8b62 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -345,7 +345,8 @@ export const BadgesEnum = { SotWTrophy: 12, Slayer: 13, TopGiveawayer: 14, - Farmer: 15 + Farmer: 15, + Hacktoberfest: 16 } as const; export const badges: { [key: number]: string } = { @@ -364,7 +365,8 @@ export const badges: { [key: number]: string } = { [BadgesEnum.SotWTrophy]: Emoji.SOTWTrophy, [BadgesEnum.Slayer]: Emoji.Slayer, [BadgesEnum.TopGiveawayer]: Emoji.SantaHat, - [BadgesEnum.Farmer]: Emoji.Farming + [BadgesEnum.Farmer]: Emoji.Farming, + [BadgesEnum.Hacktoberfest]: '<:hacktoberfest:1304259875634942082>' }; export const MAX_XP = 200_000_000; diff --git a/src/lib/data/CollectionsExport.ts b/src/lib/data/CollectionsExport.ts index fba653e57d..85cc495284 100644 --- a/src/lib/data/CollectionsExport.ts +++ b/src/lib/data/CollectionsExport.ts @@ -1914,8 +1914,8 @@ export const miscellaneousCL = resolveItems([ 'Mossy key', 'Giant key', 'Hespori seed', - // 'Fresh crab claw', - // 'Fresh crab shell', + 'Fresh crab claw', + 'Fresh crab shell', "Xeric's talisman (inert)", 'Mask of ranul', 'Elven signet', diff --git a/src/lib/data/buyables/buyables.ts b/src/lib/data/buyables/buyables.ts index d0bd21578b..ad2031086d 100644 --- a/src/lib/data/buyables/buyables.ts +++ b/src/lib/data/buyables/buyables.ts @@ -1106,6 +1106,16 @@ const Buyables: Buyable[] = [ thieving: 50 } }, + { + name: 'Diving apparatus', + gpCost: 1000, + qpRequired: 30 + }, + { + name: 'Fishbowl helmet', + gpCost: 1000, + qpRequired: 30 + }, ...sepulchreBuyables, ...constructionBuyables, ...hunterBuyables, diff --git a/src/lib/data/creatables/gracefulOutfits.ts b/src/lib/data/creatables/gracefulOutfits.ts index c9937eafe6..017bc00ea2 100644 --- a/src/lib/data/creatables/gracefulOutfits.ts +++ b/src/lib/data/creatables/gracefulOutfits.ts @@ -1,176 +1,175 @@ import { Bank } from 'oldschooljs'; -import itemID from '../../util/itemID'; import type { Createable } from '../createables'; export const gracefulOutfitCreatables: Createable[] = [ // Normal { name: 'Graceful', - inputItems: { - [itemID('Mark of grace')]: 260 - }, - outputItems: { - [itemID('Graceful hood')]: 1, - [itemID('Graceful top')]: 1, - [itemID('Graceful legs')]: 1, - [itemID('Graceful gloves')]: 1, - [itemID('Graceful boots')]: 1, - [itemID('Graceful cape')]: 1 - } + inputItems: new Bank({ + 'Mark of grace': 260 + }), + outputItems: new Bank({ + 'Graceful hood': 1, + 'Graceful top': 1, + 'Graceful legs': 1, + 'Graceful gloves': 1, + 'Graceful boots': 1, + 'Graceful cape': 1 + }) }, { name: 'Graceful hood', - inputItems: { - [itemID('Mark of grace')]: 35 - }, - outputItems: { - [itemID('Graceful hood')]: 1 - } + inputItems: new Bank({ + 'Mark of grace': 35 + }), + outputItems: new Bank({ + 'Graceful hood': 1 + }) }, { name: 'Graceful top', - inputItems: { - [itemID('Mark of grace')]: 55 - }, - outputItems: { - [itemID('Graceful top')]: 1 - } + inputItems: new Bank({ + 'Mark of grace': 55 + }), + outputItems: new Bank({ + 'Graceful top': 1 + }) }, { name: 'Graceful legs', - inputItems: { - [itemID('Mark of grace')]: 60 - }, - outputItems: { - [itemID('Graceful legs')]: 1 - } + inputItems: new Bank({ + 'Mark of grace': 60 + }), + outputItems: new Bank({ + 'Graceful legs': 1 + }) }, { name: 'Graceful gloves', - inputItems: { - [itemID('Mark of grace')]: 30 - }, - outputItems: { - [itemID('Graceful gloves')]: 1 - } + inputItems: new Bank({ + 'Mark of grace': 30 + }), + outputItems: new Bank({ + 'Graceful gloves': 1 + }) }, { name: 'Graceful boots', - inputItems: { - [itemID('Mark of grace')]: 40 - }, - outputItems: { - [itemID('Graceful boots')]: 1 - } + inputItems: new Bank({ + 'Mark of grace': 40 + }), + outputItems: new Bank({ + 'Graceful boots': 1 + }) }, { name: 'Graceful cape', - inputItems: { - [itemID('Mark of grace')]: 40 - }, - outputItems: { - [itemID('Graceful cape')]: 1 - } + inputItems: new Bank({ + 'Mark of grace': 40 + }), + outputItems: new Bank({ + 'Graceful cape': 1 + }) }, { name: 'Revert graceful', - inputItems: { - [itemID('Graceful hood')]: 1, - [itemID('Graceful top')]: 1, - [itemID('Graceful legs')]: 1, - [itemID('Graceful gloves')]: 1, - [itemID('Graceful boots')]: 1, - [itemID('Graceful cape')]: 1 - }, - outputItems: { - [itemID('Mark of grace')]: 208 - } + inputItems: new Bank({ + 'Graceful hood': 1, + 'Graceful top': 1, + 'Graceful legs': 1, + 'Graceful gloves': 1, + 'Graceful boots': 1, + 'Graceful cape': 1 + }), + outputItems: new Bank({ + 'Mark of grace': 208 + }) }, { name: 'Revert graceful hood', - inputItems: { - [itemID('Graceful hood')]: 1 - }, - outputItems: { - [itemID('Mark of grace')]: 28 - } + inputItems: new Bank({ + 'Graceful hood': 1 + }), + outputItems: new Bank({ + 'Mark of grace': 28 + }) }, { name: 'Revert graceful top', - inputItems: { - [itemID('Graceful top')]: 1 - }, - outputItems: { - [itemID('Mark of grace')]: 44 - } + inputItems: new Bank({ + 'Graceful top': 1 + }), + outputItems: new Bank({ + 'Mark of grace': 44 + }) }, { name: 'Revert graceful legs', - inputItems: { - [itemID('Graceful legs')]: 1 - }, - outputItems: { - [itemID('Mark of grace')]: 48 - } + inputItems: new Bank({ + 'Graceful legs': 1 + }), + outputItems: new Bank({ + 'Mark of grace': 48 + }) }, { name: 'Revert graceful gloves', - inputItems: { - [itemID('Graceful gloves')]: 1 - }, - outputItems: { - [itemID('Mark of grace')]: 24 - } + inputItems: new Bank({ + 'Graceful gloves': 1 + }), + outputItems: new Bank({ + 'Mark of grace': 24 + }) }, { name: 'Revert graceful boots', - inputItems: { - [itemID('Graceful boots')]: 1 - }, - outputItems: { - [itemID('Mark of grace')]: 32 - } + inputItems: new Bank({ + 'Graceful boots': 1 + }), + outputItems: new Bank({ + 'Mark of grace': 32 + }) }, { name: 'Revert graceful cape', - inputItems: { - [itemID('Graceful cape')]: 1 - }, - outputItems: { - [itemID('Mark of grace')]: 32 - } + inputItems: new Bank({ + 'Graceful cape': 1 + }), + outputItems: new Bank({ + 'Mark of grace': 32 + }) }, // Hallowed Sepulchre { - name: 'Dark Graceful', - inputItems: { - [itemID('Graceful hood')]: 1, - [itemID('Graceful top')]: 1, - [itemID('Graceful legs')]: 1, - [itemID('Graceful gloves')]: 1, - [itemID('Graceful boots')]: 1, - [itemID('Graceful cape')]: 1, - [itemID('Dark dye')]: 6 - }, - outputItems: { - [itemID('Dark graceful hood')]: 1, - [itemID('Dark graceful top')]: 1, - [itemID('Dark graceful legs')]: 1, - [itemID('Dark graceful gloves')]: 1, - [itemID('Dark graceful boots')]: 1, - [itemID('Dark graceful cape')]: 1 - } - }, - { - name: 'Dark Graceful hood', + name: 'Dark graceful', + inputItems: new Bank({ + 'Graceful hood': 1, + 'Graceful top': 1, + 'Graceful legs': 1, + 'Graceful gloves': 1, + 'Graceful boots': 1, + 'Graceful cape': 1, + 'Dark dye': 6 + }), + outputItems: new Bank({ + 'Dark graceful hood': 1, + 'Dark graceful top': 1, + 'Dark graceful legs': 1, + 'Dark graceful gloves': 1, + 'Dark graceful boots': 1, + 'Dark graceful cape': 1 + }) + }, + { + name: 'Dark graceful hood', inputItems: new Bank({ 'Graceful hood': 1, 'Dark dye': 1 }), - outputItems: { - [itemID('Dark graceful hood')]: 1 - } + outputItems: new Bank({ + 'Dark graceful hood': 1 + }) }, { name: 'Dark graceful top', @@ -178,9 +177,9 @@ export const gracefulOutfitCreatables: Createable[] = [ 'Graceful top': 1, 'Dark dye': 1 }), - outputItems: { - [itemID('Dark graceful top')]: 1 - } + outputItems: new Bank({ + 'Dark graceful top': 1 + }) }, { name: 'Dark graceful legs', @@ -188,9 +187,9 @@ export const gracefulOutfitCreatables: Createable[] = [ 'Graceful legs': 1, 'Dark dye': 1 }), - outputItems: { - [itemID('Dark graceful legs')]: 1 - } + outputItems: new Bank({ + 'Dark graceful legs': 1 + }) }, { name: 'Dark graceful gloves', @@ -198,9 +197,9 @@ export const gracefulOutfitCreatables: Createable[] = [ 'Graceful gloves': 1, 'Dark dye': 1 }), - outputItems: { - [itemID('Dark graceful gloves')]: 1 - } + outputItems: new Bank({ + 'Dark graceful gloves': 1 + }) }, { name: 'Dark graceful boots', @@ -208,9 +207,9 @@ export const gracefulOutfitCreatables: Createable[] = [ 'Graceful boots': 1, 'Dark dye': 1 }), - outputItems: { - [itemID('Dark graceful boots')]: 1 - } + outputItems: new Bank({ + 'Dark graceful boots': 1 + }) }, { name: 'Dark graceful cape', @@ -218,1014 +217,1059 @@ export const gracefulOutfitCreatables: Createable[] = [ 'Graceful cape': 1, 'Dark dye': 1 }), - outputItems: { - [itemID('Dark graceful cape')]: 1 - } + outputItems: new Bank({ + 'Dark graceful cape': 1 + }) + }, + { + name: 'Revert dark graceful', + inputItems: new Bank({ + 'Dark graceful hood': 1, + 'Dark graceful top': 1, + 'Dark graceful legs': 1, + 'Dark graceful gloves': 1, + 'Dark graceful boots': 1, + 'Dark graceful cape': 1 + }), + outputItems: new Bank({ + 'Graceful hood': 1, + 'Graceful top': 1, + 'Graceful legs': 1, + 'Graceful gloves': 1, + 'Graceful boots': 1, + 'Graceful cape': 1 + }), + noCl: true + }, + { + name: 'Revert dark graceful hood', + inputItems: new Bank({ + 'Dark graceful hood': 1 + }), + outputItems: new Bank({ + 'Graceful hood': 1 + }), + noCl: true + }, + { + name: 'Revert dark graceful top', + inputItems: new Bank({ + 'Dark graceful top': 1 + }), + outputItems: new Bank({ + 'Graceful top': 1 + }), + noCl: true + }, + { + name: 'Revert dark graceful legs', + inputItems: new Bank({ + 'Dark graceful legs': 1 + }), + outputItems: new Bank({ + 'Graceful legs': 1 + }), + noCl: true + }, + { + name: 'Revert dark graceful gloves', + inputItems: new Bank({ + 'Dark graceful gloves': 1 + }), + outputItems: new Bank({ + 'Graceful gloves': 1 + }), + noCl: true + }, + { + name: 'Revert dark graceful boots', + inputItems: new Bank({ + 'Dark graceful boots': 1 + }), + outputItems: new Bank({ + 'Graceful boots': 1 + }), + noCl: true + }, + { + name: 'Revert dark graceful cape', + inputItems: new Bank({ + 'Dark graceful cape': 1 + }), + outputItems: new Bank({ + 'Graceful cape': 1 + }), + noCl: true }, // Arceuus { name: 'Arceuus graceful', - inputItems: { - [itemID('Graceful hood')]: 1, - [itemID('Graceful top')]: 1, - [itemID('Graceful legs')]: 1, - [itemID('Graceful gloves')]: 1, - [itemID('Graceful boots')]: 1, - [itemID('Graceful cape')]: 1, - [itemID('Mark of grace')]: 90 - }, - outputItems: { - [itemID('Arceuus graceful hood')]: 1, - [itemID('Arceuus graceful top')]: 1, - [itemID('Arceuus graceful legs')]: 1, - [itemID('Arceuus graceful gloves')]: 1, - [itemID('Arceuus graceful boots')]: 1, - [itemID('Arceuus graceful cape')]: 1 - } + inputItems: new Bank({ + 'Graceful hood': 1, + 'Graceful top': 1, + 'Graceful legs': 1, + 'Graceful gloves': 1, + 'Graceful boots': 1, + 'Graceful cape': 1, + 'Mark of grace': 90 + }), + outputItems: new Bank({ + 'Arceuus graceful hood': 1, + 'Arceuus graceful top': 1, + 'Arceuus graceful legs': 1, + 'Arceuus graceful gloves': 1, + 'Arceuus graceful boots': 1, + 'Arceuus graceful cape': 1 + }) }, { name: 'Arceuus graceful hood', - inputItems: { - [itemID('Graceful hood')]: 1, - [itemID('Mark of grace')]: 15 - }, - outputItems: { - [itemID('Arceuus graceful hood')]: 1 - } + inputItems: new Bank({ + 'Graceful hood': 1, + 'Mark of grace': 15 + }), + outputItems: new Bank({ + 'Arceuus graceful hood': 1 + }) }, { name: 'Arceuus graceful top', - inputItems: { - [itemID('Graceful top')]: 1, - [itemID('Mark of grace')]: 15 - }, - outputItems: { - [itemID('Arceuus graceful top')]: 1 - } + inputItems: new Bank({ + 'Graceful top': 1, + 'Mark of grace': 15 + }), + outputItems: new Bank({ + 'Arceuus graceful top': 1 + }) }, { name: 'Arceuus graceful legs', - inputItems: { - [itemID('Graceful legs')]: 1, - [itemID('Mark of grace')]: 15 - }, - outputItems: { - [itemID('Arceuus graceful legs')]: 1 - } + inputItems: new Bank({ + 'Graceful legs': 1, + 'Mark of grace': 15 + }), + outputItems: new Bank({ + 'Arceuus graceful legs': 1 + }) }, { name: 'Arceuus graceful gloves', - inputItems: { - [itemID('Graceful gloves')]: 1, - [itemID('Mark of grace')]: 15 - }, - outputItems: { - [itemID('Arceuus graceful gloves')]: 1 - } + inputItems: new Bank({ + 'Graceful gloves': 1, + 'Mark of grace': 15 + }), + outputItems: new Bank({ + 'Arceuus graceful gloves': 1 + }) }, { name: 'Arceuus graceful boots', - inputItems: { - [itemID('Graceful boots')]: 1, - [itemID('Mark of grace')]: 15 - }, - outputItems: { - [itemID('Arceuus graceful boots')]: 1 - } + inputItems: new Bank({ + 'Graceful boots': 1, + 'Mark of grace': 15 + }), + outputItems: new Bank({ + 'Arceuus graceful boots': 1 + }) }, { name: 'Arceuus graceful cape', - inputItems: { - [itemID('Graceful cape')]: 1, - [itemID('Mark of grace')]: 15 - }, - outputItems: { - [itemID('Arceuus graceful cape')]: 1 - } + inputItems: new Bank({ + 'Graceful cape': 1, + 'Mark of grace': 15 + }), + outputItems: new Bank({ + 'Arceuus graceful cape': 1 + }) }, { name: 'Revert arceuus graceful', - inputItems: { - [itemID('Arceuus graceful hood')]: 1, - [itemID('Arceuus graceful top')]: 1, - [itemID('Arceuus graceful legs')]: 1, - [itemID('Arceuus graceful gloves')]: 1, - [itemID('Arceuus graceful boots')]: 1, - [itemID('Arceuus graceful cape')]: 1 - }, - outputItems: { - [itemID('Graceful hood')]: 1, - [itemID('Graceful top')]: 1, - [itemID('Graceful legs')]: 1, - [itemID('Graceful gloves')]: 1, - [itemID('Graceful boots')]: 1, - [itemID('Graceful cape')]: 1 - }, - + inputItems: new Bank({ + 'Arceuus graceful hood': 1, + 'Arceuus graceful top': 1, + 'Arceuus graceful legs': 1, + 'Arceuus graceful gloves': 1, + 'Arceuus graceful boots': 1, + 'Arceuus graceful cape': 1 + }), + outputItems: new Bank({ + 'Graceful hood': 1, + 'Graceful top': 1, + 'Graceful legs': 1, + 'Graceful gloves': 1, + 'Graceful boots': 1, + 'Graceful cape': 1 + }), noCl: true }, { name: 'Revert arceuus graceful hood', - inputItems: { - [itemID('Arceuus graceful hood')]: 1 - }, - outputItems: { - [itemID('Graceful hood')]: 1 - }, - + inputItems: new Bank({ + 'Arceuus graceful hood': 1 + }), + outputItems: new Bank({ + 'Graceful hood': 1 + }), noCl: true }, { name: 'Revert arceuus graceful top', - inputItems: { - [itemID('Arceuus graceful top')]: 1 - }, - outputItems: { - [itemID('Graceful top')]: 1 - }, - + inputItems: new Bank({ + 'Arceuus graceful top': 1 + }), + outputItems: new Bank({ + 'Graceful top': 1 + }), noCl: true }, { name: 'Revert arceuus graceful legs', - inputItems: { - [itemID('Arceuus graceful legs')]: 1 - }, - outputItems: { - [itemID('Graceful legs')]: 1 - }, - + inputItems: new Bank({ + 'Arceuus graceful legs': 1 + }), + outputItems: new Bank({ + 'Graceful legs': 1 + }), noCl: true }, { name: 'Revert arceuus graceful gloves', - inputItems: { - [itemID('Arceuus graceful gloves')]: 1 - }, - outputItems: { - [itemID('Graceful gloves')]: 1 - }, - + inputItems: new Bank({ + 'Arceuus graceful gloves': 1 + }), + outputItems: new Bank({ + 'Graceful gloves': 1 + }), noCl: true }, { name: 'Revert arceuus graceful boots', - inputItems: { - [itemID('Arceuus graceful boots')]: 1 - }, - outputItems: { - [itemID('Graceful boots')]: 1 - }, - + inputItems: new Bank({ + 'Arceuus graceful boots': 1 + }), + outputItems: new Bank({ + 'Graceful boots': 1 + }), noCl: true }, { name: 'Revert arceuus graceful cape', - inputItems: { - [itemID('Arceuus graceful cape')]: 1 - }, - outputItems: { - [itemID('Graceful cape')]: 1 - }, - + inputItems: new Bank({ + 'Arceuus graceful cape': 1 + }), + outputItems: new Bank({ + 'Graceful cape': 1 + }), noCl: true }, // Piscarilius { name: 'Piscarilius graceful', - inputItems: { - [itemID('Graceful hood')]: 1, - [itemID('Graceful top')]: 1, - [itemID('Graceful legs')]: 1, - [itemID('Graceful gloves')]: 1, - [itemID('Graceful boots')]: 1, - [itemID('Graceful cape')]: 1, - [itemID('Mark of grace')]: 90 - }, - outputItems: { - [itemID('Piscarilius graceful hood')]: 1, - [itemID('Piscarilius graceful top')]: 1, - [itemID('Piscarilius graceful legs')]: 1, - [itemID('Piscarilius graceful gloves')]: 1, - [itemID('Piscarilius graceful boots')]: 1, - [itemID('Piscarilius graceful cape')]: 1 - } + inputItems: new Bank({ + 'Graceful hood': 1, + 'Graceful top': 1, + 'Graceful legs': 1, + 'Graceful gloves': 1, + 'Graceful boots': 1, + 'Graceful cape': 1, + 'Mark of grace': 90 + }), + outputItems: new Bank({ + 'Piscarilius graceful hood': 1, + 'Piscarilius graceful top': 1, + 'Piscarilius graceful legs': 1, + 'Piscarilius graceful gloves': 1, + 'Piscarilius graceful boots': 1, + 'Piscarilius graceful cape': 1 + }) }, { name: 'Piscarilius graceful hood', - inputItems: { - [itemID('Graceful hood')]: 1, - [itemID('Mark of grace')]: 15 - }, - outputItems: { - [itemID('Piscarilius graceful hood')]: 1 - } + inputItems: new Bank({ + 'Graceful hood': 1, + 'Mark of grace': 15 + }), + outputItems: new Bank({ + 'Piscarilius graceful hood': 1 + }) }, { name: 'Piscarilius graceful top', - inputItems: { - [itemID('Graceful top')]: 1, - [itemID('Mark of grace')]: 15 - }, - outputItems: { - [itemID('Piscarilius graceful top')]: 1 - } + inputItems: new Bank({ + 'Graceful top': 1, + 'Mark of grace': 15 + }), + outputItems: new Bank({ + 'Piscarilius graceful top': 1 + }) }, { name: 'Piscarilius graceful legs', - inputItems: { - [itemID('Graceful legs')]: 1, - [itemID('Mark of grace')]: 15 - }, - outputItems: { - [itemID('Piscarilius graceful legs')]: 1 - } - }, - { - name: 'Piscarilius graceful gloves', - inputItems: { - [itemID('Graceful gloves')]: 1, - [itemID('Mark of grace')]: 15 - }, - outputItems: { - [itemID('Piscarilius graceful gloves')]: 1 - } - }, + inputItems: new Bank({ + 'Graceful legs': 1, + 'Mark of grace': 15 + }), + outputItems: new Bank({ + 'Piscarilius graceful legs': 1 + }) + }, + { + name: 'Piscarilius graceful gloves', + inputItems: new Bank({ + 'Graceful gloves': 1, + 'Mark of grace': 15 + }), + outputItems: new Bank({ + 'Piscarilius graceful gloves': 1 + }) + }, { name: 'Piscarilius graceful boots', - inputItems: { - [itemID('Graceful boots')]: 1, - [itemID('Mark of grace')]: 15 - }, - outputItems: { - [itemID('Piscarilius graceful boots')]: 1 - } + inputItems: new Bank({ + 'Graceful boots': 1, + 'Mark of grace': 15 + }), + outputItems: new Bank({ + 'Piscarilius graceful boots': 1 + }) }, { name: 'Piscarilius graceful cape', - inputItems: { - [itemID('Graceful cape')]: 1, - [itemID('Mark of grace')]: 15 - }, - outputItems: { - [itemID('Piscarilius graceful cape')]: 1 - } + inputItems: new Bank({ + 'Graceful cape': 1, + 'Mark of grace': 15 + }), + outputItems: new Bank({ + 'Piscarilius graceful cape': 1 + }) }, { name: 'Revert Piscarilius graceful', - inputItems: { - [itemID('Piscarilius graceful hood')]: 1, - [itemID('Piscarilius graceful top')]: 1, - [itemID('Piscarilius graceful legs')]: 1, - [itemID('Piscarilius graceful gloves')]: 1, - [itemID('Piscarilius graceful boots')]: 1, - [itemID('Piscarilius graceful cape')]: 1 - }, - outputItems: { - [itemID('Graceful hood')]: 1, - [itemID('Graceful top')]: 1, - [itemID('Graceful legs')]: 1, - [itemID('Graceful gloves')]: 1, - [itemID('Graceful boots')]: 1, - [itemID('Graceful cape')]: 1 - }, - + inputItems: new Bank({ + 'Piscarilius graceful hood': 1, + 'Piscarilius graceful top': 1, + 'Piscarilius graceful legs': 1, + 'Piscarilius graceful gloves': 1, + 'Piscarilius graceful boots': 1, + 'Piscarilius graceful cape': 1 + }), + outputItems: new Bank({ + 'Graceful hood': 1, + 'Graceful top': 1, + 'Graceful legs': 1, + 'Graceful gloves': 1, + 'Graceful boots': 1, + 'Graceful cape': 1 + }), noCl: true }, { name: 'Revert Piscarilius graceful hood', - inputItems: { - [itemID('Piscarilius graceful hood')]: 1 - }, - outputItems: { - [itemID('Graceful hood')]: 1 - }, - + inputItems: new Bank({ + 'Piscarilius graceful hood': 1 + }), + outputItems: new Bank({ + 'Graceful hood': 1 + }), noCl: true }, { name: 'Revert Piscarilius graceful top', - inputItems: { - [itemID('Piscarilius graceful top')]: 1 - }, - outputItems: { - [itemID('Graceful top')]: 1 - }, - + inputItems: new Bank({ + 'Piscarilius graceful top': 1 + }), + outputItems: new Bank({ + 'Graceful top': 1 + }), noCl: true }, { name: 'Revert Piscarilius graceful legs', - inputItems: { - [itemID('Piscarilius graceful legs')]: 1 - }, - outputItems: { - [itemID('Graceful legs')]: 1 - }, - + inputItems: new Bank({ + 'Piscarilius graceful legs': 1 + }), + outputItems: new Bank({ + 'Graceful legs': 1 + }), noCl: true }, { name: 'Revert Piscarilius graceful gloves', - inputItems: { - [itemID('Piscarilius graceful gloves')]: 1 - }, - outputItems: { - [itemID('Graceful gloves')]: 1 - }, - + inputItems: new Bank({ + 'Piscarilius graceful gloves': 1 + }), + outputItems: new Bank({ + 'Graceful gloves': 1 + }), noCl: true }, { name: 'Revert Piscarilius graceful boots', - inputItems: { - [itemID('Piscarilius graceful boots')]: 1 - }, - outputItems: { - [itemID('Graceful boots')]: 1 - }, - + inputItems: new Bank({ + 'Piscarilius graceful boots': 1 + }), + outputItems: new Bank({ + 'Graceful boots': 1 + }), noCl: true }, { name: 'Revert Piscarilius graceful cape', - inputItems: { - [itemID('Piscarilius graceful cape')]: 1 - }, - outputItems: { - [itemID('Graceful cape')]: 1 - }, - + inputItems: new Bank({ + 'Piscarilius graceful cape': 1 + }), + outputItems: new Bank({ + 'Graceful cape': 1 + }), noCl: true }, // Lovakengj { name: 'Lovakengj graceful', - inputItems: { - [itemID('Graceful hood')]: 1, - [itemID('Graceful top')]: 1, - [itemID('Graceful legs')]: 1, - [itemID('Graceful gloves')]: 1, - [itemID('Graceful boots')]: 1, - [itemID('Graceful cape')]: 1, - [itemID('Mark of grace')]: 90 - }, - outputItems: { - [itemID('Lovakengj graceful hood')]: 1, - [itemID('Lovakengj graceful top')]: 1, - [itemID('Lovakengj graceful legs')]: 1, - [itemID('Lovakengj graceful gloves')]: 1, - [itemID('Lovakengj graceful boots')]: 1, - [itemID('Lovakengj graceful cape')]: 1 - } + inputItems: new Bank({ + 'Graceful hood': 1, + 'Graceful top': 1, + 'Graceful legs': 1, + 'Graceful gloves': 1, + 'Graceful boots': 1, + 'Graceful cape': 1, + 'Mark of grace': 90 + }), + outputItems: new Bank({ + 'Lovakengj graceful hood': 1, + 'Lovakengj graceful top': 1, + 'Lovakengj graceful legs': 1, + 'Lovakengj graceful gloves': 1, + 'Lovakengj graceful boots': 1, + 'Lovakengj graceful cape': 1 + }) }, { name: 'Lovakengj graceful hood', - inputItems: { - [itemID('Graceful hood')]: 1, - [itemID('Mark of grace')]: 15 - }, - outputItems: { - [itemID('Lovakengj graceful hood')]: 1 - } + inputItems: new Bank({ + 'Graceful hood': 1, + 'Mark of grace': 15 + }), + outputItems: new Bank({ + 'Lovakengj graceful hood': 1 + }) }, { name: 'Lovakengj graceful top', - inputItems: { - [itemID('Graceful top')]: 1, - [itemID('Mark of grace')]: 15 - }, - outputItems: { - [itemID('Lovakengj graceful top')]: 1 - } + inputItems: new Bank({ + 'Graceful top': 1, + 'Mark of grace': 15 + }), + outputItems: new Bank({ + 'Lovakengj graceful top': 1 + }) }, { name: 'Lovakengj graceful legs', - inputItems: { - [itemID('Graceful legs')]: 1, - [itemID('Mark of grace')]: 15 - }, - outputItems: { - [itemID('Lovakengj graceful legs')]: 1 - } + inputItems: new Bank({ + 'Graceful legs': 1, + 'Mark of grace': 15 + }), + outputItems: new Bank({ + 'Lovakengj graceful legs': 1 + }) }, { name: 'Lovakengj graceful gloves', - inputItems: { - [itemID('Graceful gloves')]: 1, - [itemID('Mark of grace')]: 15 - }, - outputItems: { - [itemID('Lovakengj graceful gloves')]: 1 - } + inputItems: new Bank({ + 'Graceful gloves': 1, + 'Mark of grace': 15 + }), + outputItems: new Bank({ + 'Lovakengj graceful gloves': 1 + }) }, { name: 'Lovakengj graceful boots', - inputItems: { - [itemID('Graceful boots')]: 1, - [itemID('Mark of grace')]: 15 - }, - outputItems: { - [itemID('Lovakengj graceful boots')]: 1 - } + inputItems: new Bank({ + 'Graceful boots': 1, + 'Mark of grace': 15 + }), + outputItems: new Bank({ + 'Lovakengj graceful boots': 1 + }) }, { name: 'Lovakengj graceful cape', - inputItems: { - [itemID('Graceful cape')]: 1, - [itemID('Mark of grace')]: 15 - }, - outputItems: { - [itemID('Lovakengj graceful cape')]: 1 - } + inputItems: new Bank({ + 'Graceful cape': 1, + 'Mark of grace': 15 + }), + outputItems: new Bank({ + 'Lovakengj graceful cape': 1 + }) }, { name: 'Revert Lovakengj graceful', - inputItems: { - [itemID('Lovakengj graceful hood')]: 1, - [itemID('Lovakengj graceful top')]: 1, - [itemID('Lovakengj graceful legs')]: 1, - [itemID('Lovakengj graceful gloves')]: 1, - [itemID('Lovakengj graceful boots')]: 1, - [itemID('Lovakengj graceful cape')]: 1 - }, - outputItems: { - [itemID('Graceful hood')]: 1, - [itemID('Graceful top')]: 1, - [itemID('Graceful legs')]: 1, - [itemID('Graceful gloves')]: 1, - [itemID('Graceful boots')]: 1, - [itemID('Graceful cape')]: 1 - }, - + inputItems: new Bank({ + 'Lovakengj graceful hood': 1, + 'Lovakengj graceful top': 1, + 'Lovakengj graceful legs': 1, + 'Lovakengj graceful gloves': 1, + 'Lovakengj graceful boots': 1, + 'Lovakengj graceful cape': 1 + }), + outputItems: new Bank({ + 'Graceful hood': 1, + 'Graceful top': 1, + 'Graceful legs': 1, + 'Graceful gloves': 1, + 'Graceful boots': 1, + 'Graceful cape': 1 + }), noCl: true }, { name: 'Revert Lovakengj graceful hood', - inputItems: { - [itemID('Lovakengj graceful hood')]: 1 - }, - outputItems: { - [itemID('Graceful hood')]: 1 - }, - + inputItems: new Bank({ + 'Lovakengj graceful hood': 1 + }), + outputItems: new Bank({ + 'Graceful hood': 1 + }), noCl: true }, { name: 'Revert Lovakengj graceful top', - inputItems: { - [itemID('Lovakengj graceful top')]: 1 - }, - outputItems: { - [itemID('Graceful top')]: 1 - }, - + inputItems: new Bank({ + 'Lovakengj graceful top': 1 + }), + outputItems: new Bank({ + 'Graceful top': 1 + }), noCl: true }, { name: 'Revert Lovakengj graceful legs', - inputItems: { - [itemID('Lovakengj graceful legs')]: 1 - }, - outputItems: { - [itemID('Graceful legs')]: 1 - }, - + inputItems: new Bank({ + 'Lovakengj graceful legs': 1 + }), + outputItems: new Bank({ + 'Graceful legs': 1 + }), noCl: true }, { name: 'Revert Lovakengj graceful gloves', - inputItems: { - [itemID('Lovakengj graceful gloves')]: 1 - }, - outputItems: { - [itemID('Graceful gloves')]: 1 - }, - + inputItems: new Bank({ + 'Lovakengj graceful gloves': 1 + }), + outputItems: new Bank({ + 'Graceful gloves': 1 + }), noCl: true }, { name: 'Revert Lovakengj graceful boots', - inputItems: { - [itemID('Lovakengj graceful boots')]: 1 - }, - outputItems: { - [itemID('Graceful boots')]: 1 - }, - + inputItems: new Bank({ + 'Lovakengj graceful boots': 1 + }), + outputItems: new Bank({ + 'Graceful boots': 1 + }), noCl: true }, { name: 'Revert Lovakengj graceful cape', - inputItems: { - [itemID('Lovakengj graceful cape')]: 1 - }, - outputItems: { - [itemID('Graceful cape')]: 1 - }, - + inputItems: new Bank({ + 'Lovakengj graceful cape': 1 + }), + outputItems: new Bank({ + 'Graceful cape': 1 + }), noCl: true }, // Shayzien { name: 'Shayzien graceful', - inputItems: { - [itemID('Graceful hood')]: 1, - [itemID('Graceful top')]: 1, - [itemID('Graceful legs')]: 1, - [itemID('Graceful gloves')]: 1, - [itemID('Graceful boots')]: 1, - [itemID('Graceful cape')]: 1, - [itemID('Mark of grace')]: 90 - }, - outputItems: { - [itemID('Shayzien graceful hood')]: 1, - [itemID('Shayzien graceful top')]: 1, - [itemID('Shayzien graceful legs')]: 1, - [itemID('Shayzien graceful gloves')]: 1, - [itemID('Shayzien graceful boots')]: 1, - [itemID('Shayzien graceful cape')]: 1 - } + inputItems: new Bank({ + 'Graceful hood': 1, + 'Graceful top': 1, + 'Graceful legs': 1, + 'Graceful gloves': 1, + 'Graceful boots': 1, + 'Graceful cape': 1, + 'Mark of grace': 90 + }), + outputItems: new Bank({ + 'Shayzien graceful hood': 1, + 'Shayzien graceful top': 1, + 'Shayzien graceful legs': 1, + 'Shayzien graceful gloves': 1, + 'Shayzien graceful boots': 1, + 'Shayzien graceful cape': 1 + }) }, { name: 'Shayzien graceful hood', - inputItems: { - [itemID('Graceful hood')]: 1, - [itemID('Mark of grace')]: 15 - }, - outputItems: { - [itemID('Shayzien graceful hood')]: 1 - } + inputItems: new Bank({ + 'Graceful hood': 1, + 'Mark of grace': 15 + }), + outputItems: new Bank({ + 'Shayzien graceful hood': 1 + }) }, { name: 'Shayzien graceful top', - inputItems: { - [itemID('Graceful top')]: 1, - [itemID('Mark of grace')]: 15 - }, - outputItems: { - [itemID('Shayzien graceful top')]: 1 - } + inputItems: new Bank({ + 'Graceful top': 1, + 'Mark of grace': 15 + }), + outputItems: new Bank({ + 'Shayzien graceful top': 1 + }) }, { name: 'Shayzien graceful legs', - inputItems: { - [itemID('Graceful legs')]: 1, - [itemID('Mark of grace')]: 15 - }, - outputItems: { - [itemID('Shayzien graceful legs')]: 1 - } + inputItems: new Bank({ + 'Graceful legs': 1, + 'Mark of grace': 15 + }), + outputItems: new Bank({ + 'Shayzien graceful legs': 1 + }) }, { name: 'Shayzien graceful gloves', - inputItems: { - [itemID('Graceful gloves')]: 1, - [itemID('Mark of grace')]: 15 - }, - outputItems: { - [itemID('Shayzien graceful gloves')]: 1 - } + inputItems: new Bank({ + 'Graceful gloves': 1, + 'Mark of grace': 15 + }), + outputItems: new Bank({ + 'Shayzien graceful gloves': 1 + }) }, { name: 'Shayzien graceful boots', - inputItems: { - [itemID('Graceful boots')]: 1, - [itemID('Mark of grace')]: 15 - }, - outputItems: { - [itemID('Shayzien graceful boots')]: 1 - } + inputItems: new Bank({ + 'Graceful boots': 1, + 'Mark of grace': 15 + }), + outputItems: new Bank({ + 'Shayzien graceful boots': 1 + }) }, { name: 'Shayzien graceful cape', - inputItems: { - [itemID('Graceful cape')]: 1, - [itemID('Mark of grace')]: 15 - }, - outputItems: { - [itemID('Shayzien graceful cape')]: 1 - } + inputItems: new Bank({ + 'Graceful cape': 1, + 'Mark of grace': 15 + }), + outputItems: new Bank({ + 'Shayzien graceful cape': 1 + }) }, { name: 'Revert Shayzien graceful', - inputItems: { - [itemID('Shayzien graceful hood')]: 1, - [itemID('Shayzien graceful top')]: 1, - [itemID('Shayzien graceful legs')]: 1, - [itemID('Shayzien graceful gloves')]: 1, - [itemID('Shayzien graceful boots')]: 1, - [itemID('Shayzien graceful cape')]: 1 - }, - outputItems: { - [itemID('Graceful hood')]: 1, - [itemID('Graceful top')]: 1, - [itemID('Graceful legs')]: 1, - [itemID('Graceful gloves')]: 1, - [itemID('Graceful boots')]: 1, - [itemID('Graceful cape')]: 1 - }, - + inputItems: new Bank({ + 'Shayzien graceful hood': 1, + 'Shayzien graceful top': 1, + 'Shayzien graceful legs': 1, + 'Shayzien graceful gloves': 1, + 'Shayzien graceful boots': 1, + 'Shayzien graceful cape': 1 + }), + outputItems: new Bank({ + 'Graceful hood': 1, + 'Graceful top': 1, + 'Graceful legs': 1, + 'Graceful gloves': 1, + 'Graceful boots': 1, + 'Graceful cape': 1 + }), noCl: true }, { name: 'Revert Shayzien graceful hood', - inputItems: { - [itemID('Shayzien graceful hood')]: 1 - }, - outputItems: { - [itemID('Graceful hood')]: 1 - }, - + inputItems: new Bank({ + 'Shayzien graceful hood': 1 + }), + outputItems: new Bank({ + 'Graceful hood': 1 + }), noCl: true }, { name: 'Revert Shayzien graceful top', - inputItems: { - [itemID('Shayzien graceful top')]: 1 - }, - outputItems: { - [itemID('Graceful top')]: 1 - }, - + inputItems: new Bank({ + 'Shayzien graceful top': 1 + }), + outputItems: new Bank({ + 'Graceful top': 1 + }), noCl: true }, { name: 'Revert Shayzien graceful legs', - inputItems: { - [itemID('Shayzien graceful legs')]: 1 - }, - outputItems: { - [itemID('Graceful legs')]: 1 - }, - + inputItems: new Bank({ + 'Shayzien graceful legs': 1 + }), + outputItems: new Bank({ + 'Graceful legs': 1 + }), noCl: true }, { name: 'Revert Shayzien graceful gloves', - inputItems: { - [itemID('Shayzien graceful gloves')]: 1 - }, - outputItems: { - [itemID('Graceful gloves')]: 1 - }, - + inputItems: new Bank({ + 'Shayzien graceful gloves': 1 + }), + outputItems: new Bank({ + 'Graceful gloves': 1 + }), noCl: true }, { name: 'Revert Shayzien graceful boots', - inputItems: { - [itemID('Shayzien graceful boots')]: 1 - }, - outputItems: { - [itemID('Graceful boots')]: 1 - }, - + inputItems: new Bank({ + 'Shayzien graceful boots': 1 + }), + outputItems: new Bank({ + 'Graceful boots': 1 + }), noCl: true }, { name: 'Revert Shayzien graceful cape', - inputItems: { - [itemID('Shayzien graceful cape')]: 1 - }, - outputItems: { - [itemID('Graceful cape')]: 1 - }, - + inputItems: new Bank({ + 'Shayzien graceful cape': 1 + }), + outputItems: new Bank({ + 'Graceful cape': 1 + }), noCl: true }, // Hosidius { name: 'Hosidius graceful', - inputItems: { - [itemID('Graceful hood')]: 1, - [itemID('Graceful top')]: 1, - [itemID('Graceful legs')]: 1, - [itemID('Graceful gloves')]: 1, - [itemID('Graceful boots')]: 1, - [itemID('Graceful cape')]: 1, - [itemID('Mark of grace')]: 90 - }, - outputItems: { - [itemID('Hosidius graceful hood')]: 1, - [itemID('Hosidius graceful top')]: 1, - [itemID('Hosidius graceful legs')]: 1, - [itemID('Hosidius graceful gloves')]: 1, - [itemID('Hosidius graceful boots')]: 1, - [itemID('Hosidius graceful cape')]: 1 - } + inputItems: new Bank({ + 'Graceful hood': 1, + 'Graceful top': 1, + 'Graceful legs': 1, + 'Graceful gloves': 1, + 'Graceful boots': 1, + 'Graceful cape': 1, + 'Mark of grace': 90 + }), + outputItems: new Bank({ + 'Hosidius graceful hood': 1, + 'Hosidius graceful top': 1, + 'Hosidius graceful legs': 1, + 'Hosidius graceful gloves': 1, + 'Hosidius graceful boots': 1, + 'Hosidius graceful cape': 1 + }) }, { name: 'Hosidius graceful hood', - inputItems: { - [itemID('Graceful hood')]: 1, - [itemID('Mark of grace')]: 15 - }, - outputItems: { - [itemID('Hosidius graceful hood')]: 1 - } + inputItems: new Bank({ + 'Graceful hood': 1, + 'Mark of grace': 15 + }), + outputItems: new Bank({ + 'Hosidius graceful hood': 1 + }) }, { name: 'Hosidius graceful top', - inputItems: { - [itemID('Graceful top')]: 1, - [itemID('Mark of grace')]: 15 - }, - outputItems: { - [itemID('Hosidius graceful top')]: 1 - } + inputItems: new Bank({ + 'Graceful top': 1, + 'Mark of grace': 15 + }), + outputItems: new Bank({ + 'Hosidius graceful top': 1 + }) }, { name: 'Hosidius graceful legs', - inputItems: { - [itemID('Graceful legs')]: 1, - [itemID('Mark of grace')]: 15 - }, - outputItems: { - [itemID('Hosidius graceful legs')]: 1 - } + inputItems: new Bank({ + 'Graceful legs': 1, + 'Mark of grace': 15 + }), + outputItems: new Bank({ + 'Hosidius graceful legs': 1 + }) }, { name: 'Hosidius graceful gloves', - inputItems: { - [itemID('Graceful gloves')]: 1, - [itemID('Mark of grace')]: 15 - }, - outputItems: { - [itemID('Hosidius graceful gloves')]: 1 - } + inputItems: new Bank({ + 'Graceful gloves': 1, + 'Mark of grace': 15 + }), + outputItems: new Bank({ + 'Hosidius graceful gloves': 1 + }) }, { name: 'Hosidius graceful boots', - inputItems: { - [itemID('Graceful boots')]: 1, - [itemID('Mark of grace')]: 15 - }, - outputItems: { - [itemID('Hosidius graceful boots')]: 1 - } + inputItems: new Bank({ + 'Graceful boots': 1, + 'Mark of grace': 15 + }), + outputItems: new Bank({ + 'Hosidius graceful boots': 1 + }) }, { name: 'Hosidius graceful cape', - inputItems: { - [itemID('Graceful cape')]: 1, - [itemID('Mark of grace')]: 15 - }, - outputItems: { - [itemID('Hosidius graceful cape')]: 1 - } + inputItems: new Bank({ + 'Graceful cape': 1, + 'Mark of grace': 15 + }), + outputItems: new Bank({ + 'Hosidius graceful cape': 1 + }) }, { name: 'Revert Hosidius graceful', - inputItems: { - [itemID('Hosidius graceful hood')]: 1, - [itemID('Hosidius graceful top')]: 1, - [itemID('Hosidius graceful legs')]: 1, - [itemID('Hosidius graceful gloves')]: 1, - [itemID('Hosidius graceful boots')]: 1, - [itemID('Hosidius graceful cape')]: 1 - }, - outputItems: { - [itemID('Graceful hood')]: 1, - [itemID('Graceful top')]: 1, - [itemID('Graceful legs')]: 1, - [itemID('Graceful gloves')]: 1, - [itemID('Graceful boots')]: 1, - [itemID('Graceful cape')]: 1 - }, - + inputItems: new Bank({ + 'Hosidius graceful hood': 1, + 'Hosidius graceful top': 1, + 'Hosidius graceful legs': 1, + 'Hosidius graceful gloves': 1, + 'Hosidius graceful boots': 1, + 'Hosidius graceful cape': 1 + }), + outputItems: new Bank({ + 'Graceful hood': 1, + 'Graceful top': 1, + 'Graceful legs': 1, + 'Graceful gloves': 1, + 'Graceful boots': 1, + 'Graceful cape': 1 + }), noCl: true }, { name: 'Revert Hosidius graceful hood', - inputItems: { - [itemID('Hosidius graceful hood')]: 1 - }, - outputItems: { - [itemID('Graceful hood')]: 1 - }, - + inputItems: new Bank({ + 'Hosidius graceful hood': 1 + }), + outputItems: new Bank({ + 'Graceful hood': 1 + }), noCl: true }, { name: 'Revert Hosidius graceful top', - inputItems: { - [itemID('Hosidius graceful top')]: 1 - }, - outputItems: { - [itemID('Graceful top')]: 1 - }, - + inputItems: new Bank({ + 'Hosidius graceful top': 1 + }), + outputItems: new Bank({ + 'Graceful top': 1 + }), noCl: true }, { name: 'Revert Hosidius graceful legs', - inputItems: { - [itemID('Hosidius graceful legs')]: 1 - }, - outputItems: { - [itemID('Graceful legs')]: 1 - }, - + inputItems: new Bank({ + 'Hosidius graceful legs': 1 + }), + outputItems: new Bank({ + 'Graceful legs': 1 + }), noCl: true }, { name: 'Revert Hosidius graceful gloves', - inputItems: { - [itemID('Hosidius graceful gloves')]: 1 - }, - outputItems: { - [itemID('Graceful gloves')]: 1 - }, - + inputItems: new Bank({ + 'Hosidius graceful gloves': 1 + }), + outputItems: new Bank({ + 'Graceful gloves': 1 + }), noCl: true }, { name: 'Revert Hosidius graceful boots', - inputItems: { - [itemID('Hosidius graceful boots')]: 1 - }, - outputItems: { - [itemID('Graceful boots')]: 1 - }, - + inputItems: new Bank({ + 'Hosidius graceful boots': 1 + }), + outputItems: new Bank({ + 'Graceful boots': 1 + }), noCl: true }, { name: 'Revert Hosidius graceful cape', - inputItems: { - [itemID('Hosidius graceful cape')]: 1 - }, - outputItems: { - [itemID('Graceful cape')]: 1 - }, - + inputItems: new Bank({ + 'Hosidius graceful cape': 1 + }), + outputItems: new Bank({ + 'Graceful cape': 1 + }), noCl: true }, // Great Kourend { name: 'Kourend graceful', - inputItems: { - [itemID('Graceful hood')]: 1, - [itemID('Graceful top')]: 1, - [itemID('Graceful legs')]: 1, - [itemID('Graceful gloves')]: 1, - [itemID('Graceful boots')]: 1, - [itemID('Graceful cape')]: 1, - [itemID('Mark of grace')]: 90 - }, - outputItems: { - [itemID('Kourend graceful hood')]: 1, - [itemID('Kourend graceful top')]: 1, - [itemID('Kourend graceful legs')]: 1, - [itemID('Kourend graceful gloves')]: 1, - [itemID('Kourend graceful boots')]: 1, - [itemID('Kourend graceful cape')]: 1 - } + inputItems: new Bank({ + 'Graceful hood': 1, + 'Graceful top': 1, + 'Graceful legs': 1, + 'Graceful gloves': 1, + 'Graceful boots': 1, + 'Graceful cape': 1, + 'Mark of grace': 90 + }), + outputItems: new Bank({ + 'Kourend graceful hood': 1, + 'Kourend graceful top': 1, + 'Kourend graceful legs': 1, + 'Kourend graceful gloves': 1, + 'Kourend graceful boots': 1, + 'Kourend graceful cape': 1 + }) }, { name: 'Kourend graceful hood', - inputItems: { - [itemID('Graceful hood')]: 1, - [itemID('Mark of grace')]: 15 - }, - outputItems: { - [itemID('Kourend graceful hood')]: 1 - } + inputItems: new Bank({ + 'Graceful hood': 1, + 'Mark of grace': 15 + }), + outputItems: new Bank({ + 'Kourend graceful hood': 1 + }) }, { name: 'Kourend graceful top', - inputItems: { - [itemID('Graceful top')]: 1, - [itemID('Mark of grace')]: 15 - }, - outputItems: { - [itemID('Kourend graceful top')]: 1 - } + inputItems: new Bank({ + 'Graceful top': 1, + 'Mark of grace': 15 + }), + outputItems: new Bank({ + 'Kourend graceful top': 1 + }) }, { name: 'Kourend graceful legs', - inputItems: { - [itemID('Graceful legs')]: 1, - [itemID('Mark of grace')]: 15 - }, - outputItems: { - [itemID('Kourend graceful legs')]: 1 - } + inputItems: new Bank({ + 'Graceful legs': 1, + 'Mark of grace': 15 + }), + outputItems: new Bank({ + 'Kourend graceful legs': 1 + }) }, { name: 'Kourend graceful gloves', - inputItems: { - [itemID('Graceful gloves')]: 1, - [itemID('Mark of grace')]: 15 - }, - outputItems: { - [itemID('Kourend graceful gloves')]: 1 - } + inputItems: new Bank({ + 'Graceful gloves': 1, + 'Mark of grace': 15 + }), + outputItems: new Bank({ + 'Kourend graceful gloves': 1 + }) }, { name: 'Kourend graceful boots', - inputItems: { - [itemID('Graceful boots')]: 1, - [itemID('Mark of grace')]: 15 - }, - outputItems: { - [itemID('Kourend graceful boots')]: 1 - } + inputItems: new Bank({ + 'Graceful boots': 1, + 'Mark of grace': 15 + }), + outputItems: new Bank({ + 'Kourend graceful boots': 1 + }) }, { name: 'Kourend graceful cape', - inputItems: { - [itemID('Graceful cape')]: 1, - [itemID('Mark of grace')]: 15 - }, - outputItems: { - [itemID('Kourend graceful cape')]: 1 - } + inputItems: new Bank({ + 'Graceful cape': 1, + 'Mark of grace': 15 + }), + outputItems: new Bank({ + 'Kourend graceful cape': 1 + }) }, { name: 'Revert Kourend graceful', - inputItems: { - [itemID('Kourend graceful hood')]: 1, - [itemID('Kourend graceful top')]: 1, - [itemID('Kourend graceful legs')]: 1, - [itemID('Kourend graceful gloves')]: 1, - [itemID('Kourend graceful boots')]: 1, - [itemID('Kourend graceful cape')]: 1 - }, - outputItems: { - [itemID('Graceful hood')]: 1, - [itemID('Graceful top')]: 1, - [itemID('Graceful legs')]: 1, - [itemID('Graceful gloves')]: 1, - [itemID('Graceful boots')]: 1, - [itemID('Graceful cape')]: 1 - }, + inputItems: new Bank({ + 'Kourend graceful hood': 1, + 'Kourend graceful top': 1, + 'Kourend graceful legs': 1, + 'Kourend graceful gloves': 1, + 'Kourend graceful boots': 1, + 'Kourend graceful cape': 1 + }), + outputItems: new Bank({ + 'Graceful hood': 1, + 'Graceful top': 1, + 'Graceful legs': 1, + 'Graceful gloves': 1, + 'Graceful boots': 1, + 'Graceful cape': 1 + }), noCl: true }, { name: 'Revert Kourend graceful hood', - inputItems: { - [itemID('Kourend graceful hood')]: 1 - }, - outputItems: { - [itemID('Graceful hood')]: 1 - }, + inputItems: new Bank({ + 'Kourend graceful hood': 1 + }), + outputItems: new Bank({ + 'Graceful hood': 1 + }), noCl: true }, { name: 'Revert Kourend graceful top', - inputItems: { - [itemID('Kourend graceful top')]: 1 - }, - outputItems: { - [itemID('Graceful top')]: 1 - }, + inputItems: new Bank({ + 'Kourend graceful top': 1 + }), + outputItems: new Bank({ + 'Graceful top': 1 + }), noCl: true }, { name: 'Revert Kourend graceful legs', - inputItems: { - [itemID('Kourend graceful legs')]: 1 - }, - outputItems: { - [itemID('Graceful legs')]: 1 - }, + inputItems: new Bank({ + 'Kourend graceful legs': 1 + }), + outputItems: new Bank({ + 'Graceful legs': 1 + }), noCl: true }, { name: 'Revert Kourend graceful gloves', - inputItems: { - [itemID('Kourend graceful gloves')]: 1 - }, - outputItems: { - [itemID('Graceful gloves')]: 1 - }, + inputItems: new Bank({ + 'Kourend graceful gloves': 1 + }), + outputItems: new Bank({ + 'Graceful gloves': 1 + }), noCl: true }, { name: 'Revert Kourend graceful boots', - inputItems: { - [itemID('Kourend graceful boots')]: 1 - }, - outputItems: { - [itemID('Graceful boots')]: 1 - }, + inputItems: new Bank({ + 'Kourend graceful boots': 1 + }), + outputItems: new Bank({ + 'Graceful boots': 1 + }), noCl: true }, { name: 'Revert Kourend graceful cape', - inputItems: { - [itemID('Kourend graceful cape')]: 1 - }, - outputItems: { - [itemID('Graceful cape')]: 1 - }, + inputItems: new Bank({ + 'Kourend graceful cape': 1 + }), + outputItems: new Bank({ + 'Graceful cape': 1 + }), noCl: true }, // Colossal Wyrm Agility (Varlamore graceful) { - name: 'Varlamore graceful outfit', + name: 'Varlamore graceful', inputItems: new Bank({ 'Graceful crafting kit': 1, 'Graceful hood': 1, @@ -1245,7 +1289,7 @@ export const gracefulOutfitCreatables: Createable[] = [ }) }, { - name: 'Revert Varlamore graceful outfit', + name: 'Revert Varlamore graceful', inputItems: new Bank({ 'Varlamore graceful hood': 1, 'Varlamore graceful top': 1, @@ -1263,5 +1307,146 @@ export const gracefulOutfitCreatables: Createable[] = [ 'Graceful cape': 1 }), noCl: true + }, + { + name: 'Revert Varlamore graceful hood', + inputItems: new Bank({ + 'Varlamore graceful hood': 1 + }), + outputItems: new Bank({ + 'Graceful hood': 1 + }), + noCl: true + }, + { + name: 'Revert Varlamore graceful top', + inputItems: new Bank({ + 'Varlamore graceful top': 1 + }), + outputItems: new Bank({ + 'Graceful top': 1 + }), + noCl: true + }, + { + name: 'Revert Varlamore graceful legs', + inputItems: new Bank({ + 'Varlamore graceful legs': 1 + }), + outputItems: new Bank({ + 'Graceful legs': 1 + }), + noCl: true + }, + { + name: 'Revert Varlamore graceful gloves', + inputItems: new Bank({ + 'Varlamore graceful gloves': 1 + }), + outputItems: new Bank({ + 'Graceful gloves': 1 + }), + noCl: true + }, + { + name: 'Revert Varlamore graceful boots', + inputItems: new Bank({ + 'Varlamore graceful boots': 1 + }), + outputItems: new Bank({ + 'Graceful boots': 1 + }), + noCl: true + }, + { + name: 'Revert Varlamore graceful cape', + inputItems: new Bank({ + 'Varlamore graceful cape': 1 + }), + outputItems: new Bank({ + 'Graceful cape': 1 + }), + noCl: true + }, + // Agility Arena (Brimhaven graceful) + { + name: 'Revert Brimhaven graceful', + inputItems: new Bank({ + 'Brimhaven graceful hood': 1, + 'Brimhaven graceful top': 1, + 'Brimhaven graceful legs': 1, + 'Brimhaven graceful gloves': 1, + 'Brimhaven graceful boots': 1, + 'Brimhaven graceful cape': 1 + }), + outputItems: new Bank({ + 'Graceful hood': 1, + 'Graceful top': 1, + 'Graceful legs': 1, + 'Graceful gloves': 1, + 'Graceful boots': 1, + 'Graceful cape': 1 + }), + noCl: true + }, + { + name: 'Revert Brimhaven graceful hood', + inputItems: new Bank({ + 'Brimhaven graceful hood': 1 + }), + outputItems: new Bank({ + 'Graceful hood': 1 + }), + noCl: true + }, + { + name: 'Revert Brimhaven graceful top', + inputItems: new Bank({ + 'Brimhaven graceful top': 1 + }), + outputItems: new Bank({ + 'Graceful top': 1 + }), + noCl: true + }, + { + name: 'Revert Brimhaven graceful legs', + inputItems: new Bank({ + 'Brimhaven graceful legs': 1 + }), + outputItems: new Bank({ + 'Graceful legs': 1 + }), + noCl: true + }, + { + name: 'Revert Brimhaven graceful gloves', + inputItems: new Bank({ + 'Brimhaven graceful gloves': 1 + }), + outputItems: new Bank({ + 'Graceful gloves': 1 + }), + noCl: true + }, + { + name: 'Revert Brimhaven graceful boots', + inputItems: new Bank({ + 'Brimhaven graceful boots': 1 + }), + outputItems: new Bank({ + 'Graceful boots': 1 + }), + noCl: true + }, + { + name: 'Revert Brimhaven graceful cape', + inputItems: new Bank({ + 'Brimhaven graceful cape': 1 + }), + outputItems: new Bank({ + 'Graceful cape': 1 + }), + noCl: true } ]; diff --git a/src/lib/data/creatablesTable.txt b/src/lib/data/creatablesTable.txt index 2ade7ae7a5..d212770244 100644 --- a/src/lib/data/creatablesTable.txt +++ b/src/lib/data/creatablesTable.txt @@ -600,13 +600,20 @@ | Revert graceful gloves | 1x Graceful gloves | 24x Mark of grace | 0 | | Revert graceful boots | 1x Graceful boots | 32x Mark of grace | 0 | | Revert graceful cape | 1x Graceful cape | 32x Mark of grace | 0 | -| Dark Graceful | 6x Dark dye, 1x Graceful boots, 1x Graceful cape, 1x Graceful gloves, 1x Graceful hood, 1x Graceful legs, 1x Graceful top | 1x Dark graceful boots, 1x Dark graceful cape, 1x Dark graceful gloves, 1x Dark graceful hood, 1x Dark graceful legs, 1x Dark graceful top | 0 | -| Dark Graceful hood | 1x Dark dye, 1x Graceful hood | 1x Dark graceful hood | 0 | +| Dark graceful | 6x Dark dye, 1x Graceful boots, 1x Graceful cape, 1x Graceful gloves, 1x Graceful hood, 1x Graceful legs, 1x Graceful top | 1x Dark graceful boots, 1x Dark graceful cape, 1x Dark graceful gloves, 1x Dark graceful hood, 1x Dark graceful legs, 1x Dark graceful top | 0 | +| Dark graceful hood | 1x Dark dye, 1x Graceful hood | 1x Dark graceful hood | 0 | | Dark graceful top | 1x Dark dye, 1x Graceful top | 1x Dark graceful top | 0 | | Dark graceful legs | 1x Dark dye, 1x Graceful legs | 1x Dark graceful legs | 0 | | Dark graceful gloves | 1x Dark dye, 1x Graceful gloves | 1x Dark graceful gloves | 0 | | Dark graceful boots | 1x Dark dye, 1x Graceful boots | 1x Dark graceful boots | 0 | | Dark graceful cape | 1x Dark dye, 1x Graceful cape | 1x Dark graceful cape | 0 | +| Revert dark graceful | 1x Dark graceful boots, 1x Dark graceful cape, 1x Dark graceful gloves, 1x Dark graceful hood, 1x Dark graceful legs, 1x Dark graceful top | 1x Graceful boots, 1x Graceful cape, 1x Graceful gloves, 1x Graceful hood, 1x Graceful legs, 1x Graceful top | 0 | +| Revert dark graceful hood | 1x Dark graceful hood | 1x Graceful hood | 0 | +| Revert dark graceful top | 1x Dark graceful top | 1x Graceful top | 0 | +| Revert dark graceful legs | 1x Dark graceful legs | 1x Graceful legs | 0 | +| Revert dark graceful gloves | 1x Dark graceful gloves | 1x Graceful gloves | 0 | +| Revert dark graceful boots | 1x Dark graceful boots | 1x Graceful boots | 0 | +| Revert dark graceful cape | 1x Dark graceful cape | 1x Graceful cape | 0 | | Arceuus graceful | 1x Graceful boots, 1x Graceful cape, 1x Graceful gloves, 1x Graceful hood, 1x Graceful legs, 1x Graceful top, 90x Mark of grace | 1x Arceuus graceful boots, 1x Arceuus graceful cape, 1x Arceuus graceful gloves, 1x Arceuus graceful hood, 1x Arceuus graceful legs, 1x Arceuus graceful top | 0 | | Arceuus graceful hood | 1x Graceful hood, 15x Mark of grace | 1x Arceuus graceful hood | 0 | | Arceuus graceful top | 1x Graceful top, 15x Mark of grace | 1x Arceuus graceful top | 0 | @@ -691,8 +698,21 @@ | Revert Kourend graceful gloves | 1x Kourend graceful gloves | 1x Graceful gloves | 0 | | Revert Kourend graceful boots | 1x Kourend graceful boots | 1x Graceful boots | 0 | | Revert Kourend graceful cape | 1x Kourend graceful cape | 1x Graceful cape | 0 | -| Varlamore graceful outfit | 1x Graceful boots, 1x Graceful cape, 1x Graceful crafting kit, 1x Graceful gloves, 1x Graceful hood, 1x Graceful legs, 1x Graceful top | 1x Varlamore graceful boots, 1x Varlamore graceful cape, 1x Varlamore graceful gloves, 1x Varlamore graceful hood, 1x Varlamore graceful legs, 1x Varlamore graceful top | 0 | -| Revert Varlamore graceful outfit | 1x Varlamore graceful boots, 1x Varlamore graceful cape, 1x Varlamore graceful gloves, 1x Varlamore graceful hood, 1x Varlamore graceful legs, 1x Varlamore graceful top | 1x Graceful boots, 1x Graceful cape, 1x Graceful gloves, 1x Graceful hood, 1x Graceful legs, 1x Graceful top | 0 | +| Varlamore graceful | 1x Graceful boots, 1x Graceful cape, 1x Graceful crafting kit, 1x Graceful gloves, 1x Graceful hood, 1x Graceful legs, 1x Graceful top | 1x Varlamore graceful boots, 1x Varlamore graceful cape, 1x Varlamore graceful gloves, 1x Varlamore graceful hood, 1x Varlamore graceful legs, 1x Varlamore graceful top | 0 | +| Revert Varlamore graceful | 1x Varlamore graceful boots, 1x Varlamore graceful cape, 1x Varlamore graceful gloves, 1x Varlamore graceful hood, 1x Varlamore graceful legs, 1x Varlamore graceful top | 1x Graceful boots, 1x Graceful cape, 1x Graceful gloves, 1x Graceful hood, 1x Graceful legs, 1x Graceful top | 0 | +| Revert Varlamore graceful hood | 1x Varlamore graceful hood | 1x Graceful hood | 0 | +| Revert Varlamore graceful top | 1x Varlamore graceful top | 1x Graceful top | 0 | +| Revert Varlamore graceful legs | 1x Varlamore graceful legs | 1x Graceful legs | 0 | +| Revert Varlamore graceful gloves | 1x Varlamore graceful gloves | 1x Graceful gloves | 0 | +| Revert Varlamore graceful boots | 1x Varlamore graceful boots | 1x Graceful boots | 0 | +| Revert Varlamore graceful cape | 1x Varlamore graceful cape | 1x Graceful cape | 0 | +| Revert Brimhaven graceful | 1x Brimhaven graceful boots, 1x Brimhaven graceful cape, 1x Brimhaven graceful gloves, 1x Brimhaven graceful hood, 1x Brimhaven graceful legs, 1x Brimhaven graceful top | 1x Graceful boots, 1x Graceful cape, 1x Graceful gloves, 1x Graceful hood, 1x Graceful legs, 1x Graceful top | 0 | +| Revert Brimhaven graceful hood | 1x Brimhaven graceful hood | 1x Graceful hood | 0 | +| Revert Brimhaven graceful top | 1x Brimhaven graceful top | 1x Graceful top | 0 | +| Revert Brimhaven graceful legs | 1x Brimhaven graceful legs | 1x Graceful legs | 0 | +| Revert Brimhaven graceful gloves | 1x Brimhaven graceful gloves | 1x Graceful gloves | 0 | +| Revert Brimhaven graceful boots | 1x Brimhaven graceful boots | 1x Graceful boots | 0 | +| Revert Brimhaven graceful cape | 1x Brimhaven graceful cape | 1x Graceful cape | 0 | | Scythe of vitur | 1x Scythe of vitur (uncharged) | 1x Scythe of vitur | 0 | | Sanguinesti staff | 1x Sanguinesti staff (uncharged) | 1x Sanguinesti staff | 0 | | Holy sanguinesti staff | 1x Holy sanguinesti staff (uncharged) | 1x Holy sanguinesti staff | 0 | diff --git a/src/lib/minions/data/killableMonsters/low.ts b/src/lib/minions/data/killableMonsters/low.ts index e7fc6da676..8f8525f0fc 100644 --- a/src/lib/minions/data/killableMonsters/low.ts +++ b/src/lib/minions/data/killableMonsters/low.ts @@ -182,6 +182,21 @@ const killableMonsters: KillableMonster[] = [ canCannon: true, superior: Monsters.DreadbornAraxyte, canBarrage: true + }, + { + id: Monsters.Crab.id, + name: Monsters.Crab.name, + aliases: Monsters.Crab.aliases, + timeToFinish: Time.Second * 28.2, + table: Monsters.Crab, + wildy: false, + difficultyRating: 1, + qpRequired: 0, + respawnTime: Time.Second * 6, + healAmountNeeded: 3, + attackStyleToUse: GearStat.AttackCrush, + attackStylesUsed: [GearStat.AttackCrush], + itemsRequired: resolveItems(['Fishbowl helmet', 'Diving apparatus']) } ]; diff --git a/src/lib/resources/images/bso_icons/73280.png b/src/lib/resources/images/bso_icons/73280.png new file mode 100644 index 0000000000..328130ea51 Binary files /dev/null and b/src/lib/resources/images/bso_icons/73280.png differ diff --git a/src/lib/resources/images/bso_spritesheet.json b/src/lib/resources/images/bso_spritesheet.json index d9ffe20c41..aa2e742e71 100644 --- a/src/lib/resources/images/bso_spritesheet.json +++ b/src/lib/resources/images/bso_spritesheet.json @@ -5,7 +5,7 @@ "472": [527, 611, 31, 25], "474": [743, 56, 28, 29], "476": [342, 699, 32, 26], - "478": [989, 752, 21, 28], + "478": [989, 783, 21, 28], "500": [1011, 405, 19, 35], "506": [608, 861, 29, 23], "508": [412, 552, 32, 28], @@ -14,7 +14,7 @@ "605": [621, 783, 30, 26], "709": [741, 783, 30, 26], "737": [230, 105, 31, 36], - "758": [1059, 0, 21, 28], + "758": [1059, 28, 21, 28], "759": [1160, 176, 19, 25], "788": [1160, 769, 16, 28], "983": [756, 937, 26, 25], @@ -72,29 +72,29 @@ "24210": [272, 911, 28, 24], "24212": [964, 0, 25, 28], "24214": [829, 437, 27, 28], - "40000": [1059, 202, 18, 32], - "40001": [1059, 234, 18, 32], - "40002": [1059, 266, 18, 32], - "40003": [1059, 298, 18, 32], - "40004": [1059, 330, 18, 32], - "40005": [1059, 362, 18, 32], - "40006": [1059, 394, 18, 32], - "40007": [1059, 426, 18, 32], - "40008": [1059, 458, 18, 32], - "40009": [1059, 490, 18, 32], - "40010": [1059, 522, 18, 32], - "40011": [1059, 554, 18, 32], - "40012": [1059, 586, 18, 32], - "40013": [1059, 618, 18, 32], - "40014": [1059, 650, 18, 32], - "40015": [1059, 682, 18, 32], - "40016": [1059, 714, 18, 32], - "40017": [1059, 746, 18, 32], - "40018": [1059, 778, 18, 32], - "40019": [1059, 810, 18, 32], - "40020": [1059, 842, 18, 32], - "40021": [1059, 874, 18, 32], - "40022": [1059, 906, 18, 32], + "40000": [1059, 230, 18, 32], + "40001": [1059, 262, 18, 32], + "40002": [1059, 294, 18, 32], + "40003": [1059, 326, 18, 32], + "40004": [1059, 358, 18, 32], + "40005": [1059, 390, 18, 32], + "40006": [1059, 422, 18, 32], + "40007": [1059, 454, 18, 32], + "40008": [1059, 486, 18, 32], + "40009": [1059, 518, 18, 32], + "40010": [1059, 550, 18, 32], + "40011": [1059, 582, 18, 32], + "40012": [1059, 614, 18, 32], + "40013": [1059, 646, 18, 32], + "40014": [1059, 678, 18, 32], + "40015": [1059, 710, 18, 32], + "40016": [1059, 742, 18, 32], + "40017": [1059, 774, 18, 32], + "40018": [1059, 806, 18, 32], + "40019": [1059, 838, 18, 32], + "40020": [1059, 870, 18, 32], + "40021": [1059, 902, 18, 32], + "40022": [1059, 934, 18, 32], "40023": [1103, 132, 17, 31], "40024": [1103, 163, 17, 31], "40025": [772, 643, 25, 32], @@ -107,7 +107,7 @@ "40032": [355, 810, 32, 22], "40033": [0, 642, 29, 29], "40034": [597, 0, 30, 29], - "40035": [989, 597, 19, 31], + "40035": [989, 628, 19, 31], "40036": [1035, 826, 22, 27], "40037": [793, 1016, 30, 18], "40038": [387, 810, 32, 22], @@ -126,12 +126,12 @@ "40052": [419, 810, 32, 22], "40053": [1103, 256, 17, 31], "40054": [1180, 642, 11, 32], - "40055": [140, 113, 16, 31], + "40055": [403, 373, 16, 31], "40056": [1160, 1098, 14, 31], "40057": [1160, 227, 15, 31], "40058": [328, 263, 32, 31], "40059": [34, 246, 33, 31], - "40060": [1059, 938, 18, 32], + "40060": [1059, 966, 18, 32], "40061": [29, 642, 29, 29], "40062": [58, 642, 29, 29], "40063": [87, 642, 29, 29], @@ -209,7 +209,7 @@ "41103": [887, 845, 23, 16], "41104": [598, 885, 28, 25], "45003": [0, 1133, 18, 27], - "45004": [989, 126, 22, 29], + "45004": [989, 157, 22, 29], "45005": [0, 937, 26, 27], "45006": [230, 611, 33, 26], "45007": [829, 520, 28, 27], @@ -254,7 +254,7 @@ "47522": [597, 177, 30, 29], "47523": [597, 206, 30, 29], "47524": [366, 885, 29, 25], - "47525": [403, 373, 16, 31], + "47525": [1127, 0, 16, 31], "47526": [188, 552, 32, 28], "47527": [1103, 1012, 24, 21], "47528": [743, 141, 28, 29], @@ -288,7 +288,7 @@ "48206": [214, 1086, 22, 20], "48207": [1007, 991, 28, 17], "48208": [1035, 748, 23, 26], - "48209": [989, 300, 21, 30], + "48209": [989, 331, 21, 30], "48210": [964, 368, 23, 30], "48211": [911, 330, 26, 28], "48212": [220, 552, 32, 28], @@ -320,8 +320,8 @@ "48248": [1160, 601, 16, 28], "48249": [1160, 1011, 15, 29], "48250": [631, 834, 30, 25], - "48251": [989, 330, 21, 30], - "48252": [989, 628, 19, 31], + "48251": [989, 361, 21, 30], + "48252": [989, 659, 19, 31], "48253": [0, 1040, 24, 24], "48254": [1180, 1099, 16, 20], "48255": [911, 0, 27, 27], @@ -329,7 +329,7 @@ "48257": [56, 885, 28, 26], "48258": [512, 163, 25, 31], "48259": [743, 170, 28, 29], - "48260": [1127, 0, 16, 31], + "48260": [1127, 31, 16, 31], "48261": [448, 755, 29, 27], "48262": [684, 148, 24, 35], "48263": [829, 575, 28, 27], @@ -396,9 +396,9 @@ "50022": [667, 642, 17, 29], "50023": [286, 937, 26, 26], "50024": [81, 911, 27, 26], - "50025": [989, 360, 21, 30], - "50026": [989, 390, 21, 30], - "50027": [989, 420, 21, 30], + "50025": [989, 391, 21, 30], + "50026": [989, 421, 21, 30], + "50027": [989, 451, 21, 30], "50028": [829, 657, 27, 28], "50035": [515, 810, 32, 22], "50036": [1180, 405, 16, 23], @@ -462,7 +462,7 @@ "50095": [743, 713, 25, 14], "50096": [1080, 939, 23, 23], "50097": [150, 1016, 26, 23], - "50098": [989, 780, 21, 28], + "50098": [989, 811, 21, 28], "50099": [140, 755, 28, 28], "50100": [60, 493, 30, 30], "50101": [684, 213, 28, 30], @@ -555,7 +555,7 @@ "50495": [124, 373, 31, 31], "50496": [159, 309, 32, 31], "50497": [224, 404, 32, 30], - "50498": [1011, 980, 18, 10], + "50498": [1059, 1030, 18, 10], "50499": [151, 861, 30, 24], "50500": [90, 493, 30, 30], "50501": [597, 499, 29, 30], @@ -612,7 +612,7 @@ "50553": [938, 684, 24, 30], "50554": [860, 618, 26, 29], "50555": [989, 0, 22, 31], - "50556": [989, 659, 19, 31], + "50556": [989, 690, 19, 31], "50557": [1103, 785, 17, 30], "50558": [1080, 383, 18, 31], "50559": [186, 373, 31, 31], @@ -671,7 +671,7 @@ "51011": [531, 783, 30, 26], "51012": [1103, 318, 17, 31], "51013": [1160, 126, 19, 25], - "51014": [989, 808, 21, 28], + "51014": [989, 839, 21, 28], "51015": [860, 647, 26, 29], "51016": [829, 0, 31, 25], "51017": [829, 25, 31, 25], @@ -723,7 +723,7 @@ "62106": [334, 1016, 27, 22], "62108": [411, 911, 27, 24], "62109": [860, 705, 26, 29], - "62110": [989, 836, 21, 28], + "62110": [989, 867, 21, 28], "62111": [470, 991, 28, 22], "62112": [860, 0, 27, 28], "62113": [1035, 209, 20, 31], @@ -755,7 +755,7 @@ "63202": [407, 1086, 18, 17], "63203": [802, 495, 26, 30], "63204": [24, 1040, 24, 24], - "63205": [1059, 970, 18, 32], + "63205": [1059, 998, 18, 32], "63206": [1103, 349, 17, 31], "63207": [1103, 380, 17, 31], "63208": [512, 35, 25, 32], @@ -793,7 +793,7 @@ "70016": [684, 333, 28, 30], "70017": [684, 363, 28, 30], "70018": [1180, 998, 18, 18], - "70019": [989, 450, 21, 30], + "70019": [989, 481, 21, 30], "70020": [802, 174, 27, 29], "70021": [911, 610, 26, 28], "70023": [283, 1064, 24, 20], @@ -892,7 +892,7 @@ "70180": [1011, 862, 21, 31], "70181": [1143, 147, 16, 30], "70182": [772, 114, 30, 27], - "70183": [989, 864, 21, 28], + "70183": [989, 895, 21, 28], "70185": [1160, 0, 20, 24], "70186": [1035, 800, 23, 26], "70187": [328, 911, 28, 24], @@ -930,11 +930,11 @@ "70241": [360, 128, 31, 32], "70242": [223, 309, 32, 31], "70244": [492, 911, 27, 24], - "70245": [989, 62, 20, 32], + "70245": [989, 93, 20, 32], "70246": [374, 699, 32, 26], "70247": [168, 611, 31, 28], "70248": [326, 1086, 23, 18], - "70249": [989, 480, 21, 30], + "70249": [989, 511, 21, 30], "70251": [772, 141, 27, 30], "70252": [738, 885, 28, 25], "70253": [482, 93, 30, 31], @@ -962,7 +962,7 @@ "70276": [372, 373, 31, 31], "70277": [435, 642, 29, 29], "70278": [200, 214, 33, 32], - "70289": [989, 892, 21, 28], + "70289": [989, 923, 21, 28], "70291": [656, 94, 27, 32], "70292": [860, 763, 26, 29], "70293": [464, 642, 29, 29], @@ -989,7 +989,7 @@ "70314": [911, 81, 27, 27], "70315": [240, 493, 30, 30], "70316": [415, 1107, 20, 21], - "70317": [1059, 28, 20, 29], + "70317": [1059, 56, 20, 29], "70318": [912, 1016, 29, 18], "70319": [420, 0, 31, 31], "70320": [1160, 201, 18, 26], @@ -1096,7 +1096,7 @@ "70452": [617, 991, 30, 20], "70453": [656, 263, 26, 32], "70454": [738, 755, 29, 27], - "70455": [989, 155, 22, 29], + "70455": [989, 186, 22, 29], "70456": [964, 339, 24, 29], "70457": [647, 991, 30, 20], "70458": [772, 612, 26, 31], @@ -1253,11 +1253,11 @@ "71588": [156, 937, 26, 27], "71589": [416, 937, 26, 26], "71590": [525, 1016, 28, 21], - "71591": [611, 1064, 19, 13], + "71591": [633, 1064, 19, 13], "71592": [360, 288, 31, 32], "71593": [605, 1040, 27, 18], - "71594": [989, 690, 19, 31], - "71595": [989, 721, 19, 31], + "71594": [989, 721, 19, 31], + "71595": [989, 752, 19, 31], "71596": [29, 727, 29, 28], "71597": [941, 1016, 28, 18], "71598": [505, 1086, 20, 14], @@ -1272,7 +1272,7 @@ "71607": [656, 388, 28, 29], "71608": [580, 642, 29, 29], "71609": [887, 124, 24, 31], - "71610": [588, 1064, 23, 13], + "71610": [610, 1064, 23, 13], "71611": [77, 62, 33, 20], "71612": [435, 964, 35, 14], "71613": [1011, 289, 23, 29], @@ -1281,7 +1281,7 @@ "71616": [609, 642, 29, 29], "71617": [1080, 507, 23, 24], "71618": [762, 1016, 31, 18], - "71619": [989, 920, 21, 28], + "71619": [690, 671, 21, 28], "71620": [1180, 1139, 16, 20], "71621": [1011, 112, 21, 32], "71622": [328, 32, 32, 32], @@ -1359,19 +1359,19 @@ "72021": [1160, 1069, 15, 29], "72022": [713, 598, 30, 28], "72023": [707, 991, 30, 20], - "72024": [1059, 57, 20, 29], - "72025": [1059, 86, 20, 29], - "72026": [1059, 115, 20, 29], + "72024": [1059, 85, 20, 29], + "72025": [1059, 114, 20, 29], + "72026": [1059, 143, 20, 29], "72027": [553, 1016, 28, 21], "72028": [98, 1133, 19, 20], "72029": [802, 319, 27, 29], "72030": [463, 1086, 21, 14], "72031": [1011, 893, 21, 31], "72032": [1180, 594, 15, 24], - "72033": [1059, 144, 20, 29], - "72034": [739, 1040, 22, 12], + "72033": [1059, 172, 20, 29], + "72034": [989, 951, 22, 12], "72035": [1143, 542, 15, 18], - "72036": [761, 1040, 22, 12], + "72036": [739, 1040, 22, 12], "72037": [238, 581, 30, 29], "72038": [684, 609, 27, 31], "72039": [802, 783, 27, 25], @@ -1401,7 +1401,7 @@ "72461": [331, 1107, 21, 22], "72462": [352, 1107, 21, 22], "72463": [373, 1107, 21, 22], - "73000": [1059, 1002, 18, 32], + "73000": [140, 113, 18, 32], "73001": [512, 99, 25, 32], "73002": [1103, 411, 17, 31], "73003": [1103, 442, 17, 31], @@ -1437,11 +1437,11 @@ "73033": [1080, 589, 19, 29], "73034": [701, 1016, 30, 19], "73035": [572, 834, 29, 26], - "73036": [989, 510, 21, 30], + "73036": [989, 541, 21, 30], "73037": [205, 1064, 26, 20], "73038": [411, 1040, 28, 20], "73039": [199, 611, 31, 28], - "73040": [690, 671, 21, 28], + "73040": [1059, 0, 21, 28], "73041": [911, 750, 26, 28], "73042": [512, 131, 25, 32], "73043": [911, 778, 26, 28], @@ -1450,7 +1450,7 @@ "73046": [136, 1133, 19, 20], "73047": [911, 834, 26, 28], "73048": [512, 465, 26, 28], - "73049": [989, 540, 21, 30], + "73049": [989, 571, 21, 30], "73050": [182, 937, 26, 27], "73051": [1180, 618, 15, 24], "73052": [571, 552, 26, 28], @@ -1460,7 +1460,7 @@ "73056": [1011, 376, 23, 29], "73057": [87, 727, 29, 28], "73058": [1143, 319, 14, 30], - "73059": [989, 948, 22, 14], + "73059": [566, 1064, 22, 14], "73060": [1143, 29, 17, 29], "73061": [280, 755, 28, 28], "73062": [1180, 921, 12, 28], @@ -1480,7 +1480,7 @@ "73076": [1035, 383, 22, 28], "73077": [1160, 741, 16, 28], "73078": [1143, 349, 14, 30], - "73079": [566, 1064, 22, 14], + "73079": [588, 1064, 22, 14], "73080": [1143, 58, 17, 29], "73081": [308, 755, 28, 28], "73082": [1180, 949, 12, 28], @@ -1569,7 +1569,7 @@ "73166": [394, 1107, 21, 22], "73167": [420, 124, 31, 31], "73168": [1160, 424, 17, 27], - "73169": [1059, 173, 20, 29], + "73169": [1059, 201, 20, 29], "73170": [31, 552, 31, 29], "73171": [1035, 527, 21, 29], "73172": [271, 861, 30, 24], @@ -1604,7 +1604,7 @@ "73209": [1103, 473, 17, 31], "73210": [1103, 88, 24, 22], "73211": [1103, 110, 24, 22], - "73212": [989, 94, 20, 32], + "73212": [989, 125, 20, 32], "73213": [1035, 156, 24, 26], "73214": [62, 552, 31, 29], "73215": [538, 360, 30, 30], @@ -1615,7 +1615,7 @@ "73220": [887, 686, 23, 31], "73221": [1180, 828, 17, 20], "73222": [1180, 977, 16, 21], - "73223": [989, 570, 22, 27], + "73223": [989, 601, 22, 27], "73224": [307, 1064, 24, 20], "73250": [802, 406, 27, 29], "73251": [822, 885, 28, 25], @@ -1625,7 +1625,7 @@ "73255": [189, 911, 27, 26], "73256": [31, 341, 32, 31], "73257": [216, 911, 27, 26], - "73258": [989, 184, 22, 29], + "73258": [989, 215, 22, 29], "73259": [538, 390, 30, 30], "73260": [887, 155, 24, 31], "73261": [887, 186, 24, 31], @@ -1642,10 +1642,11 @@ "73273": [627, 510, 29, 30], "73274": [772, 492, 30, 27], "73275": [684, 640, 27, 31], - "73276": [989, 213, 22, 29], - "73277": [989, 242, 22, 29], - "73278": [989, 271, 22, 29], + "73276": [989, 244, 22, 29], + "73277": [989, 273, 22, 29], + "73278": [989, 302, 22, 29], "73279": [358, 581, 30, 29], + "73280": [989, 62, 22, 31], "73301": [420, 155, 31, 31], "73302": [684, 393, 28, 30], "88888": [1011, 770, 22, 30], diff --git a/src/lib/resources/images/bso_spritesheet.png b/src/lib/resources/images/bso_spritesheet.png index 88dca2e129..c6e7ca4430 100644 Binary files a/src/lib/resources/images/bso_spritesheet.png and b/src/lib/resources/images/bso_spritesheet.png differ diff --git a/src/lib/skilling/skills/crafting/craftables/misc.ts b/src/lib/skilling/skills/crafting/craftables/misc.ts index 3c57573d4a..61bc98ccc1 100644 --- a/src/lib/skilling/skills/crafting/craftables/misc.ts +++ b/src/lib/skilling/skills/crafting/craftables/misc.ts @@ -253,6 +253,22 @@ const Misc: Craftable[] = [ xp: 500, inputItems: new Bank().add('Amulet of torture').add('Araxyte fang'), tickRate: 0 + }, + { + name: 'Crab helmet', + id: itemID('Crab helmet'), + level: 15, + xp: 32.5, + inputItems: new Bank().add('Fresh crab shell'), + tickRate: 2 + }, + { + name: 'Crab claw', + id: itemID('Crab claw'), + level: 15, + xp: 32.5, + inputItems: new Bank().add('Fresh crab claw'), + tickRate: 2 } ]; diff --git a/src/lib/util.ts b/src/lib/util.ts index 9393049bcd..fb7370da81 100644 --- a/src/lib/util.ts +++ b/src/lib/util.ts @@ -29,7 +29,7 @@ import { LRUCache } from 'lru-cache'; import { ADMIN_IDS, OWNER_IDS, SupportServer } from '../config'; import type { MUserClass } from './MUser'; import { PaginatedMessage } from './PaginatedMessage'; -import { BitField, globalConfig, projectiles } from './constants'; +import { BitField, MAX_XP, globalConfig, projectiles } from './constants'; import { getSimilarItems } from './data/similarItems'; import type { DefenceGearStat, GearSetupType, OffenceGearStat } from './gear/types'; import { GearSetupTypes, GearStat } from './gear/types'; @@ -280,12 +280,13 @@ export function roughMergeMahojiResponse( } export function skillingPetDropRate( - user: MUserClass | GearBank, + user: MUserClass | GearBank | number, skill: SkillsEnum, baseDropRate: number ): { petDropRate: number } { - const twoHundredMillXP = user.skillsAsXP[skill] >= 200_000_000; - const skillLevel = user.skillsAsLevels[skill]; + const xp = typeof user === 'number' ? user : user.skillsAsXP[skill]; + const twoHundredMillXP = xp >= MAX_XP; + const skillLevel = convertXPtoLVL(xp); const petRateDivisor = twoHundredMillXP ? 15 : 1; const dropRate = Math.floor((baseDropRate - skillLevel * 25) / petRateDivisor); return { petDropRate: dropRate }; diff --git a/src/lib/util/handleTripFinish.ts b/src/lib/util/handleTripFinish.ts index 72fea97a9a..ece850d139 100644 --- a/src/lib/util/handleTripFinish.ts +++ b/src/lib/util/handleTripFinish.ts @@ -107,7 +107,14 @@ export async function handleTripFinish( user: MUser, channelID: string, _message: string | ({ content: string } & MessageCreateOptions), - attachment: AttachmentBuilder | Buffer | undefined, + attachment: + | AttachmentBuilder + | Buffer + | undefined + | { + name: string; + attachment: Buffer; + }, data: ActivityTaskData, loot: Bank | null, _messages?: string[], diff --git a/src/lib/util/makeBankImage.ts b/src/lib/util/makeBankImage.ts index 0e157267ce..27eb88f271 100644 --- a/src/lib/util/makeBankImage.ts +++ b/src/lib/util/makeBankImage.ts @@ -8,6 +8,7 @@ interface MakeBankImageOptions { content?: string; title?: string; background?: number; + spoiler?: boolean; flags?: Record; user?: MUser; previousCL?: Bank; @@ -21,6 +22,7 @@ export async function makeBankImage({ background, user, previousCL, + spoiler, showNewCL = false, flags = {}, mahojiFlags = [] @@ -40,7 +42,7 @@ export async function makeBankImage({ return { file: { - name: isTransparent ? 'bank.png' : 'bank.jpg', + name: `${spoiler ? 'SPOILER_' : ''}${isTransparent ? 'bank.png' : 'bank.jpg'}`, attachment: image! } }; diff --git a/src/lib/workers/index.ts b/src/lib/workers/index.ts index 4b1804816c..831ed9e1b6 100644 --- a/src/lib/workers/index.ts +++ b/src/lib/workers/index.ts @@ -3,6 +3,7 @@ import path, { resolve } from 'node:path'; import Piscina from 'piscina'; import type { ItemBank } from '../types'; +import type { MonsterSlayerMaster } from '../util'; export interface CasketWorkerArgs { clueTierID: number; @@ -14,7 +15,8 @@ export interface KillWorkerArgs { quantity: number; limit: number; onTask: boolean; - catacombs: boolean; + catacombs?: boolean; + slayerMaster?: MonsterSlayerMaster; lootTableTertiaryChanges: [string, number][]; } diff --git a/src/lib/workers/kill.worker.ts b/src/lib/workers/kill.worker.ts index e82b7b0440..f6e9f66747 100644 --- a/src/lib/workers/kill.worker.ts +++ b/src/lib/workers/kill.worker.ts @@ -18,11 +18,11 @@ export default async ({ bossName, catacombs, onTask, + slayerMaster, limit, lootTableTertiaryChanges }: KillWorkerArgs): KillWorkerReturn => { const osjsMonster = Monsters.find(mon => mon.aliases.some(alias => stringMatches(alias, bossName))); - if (osjsMonster) { if (quantity > limit) { return { @@ -34,6 +34,7 @@ export default async ({ bank: osjsMonster.kill(quantity, { inCatacombs: catacombs, onSlayerTask: onTask, + slayerMaster: slayerMaster, lootTableOptions: { tertiaryItemPercentageChanges: new Map(lootTableTertiaryChanges) } diff --git a/src/mahoji/commands/kill.ts b/src/mahoji/commands/kill.ts index de4e1ac393..4dbdbf5ba1 100644 --- a/src/mahoji/commands/kill.ts +++ b/src/mahoji/commands/kill.ts @@ -5,6 +5,8 @@ import { Bank, Monsters } from 'oldschooljs'; import { PerkTier } from '../../lib/constants'; import { simulatedKillables } from '../../lib/simulation/simulatedKillables'; +import { slayerMasterChoices } from '../../lib/slayer/constants'; +import { slayerMasters } from '../../lib/slayer/slayerMasters'; import { deferInteraction } from '../../lib/util/interactionReply'; import { makeBankImage } from '../../lib/util/makeBankImage'; import { Workers } from '../../lib/workers'; @@ -71,19 +73,40 @@ export const killCommand: OSBMahojiCommand = { description: 'The quantity you want to simulate.', required: true, min_value: 1 + }, + { + type: ApplicationCommandOptionType.Boolean, + name: 'catacombs', + description: 'Killing in catacombs?', + required: false + }, + { + type: ApplicationCommandOptionType.String, + name: 'master', + description: 'On slayer task from a master?', + required: false, + choices: slayerMasterChoices } ], - run: async ({ options, userID, interaction }: CommandRunOptions<{ name: string; quantity: number }>) => { + run: async ({ + options, + userID, + interaction + }: CommandRunOptions<{ name: string; quantity: number; catacombs: boolean; master: string }>) => { const user = await mUserFetch(userID); await deferInteraction(interaction); - const result = await Workers.kill({ quantity: options.quantity, bossName: options.name, limit: determineKillLimit(user), - catacombs: false, - onTask: false, - lootTableTertiaryChanges: Array.from(user.buildTertiaryItemChanges().entries()) + catacombs: options.catacombs, + onTask: options.master !== undefined, + slayerMaster: slayerMasters.find(sMaster => sMaster.name === options.master)?.osjsEnum, + lootTableTertiaryChanges: Array.from( + user + .buildTertiaryItemChanges(false, options.master === 'Krystilia', options.master !== undefined) + .entries() + ) }); if (result.error) { diff --git a/src/mahoji/lib/abstracted_commands/crackerCommand.ts b/src/mahoji/lib/abstracted_commands/crackerCommand.ts index 31c0b41ee3..98a1cc8f34 100644 --- a/src/mahoji/lib/abstracted_commands/crackerCommand.ts +++ b/src/mahoji/lib/abstracted_commands/crackerCommand.ts @@ -4,6 +4,7 @@ import { Bank, LootTable } from 'oldschooljs'; import { Emoji } from '../../../lib/constants'; import { handleMahojiConfirmation } from '../../../lib/util/handleMahojiConfirmation'; +import { addToOpenablesScores } from '../../mahojiSettings'; const HatTable = new LootTable() .add('Red partyhat', 1, 32) @@ -56,6 +57,7 @@ export async function crackerCommand({ const [winner, loser] = shuffleArr([otherPerson, owner]); await winner.addItemsToBank({ items: winnerLoot, collectionLog: true }); await loser.addItemsToBank({ items: loserLoot, collectionLog: true }); + await addToOpenablesScores(owner, new Bank().add('Christmas cracker', 1).freeze()); return `${Emoji.ChristmasCracker} ${owner} pulled a Christmas cracker with ${otherPerson} and....\n\n ${winner} received ${winnerLoot}, ${loser} received ${loserLoot}.`; } diff --git a/src/mahoji/lib/abstracted_commands/minionKill/speedBoosts.ts b/src/mahoji/lib/abstracted_commands/minionKill/speedBoosts.ts index 56f71f9d72..96c798bebc 100644 --- a/src/mahoji/lib/abstracted_commands/minionKill/speedBoosts.ts +++ b/src/mahoji/lib/abstracted_commands/minionKill/speedBoosts.ts @@ -203,10 +203,8 @@ const dragonHunterBoost: Boost = { } }; const revWildyGearBoost: Boost = { - description: 'A boost for using a wilderness weapon for killing revenants.', + description: 'A boost for using a wilderness weapon for killing in wildy.', run: ({ monster, isInWilderness, combatMethods, primaryStyle: style, gearBank }) => { - const matchedRevenantMonster = revenantMonsters.find(m => m.id === monster.id); - if (!matchedRevenantMonster) return null; if (!isInWilderness || !monster.revsWeaponBoost) return null; if (combatMethods.includes('barrage') || combatMethods.includes('burst')) return null; @@ -214,10 +212,10 @@ const revWildyGearBoost: Boost = { const upgradedWeapon = revUpgradedWeapons[style]; let revBoost = 0; - if (gearBank.gear.wildy.hasEquipped(specialWeapon.name)) { - revBoost = 12.5; - } else if (gearBank.gear.wildy.hasEquipped(upgradedWeapon.name)) { + if (gearBank.gear.wildy.hasEquipped(upgradedWeapon.name)) { revBoost = 17.5; + } else if (gearBank.gear.wildy.hasEquipped(specialWeapon.name)) { + revBoost = 12.5; } if (revBoost > 0) { diff --git a/src/tasks/minions/minigames/temporossActivity.ts b/src/tasks/minions/minigames/temporossActivity.ts index 87b29b12a3..28a4a75679 100644 --- a/src/tasks/minions/minigames/temporossActivity.ts +++ b/src/tasks/minions/minigames/temporossActivity.ts @@ -1,4 +1,4 @@ -import { formatOrdinal } from '@oldschoolgg/toolkit/util'; +import { calcPerHour, formatOrdinal } from '@oldschoolgg/toolkit/util'; import { increaseNumByPercent, randInt } from 'e'; import { Emoji, Events } from '../../../lib/constants'; @@ -83,7 +83,7 @@ export const temporossTask: MinionTask = { let output = `${user}, ${ user.minionName - } finished fighting Tempoross ${quantity}x times. ${xpStr.toLocaleString()}`; + } finished fighting Tempoross ${quantity}x times (${calcPerHour(quantity, data.duration).toFixed(1)}/hr), you now have ${newScore} KC. ${xpStr.toLocaleString()}`; if (fBonusXP > 0) { output += `\n\n**Fishing Bonus XP:** ${fBonusXP.toLocaleString()}`; diff --git a/src/tasks/minions/minigames/wintertodtActivity.ts b/src/tasks/minions/minigames/wintertodtActivity.ts index a95205ad50..f6f2957dc7 100644 --- a/src/tasks/minions/minigames/wintertodtActivity.ts +++ b/src/tasks/minions/minigames/wintertodtActivity.ts @@ -1,9 +1,10 @@ import { randInt } from 'e'; import { Bank } from 'oldschooljs'; +import { calcPerHour } from '@oldschoolgg/toolkit'; import { Emoji, Events } from '../../../lib/constants'; import { trackLoot } from '../../../lib/lootTrack'; -import { getMinigameScore, incrementMinigameScore } from '../../../lib/settings/settings'; +import { incrementMinigameScore } from '../../../lib/settings/settings'; import { winterTodtPointsTable } from '../../../lib/simulation/simulatedKillables'; import { WintertodtCrate } from '../../../lib/simulation/wintertodt'; import Firemaking from '../../../lib/skilling/skills/firemaking'; @@ -18,7 +19,7 @@ export const wintertodtTask: MinionTask = { async run(data: ActivityTaskOptionsWithQuantity) { const { userID, channelID, quantity } = data; const user = await mUserFetch(userID); - + const { newScore } = await incrementMinigameScore(user.id, 'wintertodt', quantity); const loot = new Bank(); let totalPoints = 0; @@ -46,7 +47,7 @@ export const wintertodtTask: MinionTask = { `${Emoji.Phoenix} **${user.badgedUsername}'s** minion, ${ user.minionName }, just received a Phoenix! Their Wintertodt KC is ${ - (await getMinigameScore(user.id, 'wintertodt')) + quantity + newScore }, and their Firemaking level is ${user.skillLevel(SkillsEnum.Firemaking)}.` ); } @@ -111,7 +112,6 @@ export const wintertodtTask: MinionTask = { collectionLog: true, itemsToAdd: loot }); - incrementMinigameScore(user.id, 'wintertodt', quantity); const image = await makeBankImage({ title: `Loot From ${quantity}x Wintertodt`, @@ -120,7 +120,7 @@ export const wintertodtTask: MinionTask = { previousCL }); - let output = `${user}, ${user.minionName} finished subduing Wintertodt ${quantity}x times. ${xpStr}, you cut ${numberOfRoots}x Bruma roots.`; + let output = `${user}, ${user.minionName} finished subduing Wintertodt ${quantity}x times (${calcPerHour(quantity, data.duration).toFixed(1)}/hr), you now have ${newScore} KC. ${xpStr}, you cut ${numberOfRoots}x Bruma roots.`; if (fmBonusXP > 0) { output += `\n\n**Firemaking Bonus XP:** ${fmBonusXP.toLocaleString()}`; diff --git a/src/tasks/minions/monsterActivity.ts b/src/tasks/minions/monsterActivity.ts index f5613f51d0..6bc5748106 100644 --- a/src/tasks/minions/monsterActivity.ts +++ b/src/tasks/minions/monsterActivity.ts @@ -1,6 +1,6 @@ import { Time, deepClone, percentChance } from 'e'; import type { MonsterKillOptions } from 'oldschooljs'; -import { Bank, EMonster, Monsters } from 'oldschooljs'; +import { Bank, EMonster, MonsterSlayerMaster, Monsters } from 'oldschooljs'; import { type BitField, Emoji } from '../../lib/constants'; import { userhasDiaryTierSync } from '../../lib/diaries'; @@ -335,9 +335,10 @@ export function doMonsterTrip(data: newOptions) { monster.specialLoot({ loot, ownedItems: gearBank.bank, quantity: finalQuantity, cl: data.cl }); } if (newSuperiorCount) { - loot.add(superiorTable?.kill(newSuperiorCount)); + loot.add(superiorTable?.kill(newSuperiorCount).set('Brimstone key', 0)); //remove the rng keys, todo: remove drop from superiors in osjs? if (isInCatacombs) loot.add('Dark totem base', newSuperiorCount); if (isInWilderness) loot.add("Larran's key", newSuperiorCount); + if (killOptions.slayerMaster === MonsterSlayerMaster.Konar) loot.add('Brimstone key', newSuperiorCount); } if (isInWilderness && monster.name === 'Hill giant') { for (let i = 0; i < quantity; i++) { diff --git a/src/tasks/minions/nexActivity.ts b/src/tasks/minions/nexActivity.ts index d692e7c384..4885d0f43b 100644 --- a/src/tasks/minions/nexActivity.ts +++ b/src/tasks/minions/nexActivity.ts @@ -92,9 +92,10 @@ ${loot.formatLoot()}` bank: loot.totalLoot(), title: `Loot From ${survivedQuantity}x Nex`, user: allMUsers[0], - previousCL: undefined + previousCL: undefined, + spoiler: loot.purpleItems.some(i => loot.totalLoot().has(i)) }) - ).file.attachment + ).file : undefined, data, loot.totalLoot() diff --git a/tests/unit/snapshots/bank.OSB.png b/tests/unit/snapshots/bank.OSB.png index 1b582259e1..2128ff40dd 100644 Binary files a/tests/unit/snapshots/bank.OSB.png and b/tests/unit/snapshots/bank.OSB.png differ diff --git a/tests/unit/snapshots/banksnapshots.test.ts.snap b/tests/unit/snapshots/banksnapshots.test.ts.snap index aa8340b168..18516755d0 100644 --- a/tests/unit/snapshots/banksnapshots.test.ts.snap +++ b/tests/unit/snapshots/banksnapshots.test.ts.snap @@ -635,6 +635,20 @@ exports[`OSB Buyables 1`] = ` "thieving": 50, }, }, + { + "gpCost": 1000, + "itemCost": {}, + "name": "Diving apparatus", + "outputItems": undefined, + "qpRequired": 30, + }, + { + "gpCost": 1000, + "itemCost": {}, + "name": "Fishbowl helmet", + "outputItems": undefined, + "qpRequired": 30, + }, { "itemCost": { "24711": 1, @@ -12488,7 +12502,7 @@ exports[`OSB Creatables 1`] = ` "11860": 1, "24729": 6, }, - "name": "Dark Graceful", + "name": "Dark graceful", "outputItems": { "24743": 1, "24746": 1, @@ -12504,7 +12518,7 @@ exports[`OSB Creatables 1`] = ` "11850": 1, "24729": 1, }, - "name": "Dark Graceful hood", + "name": "Dark graceful hood", "outputItems": { "24743": 1, }, @@ -12564,6 +12578,93 @@ exports[`OSB Creatables 1`] = ` "24746": 1, }, }, + { + "cantHaveItems": undefined, + "inputItems": { + "24743": 1, + "24746": 1, + "24749": 1, + "24752": 1, + "24755": 1, + "24758": 1, + }, + "name": "Revert dark graceful", + "noCl": true, + "outputItems": { + "11850": 1, + "11852": 1, + "11854": 1, + "11856": 1, + "11858": 1, + "11860": 1, + }, + }, + { + "cantHaveItems": undefined, + "inputItems": { + "24743": 1, + }, + "name": "Revert dark graceful hood", + "noCl": true, + "outputItems": { + "11850": 1, + }, + }, + { + "cantHaveItems": undefined, + "inputItems": { + "24749": 1, + }, + "name": "Revert dark graceful top", + "noCl": true, + "outputItems": { + "11854": 1, + }, + }, + { + "cantHaveItems": undefined, + "inputItems": { + "24752": 1, + }, + "name": "Revert dark graceful legs", + "noCl": true, + "outputItems": { + "11856": 1, + }, + }, + { + "cantHaveItems": undefined, + "inputItems": { + "24755": 1, + }, + "name": "Revert dark graceful gloves", + "noCl": true, + "outputItems": { + "11858": 1, + }, + }, + { + "cantHaveItems": undefined, + "inputItems": { + "24758": 1, + }, + "name": "Revert dark graceful boots", + "noCl": true, + "outputItems": { + "11860": 1, + }, + }, + { + "cantHaveItems": undefined, + "inputItems": { + "24746": 1, + }, + "name": "Revert dark graceful cape", + "noCl": true, + "outputItems": { + "11852": 1, + }, + }, { "cantHaveItems": undefined, "inputItems": { @@ -13619,7 +13720,7 @@ exports[`OSB Creatables 1`] = ` "11860": 1, "30044": 1, }, - "name": "Varlamore graceful outfit", + "name": "Varlamore graceful", "outputItems": { "30045": 1, "30048": 1, @@ -13639,7 +13740,94 @@ exports[`OSB Creatables 1`] = ` "30057": 1, "30060": 1, }, - "name": "Revert Varlamore graceful outfit", + "name": "Revert Varlamore graceful", + "noCl": true, + "outputItems": { + "11850": 1, + "11852": 1, + "11854": 1, + "11856": 1, + "11858": 1, + "11860": 1, + }, + }, + { + "cantHaveItems": undefined, + "inputItems": { + "30045": 1, + }, + "name": "Revert Varlamore graceful hood", + "noCl": true, + "outputItems": { + "11850": 1, + }, + }, + { + "cantHaveItems": undefined, + "inputItems": { + "30051": 1, + }, + "name": "Revert Varlamore graceful top", + "noCl": true, + "outputItems": { + "11854": 1, + }, + }, + { + "cantHaveItems": undefined, + "inputItems": { + "30054": 1, + }, + "name": "Revert Varlamore graceful legs", + "noCl": true, + "outputItems": { + "11856": 1, + }, + }, + { + "cantHaveItems": undefined, + "inputItems": { + "30057": 1, + }, + "name": "Revert Varlamore graceful gloves", + "noCl": true, + "outputItems": { + "11858": 1, + }, + }, + { + "cantHaveItems": undefined, + "inputItems": { + "30060": 1, + }, + "name": "Revert Varlamore graceful boots", + "noCl": true, + "outputItems": { + "11860": 1, + }, + }, + { + "cantHaveItems": undefined, + "inputItems": { + "30048": 1, + }, + "name": "Revert Varlamore graceful cape", + "noCl": true, + "outputItems": { + "11852": 1, + }, + }, + { + "cantHaveItems": undefined, + "inputItems": { + "21061": 1, + "21064": 1, + "21067": 1, + "21070": 1, + "21073": 1, + "21076": 1, + }, + "name": "Revert Brimhaven graceful", "noCl": true, "outputItems": { "11850": 1, @@ -13650,6 +13838,72 @@ exports[`OSB Creatables 1`] = ` "11860": 1, }, }, + { + "cantHaveItems": undefined, + "inputItems": { + "21061": 1, + }, + "name": "Revert Brimhaven graceful hood", + "noCl": true, + "outputItems": { + "11850": 1, + }, + }, + { + "cantHaveItems": undefined, + "inputItems": { + "21067": 1, + }, + "name": "Revert Brimhaven graceful top", + "noCl": true, + "outputItems": { + "11854": 1, + }, + }, + { + "cantHaveItems": undefined, + "inputItems": { + "21070": 1, + }, + "name": "Revert Brimhaven graceful legs", + "noCl": true, + "outputItems": { + "11856": 1, + }, + }, + { + "cantHaveItems": undefined, + "inputItems": { + "21073": 1, + }, + "name": "Revert Brimhaven graceful gloves", + "noCl": true, + "outputItems": { + "11858": 1, + }, + }, + { + "cantHaveItems": undefined, + "inputItems": { + "21076": 1, + }, + "name": "Revert Brimhaven graceful boots", + "noCl": true, + "outputItems": { + "11860": 1, + }, + }, + { + "cantHaveItems": undefined, + "inputItems": { + "21064": 1, + }, + "name": "Revert Brimhaven graceful cape", + "noCl": true, + "outputItems": { + "11852": 1, + }, + }, { "cantHaveItems": undefined, "inputItems": { diff --git a/tests/unit/snapshots/chatHead.OSB.png b/tests/unit/snapshots/chatHead.OSB.png index b67ed3a8ce..044f00874f 100644 Binary files a/tests/unit/snapshots/chatHead.OSB.png and b/tests/unit/snapshots/chatHead.OSB.png differ diff --git a/tests/unit/snapshots/cl.OSB.png b/tests/unit/snapshots/cl.OSB.png index d6c28ccacf..361ff018cc 100644 Binary files a/tests/unit/snapshots/cl.OSB.png and b/tests/unit/snapshots/cl.OSB.png differ diff --git a/tests/unit/snapshots/clsnapshots.test.ts.snap b/tests/unit/snapshots/clsnapshots.test.ts.snap index 1ba4270091..d73635c92a 100644 --- a/tests/unit/snapshots/clsnapshots.test.ts.snap +++ b/tests/unit/snapshots/clsnapshots.test.ts.snap @@ -67,7 +67,7 @@ Mahogany Homes (8) Master Treasure Trail Rewards (Rare) (45) Master Treasure Trails (49) Medium Treasure Trails (115) -Miscellaneous (51) +Miscellaneous (53) Monkey Backpacks (6) Motherlode Mine (6) My Notes (26) @@ -721,6 +721,8 @@ Forestry legs Forestry top Fox whistle Fremennik kilt +Fresh crab claw +Fresh crab shell Frog slippers Frog token Frozen cache diff --git a/tests/unit/snapshots/cox.OSB.png b/tests/unit/snapshots/cox.OSB.png index 159861f526..6ffddf5eb9 100644 Binary files a/tests/unit/snapshots/cox.OSB.png and b/tests/unit/snapshots/cox.OSB.png differ diff --git a/tests/unit/snapshots/poh.OSB.png b/tests/unit/snapshots/poh.OSB.png index 058c5b8a63..440675860b 100644 Binary files a/tests/unit/snapshots/poh.OSB.png and b/tests/unit/snapshots/poh.OSB.png differ diff --git a/tests/unit/snapshots/toa.OSB.png b/tests/unit/snapshots/toa.OSB.png index c2473774df..7a56694dc6 100644 Binary files a/tests/unit/snapshots/toa.OSB.png and b/tests/unit/snapshots/toa.OSB.png differ diff --git a/yarn.lock b/yarn.lock index 885bef7add..5aedde13ef 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4362,13 +4362,13 @@ __metadata: languageName: node linkType: hard -"oldschooljs@git+https://github.com/oldschoolgg/oldschooljs.git#3c165d84fb79abca6f6b85877165f94dcf7e2940": +"oldschooljs@git+https://github.com/oldschoolgg/oldschooljs.git#7094eb4a53e5301fb401adadb25f6993448b1c83": version: 0.0.0 - resolution: "oldschooljs@https://github.com/oldschoolgg/oldschooljs.git#commit=3c165d84fb79abca6f6b85877165f94dcf7e2940" + resolution: "oldschooljs@https://github.com/oldschoolgg/oldschooljs.git#commit=7094eb4a53e5301fb401adadb25f6993448b1c83" dependencies: e: "npm:^0.2.33" node-fetch: "npm:2.6.7" - checksum: 10c0/d8de4a27d9450b7b42891557f7b21a9b6dbee5981762ae8795f4a86710bc833ddad5a069f17f06cfbcdc203e95454cd0b4ec4c147183be0a2de64d0341a7f184 + checksum: 10c0/c160e1b7eac166d7094fec2e555916bc6c4bd09480cc4abb8842ef5685446e38748c5549288b1a72a7d25447286af3518d05c81d5feb9a6816894e8f9fa6e8ca languageName: node linkType: hard @@ -5171,7 +5171,7 @@ __metadata: node-cron: "npm:^3.0.3" node-fetch: "npm:^2.6.7" nodemon: "npm:^3.1.7" - oldschooljs: "git+https://github.com/oldschoolgg/oldschooljs.git#3c165d84fb79abca6f6b85877165f94dcf7e2940" + oldschooljs: "git+https://github.com/oldschoolgg/oldschooljs.git#7094eb4a53e5301fb401adadb25f6993448b1c83" p-queue: "npm:^6.6.2" piscina: "npm:^4.7.0" postgres: "npm:^3.4.4"