The following is an abbreviated version of the Subversion commit message logs. Please keep in mind that these messages are intended for other developers and they take the files which were modified into context in order to limit the amount of verbage. In general, they are not intended for general audiences and should not be treated as "official" documentation -- they are informal and abbreviated, at best.
If you do not understand what something says, try looking at the full version of the revision by following the accompanying link for the revision. The only difference is that the files which were modified will be listed, and sometimes, you can guess what happened from file names (though not always). If you still have no idea what happened, that's okay -- it probably doesn't relate to what you're doing with KoLmafia. ^_~
Furthermore, not everything marked as "fixed" is guaranteed to be fixed, not all changes are guaranteed to have a change. This is due the fact that both time and turns are finite and only a limited number of things can be tested. Some changes go in untested, assuming they would work, when they actually don't due to erroneous assumptions; alpha testers occasionally will be able to give feedback, but it's not always possible.
For example, if you read the revision logs for what changed between 10.2 and 10.3, the plus sign choice adventure was meant to get a use link. Something as seemingly insignificant as KoL using two spaces instead of one space in the sentence "It's actually a book. Read it." would mean the change didn't actually work -- anyone can verify that, in fact, the change didn't work for this very reason. If you ever encounter something like that, a non-accusatory mention of it (non-accusatory meaning anything that neither implies "ZOMG FALSE ADVERTISING" nor "You guys said this was fixed, but...") somewhere will usually result in the problem getting addressed.
Finally, if you've got a bug to report, make sure you read up on how to post a detailed bug report. While the rules outlined apply specifically to bugs related to scripting, many of them are applicable to KoLmafia bug reports in general. Most importantly, I hate the words "annoying" and "frustrating". Never use them when describing a bug/feature. Ever. Thanks. The abridged revision logs follow.
And I think that's all outstanding Food/Booze spading . . .
Fix directory traversal exploit
Now we can handle two effects with the same name, do so for Chocolate Reign.
DebugDatabase.checkModifiers only evaluates expressions for numeric modifiers
Remove goals/monster drops for old version of Galaktik quest.
If you have C<i>bzzt</i>er the Grisly Bear olfacted, the charpane decoration
should retain the italics rather than URL encoding the angle brackets
Essence of Bear
First stab at support for Clan Lounge Floor 2
Fix pattern to allow detecting swagger earned during "bear season"
Some Mayo Clinic support (parsing workshed, shop support).
Mayo Level affects Sphygmayomanometer stats. Using mayo increases Mayo Level. Handle some mayo helper messages. Handle inventory changes using Mayo Minder.
The "pvp" command with no arguments will list available stances and their
associated option number. You now can now specify a stance by either name or
number. The "pvp" command now requires you to choose a stance, since it can
no longer choose a reaosnable default based on your stats.
When parsing stances, allow for the fact that the last one you used is
selected in the dropdown.
Initial support for Map to Kokomo
The "attack" command now requires stance=<name or number> as the last part of the command
Do fuzzy matching of stance name for "pvp" and "attack" commands
Add ASH function: int [string] current_pvp_stances()
More Kokomo Resort stuff
Handle parsing of the miracle whip in the shop
Track defeat of Wart Dinsey, use of Hunger Sauce and Brain Preservation Fluid. Missing effects for Dinsey consumables.
You can walk away from configuring the Mayo Minder
Allow queuing of Mayo in Food Manager. Mayo de Mayo added. Mayo Minder now 99 meat.
Kokomo monsters and The Cocktail Shaker.
Fix my_basestat for high stats.
newly-hatched mayonnaise wasp and unappetizing mayolus
Add Mayo Pump
Morninja effect and plural of How to Avoid Scams
Hopefully fix detection of Mayo Clinic on startup by following redirect. Untested.
From podcast, Magical Battery is a 1% drop
Wild Seahorse rejection rate 80%.
Fix Rotten Memories data
Handle consumption helpers that are automatically consumed by Chez Snootee
Fix purchasing from Big Brother in the Relay Browser
Initial data for Baby Mayonnaise Wasp
Fix familiar id for that familiar
Don't take an NPE when registering an unknown familiar.
Bricks aren't gift items
Fix initial workshed parsing when Mayo Clinic installed.
Account for eating with Mayonex in mayoLevel.
Add a plural
Since faxbot hasn't logged in in a while, stop checking it for now
Track which Mayo you have in your mouth (preference mayoInMouth).
Revert FamiliarData.toString so the familiar (none) doesn't display a weight.
Add a couple of adventure failures
Refactor UseItemRequest.parseConsumption to only remove the item being used
after we know for sure it was consumed.
Delete empty method setFrame and thereby eliminate dependency between BuffBotHome and BuffBotFrame. On behalf of ajoshi @ kolmafia.us
With autoCraft disabled, do not automatically make a Wand of Nagamar
You can walk away from the Employee Assignment Kiosk
ConcoctionPool.nonitems must key on canonical name, since it is always given
such a name to find.
Ascension Path #24
Plurals for mayolus
Recognize monsters in One Crazy Random Summer
Move monster name recognition so that semi-rare monsters will be recognized
Curse of Randomness
Remove debug text
Add a modifier
Simplify crazy summer parsing by mapping attributes via a HashMap
the Wand of Nagamar is no longer untinkerable
Provide StringUtilities.leetify method and ASH string leetify( string ) function
to garble strings.
modified stats can now be red or blue in the charpane
Add dice rewards
Recognize 1337 monsters
Strip crazy random monster attributes after we log the encounter.
Thwaitgold caterpillar statuette
Add "Random Monster Attributes" modifier as provided by dice items and the
Curse of Randomness status effect. Add random_attributes proxy field to ASH
$monster type. Munge random attributes from monster names is the Random Monster
Attribute modifier is > 0, not only if current path is One Crazy Random Summer.
Save random monster attributes. When we set the "last monster", clone the
MonsterData and insert the last attribute array and adjust attributes
The Cocktail Shaker is reusable
Munge monster elemental alignment appropriately given random attributes
Correctly log stance when you do a PVP attack
Fix monster image name typo
Add shield power for fake washboard. Add uninteresting mayolus to fullness.txt
When checking modifiers for items that grant an effect that requires the effect
id to disambiguate, compare only effect name. Using a Kokomo Resort Chip, not
the Golden Kokomo Resort Chip, will remove 100 of them at once
New crazy modifiers
Use untranslated random attribute names when munging MonsterData
DinseyLandfill Maintenance Tunnel unlock encounters are now autostops
FIx inventory when you fold Loathing Legion items
Fix recognition of morphing monsters
Refactor random monster attribute handling to put most code into MonsterData
Save user-visible attribute names in ASH-visible array of random attributes
When logging Effects that are gained or lost, print effect name (duration), as
we used to, rather than letting AdventureResult decide how to format it.
When removing random attributes from monster names, the the word "The " appears
in front of the random attributes, it is not part of the monster name. Remove it
so that we can de-leetify the real monster name, if necessary.
Prune out forms from HTML tree before processing fight.php HTML
When processing tables, process children, if necessary, before processing
embedded tables, not after processing such.
When logging the HTML tree of fights, omit scripts.
"tiny" divides a monster's HP by 10
Adjust a few more monster stats depending on random attributes
Fix data type of the .random_attributes monster proxy field
The Tasmanian Dervish is now just Tasmanian Dervish
Fix recognition of Spirit of New Wave. Brick Mulligan is Scale: 5. dancin'
Doc Galaktik's Invigorating Tonic is multiusable
If portable Mayo Clinic is in your workshed, add it to KoLConstants.campground
consult scripts now really do accept a "monster" value as the second parameter.
This will be the current monster you are fighting, as adjusted for random
attributes. Note that if your consult script says it wants a string for the
second parameter, you will get the monster name, just as before, and you'll
need to get the actual monster via last_monster().
Choice spoiler for the "search shelves" option of the Great Overlook Lodge
cannot include Item Drop from your familiar.
PeKaJe claims that when KoL sends crossorigin="Anonymous" down to the Relay
Browser with image tags, some browsers don't display the images right. I was
unable too verify this, but I see no harm in removing that directive, so, do so.
Provide dummy entries for "Ed the Undying" and all the variants of Your Shadow
in monsters.txt so that we will store 1337 versions of them all and can
unleetify them as needed.
Additionally, the Shadow variants start with "a ", which also screws things up.
Fix effect id (and spelling) of Cunctatitis
Add "test leet NAME" command to check if KoL monster names get translated
successfully from their 1337 versions.
For all remaining monsters disambiguated via consequences.txt that do not have
a KoLmafia monster with the identical name as the KoL name, add a dummy entry
to monsters.txt so that they can be detected when they are 1337
"ghostly" grants 90% physical resistance to a monster which is not already
New random modifiers
Sometimes KoL starts the 1337 monster name with an unnecessary "the"...
Don't take an NPE when getting health of an unknown monster. Add a couple of
KoL monsters that we always disambiguate via image but want to retain the
original name for, for 1337 purposes, are now marked DUMMY. ASH's monster
object now has a boolean "dummy" proxy field, although you will only rarely
see such a monster; they are no longer registered in the list of all
monsters - and hence do not appear in $monsters. However, if you meet an
invisible 1337 monster that we would normally disambiguate via image, the ASH
last_monster() will be a dummy monster.
When the mayo wasp deposits an egg in your abdomen, log to gCLI and session log
It is "the Spaghetti Elemental" in the monname span, so that is what we have to
match on in consequences.txt
"test load HTMLFILE" followed by "test aagain" will print the Adventure Again
URL from that page.
More physical resistance
Arena parameters for Baby Mayonnaise Wasp
Add wiki links to the function names in ashref output
Add cloned and unlucky monster modifiers
Add support for items that are "(automatically equipped)" in Spelunky.
DOn't give such items a use link.
in consequences.txt, include pastamancer and disco bandit Nemesis variations
without the "the" so we can disambiguate versions of them with random modifiers
yellow puck with a bow on it, blue pumps, kill screen, Ms. Puck Man
Since KoL OCRS ascension rewards grant "+1 Random Monster Modifier", KoLmafia's
modifier is not called "Random Monster Modifiers" rather than "Random Monster
Add "ocrs" as a modifier shortcut for "Random Monster Modifers, -tie"
Location name changes
XXX Pasta of Peril -> XXX Pasta Spoon of Peril
Fixes to Epic Weapons. The Unknown Pastamancer.
Add The Unknown Seal Clubber
Add recipe for Golden Kokomo Resort Chip
Add plural. The Unknown Disco Bandit and The Unknown Accordion Thief.
The Unknown Tomb
Add Unknown Turtle Tamer & Unknown Sauceror
Fix location of Evilometer in Cyrpt in relay browser
Don't throw an error when checking turns_spent before logging in. Instead, return -1 since that can never be a valid value.
Add boolean [familiar] favorite_familiars(), which returns your favorite familiars and whether they are currently usable
The ASH steal() function will now always submit fight.php?action=steal, even if
KoLmafia knows you can not currently steal in this fight.
The black cloak has some power now
Don't require a Mace of the Tortoise in aftercore
When maximizing, if you have a card sleeve, consider currently inserted card.
Blood Sugar Sauce Magic has different effects depending on class, restrict obtaining effects based on class. Maximizer checks for current effect id rather than name. Check for constraints based on effect id rather than name.
Track consuming grains of salt as _saltGrainsConsumed.
In modifier_eval, allow skill() to accept a skillId in addition to a skill name
When you find a fat loot token, provide a navigation link to the vending machine
If a gladiator skill unlock hasn't been recognised, catch up by recognising it in fight skill dropdown. Untested.
After you have selected your new class after returning the MacGuffin in an
Ed run, call KoLCharacter.liberateKing to enter aftercore correctly, including
When Ed visits his book or his servants, see what we can deduce about your
current level of edPoints, in order to correct for not having set them
Track kitchen contents in preferences (hasXXXX), rather than just from parsing kitchen each session. Should help in Ed where kitchen can't be parsed. Lightly tested.
Fix choice spoilers for A Wicked Web. Retrieving the lolmecidol counts as Gold
Make cellar.php?action=autofaucet log correctly. Use that action when automating
the Tavern Cellar, to eliminate unnecessary server hits & redirections.
Fix 15901 so that turns_spent actually works again
plurals of some dice items. deal with clingy rats in the Tavern Cellar
decode character entities before leetifying string
When "The ghost has arrived" in Spelunky, that is an adventure failure.
Correctly parse Turns out of the Spelunky charpane when joke book equipped
Log resting at Base Camp, fighting ghost, visiting Altar, and Exit
Ignore looking at boards.
Fix expected gold gain in a couple of noncombat choices
Fix a couple more Spelunky noncombat spoilers
Fix another Spelunky spoiler. Actually automate the multi-fight from a clingy
rat in the Tavern Quest script
Add Familiar Script. This script will run after changing familiars, before automatically changing familiar equipment. The script should have a boolean main() function. Returning true will cause normal familiar equipiment switching to be skipped, while false will lead to it running after the script returns.
Add familiarScript to defaults
When we timin after a GET request, replace the password hash with the new one.
Fix a Spelunky spoiler
Handle askew monsters. frozen monsters are cold aligned
When you choose a perk after a Spelunky game, resetAfterLimitmode.
When you are all done with a Spelunky game, provide a link to read another
Tales of Spelunking.
Don't give a "Read another Tales of Spelunking" link if you have none.
Fix some Spelunky spoilers
Add "test monster" command to parse the monster out of the saved HTML and
save it where ASH's last_monster() function will fetch it.
the crappy waiter disguise gives 5 turns of the crappy disguise, rather than 1
Stats for yellow pixel consumables (from wiki)
Add 27 avatar potions
Remove extra whitespace in test string for Stella, the Turtle Poacher
Scaling monster caps can now have expressions. Cap for Toxie Beastie is raised to 22222 when Safety Protocols are loose.
2 more avatar potions. DD monsters always drop an item.
Nemesis quest tracking, untested. Old steps 1 and later are now 4 higher.
Examine the choice buttons of the Tomb of the Unknown Your Class Here do
detrmine which is the correct answer to the riddle. Provide spoilers.
Add mayosoak command, which is also considered by Maximizer.
When quitting from KoLmafia, we do not need to construct a Login frame.
When logging out, dispose of GUI within Swing Event Thread
Add three more avatar potions
Can only queue one Mayo in a row. Account for Mayodiol in queued Fullness. Track Mayo Minder setting (mayoMinderSetting), but we don't do anything with it yet. Add autoFillMayoMinder setting, but we don't do anything with it yet.
Must return (empty) spoiler array for choice 1049, evn when it is not the riddle
Be defensive when retrieving spoilers to allow for there being none
Fix detection for step8 on Nemesis quest (untested), to stop it triggering on started text.
Fix standard check for mayosoak
More avatar potions
Clarify the choice adventure names and option description for various choices
in the Daily Dungeon
When we notice a new item on a user's profile - equipment or worn by familiar -
Use link for check to the meatsmith. Take two.
Support for jewelrycrafting changes
New yellow pixel items
If we are running with a GUI, always construct a LoginFrame when we exit, even
if we will not be allowing another Login
Rainbow pearl pulverization
Add a plural
When we look at a display case, register any unknown items we see.
More updates for jewelry changes
Arena parameters for Puck Man & Ms. Puck Man. Adventure failures for zones in
Dreadsylvania after the boss has been defeated.
Arena parameters for Miniature Sword & Martini Guy. Adv range for pixel daiquiri
Miniature power pill is now multi-usable
Add knowledge of familiar drop counters to FamiliarData, inspired by soolar.
New ASH proxy fields for $familiar data type:
drop_name = short name of the thing that drops
drop_item = if it is a single item, the $item. Otherwise, $item[none]
drops_today = how many things this familiar has dropped so far today
drops_limit = the maximum number of available drops from this familiar today
Miniature Sword & Martini Guy drops mini-martinis. Track in _miniMartiniDrops
Add _powerPillDrops. Slightly refactor familiar drop tracking since Puck Man limits vary.
When building daily deeds for drop familiars, if a familiar shares a tracking
setting with one one we've already shown (as in Puck Man and Ms. Puck Man),
don't show the duplicate.
Don't increment chessboardsCleared past 50
When we get an IOException retrieving server response, print the error message
using KoLmafia.updateDisplay, rather than RequestLogger.printLine, so that a
request sequence doesn't simply print "Requests Complete" and obscure the
message. This means that if you get a 504 Gateway Timeout while logging in,
KoLmafia will let you see that, like a browser, rather than mysteriously failing
to log in.
You cannot pickpocket in Spelunky. Once you've defeated Yomama, going to his
throne room is an adventure failure.
In Bee Hates You, maximizer shouldn't suggest familiars with a B in their race. Untested.
Once you have beaten LOLmec, his lair lies lempty.
Fix a few things revealed by checkitems
Bump version to 17.0