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 a new avatar potion
Decorate Spelunky monsters with experimental damage calculator.
Fix Spelunky monster annotations to recognize that neither you nor the monster
can ever fumble or miss
Since we have not yet left the Spelunky limitmode when we close the book and
end the game, don't check if inventory contains a Tales of Spelunking before
adding a "Use another Tales of Spelunking" link.
Suggest using a miniature power pill in addition to a regular one for Pill Power
Lots of Madness Bakery stuff
Create combat/CombatUtilities package and move hitchance calculation to there
The yellow submarine unlocks the island, not the desert
A few recipes require Really Expensive Jewelrycrafting
rainbow pearl jewelry is expensive
In Spelunky, apparently damage from a ranged weapon applies the 3/4 factor for
bonus damage to the difference between your moxie and the monster's defense.
Improve Spelunky logging of player hits, monster hits, and attack/defense loss
When logging Spelunky combat, monsters have attack/defense, but spelunkers have
muscle/moxie or moxie/moxie
Add a few Madness Bakery recipes. Add a recipe-learning pattern which should
match recipes learned in that venue.
Various Spelunky items provide Damage Reduction, so take that into account in
the damage calculator
Monster Manuel shows you the monster attack/defense/HP as they are at the end of
everything that happened on combat round currently displayed, not as they were
at the beginning. Therefore, we can use that data to adjust monster stats after
we are done processing the page, but it they are not useful while we are
processing the fight text.
Minimum monster damage in Spelunky is 1, not maximum.
Getting gold at idolotry without appropriate gear makes you lose 50 hp
Log various Spelunky actions: things that cause damage without the player using
an action, things that prevent the monster from attacking, and so on.
Don;t bother updating stats from Manueal after the battle is over
Nothing needs to be parsed from static.php
Fix niche case in command line item parsing
Remove a discovery pattern
If you learn a recipe and we do not know the item ID, assume it because the
discovery pattern matched "Adventure Again", or something, and do not log it.
Add new Madness Bakery items, concoctions, and choice adventure
choice adventures 1082 and 1083 have only a single choice
Add Luck as a modifier. Dislay Luck and DR in compact sidepane for Spelunky.
Log a few more special Spelunky messages.
Allow autoQuest to disable more cases of automatically using quest items
KoLmafia.makePurchases can be handed a list of purchaseRequests for multiple
different items. Therefore, do no assume you are only getting one ind of item
The ghost does not increment the Spelunky win counter. The spelunky win counter
can exceed 3, and when you take a non-combat, it goes down by 3, rather than
resetting to 0.
When gain gold, rope, or bomb in Spelunky, log it in appropriate place.
Remove thrown Spelunky offhand items in the canonical way
INT_PATTERN (and SPACE_INT_PATTERN) now allows commas as well as decimal digits
Refine those two patterns a little bit
Add spelunkyHints setting (default false, in Preferences/Relay Browser) to
control whether we provide hints for the Spelunky game.
Provide a noncombat warning if a noncombat is available and you are about to
adventure. So far, it just says that a phase X noncombat is available and asks
if you want to adventure in (the location you clicked on).
Phase 1 of Spelunky Choice helper: when the ghost is waving and you click on an
adventuring area, you are given the option to click on an icon to go where you
initially clicked. You are also given images of the three main adventuring
areas and a description of what options are currently available (given items
in inventory and/or equipped) if you go there. You can click on the area image
to go to that location instead.
Note: side areas noncombats are not yet present (although they will be easy
enough to add), so if you want to go to one of those, for now, it has to be
the one you initially clicked, so you can click on the top icon to go there.
Add spoilers for Spider Hole, Snake Pit, Ancient Burial Ground, Beehive, Crashed
U.F.O., and City of Goooold to noncombat warning screen. Untested.
The Spelunky noncombat warning screen now uses the image of the zone you are
attempting to go to as the image at the top of the pane.
Add Yomama's Throne as a zone that you can unlock.
lead pipe -> oversized pipe
Create InternalChatRequest for making requests of KoL via chat (rather than
actually chatting, per se). Use it for KoLmafia.isPlayerOnline and for ASH's
Custom Outfits don't work in Spelunky limitmode
Don't take choice option to get electric boning knife unless KoL offers it
Pack of Every Card
When building an ASH plural constant containing all the objects in the datatype,
we ask the appropriate data type to give us an Entry set of mappings. If the
key is an Integer, we now look up the object by that id, rather than by the
string value. This allows for data types with duplicate names - like
effects, in particular.
More data for emperor clothing
Track power pill uses in combat
When you explore the Wumpus cave, in addition to the exits, log the sounds you
hear from (some) adjacent rooms.
Add "wumpus replay FILE" command to process the session log of a wumpus
exploration and make deductions, etc.
Improve deductions such that if you DON'T hear a sound in adjacent rooms, we
know that the specified hazard cannot be in those rooms.
Add "wumpus reset" CLI command to clear in-memory Wumpus cave state
Raconteur Elf and Knob Goblin Elite Guardsman stats
Track glark cable uses in combat
Track how many cards have been drawn from the Deck of Every Card in _deckCardsDrawn
Remove debugging text
plural for cubic zirconia
Topiary plurals. 4 more Deck of Every Card status effects
Create DeckOfEveryCardRequest and the CLI "play" command. The actual interaction
with KoL is not there yet; the run() method is a stub.
Add legal alien and The Emperor
Add missing file
Improve logging for drawing cards from the Deck of Every Card
Deck of Every Card is reusable. gift card needs item redirection. Mob Penguin
Goon. Associate some cards with stats and some with buffs, although the "play"
command doesn't yet have syntax to request cards via such things.
Add Fortune of the Wheel status effect. Fix logging for drawing from the Deck
of Every Card.
The Wok has been removed
Add Mob Penguin Kneecapper. If you are carrying two familiars - on in the Crown
of Thrones and one in the Buddy Bjorn, sometimes at the beginning of a fight,
they will interact with each other - talk, play a game, what have you. If you
are logging familiar actions in your session log, log this interaction. Fun!
Add a run() method to DeckOfEveryCardRequest to handle drawing a card or
cheating. If it results in a fight, automate it.
savory dry noodles. Fix recipe for Staff of the Well-Tempered Cauldron
bubblegum heart is now multiusable
pixel coin is now multiusable
Some old monster stats (and move Deck of Every Card monsters to IotM section)
Recognize message when you don't have enough draws left to cheat today
chow meins no longer have a zap group. Don't throw an exception reading
zaplist.txt if an unknown item is found. Remove duplicate keywords from a
couple of monsters
Track mini-martini consumption
Register Fortune of the Wheel as a buff available from the Deck of Every Card
Fix a typo in an error message
Maximizer doesn't suggest summoning if you don't have 3 black candles available. Untested.
Maximizer only shows Deck of Every Card buffs when you have 5 draws or more left and you have the Deck. Untested.
Add modifiers for candlestick, knife, and revolver
Remove mana when casting Ancestral Recall and Dark Ritual. Ancestral Recall is limited to 10 casts per day, tracked in _ancestralRecallCasts.
The "cheat" command is a synonym for the "play" command. options:
play random - play a random card (1 draw)
cheat phylum PHYLUM - cheat (5 draws) a fight with specified phylum
cheat stat STAT - cheat (5 draws) 500 substats of specified stat
cheat buff BUFF - cheat (5 draws) 20 turns of the specified buff, either by name
or by effect: muscle, mysticality, moxie, item drop (or items), initiative
cheat CARD - cheat (5 draws) the specified card name.
PHYLUM, STAT, BUFF, and CARD all use fuzzy matching.
If the card you want from the Deck of Every Card is not in the available cards,
submit choice 1086/2 to reject the cheat, since you cannot walk away from that
When executing foreach over an aggregate with multiple levels, break needs to
break all the way out of the foreach, not just the innermost slice.
Track Armorer quest (Madness Bakery) as questM25Armorer. Some consumable spading (and mark unspaded items unspaded). Madness Bakery drops. Link no-handed pie to Armorer. Remove used items when you make Popular Tart/Plain Bagels.
Some missing monster information from Yendor
Ignore burn command set as lastChanceBurn to prevent infinite loop, as suggested by Veracity. Afternoon Delight spading.
Madeline's Bakery. Should shop there in preference to Bugbear Bakery (it's cheaper with the same items) if you've completed the quest.
Madness Bakery choise spoilers
New maximizer option, +effective. If present and muscle higher than moxie, only melee weapons are considered. Otherwise, only ranged weapons (and knives with Tricky Knifework known) are considered.
Apply caps and floors to Bees Hate You Bees, untested.
KoL caps Libram summons at 200 at a time. Don't try to summon more than 200. Untested.
Handle detecting free crafts using multi-stage crafting.
Account for Mayo and other Food helpers when using Cafes and Clan Lounge.
Remove starter weapons when getting epic weapon. Untested.
Saucemaven is less effective now
Make fixed list of modifier maximizer strings configurable. On behalf of PeKaJe @ kolmafia.us
Since KoL now auto-pulls the VIP key, remove the code for handling that
Fix some monster ids, a few modifiers, and add talking spade
Handle native inline description popups
Fix 11 monster ids, as reported by Manuel, thanks to ckb.
Add four (obsolete) monsters that have returned from the dead via the DoEC.
Change checkitems to check quality and size of consumables as well as
whether an item is a Fancy cooking or cocktailcrafting ingredient.
Fix several items that are fancy ingredients but were not so-marked
Add new foods resulting from the Pastapocalypse and fix size, quality,
and level requirement of existing foods that changed.
Detect when a new item is a fancy ingredient and mark it as such.
When we generate the consumables line while registering a new
consumable, the note is "Unspaded"
Add a new status effect and fix effect granted by antique bottle of cough syrup.
Unidentified items in storage cannot be discovered via api.php
When you tell KoLmafia to pull N of an item, pull exactly N, not all available
Look for "Desert exploration" to decide if you've successfully explored, rather
than assuming every fight in the desert counts; clingy follow-on fights don't.
lost's regexp changes to keep native inline item descriptions from screwing up
our model of equipment
Handle variable priced conditional Swagger Shop items
Handle alternative event format from main.php and only process old-style events
for now - ones that have a time stamp and are not in an HTML table
Use a typed Iterator to avoid a cast
Override getBuyPrice for the Swagger Shop CoinmasterData object to get the
current price of the seasonal rewards from settings
Be defensive and avoid a dive by zero error if somebody screws up the value of
their settings that specify the cost of seasonal Swagger Shop items
Fix monster ID for junksprite sharpener
Convert CR/LF to LF, again.
Upgrade SVNKit to latest version; update bundled libraries as part of this
Add support for checking out SVN repositories via old formats.
Update licenses for SVNKit and sequence libraries. ssh2 license seems to be
Monster drops and some consumable spading
Add monster stats for mutant rattlesnake. Add "drops" familiar category in
the compact side pane
Add a plural
Some pasta recipes, saucemaven support for new reagent pasta recipes, somewhat speculative stats for some new pasta recipes.
monster data for swarm of mutant fire ants.
Categorize familiar combat abilities as follows:
combat0 - does physical damage to foe
combat1 - does elemental damage to foe - Elemental Fairy or Starfish
block - Levitating Potato
delevel - Barrrnacle
hp0 - restore HP in combat - Mosquito
hp1 - restore HP after combat - Ghuol Whelp
mp0 - restore MP in combat - Starfish
mp1 - restore MP after combat - Ghuol Whelp
The familiar popup on the compact sidepane now adds sumenus to the "combat"
menu corresponding to each of the above categories.
Educated guesses for fettucini Inconnu and ghuol guolash adventures and stats.
fix capitalization for toy-making creature from the Gray Lagoon
Add monster id for toy-making creature from the Gray Lagoon. Fix a monster image
SwaggerShopRequest was missing a constructor and, therefore, you couldn't
actually buy anything from it via the CoinmasterFrame. Supply the constructor.
Snow Angel does elemental damage, not physical damage. Adjust compact side pane
combat familiar categories to include "physical only", "elemental only", and
"physical and elemental" to further shrink the size of the physical submenu.
Add $familiar proxy fields for the new familiar type categories:
physical_damage, elemental_damage, block, delevel, hp_during_combat,
hp_after_combat, mp_during_combat, mp_after_combat
Update some more jars that didn't cause compile-time errors.
Evidently in some scenarios, with the old versions, the library would raise
exceptions that generated debug logs.
Add "variable" familiar type for familiars that are configurable
Add variable menu to compact sidepane and .variable $familiar proxy field.
Move "restore HP after combat" and "restore MP after combat" to a new "after
combat" menu in the compact side pane.
Add new familiar types: otheRevision 0 = other actions during combat, otheRevision 1 = other
actions after combat, passive = passive boost to initiative, resistances, ML,
variable = configurable behavior via equipment (or it is a doppelshifter),
underwater = can breath underwater.
All of the above categories appear in the familiar picker in the Compact Side
Pane, and all have $familiar proxy fields.
Initial support for new saucy pasta dishes (L6/10).
Hell ramen seems to now be "good", not "awesome". Remove consumption data
and mark as unspaded.
Attempt to lose class starter weapon when you acquire your class epic weapon
Fix recognition of the darkness (blind). Fix recognition of wumpus when you
Fix capitalization of some monsters
Fix some pasta recipes
Some more food spading
Some more fullness spading, somewhat speculative.
Track S'Mores eaten (if you have already eaten some this season, can correct it with set eatenSmores = X, where X is the number you have eaten). Update Smores size and adventure gain based on S'Mores eaten. Lightly tested. Some other old unspaded entries in fullness.txt updated from Wiki.
Address issues with improper setting of s'more fullness.
The Item Manager sorts based on Concoctions that have their sizes
(fullness, inebriety, spleen) populated when the program is initialized,
presumably as a performance optimization. Because other variable
consumables (notably, astral consumables) have fixed size but variable
adventure gain, this was a nonissue in the past.
The solution here, therefore, is to re-evaluate the size of the s'more
Concoction (which in fact does vary) when setting its yields.
It is interesting to note that stat gains were not subject to these issues,
since those were re-evaluated in the Concoction comparator. Along the same
lines as that initial performance optimization, it may be sensible to also
store this information in the Concoction, and instead put the call to
persistence.ConsumablesDatabase.setConsumptionData (). I will not do that at
Miscellaneous changes that seem pointless are a result of running
M-x delete-trailing-whitespace on ConsumablesDatabase.java.
More pasta spading.
Fix Slime Tube monster disambiguation broken by Revision 15486.
plural of salacious crumbs. Remove empty block.
Queue s'more's individually. Handle queued fullness when multiple S'mores queued. Stats on the currently queued s'mores is inaccurate, this will probably not be fixed.
Check purchase limits for buying npc items in Maximizer. Stops issue where it suggests too many mayo items.
Set hotAirportAlways when using the hot charter
Add a bunch of items, effects, concoctions, adventure areas, coinmaster items
from the new hot airplane charter. Recognize when you have one-day access to the
area, the same way we recognize one-day access to the other charter areas
Fix cut/paste/fail-to-change error.
More 70s Volcano items
more items, effects, recipes, etc. for the 70s Volcano
Travoltron drops. The One Mood Ring. SMOOCH Bottlecap
Update location name
When use machines on LavaCo Lamp Factory floor, remove consumed ingredients.
Fix logging when you visit various airplane charter area zones that dump you
Add love, cortesy of Crowther. When you gain superheated or superduperheated
metal in combat, you lose heat-resistant sheet metal.
Add Disco GiftCo coinmaster
decode character entities before passing 1337 monster name to MonsterDatabase.
Add 20 monsters from That 70s Volcano
Add fused fuse.
Update monsters.txt with additional spading results.
Specifically, SMOOCH monsters have a cap of 12345 and scale as stats +
1/15/30; lava golem and healing crystal golem both have physical (but not
Volcano items, monsters, effects
When comparing ASH objects whose data type has an id associated with it, use the
id, rather than the name, to determine equality. This includes monsters, except
that monster id 0 means we don't know the id, so use the name for such.
Add Raul Stemley. Change alt text of SMOOCH doors to be band member name.
Fix capitlization of mutant elves. Remove duplicate item id
Add bosses to Volcano areas. Fix monster compareTo in Value
For some reason, we connot use monster ID for ASH Value comparison. Disable.
Check for duplicate monster IDs when loading monster.txt.
When comparing MONSTER_TYPE Values, only need to compare names if both
monster IDs are 0; otherwise an ID compare will suffice.
Update Travoltron, as well.
Rename White Wednesday aftermath zones to agree with what KoL called them.
Populate them with the monsters that used to be there.
Fix errors revealed by checkitems and checkpowers. Initial item drops for
Volcano monsters. Stats and drops for zombie Gnollish crossdresser.
Handle being unable to afford visiting Speakeasy.
Recipe for lava cake
stinky fannypack works on the Volcano
Attempt to identify which items are needed in the WLF bunker by parsing the
item descids on the page. set _volcanoItem1, _volcanoItem2, and _volcanoItem3
to the item ids of the corresponding items. When you redeem an item, based on
the option you selected, remove the appropriate item from inventory and set
_volcanoItemRedeemed to true.
Update mall prices
Bump version to 17.1