Version 14.0

Veracity

Developer
Staff member
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: 8090
When about to jump through the gash, don't list "Summon BRICKOs" as unpermed.
When you do jump through the gash, immediately set inebriety to 0. It gets set
to that as soon as we visit the CharSheet after ascending, but it's slightly
disconcerting to see that your Astral Spirit is, somehow, 19/15 drunk.

Revision: 8091
All requests use GenericRequest.ACTION_PATTERN, as appropriate, rather than
having a duplicate copy of the pattern.
Tally meat donated to the shrines, whether through Meat Manager or Relay Browser

Revision: 8092
Add three per-user preferences: heroDonationBoris, heroDonationJarlsberg, and
heroDonationSneakyPete have the cumulative donation you've made to each statue

Revision: 8093
Add some tweaks to PVP support, courtesy of RoyalTonberry and SinginSally:
- add a "steal" command to CLI. It is like the "flowers" command insofar as
it chooses stance, target, and so on, but you can specify just what you want
to steal: "steal flowers", "steal rank", "steal dignity", "steal meat",
"steal loot", "steal loot food", and "steal loot booze".
- If you can interact (out of Ronin and not Hardcore), the Flower Hunter Frame
currently gives you the option to "Nab yourself some dignity". Add four more
options to that combo box, for stealing meat, food, booze, and whatever.
This is all untested.

Revision: 8094
Fix typo in Crimbo candied pecan

Revision: 8095
Jungle Bells is not a buff

Revision: 8096
As it turns out, Jingle Bells IS a buff - but KoL does not let you shrug it.
Revert to "buff" status - but fix default duration.

Revision: 8097
Make argument parsing for the "burn" command more robust: strip off extra
words, verify that remaining argument isNumeric before parsing it as an int.

Revision: 8098
Experimental: include HtmlCleaner 2.1

Revision: 8099
Catch exceptions during session initialization and log them

Revision: 8100
Give up on binary inclusion of htmlcleaner_2_1.jar; apparently, not all systems
do it correctly. Incorporate the actual source code in the tree. Sigh.

Revision: 8101
Remove no-longer-needed binary library

Revision: 8102
First pass at revamping normal combat parsing. We now clean the response text
from fight.php and examine each section of HTML in turn.
We log damage from weapons, combat items, spells.
We log familiar actions.
We log items and meat gained.
We log HP and MP gained and lost mid-combat.
We log stat gains.
I have undoubtedly broken some things. In particular, I know that I don't
currently recognize dolphin steals. I have also not tested Can Has Cyborger.
Log actions for the Fuzzy Dice
Sanity check: compare KoLmafia's idea of the combat round with KoL's idea, as
revealed in the "onturn" variable.

Revision: 8103
In addition to logging changes in monster health, adjust health tally.
Account for round numbering when won initiative.

Revision: 8104
Recognize items produced by the rampaging adding machine

Revision: 8105
Recognize status effects gained (or lost) in combat

Revision: 8106
When visit Traveling Trader, automatically learn what he is currently trading
for and double check your inventory quantity with what he thinks is available.
Automatically learn about new items he has for sale.

Revision: 8107
Fix CCS: update preparatory rounds when we update current round after checking
for initiative.

Revision: 8108
The Traveling Trader can accept items from either inventory or storage. When
you buy something using items from either source, adjust the appropriate count.

Revision: 8109
When you dance with Rotting Matilda and have another dance card in inventory,
add a link to use another dance card.

Revision: 8110
Recognize elemental damage in fights

Revision: 8111
Make Rotting Matilda dance card link load inline

Revision: 8112
Restore peculiar round increment for autoattacks. This generates warnings, since
we then are out of synch with KoL's idea of round counter, but is currently
necessary to make CCS scripts work correctly.
This needs to be fixed. Later.

Revision: 8113
Solve the Nunnery Meat problem once and for all: if you gain Meat before the
"you win" comment, it goes into your purse. If you gain Meat AFTER that
comment and you are in The Themthar Hills, the nuns took it.

Revision: 8114
Avoid exception checking for nunnery if last location not an "adventure".
Add skill and effect for Inigo's Incantation of Inspiration.
Learn that skill when read book.

Revision: 8115
Recognize familiar weight gain after battle.
Recognize - and count exactly once - damage from a haiku katana.
Recognize meat and substat gains while under O Hai! or Can Has Cyborger

Revision: 8116
The "fold" command now looks for an equipped foldable item if none is found in
inventory. If exactly one such item is found (or multiple identicle accesories)
unequip it and fold. If multiple equipped foldable items are found, tell the
user to unequip the one she wants to fold.

Revision: 8117
When build and grow a blackbird prior to using the black market map, get the
actual blackbird object from the player's terrarium, so that we can use its
name.

