diff --git a/src/args.ts b/src/args.ts index 73605e3..05450b5 100644 --- a/src/args.ts +++ b/src/args.ts @@ -1,4 +1,5 @@ import { Args } from "grimoire-kolmafia"; +import { $familiar } from "libram"; export const args = Args.create( "FolgerCS", @@ -23,14 +24,14 @@ export const args = Args.create( help: `Name of the mother clan for your slime fighting needs`, default: "", }), + useonefam: Args.familiar({ + help: "Use one familiar over the course of the run, rather than using different familiars", + default: $familiar.none, + }), stickknifeoutfit: Args.string({ help: `Name of the outfit that contains stick-knife, for stick-knife trick`, default: "", }), - synthxp: Args.flag({ - help: `Do not use synth for the Xp% buff`, - default: true, - }), asdon: Args.flag({ help: `Should we use Asdon Martin? Incompatible with Skipping Borrowed Time`, default: false, @@ -47,10 +48,6 @@ export const args = Args.create( help: `Do not fight witchess monsters nor acquire Puzzle Champ`, default: false, }), - redskeleton: Args.flag({ - help: `Do not locket a red skeleton`, - default: false, - }), ninjamap: Args.flag({ help: `Do not attempt to grab a li'l ninja costume for your tot`, default: false, @@ -75,10 +72,6 @@ export const args = Args.create( help: `Do not fight the Witchess Queen using the Witchess Set`, default: false, }), - savepurqoise: Args.flag({ - help: `Do not autosell your porquoise`, - default: false, - }), savefloundry: Args.flag({ help: `Do not create a carpe`, default: false, @@ -111,10 +104,6 @@ export const args = Args.create( help: `Do not use your mumming trunk`, default: false, }), - saveglove: Args.flag({ - help: `Do not acquire Triple-Sized and Invisible Avatar`, - default: false, - }), savemayday: Args.flag({ help: `Do not use your Mayday survival package`, default: false, @@ -163,14 +152,6 @@ export const args = Args.create( help: `Do not use our ten free cyber-fights`, default: false, }), - dopulls: Args.flag({ - help: `Automatically use excess pulls for good stuff?`, - default: true, - }), - dopullstest: Args.flag({ - help: `Automatically optimize and use excess pulls for good stuff?`, - default: false, - }), experimentalsynth: Args.flag({ help: `Try using Synth for item%? Requires Sugar Shummoning`, default: false, diff --git a/src/engine/outfit.ts b/src/engine/outfit.ts index ca1c4dc..e8bc36a 100644 --- a/src/engine/outfit.ts +++ b/src/engine/outfit.ts @@ -228,7 +228,7 @@ function baseOutfitFirstPass( 100 - get("_cinchUsed", 0) > args.savecinch ? $item`Cincho de Mayo` : undefined, - familiar: chooseFamiliar(allowAttackingFamiliars), + familiar: args.useonefam !== $familiar.none ? args.useonefam : chooseFamiliar(allowAttackingFamiliars), famequip: have($item`tiny rake`) && get("_leafMonstersFought", 0) < 5 ? $item`tiny rake` : undefined, modifier: `${stringPrequel} 0.001 familiar experience, -equip tinsel tights, -equip wad of used tape`, diff --git a/src/tasks/boozedrop.ts b/src/tasks/boozedrop.ts index bb913e6..96fd720 100644 --- a/src/tasks/boozedrop.ts +++ b/src/tasks/boozedrop.ts @@ -119,7 +119,7 @@ export const BoozeDropQuest: Quest = { acc1: $item`Kremlin's Greatest Briefcase`, acc2: $item`Lil' Doctorâ„¢ bag`, acc3: $item`spring shoes`, - familiar: $familiar`Pair of Stomping Boots`, + familiar: args.useonefam === $familiar.none ? $familiar`Pair of Stomping Boots` : args.useonefam, }, post: () => useFamiliar($familiar`Left-Hand Man`), limit: { tries: 1 }, diff --git a/src/tasks/familiarweight.ts b/src/tasks/familiarweight.ts index 1c52e1a..4bc7cd2 100644 --- a/src/tasks/familiarweight.ts +++ b/src/tasks/familiarweight.ts @@ -112,7 +112,7 @@ export const FamiliarWeightQuest: Quest = { ), outfit: () => ({ weapon: $item`Fourth of May Cosplay Saber`, - familiar: chooseFamiliar(false), + familiar: args.useonefam !== $familiar.none ? args.useonefam : chooseFamiliar(false), avoid: [...sugarItemsAboutToBreak()], }), choices: { 1387: 3 }, diff --git a/src/tasks/hotres.ts b/src/tasks/hotres.ts index 5301466..0f9fea5 100644 --- a/src/tasks/hotres.ts +++ b/src/tasks/hotres.ts @@ -33,7 +33,7 @@ export const HotResQuest: Quest = { back: $item`vampyric cloake`, weapon: $item`Fourth of May Cosplay Saber`, offhand: $item`industrial fire extinguisher`, - familiar: $familiar`Cookbookbat`, + familiar: args.useonefam !== $familiar.none ? args.useonefam : $familiar`Cookbookbat`, modifier: "Item Drop", }, choices: { 1387: 3 }, diff --git a/src/tasks/leveling.ts b/src/tasks/leveling.ts index 1200b24..614d45b 100644 --- a/src/tasks/leveling.ts +++ b/src/tasks/leveling.ts @@ -955,6 +955,7 @@ export const LevelingQuest: Quest = { }, { name: "Map Amateur Ninja", + ready: () => args.useonefam === $familiar.none, prepare: () => prepCommon, completed: () => !have($skill`Map the Monsters`) || @@ -1210,7 +1211,7 @@ export const LevelingQuest: Quest = { { name: "Snojo Pledge", prepare: () => prepCommon, - ready: () => have($familiar`Patriotic Eagle`) && get("snojoAvailable"), + ready: () => have($familiar`Patriotic Eagle`) && get("snojoAvailable") && args.useonefam === $familiar.none, completed: () => get("_citizenZone").includes("Snowman"), do: $location`The X-32-F Combat Training Snowman`, combat: new CombatStrategy().macro( @@ -1264,7 +1265,7 @@ export const LevelingQuest: Quest = { { name: "Bakery Pledge", prepare: () => prepCommon, - ready: () => !get("snojoAvailable"), + ready: () => !get("snojoAvailable") && args.useonefam === $familiar.none, completed: () => have($effect`Citizen of a Zone`) || !have($familiar`Patriotic Eagle`) || @@ -1471,6 +1472,7 @@ export const LevelingQuest: Quest = { { name: "God Lobster", prepare: () => prepCommon, + ready: () => args.useonefam === $familiar.none, completed: () => get("_godLobsterFights") >= 3 || !have($familiar`God Lobster`), do: () => visitUrl("main.php?fightgodlobster=1"), combat: new CombatStrategy().macro(Macro.default(useCinch())), @@ -1521,6 +1523,7 @@ export const LevelingQuest: Quest = { }, { name: "DMT", + ready: () => args.useonefam === $familiar.none, prepare: () => prepCommon, completed: () => get("_machineTunnelsAdv") >= 5 || !have($familiar`Machine Elf`), do: $location`The Deep Machine Tunnels`, diff --git a/src/tasks/noncombat.ts b/src/tasks/noncombat.ts index 53b70dc..9e62cfc 100644 --- a/src/tasks/noncombat.ts +++ b/src/tasks/noncombat.ts @@ -83,7 +83,6 @@ export const NoncombatQuest: Quest = { $effect`Blessing of the Bird`, $effect`Feeling Lonely`, $effect`Gummed Shoes`, - $effect`Invisible Avatar`, $effect`Silent Running`, $effect`Smooth Movements`, $effect`The Sonata of Sneakiness`, diff --git a/src/tasks/spelldamage.ts b/src/tasks/spelldamage.ts index eed4851..8056825 100644 --- a/src/tasks/spelldamage.ts +++ b/src/tasks/spelldamage.ts @@ -96,6 +96,7 @@ export const SpellDamageQuest: Quest = { }, { name: "Stand-Alone Carol Ghost Buff", + ready: () => args.useonefam === $familiar.none, prepare: (): void => { restoreHp(clamp(1000, myMaxhp() / 2, myMaxhp())); restoreMp(50); @@ -120,6 +121,7 @@ export const SpellDamageQuest: Quest = { }, { name: "Inner Elf", + ready: () => args.useonefam === $familiar.none, prepare: (): void => { restoreHp(clamp(1000, myMaxhp() / 2, myMaxhp())); restoreMp(50); @@ -163,6 +165,7 @@ export const SpellDamageQuest: Quest = { outfit: () => ({ weapon: $item`Fourth of May Cosplay Saber`, familiar: + args.useonefam !== $familiar.none ? args.useonefam : get("camelSpit") >= 100 ? $familiar`Melodramedary` : $effects`Do You Crush What I Crush?, Holiday Yoked, Let It Snow/Boil/Stink/Frighten/Grease, All I Want For Crimbo Is Stuff, Crimbo Wrapping`.some( @@ -192,7 +195,7 @@ export const SpellDamageQuest: Quest = { if (myHp() < neededHp) restoreHp(neededHp); tryAcquiringEffect($effect`Visions of the Deep Dark Deeps`); }, - outfit: { modifier: "HP 500max, Spooky Resistance", familiar: $familiar`Exotic Parrot` }, + outfit: { modifier: "HP 500max, Spooky Resistance", familiar: args.useonefam !== $familiar.none ? args.useonefam : $familiar`Exotic Parrot` }, limit: { tries: 1 }, }, { diff --git a/src/tasks/stat.ts b/src/tasks/stat.ts index f25349e..efe88a5 100644 --- a/src/tasks/stat.ts +++ b/src/tasks/stat.ts @@ -71,7 +71,6 @@ export const HPQuest: Quest = { $effect`Seal Clubbing Frenzy`, $effect`Song of Starch`, $effect`Stevedave's Shanty of Superiority`, - $effect`Triple-Sized`, ]; usefulEffects.forEach((ef) => tryAcquiringEffect(ef, true)); }, @@ -127,7 +126,6 @@ export const MuscleQuest: Quest = { $effect`Rage of the Reindeer`, $effect`Song of Bravado`, $effect`Stevedave's Shanty of Superiority`, - $effect`Triple-Sized`, ]; usefulEffects.forEach((ef) => tryAcquiringEffect(ef, true)); @@ -198,7 +196,6 @@ export const MysticalityQuest: Quest = { $effect`Feeling Excited`, $effect`Glittering Eyelashes`, $effect`The Magical Mojomuscular Melody`, - $effect`Triple-Sized`, $effect`Pasta Oneness`, $effect`Quiet Judgement`, $effect`Saucemastery`, @@ -283,7 +280,6 @@ export const MoxieQuest: Quest = { $effect`Disco State of Mind`, $effect`Feeling Excited`, $effect`The Moxious Madrigal`, - $effect`Triple-Sized`, $effect`Penne Fedora`, $effect`Pomp & Circumsands`, $effect`Quiet Desperation`, diff --git a/src/tasks/weapondamage.ts b/src/tasks/weapondamage.ts index 28fd10f..8e84b91 100644 --- a/src/tasks/weapondamage.ts +++ b/src/tasks/weapondamage.ts @@ -83,6 +83,7 @@ export const WeaponDamageQuest: Quest = { }, { name: "Stand-Alone Carol Ghost Buff", + ready: () => args.useonefam === $familiar.none, prepare: (): void => { restoreHp(clamp(1000, myMaxhp() / 2, myMaxhp())); restoreMp(50); @@ -106,6 +107,7 @@ export const WeaponDamageQuest: Quest = { }, { name: "Inner Elf", + ready: () => args.useonefam === $familiar.none, prepare: (): void => { restoreHp(clamp(1000, myMaxhp() / 2, myMaxhp())); restoreMp(50); @@ -168,6 +170,7 @@ export const WeaponDamageQuest: Quest = { outfit: () => ({ weapon: $item`Fourth of May Cosplay Saber`, familiar: + args.useonefam !== $familiar.none ? args.useonefam : get("camelSpit") >= 100 ? $familiar`Melodramedary` : $effects`Do You Crush What I Crush?, Holiday Yoked, Let It Snow/Boil/Stink/Frighten/Grease, All I Want For Crimbo Is Stuff, Crimbo Wrapping`.some(