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: 14576
Add warning to Daily Dungeon chambers 5 and 10 if not wearing Ring of Boring Doors, but you do have one, including link to equip it. Handle Teleportisis more gracefully in Sorceresses Lair if Ring of Teleportation is worn (untested).

Revision: 14577
Track starting heavy rains skill items. Allow Spell Crit as a Maximizer keyword. Set current turns this run to 0 at Ascension, as otherwise it isn't set until after parsing items acquired. Add some missing coinmaster currencies in ResultProcessor.

Revision: 14578
Only update the location to the Summoning Chamber when entering the boss fight

Revision: 14579
Tavern booze available when Rat quest at step1 or later, not when started or finished and not in between. Refresh concoctions when step1 is reached, as Paint A Vulgar Pitcher becomes craftable.

Revision: 14580
Rat, not Bat.

Revision: 14581
groping claw does sleaze damage now

Revision: 14582
Remove heavyRainsPoints. Fix parsing Red Buttons used in final round of combat. This does not fix the KoL bug where Red Buttons used are not reduced in combat drop down.

Revision: 14583
Add a couple of missing breaks

Revision: 14584
Add some new default goals.

Revision: 14585
Some items from the 2014 Con item

Revision: 14586
Untinker command now passes null, rather than inventory, as list to search.
Eat/Drink/Use command calculates a filter and now actually uses it.

Revision: 14587
More Xiblaxian items

Revision: 14588
Fix typo

Revision: 14589
parse pirateSwagger when you visit the Swagger Shop

Revision: 14590
Fixed some incorrect images for monsters.

Revision: 14591
Some missing monster images added and incorrect images fixed.

Revision: 14592
Some new goals for level 11 quests. Your Own Black Heart isn't multiusable.

Revision: 14593
Give the video game monsters a default image other than the ?

Revision: 14594
Ugly hacky fix for recording how recipe was read when read automatically.

Revision: 14595
Untested - Recognise that you've completed war when you kill Heavy Rains war bosses. A couple of the Con item things start fights.

Revision: 14596
Warbear Autoanvil support - untested. An Xi Receiver item

Revision: 14597
Missing null check.

Revision: 14598
Add proxy record for $phylum with the only field, for now, being .image
Use our singleuse() JavaScript function when using another A-Boo clue

Revision: 14599
Add three 5D Printer holo-schematics.

Revision: 14600
Add Element proxy record. Only field is image.

Revision: 14601
Holo-tank and some Pantsrack/Hatrack effects (from wiki or spading)

Revision: 14602
Fix check for whether the protector specter in the office building is available

Revision: 14603
Initial support for Pirate Bellow

Revision: 14604
Holographic army stats.

Revision: 14605
Add can_faxbot( monster ) ash command.

Revision: 14606
Fix a typo, add a status effect emitted by my hookah, and verious Xiblaxian
items found in the mall.

Revision: 14607
Add Xiblaxian 5D printer shop and the items it sells. There is no checking yet for whether you know the recipe for an item.

Revision: 14608
Since Xiblaxian recipes need to be unlocked, add unknownRecipe settings

Revision: 14609
Fix typos

Revision: 14610
Recognise failure to use beautiful rainbow due to not having any, and don't tell user it is maxed out. Don't cast AdventureResult to CheckedItem in Maximizer.

Revision: 14611
Remove unnecessary (and now wrong) update to Worship quest.

Revision: 14612
Temporary work around for can_faxbot(), it doesn't check if bot is online, so as not to hit KoL servers many times if many checks are made.

Revision: 14613
Put on underwater equipment to visit Mom Sea Monkee. Should only try if you have completed quest, have underwater equipment and haven't received food today. We can't detect failure to get a second, as there is no text received, I believe.

Revision: 14614
Add mouseover for Infernal Thirst in Summoning Chamber daily deed dropdown.

Revision: 14615
ash command appearance_rates( location ) returns -1 as appearance rate for Ultra-rare monsters.

Revision: 14616
Return weight rather than combat rate in appearance_rates if weight is less than or equal to 0.

Revision: 14617
List effect rather than mom command in daily deeds dropdown for Mom Food.

Revision: 14618
Update unknownRecipe settings for Xiblaxian items that you can make when visiting the shop or when you use a schematic

Revision: 14619
Xiblaxian Stealth Suit

Revision: 14620
Untested. If you use summon clip art from the skill casting frame it pops up a message to recommend using create tab, and does not submit a blank clip art request to KoL.

