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.
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).
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.
Only update the location to the Summoning Chamber when entering the boss fight
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.
Rat, not Bat.
groping claw does sleaze damage now
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.
Add a couple of missing breaks
Add some new default goals.
Some items from the 2014 Con item
Untinker command now passes null, rather than inventory, as list to search.
Eat/Drink/Use command calculates a filter and now actually uses it.
More Xiblaxian items
parse pirateSwagger when you visit the Swagger Shop
Fixed some incorrect images for monsters.
Some missing monster images added and incorrect images fixed.
Some new goals for level 11 quests. Your Own Black Heart isn't multiusable.
Give the video game monsters a default image other than the ?
Ugly hacky fix for recording how recipe was read when read automatically.
Untested - Recognise that you've completed war when you kill Heavy Rains war bosses. A couple of the Con item things start fights.
Warbear Autoanvil support - untested. An Xi Receiver item
Missing null check.
Add proxy record for $phylum with the only field, for now, being .image
Add three 5D Printer holo-schematics.
Add Element proxy record. Only field is image.
Holo-tank and some Pantsrack/Hatrack effects (from wiki or spading)
Fix check for whether the protector specter in the office building is available
Initial support for Pirate Bellow
Holographic army stats.
Add can_faxbot( monster ) ash command.
Fix a typo, add a status effect emitted by my hookah, and verious Xiblaxian
items found in the mall.
Add Xiblaxian 5D printer shop and the items it sells. There is no checking yet for whether you know the recipe for an item.
Since Xiblaxian recipes need to be unlocked, add unknownRecipe settings
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.
Remove unnecessary (and now wrong) update to Worship quest.
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.
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.
Add mouseover for Infernal Thirst in Summoning Chamber daily deed dropdown.
ash command appearance_rates( location ) returns -1 as appearance rate for Ultra-rare monsters.
Return weight rather than combat rate in appearance_rates if weight is less than or equal to 0.
List effect rather than mom command in daily deeds dropdown for Mom Food.
Update unknownRecipe settings for Xiblaxian items that you can make when visiting the shop or when you use a schematic
Xiblaxian Stealth Suit
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.
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).
Add a couple of relay options to Preferences.
Only one option on Choice 976
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.
Save an outfit checkpoint for untinker command.
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.
On Pulverize Panel, add an Other selection. Smiths and all other oddities (sea salt crystal, epic wads, useless powder etc) appear here.
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
If you get or use Black Bart's booty, mark it as unavailable in the swagger shop
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
Remove a potentially problematical line in Evaluator.
Fix Sorceress Tower quest tracking. Cannot perm Old Old Smile of Mr A.
Use "canBuy" mechanism to filter out lighthouse items and Black Bart's Booty
from Coinmaster inventories.
Must refilter items in Warmaster buy panels after setting this.side
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
Don't show items at the Arcade Ticket Counter coinmaster if you can't buy them
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.
Fix item id
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.
Add Xiblaxian familiar and its equipment
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.
Add Ye Olde Medievale Villagee clover adventure
residual zeal stats
Remove "2 Love Me, Vol. 2" when you are asked to find wet stunt nut stew
Fix check for a reward in the mariachi barracks to work for the silver pate
knife and the 3 cans of sterno
If you read mortar disolving recipe without glasses when you've previously read it with them, you've still read it with them.
Rain Man costs an adventure. Skills can have multiple resource costs now.
Wet Russian consumption stats.
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.
Restore run_combat() behavior of returning the previous combat's last round of HTML when not in combat by not unnecessarily loading fight.php
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.
Set quest progress upon killing level 8 Heavy Rains boss.
Exclude a dev page from result processing
They liver, fix a plural
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.
Fix a bunch of plurals
If you attempt to Grab a Cold One but have already done so today, detect the
failure and set _coldOne to true
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.
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.
rename some locals
More plurals, courtesy of Crowther and Yendor
Fix plural for googly eye and eel battery
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
Clean up code & comments in ChatRequest
Adding the ability for the charpane to update the safety text no longer
suppresses the rollover timer.
If MacGuffin quest started when you visit Council, start Black quest if it isn't. Untested.
More malware excision.
Fix HP parsing under some circumstances
Initial support for The Road to the White Citadel revamp
More support for The Road to the White Citadel revamp
A few new items
Some more Road to the White Citadel stuff.
Don't try to change Florist Friar plants while in the middle of a (non)combat
Fix queue-adjusted appearance rates when monsters not in the normal monster list are encountered
You can't use a Chroner cross without a Chroner
Bat Hole Meat spading
Road to THE White Citadel
Add tab in monsters.txt. Don't know what the image name should be.
Image for Xiblaxian political prisoner
First attempt to get private messages sent from the chat GUI to appear up in
"modern" chat in the Relay Browser.
Handle send private messages in the chat GUI and having them echo in the
Relay Browser when "modern" chat is open.
Fix older chat in relay browser: do not duplicate messages we've already seen.
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.
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.
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.
Banishing reduces the number of copies of a monster in the encounter pool even if there is a copy increasing mechanic in effect.
Guide-proof the volcano maze solver: do not use the continuation state to
communicate success or failure across function calls
Don't parse extra familiar information from the charpane when SOME PIGS is active
Snakeleton initiative, Post-cyrpt cemetary meat spading.
Fix URL for Summoning Chamber
Show the pig when your familiar is a pig
Guide-proof hedge maze script. Need .gif at end of familiar image.
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.
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.
If you use a skill-granting item in Heavy Rains when you already have the
entire skill tree, you throw the item away.
Recipe for They liver popsicle
Item drops for Twitch 4 monsters
Pandamonium Meat Spading
Lightly tested. Check for success messages in Haiku and Anapest for many occasions where skills or items were used.
Stats for Dis monsters
Frat House and Tower Ruins meat spading
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.
Look up single use (multiuse, chefstaff, meat stack, noodle) concoctions using
item ID, not name.
Handle monster appearance rates in Area Data and ash correctly for Defiled Alcove and Lair of the Ninja Snowmen. Cyrpt zones are 85% combat.
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.
Refactor some one-off classes that extend Thread to instead implement Runnable. Execute these through RequestThread.runInParallel.
Avoid NPE in adventure queue management
revert Revision 14708 while I investigate.
En Una Fila Tequila. No consumption data added as unknown.
Encounter for Rad Fox is The Red Fox.
Superlikely Chance can't go above 100 or below 0.
Red FOx is the encounter
Don't use a blocking queue in the thread pool executor.
un-revert Revision 14708 now that the underlying bug is fixed.
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
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.
invoke faxbot/buffbot fetchers through RequestThread rather than directly calling .run()
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).
Use flags in monsters.txt rather than a hard coded list to identify ultrarare encounters.
keep agent threads in a Set rather than a List.
Sort of monsters.txt, because I finally snapped and moved the rest of the event/IotM monsters out of the general monsters section.
Oops, forgot to change the monsters.txt file version.
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.
Move around a few monsters
Log progress through tile puzzle in the Hidden Temple
Tweak message slightly: it's not just vowels that are "an" vs. "a"
add fixedThreadPoolSize pref - diagnostic/fine tuning for limiting the threadpool size.
Amok Putty stats
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.
"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.
refactor CommandQueueHandler: use a BlockingQueue to put the thread to sleep, rather than periodically polling a list.
In Valhalla only show Eudora choice if you have one.
Amok Putty rejection rate.
Add a few equipment powers. For the Concoction object, make sure that equals,
hashCode, and compareTo all meet the general contract of that method.
Fix Eudora decorator, better this time. I hope.
Rewrite that CommandQueueHandler refactoring a bit.
skip hidden files that may have been put in svn/ when doing an update.
Remove items when you donate them in the Survivor Encampment
Some Twitch stuff
Fix turn tracking? Why is Monster Tracker lowering the case? Will work that out another day.
The Applecalypse Store
fix another hidden file + svn update bug
Twitch items and concoctions
Update the "no Chroner" message for Chroner-using shops
Reset post-mall turn counter at ascension.
Fix familiar typo
one more ScriptManager hidden file bug
modifier for french-fry grabber. town.php -> place.php?whichplace=town
Multi Use creations now need to use inv_use.php if the use quantity is 1
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.
When we dispose of the chat frame, clear active channel so that we /listen next
time we open it.
add entry to array before getting size
White Citadel drop rates/meat drop
Make VolcanoMazeManager.Path iterable. Allow "volcano test" command to be
called with no additional arguments to mean "volcano test 1 6 12"
Address race condition regression in CommandDisplayFrame.hasQueuedCommands() caused by command handler refactoring.
fix boolean un-logic
VolcanoManager doesn't need to open request sequences in order to run requests
sandbox the relay combat thread, too.
If the moon sign change when ascending changes available cafes, update available items without having to restart item manager/mafia. Untested.
Update some concoctions that didn't specify which advanced smithing skill was needed.
Adjust equals, hashCode, and compareTo methods for Concoction to compare names
add "test xpath" to, well, test xpath expressions.
pull out HTMLCleaner config into a helper class (that will get more stuff later)
Update The Game Grid Arcade for shop.php and place.php
Tighten up Concoction.compareTo: don't do capacity calculations unless sorting
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.
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.
ant isn't picking up the new jar for some reason; revert Revision 14767 while I fix.
Remove debug print
Sigh. And another one.
consumption stats for glass of bourbon
re-commit Revision 14767 with a fixed build.xml
remove unnecessary upcast to StringBuilder
Fix purchasing items from Game Grid Ticket Counter (does not fix Skeeball or other issues, but one thing at a time!)
revert the htmlcleaner changes - again. It broke a lot of fight parsing.
Submit arcade requests via GET; skeeball and jackass plumber now work again.
aDeduct the correct number of Game Grid tokens for various ArcaseRequests
Track turns spent in each location. This is accessible through the $location.turns_spent proxy field.
even though they're no longer subject to the global continuationState, relay interpreters can still be shut down explicitly by declaring world peace.
Handle turn tracking for unknown locations
First attemp at making the chat GUI go into and come out of "away" mode
fix off-by-one command queue display
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
optimize a bit by reusing the same xml serializer
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.
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.
Infinite Meat Bug meat drop
don't print a stacktrace if you test an invalid xpath expression
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
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.
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.
Reset turns spent in locations when you ascend
Actually, a blank line in the familiar training results is a KoL bug.
Report it as such.
New White Citadel quest tracking. Familiars give no effects under SOME PIGS. Remove handling for old White Citadel Quest
Track hellseal pup screeches. Handle Mother Hellseal Atk, Def, HP, Exp and appearance rate.
Track when you permanently unlock the spooky airport
Some Conspiracy Island stuff, including A Vending Machine.
Conspiracy Coinmasters, more items, skills
Some plurals, an item and an item fix.
Fix skeeball command
Fix visiting Jackass Plumber
Slide in a message in the ChatFrame when you're away; clicking it drops you out of away mode.
Use NamedListernRegistry, not PreferenceListenerRegistry, for [chatAway]
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.
Don't produce a NPE when the "test" command isn't supplied with HTML
Minor data file fixes
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.
Give a link to the Guild SCG NPC when you gain the volcano map.
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
Do not throw an exception if you type a simple "/clan" in chat in the
don't send chat message in the swing EDT.
More Conspiracy Island content
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.
Let chatbot scripts interact in /talkie, since that is essentially a private
Fix more typos
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.
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.
Secret Government Lab drops added to monster drop lists.
Add and handle Spooky Island one day ticket. Gore is found in Lab, not Jungle.
Some Meat and Consumable spading
Fake Medium quest tracking
Twitch Food consumption data, taken from Twitch Stream.
Change (most) experience expressions to use ML/3 rather than ML/4. Read substats in api into a long rather than an int.
Ham Steak and filet of The Fish adventure and stat gain.
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
If "using" and item results in a fight, we automate it. If automation completes
the fight, run your afterAdventureScript
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.
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.
Make font size changing affect only the chat frame
Cassette has two s's. Fix Cassette tracking updating Jungle Pun quest, and update Gore quest when Gore Bucket equipping.
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.
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
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).
The drink command now does fuzzy matching for speakeasy drink
transdermal smoke patch is a spleen item.
Move font rom ChatFrame back to RequestPane. Use KoLConstants.DEFAULT_FONT
Check location isn't null before getting water level.
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.
Don't HONOR_DISPLAY_PROPERTIES in RequestPanes.
Revert setting font in RequestPane to default. It should be already, anyway.
"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
Fix various data errors revealed by checkitems. walkie talkie has been
renamed to walkie-talkie. Finally.
The Rich Get Richer
trench lighter, Lab meat spading, mimes have floor of 3.
Serum Sortie quest tracking.
Update Batter Up! success message
Detect message that gore bucket is full, if mafia isn't up to date on the collection count.
Fix tracking of Subject 37 quest. Only update Serum quest on Serum drop when quest in progress. Track Yellow Taffy Summons as _taffyYellowSummons.
Summon Candy Hearts -> Summon Candy Heart. Super Skill makes combat skills cost 0 MP.
Added rare drops to Jungle monsters.
Fix some phyla. ASH abort() function sets continuation state and interpreter
state directly, rather than invoking world peace
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.
In the chat GUI, up arrow and down arrow now move within the history of
commands that you have previously entered.
Make StyledChatBuffer do a better job of not highlighting HTML tags.
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.
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)
Since Conspiracy Island quests can't be finished, set them to unstarted rather than finished when they are completed
Palindrome Meat Spading
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.
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.
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.
When automating a chain of choices, don't require permitsContinue; require
Menagerie 3, Arid Extra-Dry Desert and Valley of Rof L'm Fao meat spading.
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.
Remove Conspiracy Island quest equipment when you turn in the quest even if you aren't wearing it
Update power for tiny plastic peacannon
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
Remove settings for turns spent in zones. Use internal turn tracking instead.
More use of internal turn tracking
Add "Your Previous Outfit" as an option that you can select in the Gear Changer
(via the dropdown" or via the "outfit last"
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.
Fix bug introduced by generification of outfit handling: search for cwmatchesc
in EquipmentDatabase.normalOutfits, rather than EquipmentManager.normalOutfits,
Don't need to check for constant outfits in EquipmentDatabase.normalOutfits.
It's getting beyond coincidence, looks like range for Xi consumables is 19-22 adventures, not 18-22.
Ask about overdrinking if you have fullness left, as well as if you have adventures left. Guess what I just did!
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.
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.
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.
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).
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
Put number collected after pack of smokes and serum, when you have them all, link to radio.
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.
Fix data errors found by checkeffects and checkitems.
An erroneous image is not reason for checkeffects to skip the effects.
Update mall prices
Bump version to 16.5