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: 12959
Add relayScriptButtonFirst preference, defaults to False. If set to true, when using Mafia Combat Buttons, the location of Script and Attack buttons are reversed. If using mafia scripts in relay browser with Mafia Combat Buttons it's now less mouse movement to be lazy.

Revision: 12960
Fix olfact button not greying out.

Revision: 12961
Add Insult and Flyer buttons to Mafia Combat Buttons when appropriate.

Revision: 12962
Added items, monsters, effects found so far for Trick or Treating.
Added recognition for monster images (doesn't work yet).
Can walk away from choice 804.

Revision: 12963
Trick-or-Treating is an adventure. sturdy cane is an item.

Revision: 12964
All-Hallow's Steve's fright wig. Recognize "again" link after fighting a
trick-or-treating monster.

Revision: 12965
Dread candy

Revision: 12966
Unsurprisingly, many of the new candies are multiusable

Revision: 12967
add sturdy cane as item drop to too-old kid

Revision: 12968
Added All-Hallows Steve, Combat data for Trick or Treating, Ultra Mega Sour Ball and Sour Ball support (as Melange).

Revision: 12969
Distention Pill now increases Fullness by 1 for the day. Removed preference distentionPillActive as no longer relevant.

Revision: 12970
Major refactoring of Big Island code:
IslandManager keeps track of state of things on the island
IslandRequest handles visiting various NPCs on the island
IslandDecorator does all the Relay Browser decoration.
Both the QuestL12War and warProgress settings are set when you take the
choice adventure to start the war or defeat the ar boss to end it.

Revision: 12971
Add plural for Hundred Headed IPA.
The Ninja, Please effect also gives Critical Spell Percent.

Revision: 12972
New feature, first draft - Skills grey out in Skill Casting when you have already cast to your daily limit.

Revision: 12973
Fix parsing results of arena and pyro requests.
Don't include quantity field for clip art requests.

Revision: 12974
Fix inverted check for deciding that the pyro quest is completed

Revision: 12975
Fix a few inverted tests created by bad conversion from indexOf to contains

Revision: 12976
Fix that last fix

Revision: 12977
Don't get fooled if you can't reach the Mysterious Island Arena during the
war because you are wearing the wrong uniform.

Revision: 12978
Add a new zap group for fancy beers.
When you buy from the mall and get an unknown plural, assume you got the item
you were expecting to buy and register the plural.

Revision: 12979
remove extra autosell price for debonair deboner

Revision: 12980
If you can walk away from the choice adventure you are in, no need to defer
"use" links.

Revision: 12981
If a skill is selected in the skill casting menu when it greys out, unselect it.

Revision: 12982
Fix removal of bowling balls after spirit killed. Bowling Ball drop rate is 40%.

Revision: 12983
Add an additional familiar category - "sorceress" - to the compact side pane

Revision: 12984
Fix "pull outfit" command

Revision: 12985
Battlefield monsters from faxes of putty or what have you all count for your
kill count vs. the respective side.

Revision: 12986
Don't bother processing Batllefield monsters after the war is finished

Revision: 12987
Added support for Halls Passing in the Night choice adventure. If you choose a choice in mafia that hasn't been unlocked it should abort to relay browser rather than get stuck in a loop. Untested.

Revision: 12988
Tongue depressor data for Knott Slanding and The Temporal Bandit

Revision: 12989
Accordion Thief monsters added with wandering monster counter.
Hidden City drop rates and meat drop added.

Revision: 12990
Pre-fill the text input box for the Legend Keys at the Perplexing Door
Fix Dimemaster and Quartersmaster: internal requests now need to process
the responseText for transactions since IslandManager won't see them.

Revision: 12991
Item drop rates for Trick or Treating

Revision: 12992
The walkie talkie is resuable. Both the unused walkie-talkie and the walkie
talkie are Free Pulls. You can walk away from Choice Adventure 807.

Revision: 12993
Skills should also grey out if you have cast it more times than the limit, not just equal to.

Revision: 12994
The Degreassi Knoll gym is now a choice adventure.
You can walk away from the choice for both The Degrassi Knoll Gym and The
Institute for Canadian Studies. What's that all aboot, eh?

Revision: 12995
Using a Chibibuddy (off) gives you a Chibibuddy (on)

Revision: 12996
The "use" link for a newly acquired walkie talkie cannot be inline.
KoL just made Breaker Breaker not interruptible, it seems.

Revision: 12997
Fix removing items from a shelf of your display case

Revision: 12998
The "maximize" command (when not simulating, i.e. "maximize?") now logs the
command in the session log, so you can see what led to the subsequent actions.
STICKER1 is no longer the first "pseudo" slot.

Revision: 12999
Corrected typo in Hippy Battlefield monster detection.

Revision: 13000
Wandering accordionists cap at 10k attack/defence.

Revision: 13001
Added 2 new items for Gnasir quest (those I could access without being on quest)

Revision: 13002
grains of salt is a food helper

Revision: 13003
blank line before maximize command in session log. bounty-hunting pants have
better item drop.

Revision: 13004
Remove left over code from when you could queue a distention pill.
Annotate sushi doily and grains of salt: (automatically used from inventory)

Revision: 13005
The Arid, Extra-Dry Desert is now one location instead of two

Revision: 13006
Fix accordionist entries

Revision: 13007
Added some accordions. Added Song Duration to modifiers, and change parsing of Effect Duration to look for Effect Duration not Duration. In Ronin/Hardcore get Toy Accordion if you can't cast buffs, otherwise Antique Accordion.

Revision: 13008
Add more accordions

Revision: 13009
New accordions (why did they not go in successfully with my last commit?)

Revision: 13010
remove duplicate modifier

Revision: 13011
Add Accordion Thief skills (don't yet affect anything)

Revision: 13012
Add accordions to buff tools.

Revision: 13013
Added some effects from Accordion Thief passive skills.

Revision: 13014
Add a suspicious addres, Frank "Skipper" Dan, and Skipper's accordion

Revision: 13015
If an Accordion Thief, don't show Entangling Noodles as a built in Stationary Button, but show Accordion Bash if you have it.

Revision: 13016
"Skipper" has quotes

Revision: 13017
As Accordion Thief, add Accordion Bash rather than Entangling Noodles as the stun option in Custom Combat Panel.

Revision: 13018
Skipper's Accordion is a buffing tool.

Revision: 13019
Steal Accordion is skill 7172

Revision: 13020
Fix Frank "Skipper" Dan for real

Revision: 13021
Add desert sightseeing pamphlet

Revision: 13022
when you defeat "Skipper", you lose the suspicious address

Revision: 13023
Allow 'planting' as a script svn root

Revision: 13024
Five Finger Discount stacks with 5-Finger Discount

Revision: 13025
Initial Pantsgiving support

Revision: 13026
Added alarm accordion and peace accordion. Added new AT effects. Removed references to old desert in encounters.txt.

Revision: 13027
Added Pantsgiving Fullness tracking.

Revision: 13028
When parsing result of an ajax equipment change, do not assume that it
worked: do not manipulate slots or inventory unless KoL specifically says
"You equipped" or "Item unequipped" or whataver.

Revision: 13029
Add Pantsgiving skills, some Pantsgiving items, Pantsgiving banish tracking.

Revision: 13030
Add fullness entries for Pantsgiving items (limited spading yet so no Adv/Stats), add a couple of plurals. Hopefully fix Effects parsing for unknown effects - Thanks, Jason.

Revision: 13031
If you have effect "Black Day" 10% reduction in purchase cost from NPC stores.

Revision: 13032
Fix adding and removing folders from the Relay Browser

Revision: 13033
Fix SPookyraven floor 2 spoilers

Revision: 13034
Consumption data for fancy beers

Revision: 13035
Freddy Kreuggerand -> Freddy Kreugerand. Fix descid for the boot knife.

Revision: 13036
Do not convert "steal accordion" to "steal"

Revision: 13037
Added more Pantsgiving items

Revision: 13038
More Pantsgiving items

Revision: 13039
worm-riding manual page replaces worm-riding manual page 1

Revision: 13040
Choice 805 is A Sietch in Time

Revision: 13041
Added rest of Pantsgiving items and consumption data for Pantsgiving food.

Revision: 13042
Message for "too many songs" has changed.

Revision: 13043
Updated consumption data for Cold One (same as Spaghetti Breakfast) based on level.

Revision: 13044
Bawdy Refrain is a combat skill

Revision: 13045
The Mood manager considers a trigger to be a "thief trigger" and thereby
subject to current song limit only if it is an AT skill AND it is a buff.

Revision: 13046
You can now "eat [hot dog name]" from the CLI.
You can also "eat [n] basic hot dog", although I did not test that.

Revision: 13047
Do not remove fancy hot dogs from list of dogs in your clan when you eat one.
Simply don't make them visible on the Food panel of the Item Manager

Revision: 13048
Do the right thing when purchasing 11, 23, or 37 items using storage Meat

Revision: 13049
Fix "pull outfit" in ronin

Revision: 13050
Add Pantsgiving Resting Bonus.

Revision: 13051
Added Stealable Accordions to monsters.txt, added support for new drop type "a".

Revision: 13052
Added Ators Gonna Ate. Renamed Daily Dungeon choices in choice panel to keep them together and clear.

Revision: 13053
Decorate battlefield monsters, no matter where you find them.

Revision: 13054
Add desertExploration setting to track percent of desert that is explored.
Initialized to 0, set to whatever the map says when you look at the desert
beach, reset to 0 upon ascension.
Obviously, updating from adventuring and turning in items to Gnasir still
needs to be added...

Revision: 13055
Fix "pull outfit" for niche aftercore case

Revision: 13056
Make sure that all Coinmasters have "accessible" methods, rather than
depending on NoSuchMethod exceptions being thrown.
a CoinMasterPurchaseRequest requires that the Coinmaster be accessible for
canPurchase() to be true.

Revision: 13057
When you ascend, after w refresh the session, force a concoction refresh.

Revision: 13058
Nah, that can't be it.

Revision: 13059
Update desertExploration when adventuring in the desert, using a pamphlet, or handing in the jar/paint/rose

Revision: 13060
Update desertExploration when using a drum machine with worm-riding hooks

Revision: 13061
Fix updating of _pantsgivingBanish

Revision: 13062
Fix new accordion entries in monsters.txt

Revision: 13063
CreateItemRequest.getInstance must always return an instance if the item is
a creatable item, whether or not it is possible to make it right now.

Revision: 13064
When you turn a Chibibuddy on, you lose the Chibibuddy (off) and gain a
Chibibuddy (on)

Revision: 13065
Set PYRAMID quest progress to step11 whenever desert exploration percentage
hits 100 from any means.

Revision: 13066
When you use a modeling claymore, look at the island map and synchronize kill
counts with the images on the map.

Revision: 13067
Added three Pocket Lints, added effects on Bottled Beer from Beer Garden.

Revision: 13068
Reanimated semirare monsters are not semirare encounters

Revision: 13069
Track daily stolen accordions in _stolenAccordions
Add "accordions" command to tell you everything about stolen accordions
Fix typos

Revision: 13070
Add wandering accordionist accordions

Revision: 13071
Make a few unnoticable tweaks to accordion modifiers based on checkitems

Revision: 13072
Reduced +item on the zombie accordion

Revision: 13073
Add a few plurals for Dreadsylvania items.

Revision: 13074
Added pocket lint and support for using it (untested). Add logging to session log and graphical CLI when max fullness gained from Pantsgiving.

Revision: 13075
Fix stolen accordion entry

Revision: 13076
When a tomb ratchet drops, display how many you have for the use text

Revision: 13077
Pantsgiving can give fullness even when you don't win the fight

Revision: 13078
Add hidden setting to disable image caching

Revision: 13079
The Spirit World is an adventuring zone. Choice 808 is a choice adventure.

Revision: 13080
Add Spirit World Items, Monsters and Effects. Added choice data for choice 808. Added handling for Spirit Bed.

Revision: 13081
Mood Manager shouldn't consider all Accordion Thief skills as Songs. Unverified.

Revision: 13082
Updated other places in Mafia which appeared to assume that all skills between 6000 and 7000 were Accordion Thief song buffs.

Revision: 13083
Chapel is Vanya's Castle Chapel and is indoors.

Revision: 13084
Accordions now have different modifiers if you have Accordion Appreciation.

Revision: 13085
Created new functions in Skill Database, isAccordionThiefSong, isTurtleTamerBuff, isSaucerorBuff, and used them where appropriate elsewhere in the code.

Revision: 13086
provide Modifiers.evaluateModifiers and Modifiers.trimModifiers to
manipulate modifier strings.
New string modifier: "Evaluated Modifiers" is like "Modifiers" with all
expressions evaluated according to current variables
New numeric modifer: "Prismatic Damage" is the minimum of all five elemental
damage types.
The "accordions" command now does the right thing given Accordion Appreciation

Revision: 13087
The accordions command says you have an accordion if it is inventory OR if it
is equipped.
When switching equipment to reduce mana consumption for using a skill, make
an outfit checkpoint so that previous equipment is restored.
You do not, apparently, need to unequip a weak accordion in order to get the
buff duration of a stronger accordion in inventory.
There is no point in reducing mana cost for 0-MP cost skills.

Revision: 13088
Make Prismatic Damage a real, if derived, modifier name. It cannot be used in
modifiers.txt, bit you can ask for it by name either in ASH or the Maximizer

Revision: 13089
Recognize acquisition of worm-riding manual pages after combat correctly.

Revision: 13090
Correct type on Choice 780 (said if you'd killed protector spirit it would skip, but would actually try to banish pygmy lawyers instead).

Revision: 13091
Add Pantsgiving crumb item drop support, as _pantsgivingCrumbs.
Remove initial Black Day support - I'd rather have mafia overestimate the cost of one item and give someone a surprise when something is cheaper than underestimate it for many items. Maybe someone else will find supporting this worth doing, lots of code for niche benefit, especially as you'd also have to refactor other stuff to buy most expensive piece of a concoction first.

Revision: 13092
Added function EquipmentDatabase.isSpecialAccordion. EquipmentManager.canEquip checks if item isSpecialAccordion if you aren't an Accordion Thief.

Revision: 13093
Heartbreaker's Hotel environment info is "none".

Revision: 13094
Don't need to save outfit checkpoint for each UseSkillRequest; callers of it
do that, as appropriate, around sequences of such requests.

Revision: 13095
Avoid NPE when pulverization panel gets an enabled event before it is fully created

Revision: 13096
Process familiar actions before removing tables from HTML tree

Revision: 13097
Provide ChoiceManager.decisionAvailable to make sure that the user-selected
automated choice is actually available right now. (Note that this is just a
hook for Coe To Be Written, at the moment.)

Revision: 13098
If automating a choice adventure and the user's desired choice is not
currently available, abort automation.

Revision: 13099
More URL updating for the Crackpot Mystic

Revision: 13100
Do not try to rest if it will take a turn and you have 0 turns left

Revision: 13101
Spirit alarm clock

Revision: 13102
Added Turtle Tamer skills, effects documented so far, removed combo skill code.

Revision: 13103
Shell Up is Turtle Tamer stun option. Correct stats for spirit alarm clock.

Revision: 13104
fix damage reduction of 6 shields - and fix item description parsing to
work correctly for shields with additional damage reduction.
Fix the powers of a number of items

Revision: 13105
Chinatown Shops is an npc store
Give counter "use link" to gold piece

Revision: 13106
Update Turtle Tamer skill costs.

Revision: 13107
In order to reach choice 658, you had to have handed over 30 gold pieces

Revision: 13108
Processing a table in a fight can, appropriately, return early without
processing child nodes.

Revision: 13109
Add rare drops to gourd conspirators

Revision: 13110
Shieldbutt now 10 MP. Add Grand Blessing of the War Snapper.

Revision: 13111
Add a check to determine if Chinatown Shops is accessible. For now, it will be wrong after you use the jar and before you actually unlock the shop.

Revision: 13112
Added smiley face icon for Expressions in Active Effects.

Revision: 13113
Add _pantsgivingCounter to count turns wearing Pantsgiving.

Revision: 13114
Add tracking of Testinudal Teachings experience gain.

Revision: 13115
Do not apply Testudinal Teachings to a Stocking Mimic

Revision: 13116
Add support for Pizza Lover. Also moves code for Lasagna / Martini's so that they change reported values rather than database values.

Revision: 13117
Sushi rolling mat should be pseudoItem - when obtained it does not go into inventory.

Revision: 13118
Attempting to go to a zone in the Mer-kin deep city without a Mer-kin diguise
doesn't count as an encounter.

Revision: 13119
Add Glorious Blessing of the War Snapper.

Revision: 13120
The 12 sushi-rolling mats in my inventory take umbrage at being labeled as
"pseudo items".

Revision: 13121
Added more Turtle Tamer effects

Revision: 13122
Added a couple more Turtle Tamer effects.

Revision: 13123
Fix adventures per unit of Martini's with Tuxedo shirt. They are good, but not infinitely so.

Revision: 13124
The Temple Portico is an outdoor location

Revision: 13125
When you log in and are redirected to a choice adventure, we tell you that
and wait for you to resolve it before completing initialization. Now, we
fetch the choice adventure and log the encounter and options in the gCLI,
leaving you set up to type "choice 2", say, to satidfy the choice, rather
than requiring that you go to the Relay Browser to proceed.

Revision: 13126
Properly recognize exactly when Chinatown Shops is accessible

Revision: 13127
If you have Manuel, use its stats to track flyering

Revision: 13128
Add getClassStun() in KoLCharacter. Try to cast the correct class stun when autoEntangle is true.

Revision: 13129
Big refactoring: lastAdvnture is where you went last, nextAdventure is
where you are going next.
We parse lastAdventure both from api.php and charpane.php.
set_location sets nextAdvanture - and my_location reads nextAdventure.
Whenever we set nexrAdventure, we update the GUI and immediately recalculate
modifers basd on the new location/zone

Revision: 13130
Fix choice adventure automation

Revision: 13131
Remove "optimization" from AutoFilterTextField that makes it not work

Revision: 13132
Added the rest of the Turtle Tamer effects.

Revision: 13133
getClassStun now limited for some classes (Club Foot needs Fury, Turtle Tamer needs Storm Blessing, Accordion Thief needs Accordion, Disco Bandit doesn't get a native one), supports Boris, Jarlsberg and Zombie, and defaults to Shadow Noodles which any normal class can use.
getClassStun now used by CustomCombatPanel and StationaryButtonDecorator.
Added getBlessingType and getBlessingLevel to KoLCharacter.

Revision: 13134
Spirit Boon can only be cast with a Blessing. Unverified.
Turtle Power can only be cast with a Glorious Blessing. Unverified.
Blessings cannot be cast with Spirit Pariah. Unverified.
Duration of Spirit Boon depends on Blessing Level. Unverified.
Maximizer only suggests casting a Blessing if you haven't got a better one of the same type or Spirit Pariah.
Mazimizer only suggests casting a Boon if you have the appropriate Blessing Type. Unverified.
Maximizer only suggests casting Turtle Power if you have the appropriate Glorious Blessing. Unverified.

Revision: 13135
Casting Blessing causes different effects depending on whether you are a Turtle Tamer or not. Maximizer now knows this.

Revision: 13136
Blessings last 10 turns as a non-Turtle Tamer.

Revision: 13137
Fernswarthy's Basement is an abnormal adventure zone.

Revision: 13138
Turtle Power can only be cast once per day - Unverified.

Revision: 13139
Barrel full of Barrels -> The Barrel Full of Barrels
Fix recognition & logging of TBFoB.

Revision: 13140
Recognize mining in disguise as an adventure location

Revision: 13141
If a new mine appears, register it appropriately from api.php or charpane.php

Revision: 13142
For gCLI commands that can take comma-separated item lists, check to see if the entire parameter is a single item before splitting at commas. As an example, this will allow "drink oh, the humanitini" to consume a single drink. Note that "drink aye aye, tooth tooth, oh, the humanitini" will still not do what you probably want, and commas should be left out of item names in a multi-item list.

Revision: 13143
Reptilian Fortitude now a level 10 skill. Spirit Vacation has no MP cost.

Revision: 13144
Fix basement logging

Revision: 13145
Don't set nextAdventure to equal lastAdventure for routine status updates
from api.php or charpane.php. Do it only on a full status refresh or when you
actually adventure somewhere and set lastAdventure to something.

Revision: 13146
Change class stun handling again.
Add preference considerShadowNoodles, defaults to false.
Stationary Buttons will show class stuns for most classes, but not for Turtle Tamers unless they have Storm blessing, or Disco Bandits. If no stun is available, and considerShadowNoodles is true, show Shadow Noodles instead of no stun. Buttons should be greyed out if not castable currently (already cast that round, no Fury as Seal Clubber, no Accordion as Accordion Thief).
Custom Combat Panel will show class stuns for most classes, but not for Turtle Tamers unless they have Storm blessing, or Disco Bandits. If no stun is available, and considerShadowNoodles is true, show Shadow Noodles instead of no stun. If no stun available it will mention setting considerShadowNoodles to use Shadow Noodles instead.
Combat Action Manager should not attempt to use Club Foot without Fury as a stun, nor Accordion Bash without an Accordion, or Shell Up without Storm blessing as autoEntangle options.

Revision: 13147
Only add a new adventure (as detected in api.php or charpane.php) if it
is adventure.php or mining.php

Revision: 13148
Added skill Will of the Storm Tortoise (gained when Avatar of the Storm Tortoise). Assumed name and numbers for the other Avatar skills based on modifier text and the progression of effects etc. Can correct if wrong later.
Track _turtleBlessingTurns, resets when you cast a new blessing, turtle power or at Ascension.
Spirit Pariah cannot be uneffected.
Cannot cast Blessings you already have.

Revision: 13149
In the Relay Browser, when you encounter a choice adventure, you can use the
"auto" button to tell KoLmafia to automate through it. If it is an unknown
choice, you have asked for manual control, or your setting pertaining to the
choice requests an invaldi option, KoLmafia will go red and log an error and
return a blank page to the browser. Fix this.

Revision: 13150
When looking for choice options available on a page, look for secret options
(activated by clicking on a link, rather than by pressing a button) as well
as the usual buttons.

Revision: 13151
The Economist of Scales has additional options, if you have enough of a
particular kind of scale.

Revision: 13152
Add support for Myst Revamp wandering monsters.
Add a Turtle Tamer spell failure message.

Revision: 13153
Even if KoL does not use character entities in monster names, we need to do
so. Therefore, change the name of the Possessed Jar of Alphredo

Revision: 13154
If you are not logged in, KoLCharacter.classType can be none. That means
that getClassStun as coded threw an NPE if you try to open the gCLI without
logging in, since the AdventureFrame could not be loaded. Fix this.

Revision: 13155
Refactor choice handling so that ChoiceManager is completely in charge
of tracking whether a choice is currently being handled.
When logging choices decisions in the session log, handle sparse array of
choice options.
When skipping the "Results" section of a responseText when looking for the
Encounter name, skip the "results" div.
When fighting an item-generated monster, correctly set location to "None" and
temporarily reset modifers to recognize that.

Revision: 13156
Silly me for thinking that because KoL sometimes gives a "results" div that
it always gives one. Look for encounters both with and without such a div.

Revision: 13157
When filtering the visible elements of a LockableListModel, firing
intervalAdded or intervalRemoved is now done on contihuous ranges of
indices, rather than one per elementis now done on contihuous ranges of
indices, rather than once per element

Revision: 13158
No hot dogs for Zombie Masters or Avatars of Jarlsberg

Revision: 13159
Sensitive Fingers gives +pickpocket chance

Revision: 13160
Clear ChoiceManager.handlingCHoice in postChoice2 even if we don't think we
are currently in a choice.

Revision: 13161
Don't let a null ride in your Crown of Thrones

Revision: 13162
Recognize successful equipping a familiar item

Revision: 13163
ASH has stored "ints" and Java longs and "floats" as Java doubles for almost
a year and a half. It has been able to read and write full range values for
almost that long. But to_int( string ) did not parse as a long. Fix this.
> ashq print( 2 ** 60)
> ashq print( to_int( "1,152,921,504,606,846,976" ) )

Revision: 13164
Pixel energy tank is a 1000 MP / 1000 HP restore item.

Revision: 13165
Fix recognition of dolphin thefts in the sea

Revision: 13166
Initial Pastamancer skill revamp update

Revision: 13167
Initial support for Class Act II: A Class For Pigs

Revision: 13168
Pastamancery and Advanced Saucecrafting are 1/day summons now

Revision: 13169
Eye of the Stoat -> Batter Up!
Scowl of the Auk is 10 MP

Revision: 13170
Furious Wallop has no MP cost

Revision: 13171
Chef Boy, R&D. New items.

Revision: 13172
Furious Wallop costs no MP, Advanced Saucecrafting and Pastamancery can be cast once only.

Revision: 13173
Added Sauceror skills and most effects

Revision: 13174
Add Sauceror Soulsauce status effects. Groast has avatar-changing drop

Revision: 13175
Add initial Soulsauce support. Doesn't yet allow casting from the command line, as it doesn't yet add the skills to your known skills.
Add ash command my_soulsauce().
Read fury and soulsauce from api.php.

Revision: 13176
Add Blood Sugar Sauce Magic intrinsic effect

Revision: 13177
Add Soulsauce skills to available skills if you have Soul Saucery so casting from command line works.

Revision: 13178
Unverified. Don't show mafia buttons at >75 ML in Class Act II, or use autoEntangle.

Revision: 13179
Count Bakula stats verified.

Revision: 13180
Log Soulsauce gain in ClI and session log.

Revision: 13181
Fix Action Elevator.

Revision: 13182
We no longer have _yearbookCameraTarget. Instead, we have yearbookCameraTarget
and yearbookCameraPending. The first is set when you are given a monster
to photograph in the Yearbook Club. The latter is set when you photograph
the target monster and is cleared when you turn in the photo

Revision: 13183
Plural for spoonful of Linguini-Os
Remove "summon ghost" as a pastamancer combat action.

Revision: 13184
Don't try to resetAfterAvatar without marking the choice that led to it done.

Revision: 13185
All the monsters in KOLHS scale capped at 200 stats

Revision: 13186
If reading fury from Charpane or api there is no need to check that it is a valid amount, which it won't be if we haven't read character skills yet, so just accept the value.

Revision: 13187
Log each combatant in a multi-fight

Revision: 13188
Add Bind Spaghetti Elemental. decoded cult documents teach that skill.
Remove lots of code to support (obsolete) Pasta Guardians

Revision: 13189
Can access Hippy store with Junk Junk.

Revision: 13190
Added some Pastamancer skill effects.

Revision: 13191
Fix typo: yearbookbCameraAscensions -> yearbookCameraAscensions

Revision: 13192
When buying antidotes before automated adventuring, checkpoint and restore
your outfit.

Revision: 13193
Make stationary buttons stationary.

Revision: 13194
Support for Pasta Thralls:
- settings: pastaThrall1 ... pastaThrall8 have "level" or "level,name"
- "thralls" CLI command tells what is known of your various thralls
- pick up current thrall from charpane.php or api.php
- pick up thrall names from charpane.php or from response text of various
Bind XXX spells.
- modifier variable "P" is current Pasta Thrall level
- modifiers for all pasta thralls, including L5 and L10 powers.

Revision: 13195
Fix detecting yeabook camera in haiku dungeon

Revision: 13196
Update count of upgrades when you look at the item description of the
Yearbook Camera

Revision: 13197
In order to fully emulate the CAB, Stationary Buttons need an 'effdiv' and an
'overflow' div.

Revision: 13198
Get rid of 'overflow: auto' div for Stationary Buttons

Revision: 13199
Stationary button bar should now expand and contract as needed, and buttons should wrap even in Internet Explorer. (Tested on IE, Chrome and Firefox)

Revision: 13200
Added stationarybuttons.css

Revision: 13201
Rename stationarybuttons.css to stationarybuttons.1.css

Revision: 13202
If you've beaten Dungeon Fist once, KoL gives you a "Finish from Memory"
button. If that button is present, do not add a "Go to Goal" button.
On the other hand, if you use "choice-goal" for the Dungeon Fist choice
adventure, if that button is present, it will use it.

Revision: 13203
Don't use custom stationary button .css - until it is debugged.

Revision: 13204
_pastaAdditive tracks daily usage of experimental carbon fiber pasta additive

Revision: 13205
Limit usage of pasta additive to 0 if you are not a Pastamancer

Revision: 13206
The stationary button panel dynamically changes size depending on how many
rows of buttons there are.

Revision: 13207
Fix a NPE from leaving The Shore for the Gift Shop

Revision: 13208
Recognize your Storage meat while in a Way of the Surprising Fist run, and do not try to pull that meat

Revision: 13209
DOn't worry that The Sorceress' Chamber is an "unknown adventuring location"

Revision: 13210
Thrall Unit Tactics makes Pastamancer combat skills cheaper

Revision: 13211
Fix Thrall Unit Tactics cost reduction

Revision: 13212
If we've already logged an unknown adventure that we are NOT registering,
don't log it again.
sticks of spirit gum

Revision: 13213
Add "debug ash on" and "debug ash off" to turn on and off ASH script tracing
ASH tracing goes into ASH_datestamp.txt
When executing any ASH script, log when it starts and finishes in both the
DEBUG log and the ASH log
If you try to go to the Village or the Castle but the Carriageman isn't
drunk enough to take you, it doesn't countas an Encounter.

Revision: 13214
Log to DEBUG and ASH before and after a consult script is called.
Do not throw an NPE if FightRequest.nextAction is null after a consult script

Revision: 13215
Don't submit a skill request if you are in a fight or choice adventure.

Revision: 13216
Handle clan swimming pool better: let GenericRequest follow redirects.
When GenericRequest follows redirects to choice.php, include additional
fields - like forceoption=0

Revision: 13217
Refactor generation of Stationary Buttons:
choice.php offers only "auto"
noncombat - or end of fight or choice - offers only "again"

Revision: 13218
When in a choice adventure, add a stationary button for every available
choice decision.

Revision: 13219
Only add the hotkey viewer if you are in combat or have completed one; choice
adventures don't need hotkeys. Align the dropdown with the top of the buttons

Revision: 13220
Update "thralls" command to list the L1/L5/L10 abilities granted by each
thrall, as well as what the current modifier string is, given current level.

Revision: 13221
Using ASH to batch multiple items for a closet command generated a parse
error (which was ignored) before going on to processing the parameters one
at a time. The end result was correct, but the error message was unnecessaty
and confusing. Don't generate it.

Revision: 13222
Banishes seem to be more common these days, so added BanishManager. Keeps track of banishes from all current sources. Some untested as I don't have all the skills/items, and am not currently in an Avatar path. Assume banishes in Dis or Haiku Dungeon succeed. Check for Item/Skill use on all banishes, not just response text. Add preference banishedMonsters to track banishes. Add ash command is_banished($monsterName[name]). Daily Deed Panel now reports on all current banishes. Support those banishes that were tracked in preferences in old ones still for legacy support. Banishes (depending on type) should end on rollover, avatar drop, or turn passing.
I'm sure there will be tweaks needed. I plan to add a banishes GCLI command to show this detail nicely formatted, but this is not yet done.
Adding banish types should now only need to add one line to Banish Manager, tracking if limited per day, and detection of the use/succeed to refer to Banish Manager for complete support.

Revision: 13223
Add "thrall" datatype to ASH. New ASH function: thrall my_thrall()
A thrall datum has three proxy fields: .name, .level, .current_modifiers
Bind Undead Elbow Macroni gives you an Elbow Macaroni pasta thrall
Remoce some obsolete code from stationary buttons.

Revision: 13224
Unpermery handling

Revision: 13225
Make right click menu work with Stationary Buttons.

Revision: 13226
Added MP restores Regular Cloaca Cola and can of CRIMBCOLA.

Revision: 13227
Fix detection of failure to cast Cocktailcrafting and Saucecrafting due to odd KoL message suggesting you can't use the skill, rather than that you can't use it again today.

Revision: 13228
Add Saucemaven support, update Fullness data for Hell Ramen, Hi Mein to match latest spading.

Revision: 13229
Foyer should be Vanya's Castle Foyer

Revision: 13230
Add Inner Sauce support.

Revision: 13231
When casting a daily limited skill via the Skill Buff frame, only deselect
it after casting if you have reached the daily limit

Revision: 13232
Fix Inner Sauce handling.

Revision: 13233
Tidy up override skill check code.

Revision: 13234
New ASH functions: to_thrall( int ), to_thrall( string ), to_int( thrall )
New proxy fields for thralls: .id, .image, .tinyimage, .skill
When finding thralls by name, use fuzzy matching.

Revision: 13235
Updated Hypnotist of Hey Deze stata based on :

Revision: 13236
Since hot keys and the macro inspector are incompatible, if you are using the
latter, don't pull in support for the former.
Slight clean up for building the canonical name array of Pasta Thralls.

Revision: 13237
Add effects from summoning Pasta Thralls when not a Pastamancer. Maximizer only suggests casting them if not a Pastamancer.
Also, maximizer only suggests getting effects from a buffbot when they are buffs.
Evaluator.checkEffectConstraints() now uses EffectIds not text matches.

Revision: 13238
Add command "banishes" which shows status of current banishes (what is banished, what by, which turn and how many turns left).
Tweaked Banish Manager, now takes account of whether a banish is turn free when reckoning turn it was used and remaining duration.

Revision: 13239
Conversion for to_effect for Spirit Boon, Blessing of the War Snapper, Blessing of She-Who-Was, Blessing of the Storm Tortoise, and Turtle Power now takes account of current Blessing or Class.
to_effect and to_skill correctly account for new Class skills where the effect and skill have different names.

Revision: 13240
The Gnollish Bodybuilder has Init 60 and is a humanoid.
If you are in Beecore, Spaghetti Breakfast is not a useful breakfast skill
If you are less than level 10, the enchanted bean does not need a "plant" link
If you are in Beecore, food, drink, and usable items don't need "eat", "drink"
or "use" links if they have Beeosity (with a few exceptions).

Revision: 13241
Ass stolen accordion and three AT Nemesis quest accordions to "accordions"

Revision: 13242
Ranged weapons are no longer incompatible with Butts.

Revision: 13243
The "uneffect" command takes a comma-separated list of effects to remove. If
you give it an effect whose name includes a comma (as the uneffect link we
add to the charpane does), it got confused. Therefore, first see if the
entire parameter list matches an effect name. If it does, use it, rather
than splitting the parameters at commas.

Revision: 13244
The "acquire" command can now accept multiple items

Revision: 13245
Fix (hopefully) rollover and prism break Banish resets. Fix display of turns remaining using rollover and prism break banish reset Banishes using 'banishes' command.

Revision: 13246
Fix tinyimage for three thralls

Revision: 13247
The Untinker's screwdriver is in the Degrassi Knoll Garage, not the obsolete
Degrassi Knoll

Revision: 13248
Turtle Avatar now counts as a blessing for using Shell Up! and Butts.

Revision: 13249
Pasta Thrall modifiers.txt tweaks. Vampieroghi gives +60 HP at level 10. Undead Elbow Macaroni is Elbow Macaroni. Spaghetti Elemental gives experience.

Revision: 13250
Add more lookups where effect name and skill name don't match.

Revision: 13251
Ash command is_banished( monster ) returns false if monster can't be found.

Revision: 13252
Thirst of the Weasel now level 6, Batter Up! now level 11.

Revision: 13253
Add are you sure message if visiting Hot Tub in Mafia with a pygmy shaman curse effect if you haven't yet killed the protector spirit that requires the curse effect to access.

Revision: 13254
A CoinMasterReqeust can now take an array of diverse AdventureResults to buy
or sell. This will likely turn into multiple requests to KoL, but the caller
need not worry about that.
The Coinmasters Frame now takes advantage of this.

Revision: 13255
Insert an extra div for stationary buttons so KoL's right-click menu on
items can display the results correctly.
Include the whole enclosing table for deferred uselinks so that KoL's
right-click menu will work on deferred items.

Revision: 13256
Add CLI command to buy or sell from a coinmaster:
coinmaster buy nickname item, item ...
coinmaster sell nickname item, item, ...

Revision: 13257
Blood Sugar Sauce Magic is uneffected by itself

Revision: 13258
The various Flavour of Magic intrinsic effects can all be removed by Spirit of
Nothing. For Intrinsics that can be removed by skills, make the infinity in
the charpane an undeffect link that will cast the appropriate skill.

Revision: 13259
If you are in Beecore, you cannot make sing use or multi use creations if the
usable ingredient has a B in it. Give an appropriate error message, rather than
"No results detected" if you try it - and don't even show such concoctions on
the Creatable tab of the Item Manager.

Revision: 13260
When in Hardcore or Ronin, acquire will get NPC-purchasable items only from
the NPC store.

Revision: 13261
Log start and finish of all internally-called ASH scripts: consult, recover,
counter, chat, buy

Revision: 13262
Blood Sugar Sauce Magic is different for Sauceror's and non-Sauceror's.

Revision: 13263
decoded cult documents gives you a skill.
If can't cast Pastamastery because you've already done it today, recognize that
the summon limit is exceeded and increment noodleSummons

Revision: 13264

Revision: 13265
switch () requires an expression in the parenthesis

Revision: 13266
ASH user defined functions cannot override a library function with the same

Revision: 13267
When checking to see if a user defined function overrides a library function,
if a parameter of the user function will automatically coerces into the same
type as the parameter expected by the library function, that counts as a match

Revision: 13268
Relax type checking: you can override either a user defined or library function
if the parameter types do not exactly match, regardless of coercion.

Revision: 13269
Add Dismiss Pasta Thrall

Revision: 13270
The boring binder clip is usable in Beecore

Revision: 13271
Items removed from general store. Meat spading for Nightmare Meatrealm.

Revision: 13272
ASH batching of commands will now save up and batch multiple prefixes of the
same base CLI command.

Revision: 13273
If ASH is batching commands, sell( coinmaster, count, item ) will now go through
the "coinmaster sell" CLI command to take advantage of it.

Revision: 13274
Add preferences to track things related to Big Brother:
These get set when we notice them happening: you take the choice to
open the bulkhead and release Big Brother, you buy the item from him.
They also get set if we can deduce they happened: you are able to visit
Big Brother, he does not have the particular items for sale any more.
In the Coinmasters frame, do not show things the Big Brother does not
have available.

Revision: 13275
Location Details now includes chance to get the jump.

Revision: 13276
Don't try to use "null" as a prefix when batching commands

Revision: 13277
Mark Wet Willied as providing the "Underwater Familiar" modifier.
Big Brother only needs your familiar to have Underwater Familiar, rather
than being either a water breahing familiar or you having Wet Willied.

Revision: 13278
Coinmaster "sell" requests now honor the "keep one" list.

Revision: 13279
Just like autosell, don't worry about keeping singletons in coinmasters if
you are out of ronin.

Revision: 13280
Added Ash functions:
monster_initiative( [monster] ) - returns base initiative
monster_adjusted_initiative( [monster] ) - returns initiative + ML penalty
jump_chance( [monster] [,initiative] [,monster_level] ) - returns chance of getting the jump vs the monster, optionally at a given initiative, optionally at a given monster level, otherwise current values.
jump_chance( [location] [,initiative] [,monster_level] ) - returns chance of getting the jump in the location, optionally at a given initiative, optionally at a given monster level, otherwise current values.

Revision: 13281
For the diverse ASH functions that can be batched, if they are called when
batching is NOT active, make the appropriate request directly, rather than
going through the CLI.

Revision: 13282
Updated ash commands and proxy records.
unadjusted initiative comes from monster.raw_initiative proxy.
ML adjusted initiavite comes from monster.base_initiative proxy and monster_initiative().
Also updated names internally to getRawInitiative and getInitiative.

Revision: 13283
Saucemageddon is now 24 MP

Revision: 13284
Set _badlyRomanticArrows when a Reanimator is used. Show the Daily Deed entry when you have a Reanimator but not an Obtuse Angel.

Revision: 13285
Fix for "hermit" command
hermit * clover - get all of the hermit's clovers, acquiring worthless items
hermit * pepper - get as many peppers as you currently have worthless items

Revision: 13286
Cache Faxbot config file, inspired by Catch-22's patch.

Revision: 13287
download the faxbot config file in the DynamicBotFetcher thread

Revision: 13288
Initiative displayed in Location Details is now adjusted by monster level, to bring it in line with Attack and Defense displayed.

Revision: 13289
Soul Bubble is the class stunn for a Sauceror, but it is only available if
you have at least 5 Soulsauce. Disable the stationary button for that skill
if you don't have enough Soulsauce. Do not add conditional class stun skills
twice to the Stationary Buttons.

Revision: 13290
Added modifier functions class(name), skill(name) and equipped(name) to Class and skill are allowed for modifiers.txt, and now used for Inner Sauce, Blood Sugar Sauce Magic and Accordions. Haven't removed code for Operation Patriot Shield, as the Four Songs bit can't be converted into an expression (I think). R modifier could be replaced by [5*(1+skill(Impetuous Sauciness)+class(Sauceror))] but I haven't done so at present. N modifier for Accordion Appreciation retired. HP and MP restores list, restores.txt added, but isn't yet used for anything. Class, skill and equipped will be valid for it.

Revision: 13291
Fix calavera concertina

Revision: 13292
Fix AdventureRequest.registerEncounter so that it can successfully extract the
choice # from the responseText. Exclude the Swimming Pool and the Florist
Friar from having Encounters.
When you visit the Island Barracks after defeating your Nemesis, KoL adds an
extra field - "blech=xxx" to the URL. Ignore that when recognizing encounter.
Do a bit of request logging for the Florist Friar

Revision: 13293
The CSA fire starting kit and the Tales of Dread are not Encounters

Revision: 13294
When you record a special song on the gramophone in the barracks, update the
appropriate setting that tracks the daily limit of casts for that song.

Revision: 13295
When we do a mall purchase, we give KoL the item id of the item to buy. Assume
that KoL gave us the correct item. If we parse the results and think we get
something else, don't believe it; use the original item id.

Revision: 13296
The rolling pin and unrolling pin are reusable.
"acquire" will consider going to the hermit for any item he has in stock. Out of
Ronin, it will only do this if the "expected" price of a worthless item is less
than the mall price of the item it is trying to acquire.

Revision: 13297
The pilcrow character is used in CLI commands to specify that the following
characters are a raw item ID. It can also appear as an actual character in
an item name, unfortunately. Assume that a pilcorw specifies an item number only
if it is the first character of the item "name".

Revision: 13298
Add BugbearManager to track progress of the Bugbear Mother Ship.
mothershipProgress goes from 0 to 3 as levels are cleared.
(note that we do not recognize clearing zones yet)
statusMedbay (for example) is 0-x (insufficient bodata collected), open (all
biodata collected and zone accessible), unlocked (biodata collected but zone
not yet accessible), or cleared (zone has been cleared.

Revision: 13299
If try to use a spleen item you don't have - double clicking a "use" link, say -
don't increment spleen use for the failed attempt.
Add "bugbears" command to give status of the 9 Bugbear Mothership zones

Revision: 13300
Initial Smith's Tome support. Adds Smithness for use in modifiers.txt. Recognises skill and allows casting via casting dropdowns. Increments _smithnessSummons on cast.

Revision: 13301
Add Inigo's to list of songs you can record on the gramophone

Revision: 13302
Added known Smith Tome smithed items.

Revision: 13303
gnasirProgress is a bitmap of things you've done with Gnasir to advance desert exploration:
stone rose = 1
black paint = 2
killing jar = 4
worm-riding manual pages (15) = 8
successful wormride = 16
When you find a stone rose, add [gnasir] link to visit him
When you find manual pages
- If you have less than 15, add informational [x] to tell you how many you have
- If you have 15, add [gnasir] link to visit him
When you are given the worm-riding hooks and the desert is less than 100% explored:
- If you have a drum machine, "wormride" link uses a drum machine
- Otherwise "oasis" link takes you to Oasis to find one
When you find a drum machine and the desert is 100% explored
- "use" link will use it and let you fight a giant sandworm
When you find a drum machine and the desert is less than 100% explored
- If you have worm riding hooks, "wormride" link uses a drum machine
- Otherwise, no link (lets you save it for worm riding)
When you get a desert sightseeing pamphlet, give it a use link.
When you finish your desert exploration, you get a New Area Unlocked message for A Small Pyramid. Linkify that to go to the pyramid
When you click on the image/link to visit the small pyramid, if you have "autoCraft" enabled, make a Staff of Ed first, if you can.

Revision: 13304
Shakespeare's Sisters Accordion support added (buffing and accordions command).

Revision: 13305
Added other Smiths Tome concoctions. Added banish support for Louder Than Bomb.

Revision: 13306
Add fullness and inebriety for Smiths foods/drinks. Add Smithsness to side panel. Recognise successful use of Golden Light. Add two Advent 2013 items and effects.

Revision: 13307
Fix spleen entry for smithereens

Revision: 13308
Add making a Flaskfull of Hollow by meatpasting, cannot be untinkered.

Revision: 13309
Plural for This Charming Flan

Revision: 13310
Added other missing plurals.

Revision: 13311
Distinguish Sticky Fingers (the effect) from Sticky Fingers (the passive skill)

Revision: 13312
Fix a few modifier entries

Revision: 13313
When you clear a zone in the bugbear mothership, set the appropriate statusXXX
setting to "cleared"

Revision: 13314
Add Summoning Chamber as an adventuring location (until Lord Spookyraven is
defeated, at least).

Revision: 13315
Add plurals for cold seal sweat and boiling seal blood

Revision: 13316
Add Requesting: and Retrieved: lines to the ASH trace for all KoL server

Revision: 13317
Saucepanic is a 15 turn buff item.

Revision: 13318
When you ask for the MushroomFrame, dont load the current plot data in the
Swing thread.
Checking to see if you own a mushroom plot requires a server hit. If you have
not bought a plot yet, give a visible error immediately, so the user can see
that KoLmafia went and checked.

Revision: 13319
"hermit * pepper" will get as many jabanero peppers as you have worthless items.
"hermit 5 pepper" will get 5 peppers, acquiring worthless items as needed.

Revision: 13320
With equipped accordion and Crab Claw Technique, Accordion Thieves get +50 to hit.

Revision: 13321
Mechanical Songbird is a fairy.
Provide Modifiers.getNumericModifier( FamiliarData, modifier) to get the
value of a particular modifier as provided by the specified familiar at its
current weight with its current equipment.
Use that function to get the "Item Drop" provided by your current familiar
when you are at the Twin Peaks choice adventure, since that source of Item Drop
does not count there.

Revision: 13322
bee -> ant

Revision: 13323
remove bad Override annotation

Revision: 13324
provide "svn cleanup" hook to SvnCommand in case some versioned files somehow get stuck in limbo. Untested.

Revision: 13325
fix typo preventing questF01 pref from updating

Revision: 13326
When you ascend into Valhalla (or log in while in Valhalla), mark the
Guild store as known to be unavailable.

Revision: 13327
The "stills" daily deed need not check if the guild store is open unless you
are a Moxie class with the Superhuman Cocktailcrafting skill.
The Bugbear "biodataZONE" settings have been removed, since the "statusZONE"
settings provide everything those settings provided and more.

Revision: 13328
Fix for Smithsness handling by Maximizer. Calculates smithsness from equipment and effects before parsing all the other modifiers.

Revision: 13329
Refactor FamiliarRequest to update our data model when the response comes
back from a request, rather than when we are about to submit the request.

Revision: 13330
Added two plurals

Revision: 13331
Add Can of Spaghetto

Revision: 13332
Add ash command my_storage_meat()

Revision: 13333
Add a zap group

Revision: 13334
modtrace now prints only two digits after the decimal in the running total
column, just as it does in the individual change column.

Revision: 13335
When cast by a non Pastamancer, Shield of the Pastalord confers Flimsy Shield of the Pastalord. The Evaluator code is probably not going to be relevant at present, but if we ever support modifiers of the form "Reduces physical damage taken by X%" it'll be needed.

Revision: 13336
Frankly Mr Shank now Muscle.

Revision: 13337
Add "debug listener on" (and off) command to enable/disable logging when
preference listeners are fired.
Defer preference listeners while refreshing the session; fire them only after
the session is done loading.
Defer preference listeners while parsing api.php?what=status, rather than
firing the (character) listeners multiple times.
When we are refreshing the session, do not ask for api.php as a result of
KoL telling us to reload charpane.php, since none of the requests we make
can actually change the status.

Revision: 13338
Use a few more efficient operations (like addAll) when getting all of the
preference listeners.

Revision: 13339
Defer/undefer firing listeners around the processing the response of any request
not just an api.php request.
Do not fire a (character) change after every request; let the individual request
decide to do that as appropriate.

Revision: 13340
Don't try to burn mana on skills to extend an effect you can't get due to class or other effects.

Revision: 13341
Fix Dungeon Fist image display with Stationary Buttons or Combat Action Bar.

Revision: 13342
When we process a "rel" string, that precisely identifies the item that has
been moved to inventory.

Revision: 13343
If MindControlRequest needs to "retrieve" a detuned radio by purchasing it,
save a restore an outfit so you don't get left wearing Travolatan trousers.

Revision: 13344
Add a few plurals. Haggis-infused soap is multi-usable.

Revision: 13345
KoL calls it "The Typical Tavern Cellar", not "Tavern Cellar". Fix logging
visits to include the explored square again.

Revision: 13346
If a charpane looks like it is older than what api.php told us, don't process
it, but don't suppress showing it to the browser.

Revision: 13347
Using rusty hedge trimmers redirects to a choice adventure in Twin Peak

Revision: 13348
Visit place.php?whichplace=town_wrong, not town_wrong.php to unlock the arcade.

Revision: 13349
Fix the URLs of a lot of "maps" (containers) that contain adventuring zones

Revision: 13350
handful of Smithereens is multiusable

Revision: 13351
A few changes to the side panel in Mafia. If you are a Seal Clubber, Sauceror or Disco Bandit you'll see Fury, Soulsauce or Disco Momentum displayed between MP and Meat, otherwise the line is blank. Hobo Power, Smithsness, Beeosity, Surgeonosity, Raveosity, Clownosity are now displayed in one of four lines below Item drop change. If you have more than four, only four will be displayed. If you have less, the remainder of the lines are empty.

Revision: 13352
giant jar of protein powder is multiusable

Revision: 13353
Add a few accordions for the level 13 quest

Revision: 13354
Fix ConcurrentModificationException

Revision: 13355
More multiusable items

Revision: 13356
papier-mâché glob is multiusable

Revision: 13357
Logging "choice.php?forceoption=0" is uninteresting.

Revision: 13358
Add support for Penne Dreadful and Elbow Macaroni thralls, and for ph balancer, as new stat equalizer types

Revision: 13359
When getting the default plural for an item, use the "data name" rather than the
"display name".
When KoL and KoLmafia's idea of whether an item is multiusable differ, change
the item in KoLmafia's internal database for the duration of the session.

Revision: 13360

Revision: 13361
The URL to visit the small pyramid has changed, so dection of its opening fails

Revision: 13362
Send mall purchases through standard "relstring" item recogniztion path.

Revision: 13363
The "skeleton" command will acquire a skeleton to use before trying to use it

Revision: 13364
Iron Palm Technique costs 0 MP and gives you the intrinsic Iron Palms, which can
be removed by casting Iron Palm Technique again.

Revision: 13365
Soul Rotation may only be cast by Saucerors.
! Potions are multiusable, Camp Scout pup tent is not.

Revision: 13366
Single in items.txt means single usable in combat. Usable in items.txt means single usable from inventory. Hopefully I've changed the right things in the right places!

Revision: 13367
When we find a new item with a relstring that says the item is multi-usable,
log the item as "multiple" rather than "usable".

Revision: 13368
KoL Con X Treasure Map

Revision: 13369
You can use a miniborg hiveminder to get a destroy-o-bot, and vice versa. Provide a warning if you try to use a spice melange or Ultra Mega Sour Ball with less than 3 fullness and drunkenness used.

Revision: 13370
Refactor some stuff from the previous commit

Revision: 13371
Add Nanorhino charge tracking.

Revision: 13372
Show Nanorhino charges in character pane.

Revision: 13373
Soul skills only available as Sauceror, so don't add them if Soulsauce is known but you aren't a Sauceror.

Revision: 13374
When you try to insult a pirate and he stammers and turns red, that still
counts as your once-per-battle insult attempt.
Fix proxy records: item.usable -> ItemDatabase.isUsable amd item.multi ->
Define isUsable to be anything that you can inv_use.php on and isMultiUsable
to be anything that you can multiuse.php on.

Revision: 13375
Fix a few items and effects, courtesy of checkitems and checkeffects

Revision: 13376
Update mallprices

Revision: 13377
Bump version to 16.2