Revision: 14621
Only store one meat value for monsters (as KoL does from watching Twitch), and calculate max and min from it. Changed clear values (and added some spaded ones) in monsters.txt to single value. Those that have a range still could do with spading to increase accuracy (and of course some always can be wrong).

Revision: 14622
Add a couple of relay options to Preferences.

Revision: 14623
Only one option on Choice 976

Revision: 14624
As we now have a base meat value for monsters, use it unmodified when needed rather than recalculating it based on min and max meat.

Revision: 14625
Save an outfit checkpoint for untinker command.

Revision: 14626
Refactor and generalize conditionally showing items in the Coinmasters frame,
rather than having special knowledge of the "side" which did the Lighthouse
sidequest in the war; only the Dimemaster and Quartersmaster care about that.

Revision: 14627
On Pulverize Panel, add an Other selection. Smiths and all other oddities (sea salt crystal, epic wads, useless powder etc) appear here.

Revision: 14628
Do not show Black Bart's Booty in the Swagger Shop coinmaster if you either
have not earned 1,000 pirate swagger or visiting the shop does not show it
as available.

Revision: 14629
If you get or use Black Bart's booty, mark it as unavailable in the swagger shop

Revision: 14630
In order to avoid bug reports about a cosmetic issue, move Black Bart's Booty
to the end of items available in The Swagger Shop

Revision: 14631
Remove a potentially problematical line in Evaluator.

Revision: 14632
Fix Sorceress Tower quest tracking. Cannot perm Old Old Smile of Mr A.

Revision: 14633
Use "canBuy" mechanism to filter out lighthouse items and Black Bart's Booty
from Coinmaster inventories.

Revision: 14634
Must refilter items in Warmaster buy panels after setting this.side

Revision: 14635
Coinmasters frame will show you Black Bart's Booty if it is available in the
Swagger Shop, but it will be greyed out and unpurchasable if you have not
accumulated enough pirate season swagger, regardless of how much total swagger
you have.

Revision: 14636
Don't show items at the Arcade Ticket Counter coinmaster if you can't buy them

Revision: 14637
Since both ArcadeRequest and TicketCounterrequest want to deal with (parts of)
arcade.php, do a little tweaking so that "visit" in the Coinmaster Frame will
actually go to the ticket counter and see what is on offer there.

Revision: 14638
Fix item id

Revision: 14639
Do not strip out img tags when formatting chat messages for the chat GUI.
Add "test chat" command, which can be used following "test load FILE", to
interpret the loaded HTML as incoming chat in "older" format, as interpreted
by the ChatParser for use by the chat GUI.

Revision: 14640
Add Xiblaxian familiar and its equipment

Revision: 14641
Effect names are now stored and manipulated exactly as they appear in
statuseffects.txt, rather than sometimes as the "display name" and sometimes
as the "data name". Among other things, this fixes looking up modifiers for
effects with HTML entities in their name.

Revision: 14642
Add Ye Olde Medievale Villagee clover adventure

Revision: 14643
residual zeal stats

Revision: 14644
Remove "2 Love Me, Vol. 2" when you are asked to find wet stunt nut stew

Revision: 14645
Fix check for a reward in the mariachi barracks to work for the silver pate
knife and the 3 cans of sterno

Revision: 14646
If you read mortar disolving recipe without glasses when you've previously read it with them, you've still read it with them.

Revision: 14647
Rain Man costs an adventure. Skills can have multiple resource costs now.

Revision: 14648
Wet Russian consumption stats.

Revision: 14649
Give a counter warning in the Relay Browser if you are about to use an item or
skill that is expected to lead to a fight.

Revision: 14650
Restore run_combat() behavior of returning the previous combat's last round of HTML when not in combat by not unnecessarily loading fight.php

Revision: 14651
The counter warning for using a skill that can take a turn needs to be
submitted via POST. Therefore, craft a form with an "image" input to handle it.

Revision: 14652
Set quest progress upon killing level 8 Heavy Rains boss.

Revision: 14653
Exclude a dev page from result processing

Revision: 14654
They liver, fix a plural

Revision: 14655
For users who build mafia using something other than ant, KoLConstants.REVISION will be null (and thus ash get_revision() == 0). Since we have a handy-dandy SVN client built in to mafia, use that to query if the ROOT_LOCATION is in fact a working copy - if so, grab its revision number.

Revision: 14656
Fix a bunch of plurals

