Friends, Romans, countrymen, lend me your eyes. For on this day, this steaming hot August 1st, I release unto you the long-awaited mood script: Mercenary Mood! Here's what it does:
Anyone familiar with my BBB script will recognize this first feature, as it has moved here from BBB (and thus BBB has shrunk considerably). This is to allow for better separation of relay vs. automated play. As you adventure, if your mm_adjust_choiceadvs setting is set to true, MM will adjust certain choiceAdventure properties as you adventure in the relevant location. Here's a list of the adjustments made:
(To begin, I copy/pasted this list from the BBB page, then added all the missing parts. Any location that's new compared to the original post I've underlined below to help you see the changes.)
- Barrrney's Barrr -- Step up for beer pong if you have more than 5 insults.
- Bat zones -- adjusts your goals if you have encountered a Screambat.
- Black Forest -- get goal items first (including any blackberry footwear), then get a beehive if it's necessary in your path, then go for the +items buff if you're wearing all the black gear. Consider the blackberry galoshes a goal until you've got them or you've fully explored the black forest. If all goals are achieved, get all the black gear, then default to fighting bushes.
- Broodling Grounds -- Uneffect buffs that would damage seal parts. Print warnings for some familiars or equipment that may damage seal parts.
- Castle (Basement) -- Furry: With titanium umbrella, unlock ground floor. Otherwise, if there's nothing to do in Neckbeard, get primestat moxie. Proceed to Neckbeard. Neckbeard: With dumbbell, unlock ground floor. Otherwise, if Fitness is set to unlock using amulet, proceed to Fitness. Get goal O'RLY manual or open sauce. Get mainstat myst. Skip. Fitness: With amulet, unlock ground floor. Open the gym bag for goals. Finally, get a dumbbell or skip.
- Castle (Ground Floor) -- Foodie: Get an electric boning knife. Otherwise, skip it.
- Castle (Top Floor) -- Raver: Unless you have a mohawk wig equipped, get a quest record if you lack one. Otherwise, fight Raver Giants for goals. Otherwise, if the user has set the preference to restore HP/MP, respect that. Finally, proceed to Punk. Punk: With mohawk wig equipped, complete quest. Otherwise, fight Punk Rock giants for goals. If Raver isn't set to Punk, proceed to Raver. If shortcut option exists, proceed to Steampunk. Steampunk: With model airship, complete quest. Then, pick up a steam-powered model rocketship, get goal brass gears, or fight Steampunk Giants for goals. If none of those options were selected, proceed to Goth. Goth: With record, complete quest. Otherwise, with multiple candles as goals, get candles. If there's something to do in Steampunk, proceed to Steampunk. Finally, fight Goth Giants.
- Chinatown Tenement -- If you have enough GP, turn it in and enter Debasement.
- Convention Hall Lobby -- Create and discover the various slime colors as you can.
- Daily Dungeon -- Open the chests in rooms 5 and 10 only if they may contain goals, otherwise skip. Open doors using your best available method, saving one skeleton key for the Tower. Skip traps with the 11-ft. pole if you have one.
- Defiled Areas of the Cyrpt -- gets mm_miniboss_items (default is 1) special combat items, before getting mainstats or skipping the adventure. It will never get more than one phylactery, and it always skips the puny stats in the Cranny.
- Le Dègueulasse Marais -- Unlock all the locations on
- Dungeons of Doom -- Get goal magic lamps and dead mimics (will also work if you set any of the possible dead mimic contents as a goal).
- Enormous Greater-Than Sign -- Handle getting the plus sign, Teleportitis, and goal parentheses or stats.
- F'c'le -- If you have a valuable trinket and no pirate fledges, banish the chatty pirates with it. Get delicious primestats.
- The "Fun" House -- Only fight the Clownlord with sufficient Clownosity.
- The Haiku Dungeon -- Get goals, otherwise get a fairy gravy boat if you don't have the familiar yet, otherwise skip.
- Haunted Ballroom -- Learn the Spookraven skill if possible, otherwise fight an organist for goals, otherwise get goal or primestat moxie, otherwise skip.
- Haunted Bathroom -- Get goals, otherwise open the medicine cabinet, in which you get goals or skip. Overridden by manually setting to GMoB.
- Haunted Bedroom -- Elegant: get Lady Spook's gown, then goal nightsticks, then skip. Can override to get nightsticks. Ornate: Get Spook's specs, then a disposable camera if you still need one, then myst stats if playing a myst class, otherwise skip. Can override to get stats or meat.
- Haunted Billiards Room -- maintain the Chalky Hand effect if you haven't gotten the key yet. Also handle the pool ghost: if cubes of billiards chalk are a goal or your pool skill is maxed, get those. Otherwise, increase your pool skill.
- Haunted Gallery -- Fight the appropriate knight to learn the Spookyraven skill if appropriate or get goal items, otherwise skip. Override by choosing lights.
- Haunted Library -- Rise: Read the tome to learn a Spookyraven skill if available, or gain goal stats, otherwise skip (can override to gain recipes). Fall: Same, minus the Spooky skills.
- Haunted Pantry -- With an unlit birthday cake as a goal, start the Baker mini-quest, otherwise skip it.
- Hidden Apartment Building -- If Thrice-Cursed, fight the boss if you still need to, otherwise relocate lawyers if you haven't, otherwise get more cursed if you still need it, otherwise skip.
- Hidden Bowling Alley -- Buy a bowl of scorpions if you have meat and aren't in Fistcore.
- Hidden Office Building -- with a complete McClusky file, fight the boss, otherwise get the boring clip if you need to, otherwise fight pygmies for goals (or file pages), otherwise skip.
- Hidden Park - Dumpster dive for the antique machete or goals of bowling balls or doctor clothes, otherwise relocate janitors, otherwise skip.
- Hidden Temple -- if you have choiceadvs or the Nostril as a goal, use a stone wool if you have one. Such Great Heights: gain the Nostril if you lack it, then 3 adventures, then goal myst stats. Fitting In: head to the heights to get a Nostril if you lack it, otherwise head to the Heart to unlock the Hidden City, otherwise show in browser.
- Hobopolis Town Square -- if you don't have a binder, automatically gets one if you have enough nickels; otherwise skips the adventure. Skips the marketplace if you don't have a binder equipped or if you have hobo nickels as a goal, otherwise shows the marketplace in the browser.
- Ice Hotel -- Fill your bucket by 15% if on a quest for Walford, otherwise raid the hotel room if you haven't yet today, otherwise get cocktail ingredients (can override to skip).
- Island Barracks -- Explore the entire Hacienda!
- Kegger in the Woods -- gets orquette phone numbers if you have them as a goal or have less then 20, otherwise turns them in for goodies.
- Knob Barracks -- ignores the footlocker if you have the guard outfit, otherwise completes the outfit.
- KOLHS Locations -- Sit with the appropriate group at lunch.
- Madness Bakery -- Meet and fight the Cake Lord, then if you have the ingredients get an epic tart, goal bagels, or mainstat myst. After completing the Armorer's quest, can be overridden by anything.
- Massive Ziggurat - With 4 triangles, fight the final Protector Spectre; otherwise, skip.
- Mer-kin Colosseum -- not a choiceadv, but useful: automatically equip the Mer-kin weapon which the next monster will be vulnerable to. <-- currently commented out
- Mer-kin Elementary School -- Get goal sawdust or cancer sticks, otherwise fight the monsters.
- Mer-kin Library -- with full vocabulary skill, learn clues.
- Mer-kin Outpost -- Fight the appropriate monster based on who dropped your lockkey.
- Mob of Zeppelin Protesters -- For the semirare/clover adventure, choose your most effective method of scaring away protesters.
- Octopus's Garden -- if you have a sea fruit/vegetable as a goal and have both a seed packet and green slime, equip the straw hat and plant seeds. Otherwise, skip planting seeds.
- Old Landfill -- Get goal items, otherwise set choices so that you complete your junk junk, default to fighting sprites.
- Outskirts of the Knob -- completes cake quest if you have the unlit birthday cake, otherwise gets a random item if you have "kiss the knob apron" as a goal, otherwise enters combat.
- Overgrown Lot -- Get flowers for Doc Galaktik, then get primestat moxie, otherwise food if you can eat, otherwise drinks. Once you've completed the quest, can be overridden by anything.
- Palindome -- gets a Ye Olde Navy Fleece if you lack one, otherwise skips the adventure.
- Penultimate Fantasy Airship -- gets a bronze breastplate if it's a goal and you lack one. Otherwise, skips the adventure. Gets a model airship if you haven't completed quest, otherwise enters combat against a MechaMech if it has goals, you're in BIG!, or its stats are better than the stats you'd get from the stat choice. Otherwise, chooses chests if they are a goal or have been set manually. Otherwise, gets stats.
- Primordial Soup -- not strictly a choiceadv: BBB attempts to maintain three diverse base pairs in your inventory.
- The Road to the White Citadel -- If you haven't yet cleared enough burnouts, you have the ingredients for an opium grenade, and you don't already have one in inventory, create one. This combined with SS throwing them will facilitate speedier clearing of the zone.
- Rowdy Saloon -- Cheat with a pocket ace if you have one, otherwise, cheat with as many sleeve deuces as possible.
- Secret Council Warehouse -- Use a warehouse map page if you also have a warehouse inventory page.
- The Shore, Inc. Travel Agency -- Take goal stat locations, or default to your primestat. Buy any goal items you have the scrip for.
- Skeleton Store -- Complete the Meatsmith's quest, then if you can get a skeleton key (reserving the one you'll need for the tower) open the chest, otherwise get primestat muscle, otherwise get a little meat.
- Sleazy Back Alley -- Accept Harold's hammer quest.
- Sonofa Beach -- This is not exactly a choiceadv, but should be noted: if you have Pulverize and only one goatskin umbrella or wool hat in inventory (and they are not goals), smashes them before continuing, as per this suggestion by Bale.
- South of the Border -- tries for a poultrygeist if it is a goal or if you lack a sombrero. Otherwise, skips the adventure.
- Spooky Forest -- Navigates the choice adventure tree for quest items regardless of goals in this order: mosquito larva, then tree-holed coin, then Spooky-gro fertilizer, then temple map, then spooky sapling. Closets some of your bar skins before you visit the bar hunter guy.
- Spooky Gravy Barrow -- fights Felonia if you meet the necessary requirements (inexplicably glowing rock, spooky glove equipped, more than 2 adventures remaining); otherwise, skips the adventure.
- Tavern Cellar -- with enough elemental damage, make the correct choice vs. the rats.
- Twin Peaks -- Sets the correct choiceadv path depending on your preparation. If you are not prepared, sets the choice back to "Show in browser".
- VYKEA -- Fill your bucket by 10-15% if you're on a quest for Walford, otherwise get a hex key if it's a goal or it will help you get bolts, otherwise raid the lounge for gift certificates, otherwise raid the cafeteria for tasties, otherwise get a rune (can be overridden to skip).
- Waste Processing -- Use handfuls of juicy garbage to help you clear the zone. Also, equip a bugbear communicator badge if possible.
- Whitey's Grove - Gets goal cake/rice/white picket fence/wine/mullet wig (will also get the mullet if it can still help with the Castle); otherwise, gets stats.
Mercenary Mood originally began as a simple script to manage my combat rate modifier for me as I played, but over the years it expanded to handle more modifiers besides just combat rate. Down the road I'd like for it to be able to handle nearly all ascension-relevant modifiers, but I made a promise to release this script by today and gosh darn it, I'm keeping it!
Presently, MM has support (in varying degrees of completeness) for maintaining all the modifiers listed in the mm_modifiers setting: Combat Rate, Monster Level, Initiative, Item Drop, and Meat Drop. These are some of the most important modifiers to maintain during a run so I've started with them. MM will only maintain the modifiers listed in that setting, so if you don't like the way MM is handling buffs for a given modifier, edit the setting to remove that modifier. That means you can disable this feature entirely by setting mm_modifiers to an empty string.
- Combat Rate
MM looks at your goals and adjusts your combat rate up or down to help you reach them. Certain locations will always be adjusted up or down, but beyond that, it will adjust your rate down to help you get choiceadvs or autostops, or up to help you get insults or factoids. This means that it's usually a good idea when running MM to set the goals you're after even for relay play.
- Monster Level
MM will try to reach specific targets for some locations (e.g. 82 for the Haunted Boiler Room). Beyond that, it will try to maintain the maximum +ML it can in your current location without going above the safe level you've specified in your threshold setting. Too much +ML can be costly for lower-skilled accounts, so adjust your threshold to be as dangerous as you'd like to be.
For the Defiled Alcove or passing the test in the Twin Peak, MM will buff your initiative accordingly. Beyond that, it will try to maintain a high enough initiative to get the jump on the monsters in your current zone.
- Item Drop
If you have goals set, MM will try to maintain a high enough item drop rate to reach a 100% drop rate for those goals. Another reason to set your goals even for relay play.
- Meat Drop
This is currently only minimally supported. For now, MM will try to increase your meat drop as much as possible in specific locations: The Filthworm Queen, Themthar Hills, Tower Level 2, and the Boss Bat's Lair.
Disclaimer: I'm not as OCD as some of the players around, and will sometimes take a less optimal path simply because the more optimal path is just too much clicking. This mood script was my way of playing much more optimally without micromanaging (my daycount for semi-casual HC runs went down considerably). There may be cases in which it is inefficient or suboptimal. While I'd appreciate your bringing those cases to my attention, I can't guarantee that the script will ever handle all the buffs with the exact level of detail or efficiency you want, so if you want something fine-tuned to all your preferences, you're probably better off maintaining your buffs manually, or with your own script. However, if you'd like a good starting point for buff management, or a huge improvement over "barely managing your buffs at all", this script is exactly what you want.
Everything But the Kitchen Sink
There are a variety of additional little features I've added to MM over the years, while this was my own personal mood script. Since some may prefer to do things differently, as desired I could add settings to make various aspects toggle-able, or you can find the offending line of code and edit/remove it yourself.
- Sewer - Will help ensure you have what's needed for sewer tests.
- Iron Palm - Will run this intrinsic whenever helpful.
- Flavour of Magic - keeps the most effective Flavour going for your current location.
- Clancy - As an Avatar of Boris, MM will manage your Songs and make sure Clancy has the most appropriate equipment for your goals.
- Spheres - As an Avatar of Jarlsberg, MM will make sure you're running the best sphere you can for your goals.
- Parties and Riots - As an Avatar of Sneaky Pete, if your audience reaches +50 or -48, MM will Throw Party or Incite Riot as appropriate. This plays very nicely with SS's handling of managing your audience.
- Walks - As an Avatar of West of Loathing, MM will try to keep you using your best possible walk for your goals. It will also use corrupted marrow to try to keep up Cowrruption as a Cow Puncher in Hardcore.
- Luring Minions - MM will lure minions to try to keep your hoard at a size of 20-100, depending on your level. It will also try to keep up Zombie Chow.
- Thunderheart - In Heavy Rains, MM will always try to keep up Thunderheart.
- Crown of Ed - As Ed the Undying, or even as a regular Joe, if you have the Crown of Ed the Undying equipped, MM will try to keep the best animal piece on there for you.
- Rad-Pro - In Nuclear Autumn, MM will use Rad-Pro when possible to keep you safe from radiation.
- Gremlins - MM will cast Stiff Upper Lip for this sidequest if possible to increase your DR vs. gremlins.
- Scamming Tourists - MM will use How to Avoid Scams in Barf Mountain to increase your meat drops there.
- Mushrooms - If you're on the questESlAudit quest for Taco Dan, MM will use slight-of-hand mushrooms when adventuring in the Fun-Guy Mansion.
- Tot - If your familiar is a Trick-or-Treating Tot, MM will manage your tot's equipment in much the same way it managed Clancy's.
- The Sea - In an underwater location, MM will use your fishy pipe for the free Fishy buff if needed, and try to maintain Donho's Bubbly Ballad. My personal script will use recordings of Donho's if the skill is inaccessible and use fish juice boxes for Fishy after the pipe, but I've commented those lines out for release.
- Barrels - For followers of the Barrel God, MM will use your barrels as you get them, since there may be tasty things in them. It will only do this during a run (if you !can_interact()).
(Settings mentioned above (in this font) can be configured by typing "zlib settingname = value" in the CLI, by editing your vars_myname.txt file, or by using Prefref Plus. See what they are set to currently by typing "zlib vars" -- or "zlib mm" in this case -- in the CLI.)
- Install MM by typing the following in your CLI:
Code:svn checkout https://svn.code.sf.net/p/mercenarymood/code
- Then, add Mercenary Mood to your current mood by typing trigger unconditional, , MercenaryMood.ash in the CLI, or by adding it with an unconditional trigger on KoLmafia's Mood Setup tab.
- To disable this script, remove it from your current mood. However, since you can separately disable/enable almost every component of this script using the relevant script setting, I hope this will be an unlikely event.