Revision: 8118
Added basic support for items usable on other players via curse.php: their
usage is logged, inventory count is maintained, and a new "throw" CLI command
allows them to be used from within mafia. However, no personalization is
supported yet, so bricks and coffee mugs (which can't be sent blank) aren't
throwable at the moment.
Attempting to "use" or use() a curse item, with no other primary usage, will
throw it at the player (with no message, so bricks & mugs aren't usable this
way).
Using items that have no specified usage type at all will now say so, rather
than claiming to use them.

Revision: 8119
Recognize partial Meat gains under The Sea
Recognize dolphin thefts again.
In Relay Browser, if dolphin steals an item, you have a dolphin whistle in
inventory, and the whistle cooldown is over, give a "use dolphin whistle" link

Revision: 8120
When we find an item in combat, pull quantity found out of rel string

Revision: 8121
Fix problem with map file entries with a trailing blank field.

Revision: 8122
Support for Clan VIP Lounge Pool Table
- track usages in _PoolGames
- Add "pool" command to CLI. You can specify up to three pool games to play:
pool <type> [, <type>] [, <type>]
There are three "types" of pool game. You can specify them by number, type,
stat, or effect you get by playing that type of game:
1, aggressive, muscle, billiards belligerance
2, startegic, mysticality, mental a-cue-ity
3, stylish, moxie, hustlin'
You can abbreviate any of the above. The following works:
pool mus, mys, mox

Revision: 8123
When verifying the ingredients for a concoction, do so in increasing order of
creatable amount. That way, if the overall creation is going to fail, it
should do so almost immediately - without wasting any time or resources on
creating other ingredients.
Removed a couple of stray tabs in monsters.txt that were producing startup
errors due to Revision 8121.

Revision: 8124
ClanLoungeRequest logs more about pool table when it approaches. Preaction, not
action.

Revision: 8125
"You deal 29 carbohydrate-rich points of damage to him" was not recognized as
a damage message. Now it is.
Pastamancer ghost actions are now logged, like familiar actions, if you have the
"log familiar actions" option selected.

Revision: 8126
Print simple visits to the Deluxe Klaw and Crimbo Tree again

Revision: 8127
Do not URL decode fields submitted as part of the URL via POST.
This fixes multi-stage crafting from making an extra product, since some of the
fields used for that LOOK like the are encoded - and URLdecode will munge them -
but they are actually not encoded...

Revision: 8128
When you fight something while blind, when you beat it and it drops an item,
"you find... something". As it turns out, this message is wrapped in a table
with a "rel" string that tells you the item id and quantity of the item you
found. Parse and log this.

Revision: 8129
Process item rel string from tables in only one place.

Revision: 8130
Parse items from descid even if there is no rel string

Revision: 8131
Recognize that the Unstubbed noncombat in the Outskirts of The Knob removes a
pungent unguent from inventory.

Revision: 8132
Refactor SellStuffRequest into AutoMallRequest and AutoSellRequest

Revision: 8133
Getting a runaway from a navel ring can be free or not. Only a free runaway
descreases chance that a subsequent runaway is free.

Revision: 8134
Refactor TransferItemRequest to allow subclasses to override a method for
generating subinstances.
Refactor AutoSell request to differentiate compact and detailed autosell modes
better.

Revision: 8135
Eliminate infinite recursion fetching storage

Revision: 8136
The "refresh" CLI command (including "X refresh" commands that get turned
into "refresh X") now displays an error for unknown parameters, rather than
dumping your entire inventory.

Revision: 8137
Add BRICKOs to the regexp that determines libram casting cost from your
bookshelf, so that the cost can be found even if this is your only libram.
Recalculate modifiers before attempting to convert the casting cost into the
number of previous casts; otherwise, any MP cost reduction gear you were
wearing at login would not be considered, resulting in an incorrect answer.

Revision: 8138
Optimize autosell: divide objects into sets that can be sold together: all, all
but one, and individual quantities.

Revision: 8139
An attempt at handling the That Explains All The Eyepatches choice adventure
better. Options 1-3 continue to directly select one of the class-varying
options, for compatibility with existing scripts that set this pref. As
before, they may be labeled incorrectly if you've switched characters or
ascended during the current mafia session, as the choiceadv popups only get
built once. Options 4-6 have been added that map to a desired outcome,
taking your class into account. It should be safe to select one of these
options, without having to remember to reset it each ascension. The one
gotcha is that Mysticality classes have no option that leads to a combat, if
that's the selected option then a shot of rotgut is acquired instead.

Revision: 8140
When parsing a skill cast, limit the count to the maximum possible with the
current MP. Overcasting (of librams, at least) is silently truncated;
there's no indication in either the request URL or response page of what the
actual cast count turned out to be.

Revision: 8141
Add power for BRICKO bulwark. Use _poolGames, not _poolgames

Revision: 8142
When gain stat points in normal combat, need to force a refresh.

Revision: 8143
No stack trace if get null response from an equipment change.

Revision: 8144
Recognize the [break apart] action for the BRICKO hat, pants, and sword.
"use" or use() of these items now invokes this action.

Revision: 8145
When you visit the Untinker and he asks you for his screwdriver, give a link to
the Degrassi Knoll or Innabox, as appropriate

Revision: 8146
Add a few new items, recipes, familars, and so on

Revision: 8147
familiar equipment for new class familiars does not add normal familiar weight

Revision: 8148
When we discover a new item via a table's "rel" string, also look for the bold
item name, and possibly thereby discover the item's plural at the same time.

Revision: 8149
Add various Sauceror Nemesis quest things

Revision: 8150
More Nemesis items.
Volcanic Island appears in compact top menu.
Do not append a call to a script on data returned from the server unless it
is html; doing so messed up data transfers, as in the volcano maze

Revision: 8151
Add AT legendary outfit. Add more slime recipes. Add demon #8

Revision: 8152
Add Arena parameters for Mariachi Chihiahia.
The Trickster Trikitixa is an accordion.

Revision: 8153
Fixed a typo
Frigid Northlands Garb outfit

Revision: 8154
Arena parameters for Pet Cheezling.
Count successful usages of Gothy Handwave towards acquiring dance moves.
Add monsters for SA, DB, and AT areas of Nemesis quest

Revision: 8155
More Nemesis updates

Revision: 8156
Add new Nemesis reward weapons for TT, PA, and SA. When looking for a class
weapon to cast a TT, SA, or AT buff, if you are in aftercore, settle for third
best (the Epic Weapon), rather than second best.

Revision: 8157
Arena parameters for Autonomous Disco Ball. Legedary Regalia of the Groovelord

Revision: 8158
Add all the different recipes for vials of slimes: all 91 of them
Add quest rewards for Sauceror Nemesis
Attempt to recognize demon names for all six Flying in Circles
Add new status effects from vials of slime
Add Legendary Regalia of the Saucemaestro

Revision: 8159
Add combat skills enabled by new Nemesis class-specfic weapons

Revision: 8160
Added some TT Nemesis items.
Fixed recognition of "(Bonus for Turtle Tamers only)" in auto-generated
modifiers.

Revision: 8161
Gothy Handwave and the three DB Rave moves cannot be permed upon ascension.
The BRICKO gargantuchicken redirects into a fight.
The BRICKO pyramid is a dwelling.
If we don't recognize a dwelling type, include the number in the error message.

Revision: 8162
Add more items from Nemesis quest. Add more quest items with autosell value to
list of items to sell upon ascension.

Revision: 8163
Fix use linkks for llama lama gongs: dp not give a use link if you are already
under the influence of a gong. Do not give an in-line use-link, since that does
not work.

Revision: 8164
When you select "manual control" for the O Cap'm, My Cap'm choice adventure,
do not select choice 1 before giving control to the user.
You can get 7 different Accordion Thief buffs either by casting the song or by
using a recording of it.

Revision: 8165
Set default for choice adventure 189 to 0 rather than 1

Revision: 8166
It's The Elders of the Gentle Race and The Angels of Avalon

Revision: 8167
More Nemesis: outfit, location, etc.

Revision: 8168
When an unrecognized monster is being fought, and there is no CCS section
that matches its name, look for an [unrecognized] section (so that the player
can choose to abort and see the new content for themself), rather than
looking for a match of the location name (which may be entirely inappropriate
for the new monster).
Added Cold-Blooded Warm Fuzzies.

Revision: 8169
An attempt at handling the Sauceror Nemesis quest randomized vials of slime,
in a manner similar to bang potions. They should be identified upon use
(including identifying the last vial in each tier by process of elimination),
and an abbreviated form of the resulting effect added to the name wherever
they appear. CLI command "vials" will show the current state of knowledge.
This is COMPLETELY untested, since I'm currently a Turtle Tamer. If it works
at all, there are likely to be places where the annotated vial names fail to
show up.
I rearranged the slime vial recipes so that the actually useful ones get
used, and the stupid ones (useful only for trophies) get ignored.

Revision: 8170
Fix typo and eliminate unfortunate ABE

Revision: 8171
First cut at Disco Combat Helper. Enable it in the "Relay" tab of Preferences.
If you are a Disco Bandit in a fight and are not in Birdform, this adds a
little table of Disco Combos to the bottom of the page. Only combos for which
you know all the skills will be shown. Each skill in the sequence has a button.
The button is enabled if you have the mana to cast it.
Limitations:
- We do not yet track Disco Skills already used, so there is no guidance as to
where you are in a given sequence.
- We do not handle Rave skills yet.

Revision: 8172
Fix typo

Revision: 8173
Make trophyfish and the naughty sorceress usable as $monster[] in ASH

Revision: 8174
Handle change to purse when you buy a trophy in the Trophy Hut.
Add a new item. Add some new effects.

Revision: 8175
Track disco combat moves used in sequence and display above table.
Reset when a combo has been executed or when a non-disco move is used.

Revision: 8176
Clear disco combo traking when you win a fight

Revision: 8177
Reset disco combos at the start of any battle; no check needed for winning.

Revision: 8178
Recognize the transmogrification of your LEW at the start of the Nemesis
final battle, and subsequent distransmogrification if you lose.

Revision: 8179
If you have at least five turns of Inigo's, allow the relevant creation types
to proceed, even if you have no adventures left, or a box servant requirement
would otherwise prevent it. This may cause problems if Inigo runs out in the
middle of crafting multiple items; I don't see a good fix for that.
Give more specific reasons when creation is disallowed - in particular, don't
say that a box servant is required, when the problem is actually something
like lacking a skill.

Revision: 8180
Add Seal Clubber nemesis weapon and accessory.
Plural of upsy daisy has changed.
Add vials of slime to list of quest items that are autosold upon ascension.
Breakfast summons should not peg at 5; use actual current maximum available.
Add 91 of each primary slime vial as a default condition for the convention hall
(We should probably also add a condition to get the minimum necessary to make
one each of the non-brown vials.)

Revision: 8181
When initially adventuring in areas on the Volcanic Island, KoL inserts a
"blech" field into the URL. Remove that before trying to match the URL to the
adventure location.
When you learn a new skill during combat (as in Outside the Club), register it
immediately.

Revision: 8182
Learn Rave Combos by watching combo and store them in preferences:
raveCombo1 = Rave Concentration = Item Drop +30
raveCombo2 = Rave Nirvana = Meat Drop +50
raveCombo3 = Rave Knockout = multi-round stun + damage
raveCombo4 = Rave Bleeding = recurring damage
raveCombo5 = Rave Steal = extra auto-pickpocket (if no pickpocket this round)
raveCombo6 = Rave Substats = immediate substats
The setting will be either blank (if you don't know the combo) or a comma
separated list of three Rave skills.
Note that these skills are only available on the Volcanic Island until you
defeat your Nemesis.

Revision: 8183
Add suport for the crystal orb of spirit wrangling: it is reusable, and swaps
all of the Pastamancer combat entity prefs with an alternate set. The
"entity" command now displays both sets. Not tested.

Revision: 8184
Add raw "craft" function to ASH:
int craft( string mode, int count, item item1, item item2);
mode can be "combine", "cook", "cocktail", "smith", "jewelry"
count is how many of each ingredient to use
item1 and item2 are the ingredients
This calls KoL's craft page with the given parameters.
It returns the number of each ingredient used. Ideally, this is equal to the
"count" parameter, but could be less if, for example, your box servant blew
up, you require box servants, and auto-repair was either disabled or failed.

Revision: 8185
Fix situation where two tabs may result when a private message conversation is initiated via name click.

Revision: 8186
Do not try to parse null messages

Revision: 8187
Remove tab alphabetization in chat

Revision: 8188
Leave buffer intact in case of accidental closing

Revision: 8189
Added ASH function for retrieving some variable-length internal data that
isn't readily readable via file_to_map():
int[item] get_related(item, string)
The second parameter specifies the type of data desired. The returned map
will be empty if the item isn't suitable, or the type isn't one of the
implemented types:
* "zap" returns the zap group that the item is part of. The integer values
in the map are meaningless in this case, and the item itself isn't included.
* "fold" returns the fold group that the item is part of. The integer is the
position in the fold sequence (1..N), and the item itself IS included, so you
can determine its position.
Added a few missing zap groups.

Revision: 8190
Added "Additional Song" boolean modifier, currently only provided by the AT
epic accessory. I'm assuming that any future sources of this enchantment
won't stack.
The error for exceeding the maximum number of AT buffs no longer specifically
says "3 songs".

Revision: 8191
Add depleted uranium seal figurine as a resuable seal figurine.
Add a couple more default goal sets to the Convention Hall Lobby

Revision: 8192
Add Bandolier of the Spaghetti Elemental. Allow 5 extra summons of Pasta
Guardians from CCS if it is equipped. (untested)
Rather than having complicated logic based on which round it is, what the
fight page says about winning initiative and/or Stealth Mistletoe, whether or
not you've succeeded in stealing an item yet this round, whether or not you
have the Bling of the New Wave equipped, and so on, to determine whether you
can steal or not, simply look at whether KoL provides a "Pick His Pocket"
button. (or Her or Its or Their Pocket. Again. Or Look For Shiny Objects).
Improvements to Stationary Buttons:
- If you know Entangling Noodles, we atomatically provide a "noodles" button.
Grey it out if you have already used the skill this fight.
- If you know Trancendant Olfaction, automatically provide an "olfaction"
button, which will be greyed out if you are On The Trail.
- Shorten the names of Rave skills on buttons to simply "pop", "run", "break"
- The "again" button now works to take you back to the Ballroom from the
Rotting Matilda page, even if we have given you a "use another dance card" link

Revision: 8193
Immediately update MP when it changes in battle, rather than depending on the
charpane refresh to do it, so that stationary combat buttons are enabled or
not based on correct MP value.

Revision: 8194
Clicking on the familiar image in any mafia window will now pop up a menu of
other familiars to switch to. Any familiar that is a favorite in-game will
appear at the top level; all others appear in submenus based on function.

Revision: 8195
Don't double-log mp and hp gains and losses

Revision: 8196
When you use Quick Skills, if you don't select a skill, (select a skill) is
submitted with skill id = 999. We can't find a MP cost for that nonexistant
skill and try to divide by zero. Don't do that.
Add Epic Pants for Seal Clubber and Pastamancer.
Add Legendary Regalia for Seal Clubber and Pastamancer.
Do not call preAscension script when you simply visit the gash. Call it after
you have indicated intent to jump through, just before executing the jump.

Revision: 8197
When you visit the npc on the volcanic island, log it.
When you collect slime from the drums after defeating the sauceror nemesis, that
takes a turn. Log it.
After defeating the AT Nemesis, you can get a free fisherman's sack every day.
Add that to breakfast.
When you jump through the gash, open any fisherman's sacks you have in inventory
and autosell the contents; they are all quest items with autosell value, which
you will otherwise lose.

Revision: 8198
Fixed categorization of some combat familiars, which is now rather more
visible than it was before.
Added support for up to 9 user-defined categories in the familiar popup: set
familiarCategory1 thru 9 to a vertical bar-separated list, first element is
the category name, the rest are the familiar types.

Revision: 8199
Localize all code dealing with stationary buttons into StationaryButtons.java
Remove manifest constant defining number of buttons and make it a preference:
relaySkillButtonCount defaults to 5 and is the number of non-built-in buttons
shown on fight pages. There is no interface to change the value, other than the
CLI, but there should be no problem setting it higher; buttons will wrap into
a second row, if necessary.
Since I added Trancendent Olfaction as a "built-in" button, if you know the
skill, some people may have a duplicate button already defined, from having
cast olfaction before I made it built-in. Remove any user buttons that have
built-in skills attached to them.

Revision: 8200
Experimental: add a "Solve!" button to Dvorak's Revenge in the Relay Browser

Revision: 8201
Insert the Dvorak Solve! button in the correct place.

Revision: 8202
Add a "Go To Goal" button on each Louvre page which will go to whatever goal
the player has selected on the Choice Options panel.
Decorate final page of Louvre and Dvorak with buttons, etc.

Revision: 8203
Add "Go To Goal" button to violet fog adventures, just as in Louvre adventures

Revision: 8204
If we submit a command from the browser to KoLmafia, when KoLmfia displays the
result text, the browser will submit any links from that prefixed by "/KoLmafia"
since that was the Referer page. Recognize this and strip off the prefix.

Revision: 8205
Two spaces were erroneously replaced with a tab in a pirate insult

Revision: 8206
Fix casting noodles when that is also your autoattack. Fix typo.

Revision: 8207
If an abort occurs during use of the "script" button, don't open the
mini-browser - the player will presumably be finishing the fight from the
relay browser.
An explicit CCS "abort" now advances the line number, so a further attempt at
automating the fight will continue with the next line, rather than
re-aborting. "abort" is now basically a pause point when using the relay
browser "script" button - the player can either finish the fight themselves,
or hit "script" again to let the CCS continue. Note that in Safari at least,
the button may incorrectly remain titled "abort" even after the script
stopped on its own.

Revision: 8208
Fix typo in item name. If we drop a request from the browser, log the reason.

Revision: 8209
Added some initial support for the volcano maze
- Whenever you visit the maze, we capture and store the map
- Whenever you move within the maze, we capture and store the new map
- The maps cycle through a sequence of 5 maps. We store the maps in
settings: volcanoMaze1 - volcanoMaze 5.
- we do NOT currently store your current position in settings, since you
could have moved outside of KoLmafia. We will pick it up when you
visit the cave while we are watching.
Added a "volcano" command to the CLI:
- volcano visit - visits the cave, looks at the map, sees where you are
- volcano map - displays the current map, including your position
- volcano map 1 - displays map 1, omitting you. Ditto for 2 - 5
- volcano move column row - moves to specified column, row
- volcano movep column row - same as above, but displays map after move

Revision: 8210
Enhancments to volcano maze support:
- Add "volcano platforms" command which will print the matrix of squares showing
which map each platform appears on. This will visit the cave and look at the
map and will move up to 4 times to learn the unknown maps.
- Add "volcano jump" to swim back to shore. Yes, you can get stuck.

Revision: 8211
Add "volcano clear" command to forget everything learned so far. When picking
a neighbor to visit when exploring maps, in addition to avoiding the goal, pick
one at random.

Revision: 8212
When you "equip all familiars" with the Familiar Trainer, include current fam.
Arena parameters for the Adorable Seal Larva

Revision: 8213
Follow redirects in VolcanoMazeRequest, since you can be reminded to equip your
epic weapon.

Revision: 8214
Add hellseal parts and their damaged equivalents.
When you get the hellseal disguise, take 6 of each undamaged part from inventory

Revision: 8215
Add a "volcano solve" command. This visits the volcano cave to figure out where
you are and will take up to four random moves to find all the platform postions.
Then, it performs a breadth-first search of the puzzle to figure out how to get
to the goal from wherever it ended up after the initial exploration.
It's possible that the random moves left you in an impossible spot. If so, it
detects that and tells you to swim to shore and try again. If you do so, there
WILL be a solution.
For now, this command simply prints the list of hops you need to take to get to
the goal from wherever it left you after the initial exploration.
Soon, it will actually execute the moves and leave you one hop away from the
oal.
Note that there is no knowledge whatsoever of the "standard" configurations.
Nor is there need for you to be at the starting square. This algorithm is
perfectly capable of adapting to new configurations and can handle you having
moved to arbitrary places before calling upon KoLmafia to finish for you.

Revision: 8216
Add a "Solve!" button to the volcano maze, which will calculate the path to the
goal and, if a solution is possible from your current location, follow it. It
will stop next to the goal square, allowing you to do whatever preparation you
wish before proceeding to your doom.

Revision: 8217
Add sealhide items. Add Phineas as an crafting method available to anyone who
has the Seal Clubber's ULEW in inventory.

Revision: 8218
Add Canticle of Carboloading

Revision: 8219
If you have an Infernal Seal Claw, either in inventory or equipped, Daily Deeds
recognizes that you can summon 10 seals a day, not 5.
The pattern to recognize demon #8 (your demonic Nemesis's patron) has quotes in
it. Use " (the character entity) rather than the quote character. Duh.

Revision: 8220
A simple change in the volcano maze solver vastly improves the performance: when
we examine the next hop, we used to prune the path if it was already in the
path. We now prune it if it was already in ANY path.
Very preliminary support for the lookingglass and Down the Rabbit Hole.

Revision: 8221
Add more Nemesis and Rabbit Hole items

Revision: 8222
Add more Looking Glass status effects

Revision: 8223
Handle meat correctly when purchasing raffle tickets from inventory vs. storage

Revision: 8224
Add more looking glass items. Fix some bogus descids, prices, level requirements
and such. Add some looking glass enchantments.

Revision: 8225
If something goes wrong with updating the text of the mini-browser sidepane
(I've seen some random inexplicable NPEs here recently), don't let the
exception propagate - that can kill one of the relay agent threads, resulting
in a lost pageload.
Fixed problem with slime vials becoming uncreatable for the rest of the
session once identified, because the corresponding concoction was being
looked up via name (which has changed) instead of ID.
The "bang" and "vials" commands now show quantities - on hand, in the closet,
and creatable. This should be useful to Saucerors to find a vial that they
can make, but haven't identified yet.

Revision: 8226
Add chess cookie status effects

Revision: 8227
Lack of success in casting breakfast libram skills no longer prevents
breakfast from being flagged as complete. The way success is defined for
book skills works fine for tomes and grimoires, but librams can never meet
the conditions due to lack of a hard limit on the number of casts.
Libram summoning during mana burning will now do all the casts at once,
rather than one at a time. This has only been tested with a single libram,
not the more complicated case of multiple librams that need to have their
casts balanced.
Fixed effect duration calculations to account for the new ULEWs.

Revision: 8228
As requested by churl2 @kolmafia.us, expand failed login message to include additional information about the failure (such as wait time) as provided by KoL.

Revision: 8229
add ittah bittah hookah
Be a bit more stringant in examining referer field.
Put "Go to Goal" button at top of Louvre and Violet Fog choices, not bottom.
Add some (premliminary) consumption data for the queen cookie.

Revision: 8230
The final item in each tier of slime vials, identified by process of
elimination, was being given an incorrect alias (generated using the rules
for bang potions and stone spheres). It was therefore not usable via its
alias until the next login, when all the item aliases get rebuilt. Fixed.

Revision: 8231
Experimental feature: on MacOSX 10.5 or higher, add a badge to the Dock icon
showing the number of turns remaining, as an indication of progress when
mafia isn't frontmost.

Revision: 8232
Label the "Go To Goal" buttons for the Louvre and Violet Fog with what your
current goal is set as.
"DRINK ME" potions are multiusable.
Add more Rabbit Hole items and status effects.

Revision: 8233
When we first see the chessboard, parse it.
"missing wine" is a drink

Revision: 8234
Recognize when you successfully get seated at the Mad Tea Party and set daily
setting _madTeaParty to reflect that.
Try visiting the Looking Glass as part of breakfast and set _lookingGlass to
true if you do so.
Do not automatically tack on the password hash to requests forwarded by the
Relay Browser; it's up to the browser to include it as needed - presumably
because the form it is submitting has it as an input...
Fix name of vial of jus de larmes - it has italics
Add effect descid for Anytwo Five Elevenis?

Revision: 8235
Ambiguous skill names are no longer allowed - the previous behavior was to
silently pick the match that occurred closest to the start of a skill name.
Unparseable CCS skill uses (now including ambiguous matches) are turned into
a note, rather than an attack (which made it impossible to tell what skill
was intended).
Calculation of the mini-moon position, and the various modifiers that depend
on it, should work properly again for the very first time. The "moon"
command now shows the mini-moon position, as a way of checking that mafia got
it right.

Revision: 8236
Add experimental support for the Great Big Chessboard:
- When you first see the chessboard, KoLmafia saves the configuration.
- It adds a "Solve!" button to the page. For the moment, that does nothing
except calls "chess solve" which brings you back to the reflection of a map.
- Having seen the map, in the gCLI you can use the "chess" command to do things
- "chess board" - shows you the board
- "chess test" - solves the puzzle and prints out the sequence of moves
- "chess solve" - does nothing, yet, but will solve and execute the solution.
As coded, a solution requires that you be able to move the last piece standing
all the way to the final row in a single move, after clearing all the other
pieces off the board. I don't know if the puzzle actually insists on that or
if there might be versions in which a piece other than a queen or rook might
have to take multiple moves to finish.
If you use "chess test" and are told that it couldn't find a solution, please
walk away from the chessboard, turn on debug logging, go there again, and send
me the log. Thanks.

Revision: 8237
When updating the Goals field after a condition has been at least partially
fulfilled, strip out commas and quotes from the item name so that the
resulting text is parseable again if adventuring is restarted.

Revision: 8238
Move the italics tags inside te quotation marks when looking for demon name 8

Revision: 8239
Canticle of Carboloading is not permable

Revision: 8240
Fix recognition of display case quantities of items with names ending with a
number.

Revision: 8241
Adjust blooper drop rates for white pixels

Revision: 8242
Adjust pattern for recognizing items in inventory, so it catces items with HTML
italics tags embedded in them, as in two of the new duchess foods.

Revision: 8243
Enable the "Solve!" button on the Chess Puzzle. If it can figure out the
solution, it now clears the board and gets you a queen cookie.
Add defensive check to prevent taking an NPE when changing the names of slime
potions in the Relay Browser. I have no idea how that can happen, other than
having a corrupted override file - which I have no idea how can happen - but
apparently it does affect some people, and it screws up most decorations in the
Relay Browser when it does so.

Revision: 8244
Track # of guard turtles freed in setting "guardTurtlesfreed"

Revision: 8245
Fixed Mall searches for items starting with a double quote - "DRINK ME"
potions, to be specific.

Revision: 8246
"chess board" now labels columns with letters a-h.
"chess test" now (also) describes the various moves in chess notation
Do not visit the looking glass as part of breakfast unless your lounge has one
Certain status effects have meat.gif as an image. This fooled FightRequest into
assuming they were a meat gain, not an effect gain. Look for the "onClick"
attribute of the image (present for items and effects) first - and assume it's
an item or effect, respectively - before making deductions based on specific
image file names.
Attempt to notice when a freed guard turtle returns and gice you warm fuzzies.
The various cookie effects now vary according to the "chessboardsCleared"
setting - which we do not set anywhere, yet.
Adjust some consumption data for various chess cookies.

Revision: 8247
When on the chess puzzle, notice when the player takes a move. Log it, in chess
notation, in the gCLI and session log.
When loading settings for the ocean destination, if it is "manual control", set
the choice adventure setting to 0. This is the only place we SET a setting when
loading settings into GUI controls...
Tha fisherman's sack is multi-usable.

Revision: 8248
ResultProcessor now always considers italic tags to be part of a token,
rather than a separator. The previous fix for italicized item names was
hard-coded for elven limbos. This may have unintended consequences.
Added [rabbit hole] link when the effect is gained.
Added choice spoilers for A Moment of Reflection.
The Duchess' feast items are removed from inventory when she scarfs them (not
tested yet.)
Start of Rabbit Hole hat-changing interface - nothing user-visible at this
time.

Revision: 8249
When you encounter a chessboard, save the layout in lastChessboard
Both "chess board" and "chess test" will load the board from that setting if
you have not seen a board this session.
The "chess load xxx" command can be used to load a config string in the format
of that string - and will save it in lastChessBoard
At this point, if you ever find a layout that KoLmafia says it cannot solve,
simply send me that config string; I shouldn't need the HTML in the log file

Revision: 8250
seal-brain elixir and sealhide seal doll are "potions", but are single use.
Add three more status effects from the AT Nemesis quest

Revision: 8251
Add monsters from Red Queen's Garden. Fix a comment.

Revision: 8252
A request class can choose to omit the hash field, in which case, GenericRequest
will not automatically include it. To start, the CharPane and CharSheet requests
so opt out.

Revision: 8253
Fix MallPurchaseRequest: although it specifically declared that it needs a
password hash, it didn't bother setting it, but instead, added the field
directly to the form. That didn't play well with 8252

Revision: 8254
The Rabbit Hole now has a hat-changing popup, labeled with the effect you'll
get from the Mad Tea Party with that hat.
If the "compactChessboard" pref is set to true, the "chess board" command
will produce output in a smaller format, using Unicode chess symbols rather
than the in-game piece images.

Revision: 8255
Add three new status effects

Revision: 8256
Whenever we visit an NPC store, learn new items simply by seeing what's for sale
Add new Uncle P's items and outfit.
Add Tweedleporium, new items, and outfit

Revision: 8257
Added some Landscaper's Lair items. The increasing +ML of the leafblower is
not accounted for yet.

Revision: 8258
When logging moves on the chessboard, log the piece you take as it was BEFORE
you took it. I.e., Black
Add some effect comments to looking glass foods and chess cookies.

Revision: 8259
You can only access the Tweedleporium if you can go Down the Rabbit Hole

Revision: 8260
Include Arena Parameters for Animated Macaroni Duck (from Wiki - unverified)

Revision: 8261
Inventory quantities of thrown curse items are now updated from the remaining
amount shown on the page; the previous strategy of deducting one on
successful use is no longer workable given how puffs of smoke work.

Revision: 8262
Add new limericks

Revision: 8263
Fix the "auto" button on choice adventures in the Relay Browser.
The sauceblob gravy belt only gives extra reagent summons to saucerors

Revision: 8264
Both the charsheet and the charpane now tell you adventures left today and
total adventures used this run. Process those separately.
Reject charpane responses where turnsthisrun are less than reported in an
earlier response, as that means the response arrived out of order.
When iterating to adventure multiple times in a location, count a successful
adventure as one that advances the current run, rather than one which decreases
adventures used, obviating special code to account for adventures gained during
the adventure.

Revision: 8265
If the leaflet quest script cannot figure out where you are, if declares
"Server side change detected. Script aborted." It actually does abort the
script, now. Untested.

Revision: 8266
The nuns only collect meat you collect from Dirty Thieving Brigands

Revision: 8267
When training a familiar via the "matchup" frame, accessible from the Familiar
Trainer - and currently the only way to train a familiar with all weaknesses -
clean up the result before displaying it in the training log, rather than
leaving in pieces of sc ripts and such.

Revision: 8268
Add stuffed pocketwatch

Revision: 8269
Ignore intrinsic effects when processing spent adventures
When your familiar acts in a fight, sometimes the HTML includes embedded tables.
Strip those out and process them separately, rather than appeneding their text
to the familiar's action.
Add stuffed bandersnatch.

Revision: 8270
Add remove explicit adding of pwd field in several random classes, since the
GenericRequest will do that for you unless you specifically tell it ot too.
When you attempt to login just after rollover and have socket timeouts enabled,
cut KoL some extra slack and wait 2 minutes before timing out the login request.

Revision: 8271
Fix external lookup of ASH functions, as used by CLI invocation of a
namespace script, or to find a combat filter function. Previously, functions
with more than one parameter could never be found.

Revision: 8272
Fix return type for start(matcher) and end(matcher) from boolean to int.
Add int start(matcher,int) and int end(matcher,int) which return the start and
end of the specified group.

Revision: 8273
Add stuffed caterpillar.
Improve logging of chess games:
- Log the board config when you visit
- Do not include an Encounter: line nor a raw url when you make a move
- log acquisition of cookie AFTER final move.

Revision: 8274
Lots of plurals.

Revision: 8275
Notice when you receive a friar blessing in the Relay Browser

Revision: 8276
Remember when you visit the Island Arena in the Relay Browser

Revision: 8277
Add a space in front of the "puff of smoke" pattern (for detecting clover
adventures) so that it doesn't trigger on the new item of that name.

Revision: 8278
Add preference to enable or disable the recently-added feature of displaying
the number of turns remaining on the Dock icon (Mac OSX 10.5+ only).

Revision: 8279
Fix inventory management of the depleted uranium seal figurine. Untested.

Revision: 8280
Move post-choice handler back below result processing. Rats.

Revision: 8281
When you use the hermit script, remember when that the hermit has been hax0red.
If we didn't see you use the script, we deduce the same thing if you trade an
item and he looks confused.
If we know that the hermit has been hax0red, do not automatically buy a hermit
permit when you visit the hermit.
When casting skills from the CLI, we warn you if the skill name is ambiguous.
We now only warn if the skill is ambiguous among the skills you know.

Revision: 8282
Add stuffed walrus
Only remove reflection of a map from inventory after you use it and take one of
the choices that consumes it; rolling it up or walking away from the chess board
do not remove it.
Strip boring password hash from URLs before logging them.
Split post-choice handling into two parts: before and after processing results
When executing an advanced chat command in the ChatManager, KoL itself will
broadcast an event showing the result, so we do not need to take the result of
the command ourselves and broadcast it, complete with messy HTML.

Revision: 8283
Fix limits: the spaghetti bandolier lets you summon 15 Pasta Guardians/day

Revision: 8284
Insert LINE_BREAK after each item in list of aliases to make output easier to read.

Revision: 8285
Escape characters that require character entities when printing an alias
Add boldness to alias name when listing aliases

Revision: 8286
Assume that your current familiar is a favorite - there is no indication one
way or the other on the terrarium page. This allows it to be easily
reselected via the familiar popup, if it was switched away from via an ajax
request.
More plural & modifier updates. Sleazy Back Alley alternates between drunken
& hung-over half-orc hoboes per ascension.

Revision: 8287
Add stuffed carpenter

Revision: 8288
After ascending in the Relay Browser, pull a VIP key (if you have one) and
visit the lounge. This will report if there is a present for you under the tree.

Revision: 8289
Adjust message printed at top of debug logs to direct people to create bug
reports at kolmafia.us, rather than emailing logs to me.
Add Tavern Cellar to adventures.txt. You cannot autoadventure there - it has
the same problem, and worse, as the HIdden City - but it will show up as your
last adventure location.

Revision: 8290
++copyright_date;

Revision: 8291
Add detour shield and stuffed dodo

Revision: 8292
Allow exact skill name matches to bypass the check for ambiguity; otherwise,
Thrust-Smack could never be specified due to its Lunging variant.

Revision: 8293
Fix parsing of gained effects with names that contain parentheses.

Revision: 8294
Tag black cherry soda as an mp restore, not simply a use multiple item.

Revision: 8295
Stuffed walrus is an accessory, not an off-hand. Add its HP/MP regen synergy
with the stuffed carpenter.

Revision: 8296
Preliminary support for the revamped Greater-Than Sign: new items, minimal
monster data, choice adventure, and removal of the unidentified version of
items from your inventory after reading the plus sign (that part hasn't been
tested yet).
I've set the default conditions for this area to the slightly unusual "1 plus
sign, +1 steaming evil". The idea is that you would leave the choice
adventure set to the option that gives you Teleportitis. Adventuring here
will get the plus sign on the first choiceadv (because the goal overrides the
setting), then get Teleportitis on the second, and continue until the Oracle
is found - which is a stop adventure. Putting an unobtainable goal in the
conditions seemed the easiest way to accomplish this.

Revision: 8297
Fixing Parenthetical Effects II: The Charpane Edition.
Now testing at a relay browser near you!

Revision: 8298
Fix price for stuffed dodo. Fix stat requirement for flamingo mallet.
Fine-tune debug log header to indicate that logs should be added as attachments
to bug reports on kolmafia.us

Revision: 8299
A multitude of monster data updates.

Revision: 8300
Be more specific when checking if your guild store is open - it could be
fooled by a reference to managestore.php in the page's JavaScript, if you had
mallselling enabled as a right-click option.

Revision: 8301
Unescape mood actions before attempting to parse them; actions containing
HTML entities (like "cast 1 jabañero saucesphere") were being
interpreted as multi-statement commands due to the presence of a semicolon,
which interacted badly with recent changes to CLI skill parsing.

Revision: 8302
Update mall prices

Revision: 8303
Releng things:
- add boilerplate.txt containing standard announcement for a release
- "ant dist" now creates a Macintosh application bundle
- "ant jarbundler" simply leaves the app bundle in dist, rather than moving it
to Applications

Revision: 8304
When we successfully use the plus sign, remove punctuation from inventory

Revision: 8305
Bump version to 14.0
 
Top