Revision: 14657
If you attempt to Grab a Cold One but have already done so today, detect the
failure and set _coldOne to true

Revision: 14658
Degrassi Gnoll Meat Spading. I've updated Sorceress which no longer exists with a guess. I believe Mafia (and Wiki) would be wrong as a range 19-28 isn't possible with the way meat drop now seems to work.

Revision: 14659
Add 'since' directive to allow ASH scripts to enforce a minimum version/revision of mafia. It goes right after the 'script' and/or 'notify' directives, if present.
Cache svn revision number in StaticEntity, if we have to look it up that way.

Revision: 14660
rename some locals

Revision: 14661
More plurals, courtesy of Crowther and Yendor

Revision: 14662
Fix plural for googly eye and eel battery

Revision: 14663
The browser submits requests to newchatmessages.php and submitnewchat.php using
a GET. Therefore, ChatRequest now submits to those pages using a GET.
The browser requests new chat messages from mchat ("modern" tabbed chat) with
a "lasttime" field. Therefore, the Relay Browser dutifully forwards on that

Revision: 14664
Clean up code & comments in ChatRequest

Revision: 14665
Adding the ability for the charpane to update the safety text no longer
suppresses the rollover timer.

Revision: 14666
If MacGuffin quest started when you visit Council, start Black quest if it isn't. Untested.

Revision: 14667
More malware excision.

Revision: 14668
Fix HP parsing under some circumstances

Revision: 14669
Initial support for The Road to the White Citadel revamp

Revision: 14670
More support for The Road to the White Citadel revamp

Revision: 14671
A few new items

Revision: 14672
Some more Road to the White Citadel stuff.

Revision: 14673
Don't try to change Florist Friar plants while in the middle of a (non)combat

Revision: 14674
Fix queue-adjusted appearance rates when monsters not in the normal monster list are encountered

Revision: 14675
Some monsters

Revision: 14676
You can't use a Chroner cross without a Chroner

Revision: 14677
Bat Hole Meat spading

Revision: 14678
Road to THE White Citadel

Revision: 14679
Add tab in monsters.txt. Don't know what the image name should be.

Revision: 14680
Image for Xiblaxian political prisoner

Revision: 14681
First attempt to get private messages sent from the chat GUI to appear up in
"modern" chat in the Relay Browser.

Revision: 14682
Handle send private messages in the chat GUI and having them echo in the
Relay Browser when "modern" chat is open.

Revision: 14683

Revision: 14684
Fix older chat in relay browser: do not duplicate messages we've already seen.

Revision: 14685
When passing messages from "modern" chat running in the relay browser back to
the Chat Manager, omit public messages which were originated in the chat GUI,
since they have already been recorded.

Revision: 14686
When checking if a sent message has already been seen, only look at messages
that were sent since the last time the browser polled for messages.
Synchronize all access to the ChatPoller.chatHistoryEntries list.

Revision: 14687
Track monster Make Friends or Nosy Nosy Whiff is used on. Handle encounter weights properly when accounting for queue effects. Account for use of Make Friends, Nosy Nose, Staff of the Cream of the Cream and the additional copy part of Olfaction when working out encounter chances. Note, am assuming that banish doesn't change number of copies if there is a copy increasing effect present, and that Nosy Nose and Olfaction extra copies stack. If wrong, let me know and I'll correct. This does NOT include the queue rejection change for Olfaction.

Revision: 14688
Banishing reduces the number of copies of a monster in the encounter pool even if there is a copy increasing mechanic in effect.

Revision: 14689
Guide-proof the volcano maze solver: do not use the continuation state to
communicate success or failure across function calls

Revision: 14690
Don't parse extra familiar information from the charpane when SOME PIGS is active

Revision: 14691
Snakeleton initiative, Post-cyrpt cemetary meat spading.

Revision: 14692
Fix URL for Summoning Chamber

Revision: 14693
Show the pig when your familiar is a pig

Revision: 14694
Guide-proof hedge maze script. Need .gif at end of familiar image.

Revision: 14695
Add monster rejection chance handling. Update combats.txt to specify it. Slight format change to how to specify even and odd ascension monsters in combats.txt. Wild seahorse stats from wiki, fix for Bat quest tracking. Experimental, encounter chances in Bat Hole are varied based on Bat quest and number of turns spent in Screambat areas.

Revision: 14696
Quest tracking for Moxie Guild quest. Not entirely certain the quest log reading will work correctly as it has the same title as the Myst guild quest. Can check next time I'm Moxie.

