Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 36 additions & 1 deletion packages/garbo/src/tasks/post/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import {
adv1,
availableChoiceOptions,
canAdventure,
canEquip,
cliExecute,
inebrietyLimit,
itemAmount,
Expand Down Expand Up @@ -32,6 +33,7 @@ import {
getRemainingStomach,
have,
JuneCleaver,
SongBoom,
undelay,
uneffect,
withProperty,
Expand All @@ -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";
Expand Down Expand Up @@ -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,
Comment on lines +355 to +356

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't actually want to restrict this to sober right? It's fine to swap while overdrunk since we can't sing along anyway

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good shout

completed: () => SongBoom.song() === "Food Vibrations",
ready: () =>
SongBoom.dropProgress() === 11 &&
SongBoom.songChangesLeft() > 2 + Number(willDrunkAdventure),
Comment on lines +359 to +360

@Shiverwarp Shiverwarp Aug 17, 2024

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This might fire off during our free fights at start of day, and because songboom doesn't increment on free fights, we'll be losing out on our sing along meat

Suggested solution: The Adjust Songboom: Meat task stays in post, but Adjust Songboom: Seasoning goes to a task that only fires immediately before spending a turn in barf (so we avoid swapping to it during things like digitize, or sausage goblins, etc)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How much meat do we actually get from running sing along against our free fights?

@Shiverwarp Shiverwarp Aug 19, 2024

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A significant amount if our meat% is high enough and we have a lot of free fights! I was getting 500-800 meat from my shadow rift fights, for example

do: () => SongBoom.setSong("Food Vibrations"),
},
];
}

export function PostQuest(completed?: () => boolean): Quest<GarboTask> {
return {
name: "Postcombat",
Expand All @@ -348,6 +382,7 @@ export function PostQuest(completed?: () => boolean): Quest<GarboTask> {
refillCinch(),
leafResin(),
wardrobeOMatic(),
...songBoom(),
]
.filter(({ available }) => undelay(available ?? true))
.map((task) => ({ ...task, spendsTurn: false })),
Expand Down