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.

Revision: 19929
Track whether chaos butterfly has been used in combat this ascension

Revision: 19930
Breath Out banish is reset on rollover

Revision: 19931
Fix adventure yield for voodoo snuff

Revision: 19932
Add Plumber Power (numeric) and Plumber Stat (string) modifiers. Add Maximizer shortcuts:
"plumber" - equip best plumber tool for your primestat, if you have one, else best plumber tool.
"cold plumber" - equip best flower tool and a frosty button

Revision: 19933
When maximizing, parse boolean modifiers after numeric modifiers but before shortcuts.

Revision: 19934
We expect to not automatically redirect to place.php?whichplace=edunder

Revision: 19935
When automating adventures, automate multi-fights correctly.
When a choiceAdventureScript leaves you in a different choice, allow the script to be
called again on the other choice.

Revision: 19936
Quit automating choice if last option reidirected (to a fight)

Revision: 19937
Fix choice automation with multiple steps and improve adventure validation

Revision: 19938
Apparently the colossal free-range mushroom arrives on day 11, not 12

Revision: 19939
Allow configuring choiceAdventure791 in GUI to "skip adventure" with via option 6

Revision: 19940
Remove choice options for Lets Make a Deal! Add choice options for A Sietch in Time

Revision: 19941
Remove "Unspaded" from notes of campfire foods since, in fact, they have been spaded

Revision: 19942
Restore behavior of synthesize command to allow two of the same candy.

Revision: 19943
The Terrarium has a new format for showing your current familiar

Revision: 19944
When decorating astral gash, fetch the croptype of your garden in order to tell you what
you currently have, rather than figuring it out from the current crop

Revision: 19945
DOn't double URLDecode commands from the Browser CLI window

Revision: 19946
Track whether oil and boo peak fires are lit and actually progress to step3

Revision: 19947
Ed should skip straight to step1 for the garbage quest

Revision: 19948
Don't abort if we are deferring clover protection

Revision: 19949
Initial support for sinistral homunculus and Left-Hand Man.

Revision: 19950
Left-Hand Man can equip offhand items

Revision: 19951
new offhand items from Left-Hand Man

Revision: 19952
Two more offhands from the Left-Hand Man

Revision: 19953
Detect when a fight follows a choice. WHen automating with adv1 or adventure, automate that fight.
This allows run_choice( XXX, false ) to work forrectly in a choiceAdventureScript.
Add ASH function fight_follows_choice(). If you called run_choice() like that and it really did
redirect to a fight, this will be true, and you your script can call run_combat() - although a
choiceAdventureScript probably should not.

Revision: 19954
Better quest tracking and adventure validation for The Bat Hole

Revision: 19955
Left-Hand Man action figure found in mall

Revision: 19956
More dealing with Left-Hand Man's image

Revision: 19957
Creating the Talisman o'Namsilat suffices to "start" the Palindome quest.

Revision: 19958
Fix NPE when you don't have a familiar equipped.

Revision: 19959
redirectedCommand, specialCommand, parameterizedCommand must be decoded twice, since they are submitted by buttons
rather than by direct HTML links

Revision: 19960
Move icrm_extend.js to icrm_extend.1.js
Wiki has changed expected format of search terms

Revision: 19961
Saklad5's Underwater Familiar patch: all "underwater" type familiars have intrinsic Underwater Familiar modifier

Revision: 19962
Having your Left-Hand Man carrying your UV-resistant compass is as good as carrying it yourself

Revision: 19963
Add Murgatroyd diode and enhanced signal receiver and concoction

Revision: 19964
It is "Amun", not "Amum".

Revision: 19965
Check items that stopped working after Crimbo. Grinding sausages needs to retrieve all necessary
magical sausage casings.

Revision: 19966
Modernize Maximizer code up to Java 7

Revision: 19967
Fix Bat Hole adventure validatation

Revision: 19968
If a choice redirects to a fight which is immediately lost and leads to another choice,
return from the choiceAdventureScript which was handling the original choice.

Revision: 19969
Fix quest progression for questM20Necklace and questM16Temple

Revision: 19970
The Artist has both townwrong_artist_quest and townwrong_artist_noquest actions

Revision: 19971
You don't need to look at the plains to see a beanstalk in order to enable
adventuring in the Penultimate Fantasy Airship

Revision: 19972
Require stench resistance to automate adventures in Guano Junction

Revision: 19973
colossal free-range mushrooms are tradeable

Revision: 19974
chipped coffee cup

Revision: 19975
Add Dark Gyffte to paths that have restrictions on HP/MP restoratives.
Add use-limiters to restoratives which are path-limited