Revision: 14697
If you use a skill-granting item in Heavy Rains when you already have the
entire skill tree, you throw the item away.

Revision: 14698
Recipe for They liver popsicle

Revision: 14699
Item drops for Twitch 4 monsters

Revision: 14700
Pandamonium Meat Spading

Revision: 14701
Lightly tested. Check for success messages in Haiku and Anapest for many occasions where skills or items were used.

Revision: 14702
Stats for Dis monsters

Revision: 14703
Frat House and Tower Ruins meat spading

Revision: 14704
Support Olfaction queue rejection in appearance rates given for monsters. Only consider olfaction effects with on the trail effect. The Red Fox is just a Red Fox.

Revision: 14705
Look up single use (multiuse, chefstaff, meat stack, noodle) concoctions using
item ID, not name.

Revision: 14706
Handle monster appearance rates in Area Data and ash correctly for Defiled Alcove and Lair of the Ninja Snowmen. Cyrpt zones are 85% combat.

Revision: 14707
modernize RequestThread.runInParallel: use a thread pool executor to reuse worker threads that are run in parallel, instead of spawning a new thread for everything.

Revision: 14708
Refactor some one-off classes that extend Thread to instead implement Runnable. Execute these through RequestThread.runInParallel.

Revision: 14709
Avoid NPE in adventure queue management

Revision: 14710
revert Revision 14708 while I investigate.

Revision: 14711
En Una Fila Tequila. No consumption data added as unknown.

Revision: 14712
Encounter for Rad Fox is The Red Fox.
Superlikely Chance can't go above 100 or below 0.

Revision: 14713
Red FOx is the encounter

Revision: 14714
Umm. No.

Revision: 14715
Don't use a blocking queue in the thread pool executor.

Revision: 14716
un-revert Revision 14708 now that the underlying bug is fixed.

Revision: 14717
Fix potential issue with not accounting for superlikely monsters. I'm not currently aware of any time that would have been an issue, but best to fix the logic

Revision: 14718
Just fetch faxbot/buffbot data in the current thread rather than firing off a new thread and then waiting for that thread to finish. Strip out unnecessary global synchronization counters.

Revision: 14719
invoke faxbot/buffbot fetchers through RequestThread rather than directly calling .run()

Revision: 14720
AdventureRequest now uses consequences.txt to work out monster names in addition to it's own overrides. ConsequenceManager now stores/compares monsters in their proper case, rather than converting to lower case. Monsters can have an optional type defined in monsters.txt (WANDERER, SEMIRARE, SUPERLIKELY, FREE, ULTRARARE). Currently this only prevents them being added to adventure queue. This does not clear those existing monsters out of the queue (ascending or meeting 5 monsters in the zone that don't meet those requirements should).

Revision: 14721
Use flags in monsters.txt rather than a hard coded list to identify ultrarare encounters.

Revision: 14722
keep agent threads in a Set rather than a List.

Revision: 14723
Sort of monsters.txt, because I finally snapped and moved the rest of the event/IotM monsters out of the general monsters section.

Revision: 14724
Oops, forgot to change the monsters.txt file version.

Revision: 14725
Use new function for determining if an encounter is superlikely based on monsters.txt flags in Area Combat Data. It still needs the chance calculated there, though.

Revision: 14726
Move around a few monsters

Revision: 14727
Log progress through tile puzzle in the Hidden Temple

Revision: 14728
Tweak message slightly: it's not just vowels that are "an" vs. "a"

Revision: 14729
add fixedThreadPoolSize pref - diagnostic/fine tuning for limiting the threadpool size.

Revision: 14730
Amok Putty stats

Revision: 14731
Generalise handling of Jackhammer, Auto Anvil and Thor's Pliers rather than having separate functions for each. Consider them when determining how many items you can make. Improve handling when we parse messages saying they are used, so if we make multiple items which activate more than one, we handle the saved adventures by incrementing the right tracker. Co-incidentally ignores the KoL bug where Thor's Pliers says it helps when Jackhammer or Auto Anvil actually are helping instead.
Will need extra work if we ever allow smithing or jewelrycrafting to be queued.

Revision: 14732
"sandbox" relay threads so that they get their own continuationState. This means, among other things, that relay scripts should not be able to interact with the main KoLMafia display, other than to print things to the gCLI.

Revision: 14733
refactor CommandQueueHandler: use a BlockingQueue to put the thread to sleep, rather than periodically polling a list.

Revision: 14734
In Valhalla only show Eudora choice if you have one.

