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: 17423
clear storageMeat when changing characters

Revision: 17424
Move CS King liberation to PostChoice2 to match Ed, untested.

Revision: 17425
Add 1 wet stunt nut stew as a built-in (optional) goal for the Palindome

Revision: 17426
Mark "a plaintive telegram" as use-type "none", since you can't actually "use"
it; having it in inventory simply lets you adventure in the "Investigating a
Plaintive Telegram" zone (474).

Revision: 17427
"You lose your temper" is not actually a stat gain/loss. It is something you
sometimes see when fighting a chatty pirate.

Revision: 17428
f you do "lookup familiar XXX" and XXX is not a familiar, don't look it up in
the Wiki.

Revision: 17429
When unequipping familiar equipment, log "Familiar unequipped" rather than
"Familiar equipped".
The "equip" command with no parameters lists your current equipment. (It was
intended to work that way, but it passed the wrong argument to ShowDataCommand)

Revision: 17430
Fix refresh equipment command. When stealing equipment from your current
familiar, go through inv_equip.php, not familiar.php.

Revision: 17431
Every 1,000 Meat (or fraction) pulled from Storage while in ROnin counts as one
of your daily pulls.

Revision: 17432
Setting "lastDMTDuplication" is the ascension number where you last duplicated
an item in the Deep Machine Tunnels.

Revision: 17433
Include basement Helpers on Stat levels

Revision: 17434
Save/restore outfit checkpoint around worthless item retrieval

Revision: 17435
Add psychokinetic energy block to MPRestoreItemList

Revision: 17436
Parallelize up-to-dateness check during svn update, courtesy of xkiv.

Revision: 17437
When listing your equpment using the "equip" command, you have a "Back" item,
not a "Container" item.

Revision: 17438
Add "GHOST" attribute in monsters.txt for all ghosts. Add "ghost" as a "subtype"
of a monster. Make all subtypes accessible to ASH via a proxy field of $monster:
boolean [string] sub_types

Revision: 17439
Add a few monster IDs from WIki.

Revision: 17440
Give more specific error messages when an item cannot be found using a
filtered list of items.

Revision: 17441
ASH storage_amount() now counts both storage and free pulls

Revision: 17442
Track acquisition of daily Hermit Clover in ZombieCore (_zombieClover). Trapper unavailable in ZombieCore. Untested.

Revision: 17443
If Tonic Djinn used or you don't use a wish, item is not used up. Untested.

Revision: 17444
Detect successful use of Western Slang books

Revision: 17445
Choice page for decorating your Crimbo Shrub can't have stationary buttons.

Revision: 17446
Soup up "test crop" command to allow specifying current crop and test crop.
Fix crop "is better than" test to only include count when comparing identical
crop type

Revision: 17447
Add Batfellow specific Stationary Buttons as appropriate.
Batfellow Coinmasters are only available when in appropriate part of Gotpork

Revision: 17448
Add "drop" as a familiar category and add it to know familiars that drop items
Soup up "checkfamiliars" to look in your terrarium and compare KoLmafia's
familiar categories with what KoL reports

Revision: 17449
Add a few familiar powers:
meat1 - drops Meat during combat
stat2 - extra stats during combat
stat3 - extra stats after combat

Revision: 17450
Add 'otheRevision 1' to Sugar Fruit Fairy and Jack-in-the-Box. Soup up checkfamiliars
to optionally show 'variable' powers

Revision: 17451
On the familiar picker in the Compact Side Pane, list all familiars who are
type "drop" in the "Special Drops" menu, not just those which are liited per day

Revision: 17452
The Mini Hipster is configurable

Revision: 17453
And so it begins. Advent calendar 2016 items.

Revision: 17454
Experimental ASH feature: allow X++, X--, ++X, and --X with their normal
meanings: post-increment, post-decrement, pre-increment, and pre-decrement.

Revision: 17455
Initial support for Gingerbread City

Revision: 17456
For now, don't assume that seeing the gingerbread ciy in the mountains unlocks it permanently