Revision: 19976
Only restores have a restoration maximum

Revision: 19977
If the Powerful Glove is accessible, it's buff skills are castable, via magic:
we'll swap it in before casting, if you don't have it equipped.

Revision: 19978
f you don't have a plumber tool that matches your mainstat, look up the best plumber
tool you have regardless of mainstat - and save it

Revision: 19979
If you can recover HP or MP with a restorative, it is not banned in your path

Revision: 19980
When mining at the volcano, don't increment turns_spent in your previous location

Revision: 19981
Fix OOB error with bad parameters to latte command. Add the final latte ingredient,
now that you can obtain it with using the Left-Hand Man

Revision: 19982
If a Fight Page does not contain a monster image, attempt to locate the top of the fight another way.

Revision: 19983
For now, do process tables embedded in tables after other table elements.

Revision: 19984
work boots and fancy boots are an "Item Mutex" set for the Maximizer.

Revision: 19985
work boots and fancy boots are mutually exclusive. If you have one equipped and want to equip the other
choose the same slot

Revision: 19986
Change choice spoiler tor 805/1 to "talk with Gnasir"

Revision: 19987
Arena parameters for Left-Hand Man

Revision: 19988
Remove errant foreach that was interfering with an iterator

Revision: 19989
Capitalization matters in encounter names. Set quest properties when we light
the fires on A-Boo Peak and Oil Peak

Revision: 19990
Further simplification of validation for getting to the Airship

Revision: 19991
Allow // comments in plural string constants.

Revision: 19992
Add ASH function my_garden_type() which returns a string:
pumpkin, peppermint, skeleton, beer, winter, thanksgarden, grass, mushroom

Revision: 19993
Add additional item to campground corresponding to SEED (DAYS)

Revision: 19994
If you don't have a garden, my_garden_type() returns "none"

Revision: 19995
red coin, red plumber's boots, Plumber Jump

Revision: 19996
When clear crop in campground, remove both the crop and the crop seed objects

Revision: 19997
Maximizer does not consider dieting pill as a reasonable spleen toxin in TCRS

Revision: 19998
If you have a Mat Hatrack or a Fancypants Scarecrow equipped, when selecting familiar items to
put on it in the Gear Changer, do not display the non-familiar-item modifiers.

Revision: 19999
Don't include Familiar Effect on biss warnings in the Relay Browser unless
you have a familiar that can wear the item

Revision: 20000
Add more "method chaining" variants of ASH functions where the object you are dealing with comes
before the count.
boolean adventure( location, int count, string filter )
void add_item_condition( item, int count )
void remove_item_condition( item, int count )
boolean buy( item, int count )
boolean buy( item, int count, int limit )
boolean buy_using_storage( item, int count )
boolean buy_using_storage( item, int count, int limit )
boolean put_closet( item )
boolean put_closet( item, int count )
boolean put_stash( item, int count )
boolean put_display( item, int count )
boolean take_closet( item, int count )
boolean take_storage( item, int count )
boolean take_display( item, int count )
boolean take_stash( item, int count )
boolean autosell_stash( item, int count )
boolean hermit( item, int count )
boolean use_skill( skill, int count )
boolean use_skill( skill, int count, target )
boolean equip( item, slot )

Revision: 20001
Very preliminary support for drippy wine, drippy caviar, and drippy nugget
Add _drippyCaviarUsed, _drippyNuggetUsed, _drippyWineUsed properties
Add drippyJuice property

Revision: 20002
More drippy items

Revision: 20003
Coinmaster for Drip Institute Armory. The Dripping Trees. drippy tree.

Revision: 20004
Since the Drip Institute is "not temporary content", I moved the Coinmaster from EVents to Always Available.
drippy tree is not affected by ML

Revision: 20005
Simply quest location checking to use a switch statement rather than a long if-then-elseif chin
Move checking for A-Boo Peak, Oil Peak, and Haunted Billiards Room.

Revision: 20006
KoL says that "drippy" is an OCRS modifier, but "drippy tree" is in Manuel. Cope.

Revision: 20007
Decrement drippyJuice when you encounter the Drippy House on the Prairie choice adventure

Revision: 20008
Both drippy tree and drippy bat have "drippy" as an OCRS modifier, but "drippy"
is part of their name, per Manuel. Ignore "drippy" OCRS modifier.
The Drippy House on the Prairie has anothe choice option which uses up your Drippy Juice.
Deduct one Drippy Juice for each choice other than "9" - Leave

Revision: 20009
drippy shield and drippy snail shell