Revision: 14735
Amok Putty rejection rate.

Revision: 14736
Add a few equipment powers. For the Concoction object, make sure that equals,
hashCode, and compareTo all meet the general contract of that method.

Revision: 14737
Fix Eudora decorator, better this time. I hope.

Revision: 14738
Rewrite that CommandQueueHandler refactoring a bit.

Revision: 14739
skip hidden files that may have been put in svn/ when doing an update.

Revision: 14740
Remove items when you donate them in the Survivor Encampment

Revision: 14741
Some Twitch stuff

Revision: 14742
Fix turn tracking? Why is Monster Tracker lowering the case? Will work that out another day.

Revision: 14743
The Applecalypse Store

Revision: 14744
fix another hidden file + svn update bug

Revision: 14745
Twitch items and concoctions

Revision: 14746
Update the "no Chroner" message for Chroner-using shops

Revision: 14747
Reset post-mall turn counter at ascension.

Revision: 14748
Fix familiar typo

Revision: 14749
one more ScriptManager hidden file bug

Revision: 14750
modifier for french-fry grabber. town.php -> place.php?whichplace=town

Revision: 14751
Multi Use creations now need to use inv_use.php if the use quantity is 1

Revision: 14752
When start up ChatManger, open windows for all currently open channels (which
will only be known if chat is already open in the relay browser). As before, if
no known channels are open, start with a "/listen" command to find out which
channels are active.

Revision: 14753
When we dispose of the chat frame, clear active channel so that we /listen next
time we open it.

Revision: 14754
add entry to array before getting size

Revision: 14755
White Citadel drop rates/meat drop

Revision: 14756
Make VolcanoMazeManager.Path iterable. Allow "volcano test" command to be
called with no additional arguments to mean "volcano test 1 6 12"

Revision: 14757
Address race condition regression in CommandDisplayFrame.hasQueuedCommands() caused by command handler refactoring.

Revision: 14758
fix boolean un-logic

Revision: 14759
VolcanoManager doesn't need to open request sequences in order to run requests

Revision: 14760
sandbox the relay combat thread, too.

Revision: 14761
If the moon sign change when ascending changes available cafes, update available items without having to restart item manager/mafia. Untested.

Revision: 14762
Update some concoctions that didn't specify which advanced smithing skill was needed.

Revision: 14763
Adjust equals, hashCode, and compareTo methods for Concoction to compare names
ignoring case.

Revision: 14764
add "test xpath" to, well, test xpath expressions.
pull out HTMLCleaner config into a helper class (that will get more stuff later)

Revision: 14765
Update The Game Grid Arcade for shop.php and place.php

Revision: 14766
Tighten up Concoction.compareTo: don't do capacity calculations unless sorting
bu room.
Whack Chat Poller to have a "normal" delay and a "paused" delay. If you are
running mchat in the relay browser, obey the delay suppliced by KoL itself.
If you are running lchat in the relay browser, recognize when it says you are
"away" and slow down the same way the browser does.

Revision: 14767
Update our copy of HtmlCleaner to the latest released version.
Expose an xpath function that relay scripts can use after they've invoked visit_url(). Provisional, API may change in the future, yada yada.

Revision: 14768
ant isn't picking up the new jar for some reason; revert Revision 14767 while I fix.

Revision: 14769
Remove debug print

Revision: 14770
Sigh. And another one.

Revision: 14771
consumption stats for glass of bourbon

Revision: 14772
re-commit Revision 14767 with a fixed build.xml

Revision: 14773
remove unnecessary upcast to StringBuilder

Revision: 14774
Fix purchasing items from Game Grid Ticket Counter (does not fix Skeeball or other issues, but one thing at a time!)

Revision: 14775
revert the htmlcleaner changes - again. It broke a lot of fight parsing.

Revision: 14776
Submit arcade requests via GET; skeeball and jackass plumber now work again.

Revision: 14777
aDeduct the correct number of Game Grid tokens for various ArcaseRequests

Revision: 14778
Track turns spent in each location. This is accessible through the $location.turns_spent proxy field.

Revision: 14779
even though they're no longer subject to the global continuationState, relay interpreters can still be shut down explicitly by declaring world peace.

Revision: 14780
Handle turn tracking for unknown locations

Revision: 14781
First attemp at making the chat GUI go into and come out of "away" mode

Revision: 14782
fix off-by-one command queue display