Revision: 17457
Some Gingerbread City items. Added "Sprinkle Drop" as supported modifier.

Revision: 17458
Some more gingerbread city stuff.

Revision: 17459
Fix a typo

Revision: 17460
Add Java-style "for" loop:
You can have 0 or more INIT statements, which can be of the form
X = EXP (where X is declared already) or
TYPE X = EXP (whre X of type TYPE will be declared for use in the BODY scope).
You can have 0 or more ITERATE statements, which can be of the form
X++ or X--
++X or -- X
X OPER EXP (where OPER can be =, +=, -=, etc.
BODY can be a single statement ending with a ; or a block enclosed in {}, with
no ; at the end, just like and other loop.
break, continue, return, or exit are allowed within BODY, just like any loop.

Revision: 17461
If you omit the CONDITION in a Java-style for loop, it defaults to true

Revision: 17462
Fix crop progession in Beer Garden

Revision: 17463
run_combat( FILTER ) did not work; it would call the filter function once but
never submit a request, returning mid-combat. Fix this.

Revision: 17464
Brain Trainer game and laser eye surgery kit can only be used once.
Give error message if "," in initializer r incrementer sections of a Java-style
for loop are not followed by an identider.

Revision: 17465
A bit more Gingerbread City

Revision: 17466
Cap and Floor for Thanksgolem

Revision: 17467
There is more than one URL that can be used to pull everything from storage. Maybe handle the 504 error from the other URL now.

Revision: 17468
Gingerbread items, etc., from mall

Revision: 17469
More ginger stuff

Revision: 17470
Gingerbread skills

Revision: 17471
get_clan_rumpus() now returns int [string] map of furniture names.

Revision: 17472
Only remove gingerbread cigarette when it is effective, fix missing image in monsters.txt.

Revision: 17473
When KoLmafia submits a battle action that ends up being ignored by KoL, KoL
will respond with a response indicating that the combat round has not advanced.
When KoLmafia detects this, it says "KoLmafia thought it was round 3 but KoL
says it was round 2" (for example)> In this case, reset our idea of the round to
agree with KoL, so that subsequent rounds will not continue to generate this
Improve logic used to decide which item to sling in combat to identify bang

Revision: 17474
Gingerbread items

Revision: 17475
If a combat filter returns an action which is invalid, KoLmafia calls it again
with the same round number. Infinite recursion. It used to call it with round
number -1, which doesn;t seem right, but which avoids that issue. Until I figure
out the "correct" solution, revert to previous behavior.

Revision: 17476
Gingerbread Moneybag

Revision: 17477
Add drops to DMT monsters. Add boolean can_still_steal() function to ASH, which
calls the same function that Stationary Buttons use do decide whether to
enable or disable the "steal" button

Revision: 17478
Track Civic Center unlocks. Recognise unlocks of Sewer and Retail from visiting City. Remove Rats and Pigeons above ground when Sewer unlocked.

Revision: 17479
Remove sprinkles when bribing the clerk

Revision: 17480
Revert the previous commit, because the commit before that already handled it

Revision: 17481
Sewer monsters

Revision: 17482
Add item

Revision: 17483
gingerbears gives adventures like Uncle Hobo's epic beard

Revision: 17484
Add Licorice Rope skill. Add Sprinkles to gingerbread monsters. Show base drop
in Relay Browser and Encyclopedia. add min_sprinkles and max_sprinkles as
$monster proxy fields

Revision: 17485
Add Sprinkles to Location Details. In both Location Detals and in the Monster
data displayed in the Relay Browser, take Meat Drop and Sprinkle Drop into

Revision: 17486
When we adjust current round to agree with KoL, also correspondingly adjust
preparatory rounds to allow us to continue in the CCS as if we had not made
that adjustment.
Don't show floating point in Relay Browser for Met and Sprinkles drop/

Revision: 17487
Add Chocolate Lab, correct Sprinkle Drops in Civic Center

Revision: 17488
For working out modifier values, treat Comma Chameleon as the familiar it is impersonation. Only works with Relay Browser at present as API does not show which familiar it is impersonating. (Have logged request for this with TPTB)

Revision: 17489
Some more monster stat spading in Gingerbread City.

Revision: 17490
Exit from choice adventure if timespinner prank fails to perform the prank
--Thi line, and those below, will be ignored--
M src/net/sourceforge/kolmafia/session/
M src/net/sourceforge/kolmafia/textui/command/

Revision: 17491
Add "steal" ("pickpocket", "pick pockey") as options to the "autoattack" command
Add set_auto_attack( string ) ASH function to autoattack by name, not skill #
Hopefully fix round synchronization and autoattacks

Revision: 17492
Some places where wandering monsters can't show up

Revision: 17493
Don't report "unhandled redirect" for a few cases we know are OK.
The "autoattack" command with no parameters prints your autoattack value.
With a parameter, it now also prints that, rather than giving no feedback.

Revision: 17494
Remove items when buying things at the Civic Center at midnight

Revision: 17495
More items

Revision: 17496
Variables in a Java-style For no longer need an initializer; if you omit on,
they will be initialized with the default value for their data type.

Revision: 17497
Allow standalone blocks - { COMMAND* } - in ASH. Simplify a lot of the ASH
parser with a parseBlockOrSingleCOmmand method.

Revision: 17498
If a combat filter returns an action that is enclosed in "", submit that (with
the quotes removed) as a KoL macro.

Revision: 17499
Remove erroneous check for a function with no body

Revision: 17500
When Macrofying a CCS section, do everything up to "consult" (or "delevel" or
"twiddle"), let FightRequest execute that, then with the troublesome action,
and then continue to macrofy everything after that.

Revision: 17501
Hopefully handle removal of rest of items during non-combat choices for Gingerbread City.

Revision: 17502
Arena parameters for Chocolate Lab after a quick learning strengths.

Revision: 17503
Gingerbread Best outfit pieces

Revision: 17504
Correct Sprinkles drops I changed earlier (turns out there is a bug and one of the sprinkles bonuses I had doesn't work. Will work out which tomorrow.

Revision: 17505
Remove the gingerservo when fighting GNG-3-R

Revision: 17506
If your CCS or combat filter asks to use items, if it speciacally says that the
second item is ""none", do not funksling

Revision: 17507
Experimental: ItemDatabase keeps a set of all item ids for each item name.
At the moment, that is just the ancient amulet and Staff of Ed

Revision: 17508
Add ItemDatabase.getExactItemId as a synonym for ItemDatabase.getItemId( name, 1, false)

Revision: 17509
spiritual food & drink

Revision: 17510
Pulling the Noon Train station lever makes Alligators bigger (and drop more sprinkles).

Revision: 17511
New items that grant skill link to it in their descriptions.
New skills that grant an effect link to it in their description.
Follow such links and register the new skill and the new effect

Revision: 17512
Don't remove the gingerservo twice

Revision: 17513
Fix item acquisition of multiple items where the plural is created by simply
adding an "s" to the name.

Revision: 17514

Revision: 17515
Fix power of sprinkle-begging cup

Revision: 17516
Hopefully handle Gingerbread banishes. Not tracking usage as no limit known.

Revision: 17517
Untested, remove spare chocolate parts and broken pocketwatch only when successful.

Revision: 17518
Untested, recognise success using Holiday Fun book after the first.

Revision: 17519
Allow omitting second item to Funksling as well as explicitly allowing "none".

Revision: 17520
Just as for items, keep track of all ids associated with (duplicate) effect

Revision: 17521
Uncle P's no longer seels inert eldritch matter

Revision: 17522
Source terminal files can be zapped

Revision: 17523
pumpkin spice candle, chakra sludge, and negative lump are items.
Your Bung Chakra is an adventuring zone. crimbo16BungChakraCleanliness is
a setting. When you defeat a monster in Your Bung Chakra, set cleanliness
based on result text of the fight.

Revision: 17524
Monsters. Powers. Monstrous Powers. Powerful Monsters.

Revision: 17525
Tracking for new subway line unlock in Gingerbread City. Scaling spading for Crimbo opponents.

Revision: 17526
If you finished the fight, but nextAction is "abort" (beacuse the KoL macro
aborted, but you won the fight anyway, for example), don't stop automation.
Allow getting specifying an item or effect constant in ASH which contains a
"[" without quoting the "[".
New Crimbo 2016 and Gingerbread City items and effects.

Revision: 17527
Your Guts Chakra, monsters, items, crimbo16GutsChakraCleanliness setting, etc.

Revision: 17528
Fix typo

Revision: 17529
gingerbeard is Single Equip

Revision: 17530
Don't increment spelunkyWinCount when fighting the ghost

Revision: 17531
ASH will issue "friendly warnings" for $item[], to_item(), $effect, to_effect()
when the specified item or effect name matches to multiple items/effects. It
tells you which one it will use (the one with the highest ID) and lists all
of the possibilities.

Revision: 17532
When writing/reading strings to a file using map_to_file and file_to_map, must
escape/unescape newlines, tabs, and backslashes

Revision: 17533
Robustify (correct) string escaping/unescaping.

Revision: 17534
to_item and to_effect of the string representation of an integer is never

Revision: 17535
Your Liver Chakra and what comes with it

Revision: 17536
Zap groups are configured with full item names

Revision: 17537
Crimbo store support as concoction. Spading for store food/booze. Minor other corrections.

Revision: 17538
Make sure that $item and $effect values always have a name

Revision: 17539
Tracking for dropping off Negatives in Gingerbread City.

Revision: 17540
When parsing faxbot config files, if XML parsing throws an error, display
the error message in addition to saying that we could not read the cnfig file.
When displaying monster names in the Fax Request Frame, unescape character
entitiesin the name for a pretty display. (Leave command unmunged).
Return EFFECT_INIT for any ASH effect with id == -1

Revision: 17541
Fix concoctions that use Crimbo 2007 "rock"

Revision: 17542
Untested, quest log entry for Artist quest

Revision: 17543
Give "friendly warnings" when read ambiguous items & effects via file_to_map.
Note that these will never occur in maps created by map_to_file, since such
maps always include the (unambiguous) item or effect id, but hand-crafted
data files are not necessarily so strict.

Revision: 17544
Skill name change

Revision: 17545
Remove simpleSvnUpdate, since it no longer works

Revision: 17546
Your Nipple Chakra etc.

Revision: 17547
Gingerbread choice adventures

Revision: 17548
high-end ginger wine

Revision: 17549
Track law choice visits in Gingerbread City

Revision: 17550
Actually download new config files when you load the Fax Request fraem, rather
than always loading whichever one you had saved.

Revision: 17551
Your Nose Chakra, etc.

Revision: 17552
no hat

Revision: 17553
New items from Crimbo Store. checkpowers can check equipped items. Plural

Revision: 17554
Set ghostLocation (paranormal activity) when parse page 1 of the Quest Log.
Clear it if not present on that page.

Revision: 17555
Sword of Procedural Generation modifiers

Revision: 17556
Don't use a cached result from another character for items that have changing modifiers

Revision: 17557
Track use of Ceci N'Est Pas Un Chapeau

Revision: 17558
Turns out we already read the ghost location from the quest log, so eliminate
most of my recent submit on that. Retain clearing ghostLocation if the quest is
not listed. Add code to not set that location on the fight we bust a ghost

Revision: 17559
Minor data corrections.

Revision: 17560
Your Hat Chakra etc.

Revision: 17561
pet bad vibe. monster id for Your Brain/

Revision: 17562
Your Brain no longer has factoids

Revision: 17563
When we see the list of available cards in the Deck of Every Card's "cheat"
dropdown, use this to deduce which cards have already been drawn.
Fix card number for The Chariot.

Revision: 17564
Crimbo's Sack. Bad Vibe

Revision: 17565
fix typo

Revision: 17566
Gingerbread Mob Hit tracking

Revision: 17567
Fix a typo

Revision: 17568
Lump-Stacking for Beginners

Revision: 17569
Fix a typo

Revision: 17570
When using HP restores in Mafia, execute Hot Tub request, rather than just creating it !

Revision: 17571
New Gingerbread item, some missing values.

Revision: 17572
Certain creation methods that use shop.php correctly deduct ingredients
whether invoked from the GUI or the Relay Browser. SOme only work from the GUI.
Fix them all to work through either method.

Revision: 17573
Track cost of Stack Lumps

Revision: 17574
Remove negative lumps when casting Stack Lumps

Revision: 17575
green rock candy. Lump Stacking book is a skill book, so, only can read one.

Revision: 17576
Crimbo's Boots. monsters. items. skills.

Revision: 17577
fix typo

Revision: 17578
Floor data for today's monsters (and only one lump drops without extra bonuses). Fixes for floor on monster hp and defense calculation.

Revision: 17579
Still response needs extra parsing

Revision: 17580
Eldritch snap

Revision: 17581
Crimbo's Jelly etc.

Revision: 17582
When equipping an outfit and you are currently dual-wielding two of the same
weapon, unequip the one in the offhand slot first.
In monsters.txt, sort Chakra monsters in monster ID # order.

Revision: 17583
tiny plastic bad vibe. Update some equipment powers.

Revision: 17584
KoL doesn't handle multi-casting Stack Lumps well, so don't allow it

Revision: 17585
Crimbo's Reindeer

Revision: 17586
Today's Tiny Plastic

Revision: 17587
Just as with the others, track Cleansing in Reindeer Chakra

Revision: 17588
sugar raygun

Revision: 17589
Crimbo's Beard, etc.

Revision: 17590
Adjust a few sprinkle drops

Revision: 17591
Crimbo's Hat etc.

Revision: 17592
aBuying a teethpick costs 1000 sprinkles. Remove extra tab in monsters.txt

Revision: 17593
Missing floors and today's tiny plastic.

Revision: 17594
Identify a few candies

Revision: 17595
Final Crimbo 2016 items

Revision: 17596
Pixel Star multi-usable, move Uncle Crimbo's Hat in modifiers.

Revision: 17597
few multi-usale items. Simplify and modernize a variety of things in the ASH
parser that were done before we upgraded to a Java version that included
generic classes and foreach over iterable objects

Revision: 17598

Revision: 17599
Fix a few discrepancies found by checkitems. Parse both Rollover Effect and
Rollover Effect Duration from an item description.

Revision: 17600

Revision: 17601
Thanksgetting modifier

Revision: 17602
Fix a typo

Revision: 17603
Any maximizer keyword starting "sprinkle" means "sprinkle drop". Track times dug in Gingerbread City (gingerDigCount). Some plurals.

Revision: 17604
Noodge up sprnkle drop for gingerbread mutant. Log Machine Elf action that
indicates free turn.

Revision: 17605
Add various candy synthesis effects. Mark various items as candy or not-candy,
per Exandora

Revision: 17606
Label candy as candy1 (simple) or candy2 (complex) in items.txt. No user-visible change yet.

Revision: 17607
add gingerTrainScheduleStudies setting to track how many times you've studied
the train schedule. When you get the sugar raygun, you lose your teethpick.
When you drop off your negatives, you lose them. When you hand over the photos,
you lose them. If you have your Machine Elf in the Deep Machine Tunnels and he
does not cluck at the end of a battle, you have used up your free fights.

Revision: 17608
Track lynyrd snare uses

Revision: 17609
Fix some quest tracking

Revision: 17610
remove bogus plural for negative lump

Revision: 17611
Near as I can tell, KoLDatabase is a small package of utility functions used
by exactly one file, rather than being something which is the basis of every
object in our KoL object model. Therefore, move it to "utilities" and do not
make all of the files in "persistance", who don't even use anything from it,
"extend" it.

Revision: 17612
Phase 1 support for Sweet Synthesis: candy, cand1, and candy2 as secondary item
usages mean unspaded, simple, or complex candy. ASH $items have a proxy field:
string candy_type = none, unspaded, simple, complex
ASH $effects have a proxy field:
int candy_tier = 0, 1, 2, 3
ASH has a function to return all the candy in a given tier:
item [int] candy_for_tier( int tier )
The "checkcandy" command will list all unspaded candy or will tell you the candy
type of each of its arguments.

Revision: 17613
More Sweet Synthesis stuff: ASH functions:
boolean sweet_synthesis( item candy1, item candy2 )
effect sweet_synthesis_result( item candy1, item candy2 )
item [int] sweet_synthesis_pairings( effect result, item candy1 )
Log casting of Sweet Synthesis appropriately. Deduct candies from inventory
when you successfully cast it.

Revision: 17614
Add Experimental "Sweet Synthesis" frame to the Tools menu. Note that the
"Synthesize!" button does nothing, yet. I am releasing this to get feedback
on the User Interface design and interactions.

Revision: 17615
Move Sweet Synthesis above Modifier in menu bar.
Add "Candy A" and "Candy 2" titles to candy lists.
When select an effect button, reverse text and background colors for entire
Only deal with changes in selected item after all changes have completed.
Do not clear candy list A when a candy is deselected in that list.

Revision: 17616
Fix SynthesizeRequest: combine CANDY1 and CANDY2, not CANDY1 and CANDY1. Oops.
Hook up "Synthesize!" button on Sweet Synthesis tool.

Revision: 17617
New items and effects.

Revision: 17618
Basic support for the new familiars.

Revision: 17619
Wax items, Robin has drops.

Revision: 17620
Optimistic Candle progress tracking.

Revision: 17621
Toast with jelly recipes.

Revision: 17622
Add Sweet Synthesis to list of frames which can be created on startup
Put Candy Panels into CENTER< so they grow or shrink when window resizes
Hopefully let Effect buttons reverse colors correctly on WIndows
When a store's inventory is frozen, say so when attempt purchase.

Revision: 17623
Add experimental feature to Sweet Synthesis tool: add a couple of checkboxes to
filter candy lists. "available" will show you only candies available without the
mall. "unrestricted" will show only items not subject to Standard restrictions.

Revision: 17624
When filtering candy lists, maintain selected candies in the two lists.
(Doesn't do the right thing if either candy is filtered out. Later.)

Revision: 17625
Refactor and improve SynthesizePanel:
- Selected items are retained or cleared correctly when filtering
- Both candy lists and the candy data panels update when candy enters or
leaves inventory (such as by synthesizing with it.)
- Really use the -count comparator in-run, rather than the mall price

Revision: 17626
Add a Total secion to the Candy Data panel in the Sweet Synthesis frame that
lists the total cost (value) of the candies you will use and the cost/adventure

Revision: 17627
New items and effects

Revision: 17628
Don't attempt to read standard.php when not logged in.
Recognize message when studying train schedule on day 10.
Wrap effect buttons in a pretty titled border

Revision: 17629
If filtering on "available", if a combo requires two of the same candy and you
only have one, don't show the candy in Candy B.
If you are under Standard restrictions and are given a candy that you somehow
got that does not qualify, give appropriate error message.
Add candy_for_tier() and sweet_synthesis_pairing() ASH functions that have a
"flags" argument, in which you can specify filtering. 0 = no filtering,
1 = available, 2 = allowed, 3 = available and allowed.

Revision: 17630
On Sweet Synthesis panel: rename "unrestricted" checkbox to "allowed". Add
tooltips to checkboxes and Effect buttons.

Revision: 17631
Standard 2017 outfits

Revision: 17632
Add a "Check Prices" button to the Sweet Synthesis frame which will update the
saved mall price of candies which are more than an hour old.
Use 999,999,999 as the "cost" of an untradeable item, rath than MAX_INT.

Revision: 17633
Implement Sweet Synthesis candy tables directly using JTable, rather than via
ItemTableManagePanel and JXTable, which doesn't allow sorting on multiple

Revision: 17634
In the Sweet Synthesis frame, do not handle ListSelection events while we are
sorting, since the selection is cleared at the beginning and restored at the

Revision: 17635
Track daily sea jelly in _seaJellyHarvested
Detect Gingerbread City collapse as an adventure failure
Don't enable Synthesize! button unless you have spleen available

Revision: 17636
Name change

Revision: 17637
Add "synthesize" xommand:
synthesize CANDY1, CANDY2 - combines candies to get an effect
synthesize? CANDY1, CANDY2 - tells you about the candies and the effect

Revision: 17638
Clean up a couple of candy analysis messages.

Revision: 17639
Don't try to fetch an element from the visible elements of a ListModel when
there are no visible elements.

Revision: 17640
Add two new items. Additional choice option for Down at the Hatch.
Log "edpiece" command in session log, rather than raw choice option.
Don't need to log standard.php in session log. When looking for "current"
restrictions, it's always from two years before current year.

Revision: 17641
Emit some kind of message for previously swallowed exceptions during start up and shut down. Not completely tested, though not for lack of trying.

Revision: 17642
Emit some kind of message for previously swallowed exceptions during start up and shut down. Not completely tested, though not for lack of trying. Forgot this file in prior commit.

Revision: 17643
Move Candy object and Candy Comparators from SynthesizePanel to CandyDatabase.

Revision: 17644
Add "Automatic" button to Sweet Synthesis panel to select a pair of candies to
synthesize and get the desired effect. Add some ASH functions:
item [int] sweet_synthesis_pair( effect )
item [int] sweet_synthesis_pair( effect, flags )
boolean sweet_synthesis( effect )
boolean sweet_synthesis( effect, flags )
to let your script do the equivalent.

Revision: 17645
Add CLI commands:
synthesize EFFECT
synthesize? EFFECT

Revision: 17646
Licorice Rope has an image now

Revision: 17647
The "synthesize" command now only matches effect names against the 15 specific
effects that are the result of Sweet Synthesis

Revision: 17648
Arena parameters for Space Jellyfish & Optimistic Candle

Revision: 17649
Fix URL for Radio KoL. Not that anybody has reported the bad link.

Revision: 17650
Track Space Jellyfish drops

Revision: 17651
Add Breathe Out, track the banish, and track remaining uses

Revision: 17652
Add Radio KoL to People menu. Remove Radio KoL, Read KoLmail, Mushroom Plot, and
Farmer's Almanac from Toolbar. Add Modifier Maximizer and Sweet Synthesis to

Revision: 17653
Let's try the "pile of candy" image as the icon for Sweet Synthesis

Revision: 17654
Fix ClassCastException when assigning a new record as the value of a map literal

Revision: 17655
Properly track turkey blasters used

Revision: 17656
sugar-coated pinecone is complex, per Exandora. Fix some formattting

Revision: 17657
Some missing clip art effect mappings.

Revision: 17658
When initializing an aggregate with an aggregate literal, do not require that
the type of said literal be redundantly specified.

Revision: 17659
When you plant thanksgarden seeds, refresh campground

Revision: 17660
Add appropriate "synthesize" commands as the way to get the various Synthesis:

Revision: 17661
Maximizer now knows about the synthesize command and will make it available
if you have spleen available and a suitable pair of candies

Revision: 17662
If you have a script list (toolbar of buttons) on the right side of the main GUI
you are allowed to have zero buttons in it. It will listen to scriptList and
update (adding or removing buttons) whenever that setting changes

Revision: 17663
For all places that look at scriptList, a space before and after the "|" is

Revision: 17664
Always add a button panel on the right side of the main GUI for holding script
buttons. scriptButtonPosition = 0 means don't show it, otherwise, show it.
scriptList contains the scripts you get buttons for.
The script toolbar listens to both preferences and shows itself or not dependin
on scriptButtonPosition, and changes the buttons, depending on scriptList

Revision: 17665
Change the "add script" button to call JFileChooser.showOpenDialog directly,
rather than in a new thread. I don't like that, but the previous behavior
running on OS X with the Mac look-and-feel hung the entire UI and you had to
force quite KoLmafia to get out of it.

Revision: 17666
Using a glob of melted wax leads to a choice, so cannot have in-line use link.
Yes, the JFileChooser seizes the awt lock, so must be executed in the Swing

Revision: 17667
Since || is a valid part of (at least one) CLI command, do, in fact, require the
} characters separating scripts in the scriptList to have at least one space on
both sides of it.

Revision: 17668
Do the parts of the SYnthesizePanel's update() method that update GUI elements
in the Swing event thread.

Revision: 17669
When updating prices, use ajax=1. When parsing price updates, if using ajax,
get price and limit, as before. Otherwise, can also get quantity (in case an
item sold out from under you). When update prices, adjust the potential earnings
in the title bar of the Store Manager frame.

Revision: 17670
When updating potentialEarnings after changing a price, obey same magic number
as when initially reading store inventory. Put that magic number (50,000,000) in
a constant - REALISTIC_PRICE_THRESHOLD - to make it clear its a magic number.

Revision: 17671
The familiar label in the compact side pane now listens for changes in familiar
image and updates immediately.

Revision: 17672
When you defeat Baron von Ratsworth, set the tavernLayout square to 6

Revision: 17673
Add "shop reprice" command and reprice_shop() ash function

Revision: 17674
In Sweet Synthesis frame, if you are using "available" candies only, do not
show candies in the Candy A panel if you don't have any candies that will
pair with it to show in the Candy B panel.

Revision: 17675
In the Sweet Synthesis frame, if you are using "available" candies, disable any
Effect button for which you do not have a suitable candy pair.

Revision: 17676
Give informative error if you try to create a digital key when you already have

Revision: 17677
edpiece? command tells you the effects of the various decorations, as well as telling you
which one is currently equipped.

Revision: 17678
Familiar annotation for the Space Jellyfish is _spaceJellyfishDrops

Revision: 17679
Creation method and concoctions for the glob of melted wax

Revision: 17680
Disable "only ASCII characters in typed constants" check in ASH

Revision: 17681
aerosolized aerogel

Revision: 17682
Remove the beehive and electric boning knife when they are used against their intended targets

Revision: 17683
Update copyright date in KoLmafia license. Show system file encoding on Version panel.

Revision: 17684
Make various TD fields in the "thralls" commans wrap

Revision: 17685
Update copyright claim to 2017

Revision: 17686
Add missing space in message from "pull" command.

Revision: 17687
Experimental: pass UTF-encoded byte streams to ASH from CLI's single and multi-line

Revision: 17688
Roll back 17687. It doesn't "fix" anything. Windows users who want to use UTF-8 chacracters
in the gCLI for ASH commands will just have to run the jar file like this:
java -jar -Dfile.encoding=utf-8 [jar file]

Revision: 17689
parse duration from effects gained in combat

Revision: 17690
Fix FamiliarLabel to update even if it's the same familiar.

Revision: 17691
wrought-iron flakes

Revision: 17692
When looking up a card name in a canonical name cache, must canonicalize the name

Revision: 17693
Eliminate 120 or string comparisons of monster names at the beginning of every combat by
keeping a hash table from monster name -> enumeration

Revision: 17694
An enum can be null...

Revision: 17695
-Grr.-This line, and those below, will be ignored--
M src/net/sourceforge/kolmafia/request/

Revision: 17696
Allow SynthesizeFrame to appear in a tab

Revision: 17697
When you manage your store in the Relay Browser, load store inventory into StoreManager
Use a HashMap to store Special Monsters in FightRequest since we don't really need to
compare monster names case insensitively

Revision: 17698
Even though CandyDatabase can return a filtered set of candy2 based on availability, since
SynthesizePanel asks for an unfiltered list and filters on its own, it needs to apply the
same "you must have 2 of a candy which pairs with itself" rule when "available" is checked.

Revision: 17699
Fix errors revealed by checkitems and checkeffects

Revision: 17700
Update mallprices.txt

Revision: 17701
Bump version to 17.6