diff --git a/packages/garbo/src/tasks/post/index.ts b/packages/garbo/src/tasks/post/index.ts index 2a8551e47..bc54d8a3f 100644 --- a/packages/garbo/src/tasks/post/index.ts +++ b/packages/garbo/src/tasks/post/index.ts @@ -2,6 +2,7 @@ import { adv1, availableChoiceOptions, canAdventure, + canEquip, cliExecute, inebrietyLimit, itemAmount, @@ -32,6 +33,7 @@ import { getRemainingStomach, have, JuneCleaver, + SongBoom, undelay, uneffect, withProperty, @@ -50,7 +52,7 @@ import { Quest } from "grimoire-kolmafia"; import { bestAutumnatonLocation } from "../../resources"; import { estimatedGarboTurns, remainingUserTurns } from "../../turns"; import { acquire } from "../../acquire"; -import { garboAverageValue } from "../../garboValue"; +import { garboAverageValue, garboValue } from "../../garboValue"; import workshedTasks from "./worksheds"; import { GarboPostTask } from "./lib"; import { GarboTask } from "../engine"; @@ -329,6 +331,38 @@ function handleDrenchedInLava(): GarboPostTask { }; } +const MEAT_CLIP_VALUE = 520; +function songBoom(): GarboPostTask[] { + const willDrunkAdventure = + globalOptions.ascend && + have($item`Drunkula's wineglass`) && + canEquip($item`Drunkula's wineglass`); + return [ + { + name: "Adjust Songboom: Meat", + available: () => SongBoom.have() && myInebriety() < inebrietyLimit(), + sobriety: "sober", + completed: () => SongBoom.song() === "Total Eclipse of Your Meat", + ready: () => + SongBoom.dropProgress() < 11 && + SongBoom.songChangesLeft() > 1 + Number(willDrunkAdventure), + do: () => SongBoom.setSong("Total Eclipse of Your Meat"), + }, + { + name: "Adjust Songboom: Seasoning", + available: () => + SongBoom.have() && + myInebriety() < inebrietyLimit() && + garboValue($item`Special Seasoning`) > MEAT_CLIP_VALUE, + completed: () => SongBoom.song() === "Food Vibrations", + ready: () => + SongBoom.dropProgress() === 11 && + SongBoom.songChangesLeft() > 2 + Number(willDrunkAdventure), + do: () => SongBoom.setSong("Food Vibrations"), + }, + ]; +} + export function PostQuest(completed?: () => boolean): Quest { return { name: "Postcombat", @@ -348,6 +382,7 @@ export function PostQuest(completed?: () => boolean): Quest { refillCinch(), leafResin(), wardrobeOMatic(), + ...songBoom(), ] .filter(({ available }) => undelay(available ?? true)) .map((task) => ({ ...task, spendsTurn: false })),