Revision: 14783
re-implement ASH xpath function in our current version of htmlcleaner. This one has an argument to specify the html you want to parse.
xpath( html, xpath_expression ) => aggregate string[]

Revision: 14784
optimize a bit by reusing the same xml serializer

Revision: 14785
Hatrack and Scarecrow can use Familiar items. Refresh equipment lists for familiar equipment in addition to Hat, Pants and Weapon lists respectively when swapping items on Hatrack, Scarecrow and Disembodied Hand.

Revision: 14786
In Maximizer, if familiar is Disembodied Hand, Hatrack or Scarecrow, consider two familiar items, as one may also be considered as a weapon, hat or pants to meet the requirements.

Revision: 14787
Infinite Meat Bug meat drop

Revision: 14788
don't print a stacktrace if you test an invalid xpath expression

Revision: 14789
Do not disable "away" mode in relay browser lchat. Handle "away" mode in
chat GUI and interoperate reasonably with both lchat and mchat in the relay

Revision: 14790
chat GUI goes into away mode a little slower than browser chat, to give the
browser a chance to go first, if you run both simultaneously.

Revision: 14791
Arena parameters for Baby Z-Rex. Count arena win if result does NOT contain the
word "lost". Skip blank lines when collecting arena contest lines.

Revision: 14792
Reset turns spent in locations when you ascend

Revision: 14793
Actually, a blank line in the familiar training results is a KoL bug.
Report it as such.

Revision: 14794
New White Citadel quest tracking. Familiars give no effects under SOME PIGS. Remove handling for old White Citadel Quest

Revision: 14795
Track hellseal pup screeches. Handle Mother Hellseal Atk, Def, HP, Exp and appearance rate.

Revision: 14796
Track when you permanently unlock the spooky airport

Revision: 14797
Some Conspiracy Island stuff, including A Vending Machine.

Revision: 14798
Conspiracy Coinmasters, more items, skills

Revision: 14799
Some plurals, an item and an item fix.

Revision: 14800
Fix skeeball command

Revision: 14801
Fix visiting Jackass Plumber

Revision: 14802
Slide in a message in the ChatFrame when you're away; clicking it drops you out of away mode.

Revision: 14803
Use NamedListernRegistry, not PreferenceListenerRegistry, for [chatAway]

Revision: 14804
Track puns and handle equipment removal for (as yet unnamed) jungle pun quest. Track control panel settings and update Lab monster stats as appropriate. Add a couple of items.

Revision: 14805
Don't produce a NPE when the "test" command isn't supplied with HTML

Revision: 14806
Minor data file fixes

Revision: 14807
When you gain the Nemesis hat in combat, give two use links: return to your
guild to visit the SCG NPC, and equip.
When you gain the Nemesis Accessory in combat, give two use links: return to
your guild to visit the SCG NPC, and outfit.
When you find a clue in The Barracks, log it in session log, too.

Revision: 14808
Give a link to the Guild SCG NPC when you gain the volcano map.

Revision: 14809
Smoker's cloak

Revision: 14810
When a Huggler Radio message arrives in the same lchat bundles of messages as
a non-Huggler Radio message, do not suck the second message into the first one

Revision: 14811
Do not throw an exception if you type a simple "/clan" in chat in the
relay browser.

Revision: 14812
don't send chat message in the swing EDT.

Revision: 14813
More Conspiracy Island content

Revision: 14814
Allow extra long messages from the chat GUI to be split into multiple requests
in /clan, just as it does for other channels.
If you provide a super-long line of chained chat commands in the chat GUI split
them into multiple messages on " && " boundaries.

Revision: 14815
Let chatbot scripts interact in /talkie, since that is essentially a private

Revision: 14816
Fix typo

Revision: 14817
Fix more typos

Revision: 14818

Revision: 14819
Comment zone names in monsters.txt. PVP attack events in the chat GUI has a
link to look at the log of the fight. COnfigure this to open in browser.

Revision: 14820
Quest tracking for 4 Conspiracy Island quests (EVE, Jungle Puns, Gore and Clipper). Missing one quest log entry (Clipper quest note to return to radio). Records EVE directions, but doesn't (yet) spoil the spoiler with them. I'll look at spoilers when I next get the quest if no one beats me to it.

Revision: 14821
Secret Government Lab drops added to monster drop lists.

Revision: 14822
Add and handle Spooky Island one day ticket. Gore is found in Lab, not Jungle.

Revision: 14823
Some Meat and Consumable spading

Revision: 14824
Correct typo

