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.
Fix a typo
Move Hippy quest tracking to QuestManager.
Fix tracking of started and step 2 in Hippy Quest.
Try to fix noticing completion of Hippy quest. Untested (and a bit of a punt).
Refresh consumption data after gaining/losing Drunk and Avuncular and Record Hunger. Getting a junk junk does not immediately give Island access
Was my last commit insane? Just possibly. Try fixing Hippy quest tracking again.
Finishing the Hippy quest unlocks the Island
If we see Hippy quest is complete in log, island is available.
Don't cast Internal Soda Machine past the point of filling MP
Recognize the end of a Community Service ascension
When transforming equipment, properly add the new item to outfit checkpoints
When autoequip an item in Spelunky, set it in implicit checkpoint.
When thrwo an item in Spelunky, discard it from implicit checkpoint
Parse equipment approriately from api.php in Spelunky
The adventurer bobblehead's modifier doesn't reset at rollover
Holo-records are multi-usable
Time-Spinner consumable spading.
Time-Spinner tracking : _timeSpinnerMinutesUsed, _timeSpinnerReplicatorUsed
Don't display Soulsauce or Disco Momentum in Nuclear Autumn
Don't remove items from inventory when Traveling back to a Delicious Meal
Track food consumed today in _timeSpinnerFoodAvailable
Holo-record effects are shruggable
Let the maximizer know that some effects can't be applied at the same time as other effects
Track Time Spinner Medals (timeSpinnerMedals)
Revert some mutex entries, since it's easy to replace one effect with another in many cases
Adventure goals for getting wine bomb the long (read Nuclear Autumn) way.
Don't let listeners get added to deferred list while another thread is operating on that list
Print stack trace if we try to defer listeners from within the same thread that
is firing listeners
When firing deferred listeners, copy set into an array and iterate over that.
If you fail to use a holo-record, don't remove it from inventory
Not everything that you eat gets added to the Time-Spinner's list
time-spinner prank is free (and doesn't belong in combat queues)
Recognize when you break your hippy stone
Log Nuclear Autumn correctly upo ascension
Properly track things when eating with the Time-Spinner
Clear Clan Rumpus Room contents when switching characters
Correct some consumption spading
Fix limit for Internal Soda Machine
The Biggest Barrel has slightly different HTML for its choice.php link
time-twitching toolbelt is a free pull if the time tower is available.
Twitch locations and monsters
more twitch items
item. familiar. no familiar item or arena parameters yet.
Don't disambiguate gumshoes when giving a wiki link
Don't do fuzzy matching when looking up wiki name, since we will always have
the full actual name available.
New tattoo item
Add KoL Con 13 Merch Table
forgot to commit a file
Consumables in the Neandermall now cost 25 Chroner, not 5
tiny baby scorpion is familiar item for Bark Scorpion
If you successfully visit the Time-Twitching Tower or any of the shops in it,
mark the time tower as available.
The Merch Table uses "rows". Build the map of rows when you visit it.
When you try to visit a Twitch store after the tower is gone, KoL says "That
store isn't there anymore.". Recognize and mark tower unavaliable.
More Trick-or-Treating Tot
Performance improvements for Maximizer (and all other Modifier checks). Check for time-twitching toolbelt text rather than doing lookup against item in Modifiers.override() to avoid unnecessary lookups. Move lookup of name to after check whether it is an item, as it is only needed in that case.
Fix tot familiar syntax
Faustbot seems to be gone for good
Modifiers.override only looks for hard-coded items if they are marked Variable
You can only buy Trick-or-Treating Tot items if you have the familiar
More tuning for "Variable" modifiers
Track hoarded candy wad drops
Tiny elegance tweak
KoL Con 13 Snowglobe drops should not increment normal daily drop tracking
Track cuppa sobrie tea usage
Arena parameters for Bark Scorpion and Trick-or-Treating Tot
Fix line breaks in pre-ascension reminder list
New item, effect.
Reset turns_spent to 0 in Batfellow zones after finishing to allow tracking of noncombats
Recognize when a digitized monster shows up in The Deep Machine Tunnels
Add "counters warn [countername]" and "counters nowarn [countername]" as counter options.
As examples, "counters warn Digitize Monster" would make those counters stop you when they expire. Using "counters nowarn Semirare window begin" will remove the abort from that counter.
If there are multiple counters with the same label, all of them will be changed. The counter name is case sensitive.
Add warning in Nuclear Autumn if you have access to +adv% food and booze buffs, but haven't got them active when you try to eat or drink.
In Batfellow, detect loss of fingerprint dusting kit after a win.
Don't try to look at standard.php when in a limitmode
Fix choices for low-level Batfellow areas
When rescuing king, visit campground interior locations in Nuclear Autumn (and Ed) as we haven't seen them before. Untested.
Untested, if we're in a fallout shelter, there must be nothing left of our campground!
Handle alternative familiars using switch statement when it's the familiar equipment that makes them preferred.
Also recognize when an arrowed monster shows up in DMT. Recognize which is being fought if both are possibilities.
Fix [read it] link in Relay Browser when learn new Tale of Dread
Pandemonium Slums - deleted fraudwort as a goal and added 3 hot wings.
A couple of extra default goals.
New passive skill, Eldritch Intellect.
Improve handling of mail contacts when you log in during a fight or choice
Rad-Pro is multiusable
You can't buy antidotes in Nuclear Autumn
In Area Combat Data, when reporting drop rates, take account of Food Drop, Booze Drop, Candy Drop, Gear Drop, Hat Drop, Weapon Drop, Offhand Drop, Shirt Drop, Pants Drop and Accessory Drop.
ChoiceManage.CHOICE_HANDLER overrides shouldFollowRedirect itself rather than
depending GenericRequest kludging it for it.
Add debugging and error checking for unhandled redirects
Don't report unhandled redirects from Relay Requests
Log a few more places - including certain Fallout Shelter visits.
Don't log "unhandled redirect" for fight.php and choice.php redirects that we
"handle" by passing them to a different request.
Add "timespinner" command courtesy of lost.
timespinner list food -> list available foods
timespinner eat FOOD -> Spin and Munch on the specified food
Allow pranking with timespinner
Handle an empty Time-Spinner food list
Add "timespinner list monsters [filter]". This will show all monsters that should be available in the Time-Spinner, optionally filtered (case-insensitive).
When we automatically follow a redirect, register the request after setting
the new URL.
Barrel of Laughs and Beer Barrel Polka update adventures granted by consumption. Untested.
Add new buttons for barrel prayers in booze/food panels. Also have both glorious lunch and milk buttons available in Boris (potentially handy in Softcore). Largely untested.
When tracing show start and end of relay script invocation.
Add traceprint( string) ASH function
Restore inadvertently deleter variant of ASH "print" command.
Trace 302 directs more clearly: show source -> destination URLs
Handle extruding in NA
remove extra line break after developer gifts in gap decoration
When tracing, log bytes retrieved from server and sent to browser
Quest Log requests can come in the middle of a choice.
Don't set ChoiceManager.lastResponseText for unknown non-choices that can
come in the middle of a choice.
Add "test cookies" command to see values of the "special" cookies we track.
GenericRequest saves only the "special" cookies. RelayRequest saves only
When passing cookies to KoL, for internal request, send only the "special"
cookies. For external (browser) requests, sent browser-specified cookies too.
Move code that resets whether we are handling a choice.
Add a link to go "Back to your Time-Spinner" following Way Back in Time fights.
Do a better, but not yet perfect, job of logging Time-Spinner fights that take
Fix logging fr fighting monsters Way Back in Time
When getting breakfast, iterate through equipment in the Clan Rumpus Room and
use things that are usable
Nuclear Autumn skills cannot be permed
Look for the correct image for the Palindome
School of Hard Knocks Diploma does something now
Replace most instances of parseItemValue() with makeItemValue().
This should address a bug involving identifying items with the same name in
various locations, such as inventory.
Properly supprt Unleash Your Inner Wolf
A couple more Eldritch Fissures
Account for a KoL typo
Stats for Eldritch Tentacle
When we use a queued drink helper, decrement the remaining queued count.
Add alternate area unlockers as goals to Haunted Pantry, Sleazy Back Alley, and
Outskirts of Cobb's Knob
Add "floundry fish" as a possible goal.
Remove DOS linebreaks from the handful of files that have them.
Five items in the Internet Meme Shop have 1/day purchase limits:
- add _preference for each of them
- show only available items in Meme Shop coinmaster panel
Disambiguate Eldritch Tentacles based on image
meme generator can't have an in-line use link.
Do not replace links to generated memes with pointers to image cache
More Eldritch Fissures
A few more eldritch items
Official Council Aide Pin
Add An Eldritch Fissure as an adventuring location. eldritch effluvium is
Treat all Eldritch Fissures as being the "An Eldritch Fissure" adventuring
location (wve though when you automate that location you always go to Town).
Since all Eldrich Fissures now are recognized as the adventuring zone, don't
need special handling in PlaceRequest; AdventureDatabase handles it all.
COmbat data for An Eldritch Fissure. Drops for Eldritch Tentacle.
If effects can't be produced by a skill, or visa versa, don't report that they can be matched by a skill of the same name.
Additional Eldritch Fissures. Null check looking up skill by effects
Stop error message "Unknown Item: Floundry Fish"
Two new Eldritch item recipes and items.
Trap NPE in DeckOfEveryCards request.
Some Thanksgarden items
A few more Thanksgiving items.
Add link on cashews to ThankShop, untested.
Start of recognizing Thanksgarden crops.
Whoops, added ThankShopRequest. Add Thanksgarden to Valhalla Decorator.
Add School of Hard Knocks Diploma to once-per-day breakfast items
Give a link to the cashew shop
Some more Thanksgarden items.
More Thanksgarden items
Quartet of Flare Masters Jacket
Eldritch pants and hat no longer zappable.
Science Notebook. eldritch essence is a COOK_FANCY recipe. Science Tent.
You can explore Eldritch Fissures while falling down drunk
2 more Eldrich Fissures. eldritch plural
Remove duplicate entries.
Untested, recognise all Thanksgarden images.
More Eldritch Fissures. Allow multiple castings of Ancestral Recall and Dark
Ritual (non-combat spells which use blue mana and green mana respectively).
If number of casts is decreased becasue of a per-spell maximum. give an
More Thanksgarden stuff
eldritch concentrate is multi-usable. Eldritch Fissure in The Sea. Log the
message uttered by a time prank when you first meet it.
inert eldritch matter
Modifiers for The Good Salmonella
Add "eldritchFissureAvailable" setting to control whether we can automate
adventures in An Eldritch Fissure. Behaves like "timeTowerAvailable": defaults
to false, but if you visit the Town and the Eldritch Fissure is there, gets
set to true.
Correctly detect Thanksgarden at the astral gash
If two of the same free kill item is used in a round, don't count both uses as successful when the first one ends the fight
bomb of unknown origin
Only set the appropriate setting for tracking Intergnat daily items when making a purchase
When unequip a familiar via the terrarium, parse the response correctly and
put the item into inventory.
When "retrieving" an item from your active equipment, take from the offhand
slot before the weapon slot, so that both slots do not get emptied if you are
dual wielding the sae weapon.
megacopia and giant pilgrim hat. Warn when replacing any "special" housing with any other housing, regardless of which one is newer.
Resting HP/MP from giant pilgrim hat
Track turkey blaster uses
It's 3 turkey blasters per day, and they are spleen. Also some food spading.
"distend", "dog hair", and "flush mojo" buttons on the item manager now consider
all "accessible" places for the required item and "retrieve" it before using.
When you have consumables queued, if you use an item or skill that changes the
number of adventures granted, the displayed range will change on the queued
items as well as on unqueued items.
KoL fixed the plural for the chocolate stolen accordion.
Fix use link for tomb ratchet
airplane charters and one-day passes may or may not be removed from inventory
when you try to use them. Account for the possibilities and remove them iff
KoL removed them.
Proof of concept for a "monster" section in the Encyclopedia
Few tweaks to the monster section of the Encyclopedia. Especially, show the
"raw" Attack, Defense, and HP - which will evaluate expressions, handle scaling, and so on.
Register the DescriptionFrame with the ToolTipManager so that that "alt" text
of images will show up as tooltips.
Treat Unidentified Drink like Thermos, as it is so unpredictable.
Some Thanksgarden food spading.
Allow auto-harvesting of megacopia. Track daily use of confusing LED clock.
Improvements to monster section Encyclopedia: hover text for Attack, Defense,
and HP now indicates if the monster scales and, if so, the scale, floor, cap
Show full-sized images in the Monster section of the Encyclopedia
Encyclopedia uses an HTMLEditorKit that goes through KoLmafia's image cache
If a choice adventure has a "Go To Goal" button, give that name to the "auto"
button as well, since that is what it will do.
Assign negative monster IDs for real KoL monsters with unknown ID.
Add a NOMANUEL attribute to monsters known to not have Manuel entries,
even if we know their monster ID.
Add a Wiki: attribute for monsters whose Wiki page is not directly
derivable from the monster name.
Add $monster.wiki_name proxy field to get it.
The popup menu in the Monster section of the Encyclopedia now only has
two options: Show Game Description (same as you get via double click)
and Show Wiki Description.
Only show list of factoids for monsters that might have factoids.
Add a section for forthcoming "Other stuff" at bottom of page.
A few more tweaks, bug fixes, improvements to monsters
Revert erroneous change to MonsterData.getBaseInitiative()
Fix a lot of monsters: get Wiki: attributes as needed, fix some capitalizations
Rename slime1-5 to Slime, Slime Hand, Slime Mouth, Slime Construct and Slime
Colossus. assign each of those a negative monster ID so we can look at them in
Color monster names in encyclopedia accoring to monster defense element
In the monster section of the Encyclopedia, for any monster:
Say f the monster is a wanderer or where it appears.
Say if it is a Boss, is Ultrarare, or is Semirare.
List Meat Drop range
List item drops.
Work around issue with table columns not rendering correctly
Add megacopia to CampgroundRequest.CROPS so we can use that as the deired goal
in your garden for breakfast.
Using a megacopia leads to a fight.
Allow "cheat stat mainstat" to cheat your mainstat (from Deck of Every Card) regardless of class
Handle error messages from Ancestral Recall if you don't have blue mana or if
you have already cast it enough times today.
Default for choice 1085 is 1, so "use gift card" works as expected.
The "Floundry Fish" AdventureResult has ITEM_PRIORITY
Synchronize on GenericRequest.serverCookies when reading or setting them.
Setting _deckCardsSeen has every card you've seen today
Thanksgolem. megacopia cannot have an in-line use link since it leads to
a fight. Normalize "Seven of Salads" to "X of Salads" when storing card
names in _deckCardsSeen. Floundry Fish is a pseudo-item. Log "A Recent
Fight" from time-spinner better.
Ghost Dog Chow can be not-consumed. If so, ASH use() returns false.
Gallon of Milk and Unidentified Drink adv/stats (Unidentified Drink is pretty random, though, so have given average stat values). Stats for Thanksgolem (not got cap or floor yet, if it has them).
Bypass most of processResults() for a chat, desc_, or questlog request.
The Armory & Leggery is a Coinmaster which sells some items for Meat but also
will trade wickerbits and bakelite bits for previous year standard ascension
rewards. When visiting that store, parse the items on offer and if they are
not priced for Meat, add them (and the currency) to the list of coinmaster
buy items for this store.
Remove items from the store list when they are removed from the store while in ronin/Hardcore
You can buy a Red Zeppelin ticket at the Black Market using either 5,000 Meat or
1 priceless diamond.
Recognize the Meatsmith being started even if you already used bone with a price tag on it to unlock The Skeleton Store
When choosing name for shopId "bartlebys", choose correct name depending on
whether or not you are in Bees Hate You.
Certain quest items can be purchased - exactly once - from an NPC shop or a
Coinmaster. Set the available quantity in the appropriate PurchaseRequest
for such to be 1.
Row for spare kidney
Add a currencies() method to CoinmasterData which returns a Set of all the
currenicies used to buy currently available things for that Coinmaster
ArmoryAndLeggery no longer have a hard-coded list of currencies to show in the
title of the panel in the CoinmasterFrame
Add support for banishers that end after some number of turns or at rollover. No banishers are currently marked to work this way.
Whack Coinmasters to eliminate subclassing CoinmasterData. Instead, simply
override specific methods for specific instances. Move a lot of special code
from the CoinmastersFrame to individual Coinmasters so that the same
restrictions etc. are available to scripted access to those Coinmasters.
Three items from The Terrified Eagle Inn are one-time purchases. Add settings
to track whether you have bought them: hasTalesOfDread, hasBrassDreadFlask,
hasSilverDreadFlask. Remove "Conditional" items from coinmasters.txt.
Wrap table cells for the "prefref" command in paragraph tags so they don't end
up as super long lines.
abridged dictionary is not available if you have completed the Baron's quest.
sewing kit can only be purchased if not already in inventory.
UV-resistant compass can be purchased once per ascension.
Rename/add a few settings:
itemBoughtPerAscension637 (cheap toaster)
hasTalesOfDread -> itemBoughtPerCharacteRevision 6424
hasBrassDreadFlask -> itemBoughtPerCharacteRevision 6428
hasSilverDreadFlask -> itemBoughtPerCharacteRevision 6429
mayoWhipRented -> itemBoughtPerAscension8266
You can only buy a folder (tranquil landscape) from The Terrified Eagle Inn if
you have the folder holder equipped.
Don't give a "Back to your Time-SPinner" link on the end-of-fight unless the
fight actually came from the Time-Spinner.
Put an HTL base tag of "/" into the reponse to a specialCommand so that
Add option for harvesting your garden: in addition to cornucopia and megacopia,
allow cornucopia (3), cornucopia (5), cornucopia (8), cornucopia (11), and
Attempt to update war progress after using a stuffing fluffer
According to Manuel, One Thousand Source Agents never wins initiative.
If Manuel says Attack or Defense is 0, believe KoLmafia's values.
If Manuel says image is noart.gif, it's OK if KoLmafia has something else
Add fancy beer label (2) and fancy beer label (3) as crop options in garden
Check for potential quest updates even when adventure.php redirects (to fight.php or choice.php, probably)
Only ignore special encounters after a deck draw if the deck draw can actually lead to a special combat
Fix data errors revealed by checkitems. Update mallprices.txt
Bump to 17.5