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.
When voting, add choice spoiler showing what the wandering monster will be tomorrow, if known.
When visiting Voting Booth after having voted, fix recognising modifiers after KoL change. Add recognising todays Vote Monster from speech if not already known.
Add today's wanderer to the Vote Booth information in relay browser.
Can only access GEM store when you have access to Fantasy Realm. Equip GEM if not worn to buy items.
Identify more vote monsters.
Set choice to use government requisition form.
Advent Calendar day one
Fix consumption type
Jarlsberg potions are multi-usable. Thanks, Taltamir.
"wad of cotton is multiusable, but KoLmafia thought it was not" is no longer the case. Untested.
Some daycare stuff.
A little Boxing Vote stuff
Some daycare tracking. Lightly tested.
Lightly tested, recognise item loss through instructor hire, recognise some additonal Daycare text.
Lightly tested. Add daycare command to allow collection of items and buffs. Add item as option for breakfast, and buffs to maximizer. Handle small boxing ring.
Remove items used hiring instructors at Boxing Daycare
traditional Crimbo cookie (and spading on primitive candy cane, runny fermented egg and oldcake)
Bauxite Boxers. Thanks to The Dictator in GD Post, stats for Bauxite now handled based on daycareToddlers.
Added string [int] session_logs(string name, string baseDate, int range)
Lightly tested and probably violates some formatting conventions because I'm sure I missed something :-)
Traditional Crimbo Cookie spading.
Some Crimbo stuff
Arena parameters for Yule Hound
Refresh concoctions after getting Floundry item
Staff of Frozen Lard
Braindeer is combat reusable
Refresh concoctions after barrel prayer
Very lightly tested, relay browser warning when trying to adventure in desert without UV-compass / dowsing rod.
antique beer choice option.
Restore previous way of updating crafting free counters, as it (mostly) worked.
Fix some modifiers. Add boom box tracking in _boomBoxFights. It is 0 after a drop, and counts up to 10 on non-free fights, then next turn will be a drop. Resets to 9 at rollover/ascension. Also add "This combat did not cost a turn" in logs after free fights.
In daily deeds, show adventures gained from items when wearing them.
More Crimbo stuff
Some Crimbo consumable spading.
Tiny plastic crimbo items
Return an empty array for get_shop_log if there is no shop. Untested.
Some more crimboo items and consumable spading
No machete warning against Lianas, lightly tested.
Hopefully correct check whether hidden city areas are open when getting shrine choices.
Recognise learning skill from My First Art of War. Untested.
lump of bauxite
Knob Goblin spleen changes
Some of todays changes, hopefully.
The last ballot choice text.
Some elf items
Arena parameters for Cat Burglar and Elf Operative
After leaving Standard, check Campground (untested). Knob goblin items now use spleen so are "chew". Untested.
Basic support for sausage grinder and operative dart. Lightly tested.
Track daily use of Jerks' Health™ Magazine. Patch provided by Saklad5.
Lightly tested. Magical Sausages as concoction.
Restore code accidentally removed in previous commit
tailored vest, dictionary non-combat (possibly).
Crimbo is over.
Untested, fix fall select.
Untested, if Radio on Conspiracy Island can't be parsed, visit quest log to get quest status.
body spradium spading
Haunted Hell Ramen is (now) spicy (according to Twitter, anyway)
Try again for fail fix.
Witchess exists in Campground in standard, but isn't accessible.
Check for Standard allowance in witchess command
Fifteen Minutes of Flame not marked as old in standard, and isn't usable.
set_property() obeys isUserEditable
Item drop rates, thanks to Ryo Sangnoir
Another drop rate
Zeppelin combat rate fix
Track fancy chocolate sculpture uses
chalk and marble
The Sausage Goblins are free
Untested. Also log fights as free on non-wins.
Update handling of tracking for olfaction-like things
Files missing from the previous commit
Some halloween candy. New Ultrarare (untested for obvious reasons!).
Latte with vanilla gives 5% weapon damage, not 5. Pantogram gives 20 weapon damage, not 20%.
Carols are shruggable effects.
Untested. Only update combat results for party fair quest when it is in progress.
Use MonsterDatabase.valueSet() to get all monsters for ASH $monsters
Frattlesnake now in Smut Orc Logging Camp.
Basic support for Doctor Bag.
Doctor Bag combat skill tracking (Banish is a guess)
Untested. Sausage Grinder units shouldn't have been a daily setting.
Dropdown for what to for Doctor Bag Cure non-combat now in Item Based Choice Adventure tab. Choiceadventure defaults to "Show in Browser" (Note, will not change if you already have been playing with Revision 19091 or later). Upgrade based on message about upgrade, not about lights going out.
Very early Dark Gyffte support
HP adjustments and skill learning/forgetting for Dark Gyffte
No familiars in Dark Gyffte
Casting Vampyre skills costs HP. Lightly tested (adds hp_cost(skill) ash function).
Vampyres (and only Vampyres) can only eat/drink Vampyre consumables (unless they are Magical Sausages).
Some quest tracking (untested). All Vampyre skills affect HP, so are considered passive skills.
A little more quest tracking
Hopefully fix NPE in Vampyre path - Untested.
Update Maximum HP calculation for Dark Gyffte
Vampyres don't need a wand
Fix stats of smut orcs per Manuel
Sharona, ref money bag, fix some Dark Gyfte skill ids
Fix unescaped trademark symbol in bowl of Tastee-Wheet plural
Set a boolean preference _volcanoSuperduperheatedMetal when a high-resistance sheet metal is converted to a superduperheated metal in the Bubblin' Caldera
Apply patch from Saklad5 to add variable & underwater to the God Lobster
Fix old typo for cute meteor type (passice->passive)
Track daily LOV Enamorang uses, thanks to gausie
Dark Gyffte monsters and items
rk Gyffte is an Avatar path and needs usual "choose a new class" handling.
Thwaitegold mosquito statuetter
More Dark Gyffte monsters
Fix Cloak of Shadows
Track Baleful Howl banish
Booke of Vampyric Knowledge, skills, effects, items
Vampyres don't need no stinkin' boss warnings
Blood Blade is 5042
Vampoyre Book skills use HP, not MP
Recognize tw more Belmonts by image. Initial glitch season support; finish when item is named, at least.
government-issued necktie has a variable meat drop bonus
Dolphin whistle now only requires level 11
Update _daycareRecruits when visiting the Daycare
Track daily PvP fight acquisition from Daycare in _daycareFights
In Glitch PvP Season (or any other season!), if you randomly hit a player with an unbroken Hippy Stone, just try again.
Mayoflex doesn't add adventures to foods that don't normally gixve adventures
Maximum HP for cloake is capped
Fix detection of open bets in the Money Losing Game, per PlasticLobster
angry ghost drops
Update drop rate based on perfectly fair coin data
Track progress toward Blech House
Track uses of vampyric cloake skills and Army of Toddlers, thanks to MrSpeed
Update drop rates based on perfectly fair coin spading
More drop rates
Update sausage goblin settings when starting the fight, not when you win
Voting and ballroom quartet item bonuses are both doubled by Steely-Eyed Squint
Eliminate calls to parseModifiers in maximizer.
This was a relatively expensive method to call on every comparison, since
it executes a _lot_ of matchers to parse out the set of modifiers. I
noticed that it was unnecessary, since evaluateModifiers already generates
the list of modifiers (which we don't need to serialize then parse back
Fix evaluated modifiers for constant mods.
Turns out that returning an empty modifier list is... not what we want
to do here.
Thanks to fredg1 and daisygirl @ kolmafia forums for reporting the
problem and helping to identify which revision was at fault.
homoerotic frat-paddle -> Orcish frat-paddle
homoerotic frat-paddle -> Orcish frat-paddle part 2
Add test for items.txt.
This is a regex-based test that's designed to be moderately extensible -- for
each line that Mafia extracts from the data file, we apply a per-field regex.
To run this test, just run `ant test`. The build.xml could probably use some
cleaning up, since I don't really know what I'm doing there.
In doing so, I fixed a handful of bugs with PirateRealm content -- there were a
few no-trade, no-discard items that were missing a tab between the use and the
Actually add the data file test.
This CL also adds a few other tests for a few other data files,
related to consumption yields.
The thre Vampyric Forms can be uneffected by casting the skill again
Check if an intrinsic can be removed with a skill by checking removeWithSkill map rather than hardcoding a set of effects
Create isRemovableIntrinsic() and lookup effect removing skill inside that
PirateReal adventuring zones and monsters
More PirateRealm stuff, including beginning of Coinmaster
Add generic detection for unknown items.
This should reduce the amount of extra work for detecting new items from
Add more PirateRealm items from the mall.
Track Xiblaxian crystal drop, thanks to saklad5
Learn new skills from desc_skill.php.
Add pirate radio ring and crabsivle. When visit PirateRealm Fun-a-Log, parse what is available and register new items.
Also set the available inventory to exactly what you've unlocked.
Also update "rows" for new items.
More PirateRealm monsters
More PirateRealm stuff, thanks to Yendor (and my own explorations)
Track Prevent Scurvy and Sobriety (per MrSpped)
Update unlocked PirateReal items when visit Fun-a-Log even outside of Coinmaster frame
Add more PirateRealm items
Add recipes for Tiki cocktails that requires Tiki Mixology (untested)
tweaks to PirateRealm monsters, familiar, status effects
Add synchronization to getStash().
Per https://kolmafia.us/showthread.php?23496, there is some weird
interaction that causes many stash refreshes, possibly tied to the
From my earlier analysis, it turns out that we may enqueue many of these
stash refresh requests, since we only set ClanManager.stashRetrieved when
the request succeeds. This synchronization should change this behavior to
only enqueue one request.
Added notes to all 9 Tiki drinks. Note that the item description for both Electric Punch
and Smuggler's Punch claim they give Tiki Thoughtfulness. Surely the latter should be
Tiki Temerity. I have submitted a bug report - and have optimistically assumed it is fixed
Revert Revision 19173.
This doesn't seem to have worked as hoped.
Add piratical blunderbus. Show all items on FunALog, but items which are not yet
unlocked are unavailable.
The abridged dictionary is also not sold in Bees Hate You
Add ELDRITCH creation requirement, misc concoctions fixes.
Patch courtesy of Saklad5 @ kolmafia.us forums.
Add PirateRealm to Preferences -> IOTM Tracking
Add a simple maximizer test.
This demonstrates some manipulation of Mafia inventory state.
Unfortunately, we can't actually "equip" any items -- while the
maximizer can dispatch commands to the CLI, we only change gear upon
seeing the appropriate response.
As a result, here we indirectly check the results of maximizer
speculation by looking at the Generated modifiers.
(Also, this commit cleans up some imports in DataFileTest.)
Wrote a test to serve as an example. Cleaned some lint in BooleanArray.
Fix maximizer to allow club with other offhands.
This should also work for +knife and other similar keywords.
I'll figure out how to write tests that catch the
Update MaximizerTest to check 2-h weapons.
This was previously generating an ArrayIndexOutOfBoundsException with
maximizer strings involving weapon type, since we were setting 2h
weapons that didn't satisfy the condition to slot -1, then proceeding
to the end of the loop and unconditionally trying to add them to the
While leaving PirateRealm Island as an adventuring location, also make is a "zone".
Under that zone, add Crab Island, Prison Island, and all the other islands.
Set up area combat data for each individual island to have exactly the monsters which are found there.
When you encounter the choice in the PirateRealm Sea where you choose your next island, remember
the choice you made in "_lastPirateRealmIsland". When looking up location from URL, if it is the
PirateRealm Island adventure number, look up the adventure using the value in that setting.
Get reasonable adventure for PirateRealm Island if _lastPirateRealmIsland is not set
Add Kruegerand Drop numeric modifier.
Courtesy of Saklad5 @ kolmafia.us.
Cannelloni Cocoon now restores 1000 HP instead of all HP
Don't automatically create badass belts before ascending
Mark some nowander locations
Fix command to get Bats Form to be "cast Flovk of Bats Form". This a;;pws the Maximizer to suggest it
for Item Drop, for example, when previously it was not suggested.
Don't grey out items that you can sell to a Coinmaster.
Add Prevent Scurvy and Sobriety to list of breakfast skills. Only set Calculate the Universe level to 1 when it is actually cast.
Since you can't heal in Dark Gyffte, adjust hedge maze script to check current HP, not max HP, when
deciding if you'll survive. If you will and are less than full HP, don't try to heal to full.
Scurvy and Sobriety Prevention grants a skill
So does Island Drinkin'
Fix parsing of PirateReal Fun Points
Link to chasm when receiving a bridge truss or fancy oil painting
Blood Bucatini is a combat spell
Add support for WarBear Armor Penetration as a modifier. Thanks to Saklad5 @ Kolmafia.us
When entering a choice or visiting main.php, recognize that combat has ended
Initial Saber support
traditional Crimbo cookie now gives 75 turns of its effect instead of 50
In Relay Browser, don't give "eat" or "drink" links in Dark Gyffte unless the item is consumable by Vampyres
Handle Fourth of May Cosplay Saber upgrade
Ed MP restores should be 2x higher - Malibu Stacey
Goodbye second green smoke bomb drop
Drop rates update - Thanks, Aenimus.
Ed bandages heal out of combat for twice the rate listed on the item. Thanks, Malibu Stacey
Untested. During the first meeting with Shen as Ed, the item needed isn't mentioned - get it from quest log instead.
Update drop rates, thanks to Aenimus
Untested. Handling of Shen for Ed, check of quest log moved to after accepting quest.
Two Crazy Random Summer is path #36
When loading a "simple" file, if it doesn't exist in your relay directory, assume it's a KoL
file and load it from there. With that, we correctly load tcrs.js and txrs.css
n TCRS, do not require item names to match item detected via rel string
for the purpose of generating use link
Can't depend on item name when acquiring items in TCRS
DOn't check item names when acuiring more than one item at a timn TCRSe
Proof of concept: TCRS data for Accordion Thief/Vole saved in data file.
"tcrs" command can load, save, or derive data for all items when you in TCRS path.
Does not yet apply item modifications based on this TCRS data
Implement the "tcrs apply" command, which updates consumable size, quality,
item enchantments, etc. based on currently loaded TCRS data
In TCRS, assume spleen items give no adventures by default.
When updating consumption data, also do so for associated Concoction.
When applying TCRS modifiers, only apply changes where the path name differs from normal name.
Add .tcrs_name as a proxy field to items. Only valid if you've done "tcrs load"
Track stuff from Use the Force
Work around HTML bug in certain item desc files in TCRS
Add "tcrs check ITEMID" command
In order to shop in the PirateRealm fun-a-log, you need the actual item, not access to PirateRealm
Another fix to wacky HTML in TCRS item descs
Use the Force is a skill
oily mushroom is food. Get rid of stupid ConcoctionPool.names in favor of always using
ConcoctionPool.items, ConcoctionPool.nonitems, and ConcoctionPool.canoinicalnonitems.
Fix resetting concoctions for TCRS modified consumables.
Fixes from checkitems and checkpowers
Put TCRS item data files into data/TCRS rather than src/data
More TCRS data
Create CafeDatabase, which handles negativ item-numbered foo and booze items.
TCRS Database now looks up all cafe food and booze and adjusts size and quality
as specified by the desc files.
TCRS file fetching from SVN, courtesy of Fronobulax, and TCRS data files courtesy of King Dave and One Sided Die
Add TCRS cafe data files for Accordion Thief/Vole and Pastamancer/Wallaby.
Fix initialization error in TCRSDatabase. Add "tcrs fetch CLASS, SIGN"
command to fetch files from the SVN repository
TCRS fetch command will not fetch if an local file already exists.
Add TCRS data for Sauceror/Blender. Load (or derive and save) appropriate TCRS data
for your class/sign when you ascend into a TCRS run or log into one.
When parsing special of the day in the Gnome or Canadia cafe, do not check the name
when in TCRS
Remove unnecessary extra log message about local file existing or not
Fix some bugs in parater parsing for the tcrs command
TCSR Disco Bandit/Vole cafe data, courtesy of MCroft
Add TCRD Turtle Tamer/Mongoose data, courtesy of MCroft
TCRS Accordion Thief/Packrat data, thanks to gix
TCRS Disco Bandit Mongoose.
Plush sea serpent only gives -ML underwater
In TCRS, remove all eat/drink/chew/use effect sources.
Then, add back the new items that grant effects in your class/sign.
The Maximizer should now work for both equipment and items.
Add TCRS Patstamancer/Blender data, thanks to One Sided Die
Disco Bandit Wallaby TCRS data
Print a progress every 100 items processed for "tcrs derive"
Add TCRS data for Seal Clubber/Platypus
Reset TCRS modifiers when you free the king or log in a new character
Add TCRS data for Pastamancer Vole, thanks to ast154251
Don't apply TCRS changes to familiar equipment - in the correct place.
Add "tcrs reset" command
Add TCRS data for Accordion Thief/Marmot, thanks to Crowther
add TCRS data for Seal Clubber/Wombat, thanks to Magus_Prime
Add TCRS data for Disco Bandit/Packrat and Sauceror/Opossum
Add TCRS Turtle Tamer/Wombat, thanks to One Sided Die
Eliminate "Clownosity" as a modifier and replace with "Clowniness". The latter can be 25, 50, or 75 (%).
The maximizer will let you maximize for "4 clownosity" (as before) or also for "clowniness".
The green side pane still shows "Clown: 3/4", etc.
Add TCRS data for Accordion Thief/Blender
Add Clowniness, as appropriate, to TCRS items
Add TCRS cafe data for Sauceror/Marmot, thanks to Magus_Prime
Don't "derive" TCRS modifiers for the "ring". Fix data files that have such modifiers derived in them.
TCRS Seal Clubber/Vole data, thanks to The Amazing Mr Toothpaste
Fix AT Nemesis Quest (barracks on volcanic island) for TCRS
Add cafe data for TCRS Sauceror/Wallaby, thanks to MCroft
For purpose of reconizing end of Junkyard quest, rusty chain necklace is not rusty in TCRS
Some cafe items are real items. Get real item descid for such.
Surgeonosity is a numeric modifier, but we do not parse it from the item description.
Instead, it is hardcoded in to the modifiers. Don't do this. Parse it from the
item description so we can pick it up in TCRS. Fix all already submitted TCRS files.
Add TCRS data for Sauceror/Wombat, thanks to One Sided Die
Rederived modifiers for TCRS Sauceror/Packrat
Fix Clowniness of balloon helmet
Add TCRS data for Accordion Thief/Platypus, thanks to Crowther
When applying modifiers in TCRS, use Data Name
hewn moon run sppon initial stuff
Add "tcrs spoon" command (which calls TCRSDatabase.deriveSpoon()" to print out the current name and
modifiers of the hewn moon-rune spoon
Add TCRS data for Sauceror/Mongoose, thanks to Nagus_Prime
You can use "tcrs ring" and "tcrs spoon" even if not currently in a TCRS run
When load TCRS data, update with new items that were not saved in the data file.
Add said items to you local data file for future use.
Add "tcrs update" command to do this.
Print output of "tcrs spoon" to session log. derive/apply modifiers for rin and spoon
when you reset TCRS modifiers or load new ones on login
TCRS consumables that grant an effect now document that effect in the Food/Booze/Spleen pusable panel
béarnaise zombie is not capitalized
$effect[xxx]/image is not kust the image file name, not inclucding the full image path to KoL servers,
just like all other proxy field images
Disco Bandit Opossum thanks to MCroft
Accordion Thief Mongoose
TCRS Turtle tamer Packrat - Thanks to One Sided Die
TCRS Seal Clubber Opossum thanks to Croft
Use highest stat for hit stat if wielding Fourth of May Cosplay Saber, and add Use the Force skill when you equip it. Untested.
Seal Clubber Pack Rat thanks to King dave
Add "Uniques" section to modifiers.txt which contains items that contribute to a specified modifier but only once.
Sort of like items that should be considered Single Equip (even if they are not designated as such by KoL) when
maximizing for that modifier.
Code in Maximizer to use this is TBD, but will be required for Clowniness and Surgeonosity
Updated TCRS data for Seal Clubber/Mongoose
Boss warnings for Boss Bat, Goblin King, Baron Vpn Ratsworth and Bonerdagon now display
item enchantments - including for "default items that the Goblin King and Baronn drop if
you don't set a special MCD level. This should make it easier to decide what to get in TCRS.
Various TCRS thanks to speaknoevil and crowther
This should be the last of the Accordion Thief variants thanks to magus prime
TT Opossum. Thanks to speaknoevil.
Ewduce chance of rune spoon screwing up monster flyering
That didn't work. Undo it.
Add TCRS data for Turtle Tamer/Blender, thanks to One Sided Die.
Turtle Tamer Vole. Thanks to The Amazing Mr Toothpaste
TCRS data for Pastamancer/Opossum
Add TCRS data for Disco Bandit/Blender, thanks to Crowther
TCRS Sauceror/Vole, thanks to MagusPrime
TCRS data for Pastamancer/MOngoose, thanks to MCroft
Add experimental "Potions" panel underneat "Usables" in the Item Manager.
Potions panel needs a tab to show the queued potions as well as a tab for the ingredients
Add a checkbox to the Potions panel - "sort by effect" will sort the potions alphabetically by the effect they produce, rather than by item name
disco wombat from crowther
Pasta Rat thanks to One Sided Die
Apply consumable modifiers to cafe foods, whether or not their name is modified.
Clowniness and urgeonosity
Put logic for "by room" and "by effect name" checkboxes on UseItemEnqueuePanel
into comparators for that package, rather than the general compareTo method of Concoction.
TCRS data for Turtle Tamer/Platypus
Pasta Plat thanks to Magus_Prime
Add ASH function: item desc_to_item( string descid )
UseItemEnqueuePanel provides its own RefreshListener which sorts using panel's Comparator
Fix "per room" checkbox by putting code to check the setting back in COncoction.compareTo.
Add ability to set a Comparator to be used for sorting a LockableListModel.
Blended Clubber thanks One Sided Die
TCRS data for Seal Clubber/Marmot, thanks to fewyn
TCRS data for Turtle Tamer/Marmot
Add TCRS data for Turtle Tsmer/Wallaby, thanks to fewyn
Derive pulverization data for all equipment at startup before loading TCRS data,
since it depends on the original modifiers, not the adjusted modifiers
Remove special handling for the hewn moon-rune spoon from TCRSData; that item is like any other
character with respect to TCRS (except for 'ring', of course, which is character-specific).
Removed "hewn moon-rune-spoon" from all TCRS data files that had it. Now, when you log in to a TCRS
run, it will derive the item from its descriptor.
For backwards compatibility with local data files that were stored with simply "hewn moon-rune spoon",
if we notice that in the "update" phase, force a rederive/save to get the real modifiers
NOCOPY in $monster.attributes for uncopyable monsters form soolar UNTESTED
Implement PirateRealm-only modifiers from Saklad5. UNTESTED
Fix probably typo in comparator
Fixes from checkitems and checkeffects
Bump version to 19.6