Revision: 14825
Fake Medium quest tracking

Revision: 14826
Twitch Food consumption data, taken from Twitch Stream.

Revision: 14827
Change (most) experience expressions to use ML/3 rather than ML/4. Read substats in api into a long rather than an int.

Revision: 14828
Ham Steak and filet of The Fish adventure and stat gain.

Revision: 14829
Get around KoL bug: when you unequip a familiar without using ajax, it shows
you your terrarium the item still on the familiar. Therefore, when we "acquire"
a familiar item by stealing it from a familiar, make the request with ajax=1

Revision: 14830
If "using" and item results in a fight, we automate it. If automation completes
the fight, run your afterAdventureScript

Revision: 14831
Mood files now specify the type of lists and use implicit iterators.
Fix equals (and compareTo) method of MoodTrigger: unconditional triggers have
no name, thereore compare (or are qual) on the basis of the action string.

Revision: 14832
Set the font used by the RequestPane in the the chat GUI to be the same as is
used in the text entry field of the chat GUI.

Revision: 14833
Make font size changing affect only the chat frame

Revision: 14834
Cassette has two s's. Fix Cassette tracking updating Jungle Pun quest, and update Gore quest when Gore Bucket equipping.

Revision: 14835
Positive Monster Level gives ML/3 stats, negative Monster Level reduces stats by ML/4. Water Level gives WL*10/3 stats (untested code as I'm not in HR). Disco Bravado expression corrected. Some scaling monster caps/floors/ml expressions corrected.

Revision: 14836
In the Arena, the opponent's name is not always at the beginning of the "this
familiar sucks at this contest" message.
Arena parameters for the Xiblaxian Holo-Companion

Revision: 14837
Add new possible attributes to monsters.txt, Scale: X (monster that scales to MUS+X/MOX+X, and is affected by positive ML, and has 75% of Def HP), optionally Cap: Y and Floor: Z (only affects scaling monsters), MLMult: M (is 5 for Cave Bars, 1 is default, 0 for unaffected by ML monsters). Convert existing scaling monsters to use Scale/Cap/Floor. Increment monsters.txt version. Make the monsters.txt attribute string available to scripts via monster proxy (.attributes).

Revision: 14838
The drink command now does fuzzy matching for speakeasy drink

Revision: 14839
transdermal smoke patch is a spleen item.

Revision: 14840
Move font rom ChatFrame back to RequestPane. Use KoLConstants.DEFAULT_FONT

Revision: 14841
Check location isn't null before getting water level.

Revision: 14842
Include -stat ranges for spleen items as they do work (there are probably foods and boozes to look at too), -5-10 parses as -5 to -10, and is averaged to -7.5, for example. Pre-cyrpt meat spading.

Revision: 14843

Revision: 14844
Revert setting font in RequestPane to default. It should be already, anyway.

Revision: 14845
"an errant cube of chalk from the pool table" is NOT a clue that a key is
in the pool table.
Fix guild link when you get the volcano secret tropical island volcano lair map

Revision: 14846
Fix various data errors revealed by checkitems. walkie talkie has been
renamed to walkie-talkie. Finally.

Revision: 14847
The Rich Get Richer

Revision: 14848
trench lighter, Lab meat spading, mimes have floor of 3.

Revision: 14849
Serum Sortie quest tracking.

Revision: 14850
Update Batter Up! success message

Revision: 14851
Detect message that gore bucket is full, if mafia isn't up to date on the collection count.

Revision: 14852
Fix tracking of Subject 37 quest. Only update Serum quest on Serum drop when quest in progress. Track Yellow Taffy Summons as _taffyYellowSummons.

Revision: 14853
Summon Candy Hearts -> Summon Candy Heart. Super Skill makes combat skills cost 0 MP.

Revision: 14854
Added rare drops to Jungle monsters.

Revision: 14855
Fix some phyla. ASH abort() function sets continuation state and interpreter
state directly, rather than invoking world peace

Revision: 14856
The ESC key no sets userAborted, which can be looked at by any thread.
ChoiceManager's auto-choice function checks whether it should continue at top
of loop. You can still set up choice chains which loop infinitely, but you can
use ESC to get out of the loop, at least.

Revision: 14857
In the chat GUI, up arrow and down arrow now move within the history of
commands that you have previously entered.

Revision: 14858
Make StyledChatBuffer do a better job of not highlighting HTML tags.

Revision: 14859
Drinking booze via chat macro submits a request, whether or not you actually
have as many items as you request. Detect the failure, if you asked for too
many, and doen't modifiy inventory.

Revision: 14860
Quest Log current quests is now tab 7, as well as 1. Track Smokes quest. Fix Gore quest tracking (missing message handled). Notice Serum quest finished. Fix quest log parsing for Serum quest. Reset Conspiracy Island quests at ascension. Reset Conspiracy Island quests to unstarted before parsing quest log current quests, so they don't get stuck at odd values. (Effectively Conspiracy Island quests can't be finished, they just go back to unstarted)