Revision: 20010
When freeing the king requires resetting skills - Avatar, Heavy Rains, Nuclear Autumn -
check Powerful Glove skills

Revision: 20011
decrement "drippyJuice" when you enter The Drippy Forest.

Revision: 20012
Add drippyBatsUnlocked and drippyShieldUnlocked

Revision: 20013
Add "checkmeat" command which checks KoLmafia's meat drop data vs. the KoL Wiki

Revision: 20014
Improvements to checkmeat command. Believe the Wiki for many - but not all - discrepancies.

Revision: 20015
Personal Meat Drop spading. Elemental Charter Item Drop spading from PeKaJe

Revision: 20016
fix typos

Revision: 20017
Update quest progress in Path of the Plumber for bat, goblin, cyrpt, and trapper wuests when you
defeat the boss. Ditto for Dark Gyffte for the cyrpt and trapper quests

Revision: 20018
drippy plum(?)

Revision: 20019
If mafia prints an ash stack trace then unconditionally echo it to the session log as well. Does not work for ash exceptions that are thrown and displayed by Java. Only lightly tested.

Revision: 20020
drippy plum stuff

Revision: 20021
drippy stake

Revision: 20022
Correct drippyJuice pref if mafia thinks you can adventure but you can't

Revision: 20023
Updated nohookah tag on some status effects

Revision: 20024
Fix check for sewer test items

Revision: 20025
When you set the "currentMood" property, inform the MoodManager.

Revision: 20026
You lose the drippy snail shell when you show it to Jeremy Scientist.

Revision: 20027
For the Red Snapper, KoL tracks "merkin", although we call them "mer-kin"

Revision: 20028
Add _saplingsPlanted property to track how many saplings we've planted in the Arrrboretum today.

Revision: 20029
The Thing in the Basement, its boddy parts, and the Eye skills

Revision: 20030
Fix more monster Meat Drops from spading. scary pirate requires a Wiki Name attribute.

Revision: 20031
If gazing at sky at your getaway campsite does not grant an effect, synchronize properties

Revision: 20032
New Content: something called a "green rocket" is avaialle in he General Store. Today.
Add it to the items you can buy from the General Store.

Revision: 20033
New Content: an item called "reen rocket" is available from the eneral Store on Dependence Day only.

Revision: 20034

Revision: 20035
Only one firework can be used on Dependence Day. Track in _fireworkUsed

Revision: 20036
Add +1 superduperheated metal as a default goal for The Bunbblin' Caldera

Revision: 20037
Add "checkskills" command to compare KoL's skill descriptions with KoLmafia's database
Add "test newskill NUM" command to register a new skill.
Registering a new skill now prints skill modifiers, if it is a passive skill.
Fix four images and a few modifiers for passive skills

Revision: 20038
Any cold resistance is enough to adventure in the post-quest Icy Peak

Revision: 20039
Fix Meat drops for 4 monsters and item drops for 2 monsters.
Invoking Genie from main.php Breakfast suggestions invokes a choice but also requests main.php?bfastXXX.
That should not interrupt choice processing.
When you turn your drippy truncheon into a drippy state, you lose the truncheon.

Revision: 20040
Fix adventure tield of drippy items. Remove duplicate modifier. Update comment

Revision: 20041
Let counterScript be FUNCTION@SCRIPT rather than just SCRIPT. If the latter, function is "main", as before

Revision: 20042
Mechanical Songbird is Fairy Effectivness 1.5, not Fairy 1.5

Revision: 20043
Don't execute toplevel of a counterScript unless you are executing main()

Revision: 20044
Added current_round() function to ASH

Revision: 20045
Fix sausage grinding calculations. Add Arrrbor Day to svnrepo.

Revision: 20046
Add nohookah flag to a bunch of effects, per ikzann

Revision: 20047
An ASH script can define coercion functions for typedefs and records: to_string( VALUE ), for example.
When parsing, compile in calls to those, as apparopriate: assignments, function arguments, return values, etc.

Revision: 20048
ANY_TYPE has a null name

Revision: 20049
FunctionInvocation needs to provide getRawType, just like a FunctionCall

Revision: 20050
Track unaccompanied miner usage

Revision: 20051
Implicit coercion efficiency mods: update param lists in place and search only for MatchType.EXACT
coercion functions.

Revision: 20052
A ternary operator's rawType is the type of its left side.

Revision: 20053
Fix recognition of Hobopolis hobos

Revision: 20054
Track resistance modifiers from Curse of Exposure

Revision: 20055
Support named groups in ASH regex

Revision: 20056
changes from checkeffects and checkitems

Revision: 20057
Update mallprices

Revision: 20058
Bump version to 20.4