Revision: 14861
Since Conspiracy Island quests can't be finished, set them to unstarted rather than finished when they are completed

Revision: 14862
Palindrome Meat Spading

Revision: 14863
Clear Conspiracy Island quests when accepting a new one, as you can only have one active at a time, so the others cannot now be in progress.

Revision: 14864
Xiblaxian consumable adventure gain.
I'm not 100% certain, as I've only seen 19-22 on each, but 18-22 is a much more common range than 19-22, and ranges normally centre on either an integer or half integer multiple of the size.

Revision: 14865
Use generics in a lot of places where we have lists of SpecialOutfit objects.
Include all the hooks needed to include "Your Previous Outfit" in the outfit
list in the Gear Changer; it will submit "whichoutfit=last" - as soon as we
uncomment it after KoL fixes a bug.

Revision: 14866
When automating a chain of choices, don't require permitsContinue; require

Revision: 14867
Menagerie 3, Arid Extra-Dry Desert and Valley of Rof L'm Fao meat spading.

Revision: 14868
Don't try to look at Evilometer when Bonerdagon dead. Add QuestDatabase.isQuestStep to simplify checking when a quest is on a particular step. Use that in a few cases.

Revision: 14869
Remove Conspiracy Island quest equipment when you turn in the quest even if you aren't wearing it

Revision: 14870
Update power for tiny plastic peacannon

Revision: 14871
Rationalize some function names. Do not add Your Previous Outfit to the
Custom Outfits list, since we put it on the Normal Outfits list. Don't let
-No Change- get replicated repeatedly in the Custom Outfits list

Revision: 14872
Remove settings for turns spent in zones. Use internal turn tracking instead.

Revision: 14873
More use of internal turn tracking

Revision: 14874
Add "Your Previous Outfit" as an option that you can select in the Gear Changer
(via the dropdown" or via the "outfit last"

Revision: 14875
Put a box around the right card for Fake Medium quest (and probably handle automating it - not tested). Fix typo in Result Processor, getting ESP collar progresses Fake Medium quest, not Clipper. Cut down some of the text strings for recognising which radio quest is taken.

Revision: 14876
Fix bug introduced by generification of outfit handling: search for cwmatchesc
in EquipmentDatabase.normalOutfits, rather than EquipmentManager.normalOutfits,
as before.

Revision: 14877
Don't need to check for constant outfits in EquipmentDatabase.normalOutfits.

Revision: 14878
It's getting beyond coincidence, looks like range for Xi consumables is 19-22 adventures, not 18-22.

Revision: 14879
Ask about overdrinking if you have fullness left, as well as if you have adventures left. Guess what I just did!

Revision: 14880
Skill images

Revision: 14881
Don't use mall for items available from NPCs if the price is 100 meat or less, saving a server hit, as you are either saving meat or sinking it.

Revision: 14882
Just found out why the NPC purchase looked at the mall too in aftercore, in case it was cheaper. Change the logic to never try that if the item is 100 meat or lower from an NPC.

Revision: 14883
Consider mall if the NPC Store isn't available for 100 meat and below items. I'd thought that was the case in Store Database price, I was wrong.

Revision: 14884
If you select an outfit in the gear Changer and selectedItem is null (for
some reason), do not submit an outfit change request (as before).

Revision: 14885
Buy from NPC stores without checking mall if price < greater of autosell x 2 or 100, rather than just 100, and store is available.
Holo-companion is a Woim.
Smut Orc and Oasis Meat Spading

Revision: 14886
Put number collected after pack of smokes and serum, when you have them all, link to radio.

Revision: 14887
The plural of Essence of Annoyance is flask of Essence of Annoyance
The plural of Essence of Annoyance is flask of Essence of Annoyance. How odd.

Revision: 14888
Fix data errors found by checkeffects and checkitems.
An erroneous image is not reason for checkeffects to skip the effects.
Update mall prices

Revision: 14889
Bump version to 16.5