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 relayScriptButtonFirst preference, defaults to False. If set to true, when using Mafia Combat Buttons, the location of Script and Attack buttons are reversed. If using mafia scripts in relay browser with Mafia Combat Buttons it's now less mouse movement to be lazy.
Fix olfact button not greying out.
Add Insult and Flyer buttons to Mafia Combat Buttons when appropriate.
Added items, monsters, effects found so far for Trick or Treating.
Added recognition for monster images (doesn't work yet).
Can walk away from choice 804.
Trick-or-Treating is an adventure. sturdy cane is an item.
All-Hallow's Steve's fright wig. Recognize "again" link after fighting a
Unsurprisingly, many of the new candies are multiusable
add sturdy cane as item drop to too-old kid
Added All-Hallows Steve, Combat data for Trick or Treating, Ultra Mega Sour Ball and Sour Ball support (as Melange).
Distention Pill now increases Fullness by 1 for the day. Removed preference distentionPillActive as no longer relevant.
Major refactoring of Big Island code:
IslandManager keeps track of state of things on the island
IslandRequest handles visiting various NPCs on the island
IslandDecorator does all the Relay Browser decoration.
Both the QuestL12War and warProgress settings are set when you take the
choice adventure to start the war or defeat the ar boss to end it.
Add plural for Hundred Headed IPA.
The Ninja, Please effect also gives Critical Spell Percent.
New feature, first draft - Skills grey out in Skill Casting when you have already cast to your daily limit.
Fix parsing results of arena and pyro requests.
Don't include quantity field for clip art requests.
Fix inverted check for deciding that the pyro quest is completed
Fix a few inverted tests created by bad conversion from indexOf to contains
Fix that last fix
Don't get fooled if you can't reach the Mysterious Island Arena during the
war because you are wearing the wrong uniform.
Add a new zap group for fancy beers.
When you buy from the mall and get an unknown plural, assume you got the item
you were expecting to buy and register the plural.
remove extra autosell price for debonair deboner
If you can walk away from the choice adventure you are in, no need to defer
If a skill is selected in the skill casting menu when it greys out, unselect it.
Fix removal of bowling balls after spirit killed. Bowling Ball drop rate is 40%.
Add an additional familiar category - "sorceress" - to the compact side pane
Fix "pull outfit" command
Battlefield monsters from faxes of putty or what have you all count for your
kill count vs. the respective side.
Don't bother processing Batllefield monsters after the war is finished
Added support for Halls Passing in the Night choice adventure. If you choose a choice in mafia that hasn't been unlocked it should abort to relay browser rather than get stuck in a loop. Untested.
Tongue depressor data for Knott Slanding and The Temporal Bandit
Accordion Thief monsters added with wandering monster counter.
Hidden City drop rates and meat drop added.
Pre-fill the text input box for the Legend Keys at the Perplexing Door
Fix Dimemaster and Quartersmaster: internal requests now need to process
the responseText for transactions since IslandManager won't see them.
Item drop rates for Trick or Treating
The walkie talkie is resuable. Both the unused walkie-talkie and the walkie
talkie are Free Pulls. You can walk away from Choice Adventure 807.
Skills should also grey out if you have cast it more times than the limit, not just equal to.
The Degreassi Knoll gym is now a choice adventure.
You can walk away from the choice for both The Degrassi Knoll Gym and The
Institute for Canadian Studies. What's that all aboot, eh?
Using a Chibibuddy (off) gives you a Chibibuddy (on)
The "use" link for a newly acquired walkie talkie cannot be inline.
KoL just made Breaker Breaker not interruptible, it seems.
Fix removing items from a shelf of your display case
The "maximize" command (when not simulating, i.e. "maximize?") now logs the
command in the session log, so you can see what led to the subsequent actions.
STICKER1 is no longer the first "pseudo" slot.
Corrected typo in Hippy Battlefield monster detection.
Wandering accordionists cap at 10k attack/defence.
Added 2 new items for Gnasir quest (those I could access without being on quest)
grains of salt is a food helper
blank line before maximize command in session log. bounty-hunting pants have
better item drop.
Remove left over code from when you could queue a distention pill.
Annotate sushi doily and grains of salt: (automatically used from inventory)
The Arid, Extra-Dry Desert is now one location instead of two
Fix accordionist entries
Added some accordions. Added Song Duration to modifiers, and change parsing of Effect Duration to look for Effect Duration not Duration. In Ronin/Hardcore get Toy Accordion if you can't cast buffs, otherwise Antique Accordion.
Add more accordions
New accordions (why did they not go in successfully with my last commit?)
remove duplicate modifier
Add Accordion Thief skills (don't yet affect anything)
Add accordions to buff tools.
Added some effects from Accordion Thief passive skills.
Add a suspicious addres, Frank "Skipper" Dan, and Skipper's accordion
If an Accordion Thief, don't show Entangling Noodles as a built in Stationary Button, but show Accordion Bash if you have it.
"Skipper" has quotes
As Accordion Thief, add Accordion Bash rather than Entangling Noodles as the stun option in Custom Combat Panel.
Skipper's Accordion is a buffing tool.
Steal Accordion is skill 7172
Fix Frank "Skipper" Dan for real
Add desert sightseeing pamphlet
when you defeat "Skipper", you lose the suspicious address
Allow 'planting' as a script svn root
Five Finger Discount stacks with 5-Finger Discount
Initial Pantsgiving support
Added alarm accordion and peace accordion. Added new AT effects. Removed references to old desert in encounters.txt.
Added Pantsgiving Fullness tracking.
When parsing result of an ajax equipment change, do not assume that it
worked: do not manipulate slots or inventory unless KoL specifically says
"You equipped" or "Item unequipped" or whataver.
Add Pantsgiving skills, some Pantsgiving items, Pantsgiving banish tracking.
Add fullness entries for Pantsgiving items (limited spading yet so no Adv/Stats), add a couple of plurals. Hopefully fix Effects parsing for unknown effects - Thanks, Jason.
If you have effect "Black Day" 10% reduction in purchase cost from NPC stores.
Fix adding and removing folders from the Relay Browser
Fix SPookyraven floor 2 spoilers
Consumption data for fancy beers
Freddy Kreuggerand -> Freddy Kreugerand. Fix descid for the boot knife.
Do not convert "steal accordion" to "steal"
Added more Pantsgiving items
More Pantsgiving items
worm-riding manual page replaces worm-riding manual page 1
Choice 805 is A Sietch in Time
Added rest of Pantsgiving items and consumption data for Pantsgiving food.
Message for "too many songs" has changed.
Updated consumption data for Cold One (same as Spaghetti Breakfast) based on level.
Bawdy Refrain is a combat skill
The Mood manager considers a trigger to be a "thief trigger" and thereby
subject to current song limit only if it is an AT skill AND it is a buff.
You can now "eat [hot dog name]" from the CLI.
You can also "eat [n] basic hot dog", although I did not test that.
Do not remove fancy hot dogs from list of dogs in your clan when you eat one.
Simply don't make them visible on the Food panel of the Item Manager
Do the right thing when purchasing 11, 23, or 37 items using storage Meat
Fix "pull outfit" in ronin
Add Pantsgiving Resting Bonus.
Added Stealable Accordions to monsters.txt, added support for new drop type "a".
Added Ators Gonna Ate. Renamed Daily Dungeon choices in choice panel to keep them together and clear.
Decorate battlefield monsters, no matter where you find them.
Add desertExploration setting to track percent of desert that is explored.
Initialized to 0, set to whatever the map says when you look at the desert
beach, reset to 0 upon ascension.
Obviously, updating from adventuring and turning in items to Gnasir still
needs to be added...
Fix "pull outfit" for niche aftercore case
Make sure that all Coinmasters have "accessible" methods, rather than
depending on NoSuchMethod exceptions being thrown.
a CoinMasterPurchaseRequest requires that the Coinmaster be accessible for
canPurchase() to be true.
When you ascend, after w refresh the session, force a concoction refresh.
Nah, that can't be it.
Update desertExploration when adventuring in the desert, using a pamphlet, or handing in the jar/paint/rose
Update desertExploration when using a drum machine with worm-riding hooks
Fix updating of _pantsgivingBanish
Fix new accordion entries in monsters.txt
CreateItemRequest.getInstance must always return an instance if the item is
a creatable item, whether or not it is possible to make it right now.
When you turn a Chibibuddy on, you lose the Chibibuddy (off) and gain a
Set PYRAMID quest progress to step11 whenever desert exploration percentage
hits 100 from any means.
When you use a modeling claymore, look at the island map and synchronize kill
counts with the images on the map.
Added three Pocket Lints, added effects on Bottled Beer from Beer Garden.
Reanimated semirare monsters are not semirare encounters
Track daily stolen accordions in _stolenAccordions
Add "accordions" command to tell you everything about stolen accordions
Add wandering accordionist accordions
Make a few unnoticable tweaks to accordion modifiers based on checkitems
Reduced +item on the zombie accordion
Add a few plurals for Dreadsylvania items.
Added pocket lint and support for using it (untested). Add logging to session log and graphical CLI when max fullness gained from Pantsgiving.
Fix stolen accordion entry
When a tomb ratchet drops, display how many you have for the use text
Pantsgiving can give fullness even when you don't win the fight
Add hidden setting to disable image caching
The Spirit World is an adventuring zone. Choice 808 is a choice adventure.
Add Spirit World Items, Monsters and Effects. Added choice data for choice 808. Added handling for Spirit Bed.
Mood Manager shouldn't consider all Accordion Thief skills as Songs. Unverified.
Updated other places in Mafia which appeared to assume that all skills between 6000 and 7000 were Accordion Thief song buffs.
Chapel is Vanya's Castle Chapel and is indoors.
Accordions now have different modifiers if you have Accordion Appreciation.
Created new functions in Skill Database, isAccordionThiefSong, isTurtleTamerBuff, isSaucerorBuff, and used them where appropriate elsewhere in the code.
provide Modifiers.evaluateModifiers and Modifiers.trimModifiers to
manipulate modifier strings.
New string modifier: "Evaluated Modifiers" is like "Modifiers" with all
expressions evaluated according to current variables
New numeric modifer: "Prismatic Damage" is the minimum of all five elemental
The "accordions" command now does the right thing given Accordion Appreciation
The accordions command says you have an accordion if it is inventory OR if it
When switching equipment to reduce mana consumption for using a skill, make
an outfit checkpoint so that previous equipment is restored.
You do not, apparently, need to unequip a weak accordion in order to get the
buff duration of a stronger accordion in inventory.
There is no point in reducing mana cost for 0-MP cost skills.
Make Prismatic Damage a real, if derived, modifier name. It cannot be used in
modifiers.txt, bit you can ask for it by name either in ASH or the Maximizer
Recognize acquisition of worm-riding manual pages after combat correctly.
Correct type on Choice 780 (said if you'd killed protector spirit it would skip, but would actually try to banish pygmy lawyers instead).
Add Pantsgiving crumb item drop support, as _pantsgivingCrumbs.
Remove initial Black Day support - I'd rather have mafia overestimate the cost of one item and give someone a surprise when something is cheaper than underestimate it for many items. Maybe someone else will find supporting this worth doing, lots of code for niche benefit, especially as you'd also have to refactor other stuff to buy most expensive piece of a concoction first.
Added function EquipmentDatabase.isSpecialAccordion. EquipmentManager.canEquip checks if item isSpecialAccordion if you aren't an Accordion Thief.
Heartbreaker's Hotel environment info is "none".
Don't need to save outfit checkpoint for each UseSkillRequest; callers of it
do that, as appropriate, around sequences of such requests.
Avoid NPE when pulverization panel gets an enabled event before it is fully created
Process familiar actions before removing tables from HTML tree
Provide ChoiceManager.decisionAvailable to make sure that the user-selected
automated choice is actually available right now. (Note that this is just a
hook for Coe To Be Written, at the moment.)
If automating a choice adventure and the user's desired choice is not
currently available, abort automation.
More URL updating for the Crackpot Mystic
Do not try to rest if it will take a turn and you have 0 turns left
Spirit alarm clock
Added Turtle Tamer skills, effects documented so far, removed combo skill code.
Shell Up is Turtle Tamer stun option. Correct stats for spirit alarm clock.
fix damage reduction of 6 shields - and fix item description parsing to
work correctly for shields with additional damage reduction.
Fix the powers of a number of items
Chinatown Shops is an npc store
Give counter "use link" to gold piece
Update Turtle Tamer skill costs.
In order to reach choice 658, you had to have handed over 30 gold pieces
Processing a table in a fight can, appropriately, return early without
processing child nodes.
Add rare drops to gourd conspirators
Shieldbutt now 10 MP. Add Grand Blessing of the War Snapper.
Add a check to determine if Chinatown Shops is accessible. For now, it will be wrong after you use the jar and before you actually unlock the shop.
Added smiley face icon for Expressions in Active Effects.
Add _pantsgivingCounter to count turns wearing Pantsgiving.
Add tracking of Testinudal Teachings experience gain.
Do not apply Testudinal Teachings to a Stocking Mimic
Add support for Pizza Lover. Also moves code for Lasagna / Martini's so that they change reported values rather than database values.
Sushi rolling mat should be pseudoItem - when obtained it does not go into inventory.
Attempting to go to a zone in the Mer-kin deep city without a Mer-kin diguise
doesn't count as an encounter.
Add Glorious Blessing of the War Snapper.
The 12 sushi-rolling mats in my inventory take umbrage at being labeled as
Added more Turtle Tamer effects
Added a couple more Turtle Tamer effects.
Fix adventures per unit of Martini's with Tuxedo shirt. They are good, but not infinitely so.
The Temple Portico is an outdoor location
When you log in and are redirected to a choice adventure, we tell you that
and wait for you to resolve it before completing initialization. Now, we
fetch the choice adventure and log the encounter and options in the gCLI,
leaving you set up to type "choice 2", say, to satidfy the choice, rather
than requiring that you go to the Relay Browser to proceed.
Properly recognize exactly when Chinatown Shops is accessible
If you have Manuel, use its stats to track flyering
Add getClassStun() in KoLCharacter. Try to cast the correct class stun when autoEntangle is true.
Big refactoring: lastAdvnture is where you went last, nextAdventure is
where you are going next.
We parse lastAdventure both from api.php and charpane.php.
set_location sets nextAdvanture - and my_location reads nextAdventure.
Whenever we set nexrAdventure, we update the GUI and immediately recalculate
modifers basd on the new location/zone
Fix choice adventure automation
Remove "optimization" from AutoFilterTextField that makes it not work
Added the rest of the Turtle Tamer effects.
getClassStun now limited for some classes (Club Foot needs Fury, Turtle Tamer needs Storm Blessing, Accordion Thief needs Accordion, Disco Bandit doesn't get a native one), supports Boris, Jarlsberg and Zombie, and defaults to Shadow Noodles which any normal class can use.
getClassStun now used by CustomCombatPanel and StationaryButtonDecorator.
Added getBlessingType and getBlessingLevel to KoLCharacter.
Spirit Boon can only be cast with a Blessing. Unverified.
Turtle Power can only be cast with a Glorious Blessing. Unverified.
Blessings cannot be cast with Spirit Pariah. Unverified.
Duration of Spirit Boon depends on Blessing Level. Unverified.
Maximizer only suggests casting a Blessing if you haven't got a better one of the same type or Spirit Pariah.
Mazimizer only suggests casting a Boon if you have the appropriate Blessing Type. Unverified.
Maximizer only suggests casting Turtle Power if you have the appropriate Glorious Blessing. Unverified.
Casting Blessing causes different effects depending on whether you are a Turtle Tamer or not. Maximizer now knows this.
Blessings last 10 turns as a non-Turtle Tamer.
Fernswarthy's Basement is an abnormal adventure zone.
Turtle Power can only be cast once per day - Unverified.
Barrel full of Barrels -> The Barrel Full of Barrels
Fix recognition & logging of TBFoB.
Recognize mining in disguise as an adventure location
If a new mine appears, register it appropriately from api.php or charpane.php
For gCLI commands that can take comma-separated item lists, check to see if the entire parameter is a single item before splitting at commas. As an example, this will allow "drink oh, the humanitini" to consume a single drink. Note that "drink aye aye, tooth tooth, oh, the humanitini" will still not do what you probably want, and commas should be left out of item names in a multi-item list.
Reptilian Fortitude now a level 10 skill. Spirit Vacation has no MP cost.
Fix basement logging
Don't set nextAdventure to equal lastAdventure for routine status updates
from api.php or charpane.php. Do it only on a full status refresh or when you
actually adventure somewhere and set lastAdventure to something.
Change class stun handling again.
Add preference considerShadowNoodles, defaults to false.
Stationary Buttons will show class stuns for most classes, but not for Turtle Tamers unless they have Storm blessing, or Disco Bandits. If no stun is available, and considerShadowNoodles is true, show Shadow Noodles instead of no stun. Buttons should be greyed out if not castable currently (already cast that round, no Fury as Seal Clubber, no Accordion as Accordion Thief).
Custom Combat Panel will show class stuns for most classes, but not for Turtle Tamers unless they have Storm blessing, or Disco Bandits. If no stun is available, and considerShadowNoodles is true, show Shadow Noodles instead of no stun. If no stun available it will mention setting considerShadowNoodles to use Shadow Noodles instead.
Combat Action Manager should not attempt to use Club Foot without Fury as a stun, nor Accordion Bash without an Accordion, or Shell Up without Storm blessing as autoEntangle options.
Only add a new adventure (as detected in api.php or charpane.php) if it
is adventure.php or mining.php
Added skill Will of the Storm Tortoise (gained when Avatar of the Storm Tortoise). Assumed name and numbers for the other Avatar skills based on modifier text and the progression of effects etc. Can correct if wrong later.
Track _turtleBlessingTurns, resets when you cast a new blessing, turtle power or at Ascension.
Spirit Pariah cannot be uneffected.
Cannot cast Blessings you already have.
In the Relay Browser, when you encounter a choice adventure, you can use the
"auto" button to tell KoLmafia to automate through it. If it is an unknown
choice, you have asked for manual control, or your setting pertaining to the
choice requests an invaldi option, KoLmafia will go red and log an error and
return a blank page to the browser. Fix this.
When looking for choice options available on a page, look for secret options
(activated by clicking on a link, rather than by pressing a button) as well
as the usual buttons.
The Economist of Scales has additional options, if you have enough of a
particular kind of scale.
Add support for Myst Revamp wandering monsters.
Add a Turtle Tamer spell failure message.
Even if KoL does not use character entities in monster names, we need to do
so. Therefore, change the name of the Possessed Jar of Alphredo
If you are not logged in, KoLCharacter.classType can be none. That means
that getClassStun as coded threw an NPE if you try to open the gCLI without
logging in, since the AdventureFrame could not be loaded. Fix this.
Refactor choice handling so that ChoiceManager is completely in charge
of tracking whether a choice is currently being handled.
When logging choices decisions in the session log, handle sparse array of
When skipping the "Results" section of a responseText when looking for the
Encounter name, skip the "results" div.
When fighting an item-generated monster, correctly set location to "None" and
temporarily reset modifers to recognize that.
Silly me for thinking that because KoL sometimes gives a "results" div that
it always gives one. Look for encounters both with and without such a div.
When filtering the visible elements of a LockableListModel, firing
intervalAdded or intervalRemoved is now done on contihuous ranges of
indices, rather than one per elementis now done on contihuous ranges of
indices, rather than once per element
No hot dogs for Zombie Masters or Avatars of Jarlsberg
Sensitive Fingers gives +pickpocket chance
Clear ChoiceManager.handlingCHoice in postChoice2 even if we don't think we
are currently in a choice.
Don't let a null ride in your Crown of Thrones
Recognize successful equipping a familiar item
ASH has stored "ints" and Java longs and "floats" as Java doubles for almost
a year and a half. It has been able to read and write full range values for
almost that long. But to_int( string ) did not parse as a long. Fix this.
> ashq print( 2 ** 60)
> ashq print( to_int( "1,152,921,504,606,846,976" ) )
Pixel energy tank is a 1000 MP / 1000 HP restore item.
Fix recognition of dolphin thefts in the sea
Initial Pastamancer skill revamp update
Initial support for Class Act II: A Class For Pigs
Pastamancery and Advanced Saucecrafting are 1/day summons now
Eye of the Stoat -> Batter Up!
Scowl of the Auk is 10 MP
Furious Wallop has no MP cost
Chef Boy, R&D. New items.
Furious Wallop costs no MP, Advanced Saucecrafting and Pastamancery can be cast once only.
Added Sauceror skills and most effects
Add Sauceror Soulsauce status effects. Groast has avatar-changing drop
Add initial Soulsauce support. Doesn't yet allow casting from the command line, as it doesn't yet add the skills to your known skills.
Add ash command my_soulsauce().
Read fury and soulsauce from api.php.
Add Blood Sugar Sauce Magic intrinsic effect
Add Soulsauce skills to available skills if you have Soul Saucery so casting from command line works.
Unverified. Don't show mafia buttons at >75 ML in Class Act II, or use autoEntangle.
Count Bakula stats verified.
Log Soulsauce gain in ClI and session log.
Fix Action Elevator.
We no longer have _yearbookCameraTarget. Instead, we have yearbookCameraTarget
and yearbookCameraPending. The first is set when you are given a monster
to photograph in the Yearbook Club. The latter is set when you photograph
the target monster and is cleared when you turn in the photo
Plural for spoonful of Linguini-Os
Remove "summon ghost" as a pastamancer combat action.
Don't try to resetAfterAvatar without marking the choice that led to it done.
All the monsters in KOLHS scale capped at 200 stats
If reading fury from Charpane or api there is no need to check that it is a valid amount, which it won't be if we haven't read character skills yet, so just accept the value.
Log each combatant in a multi-fight
Add Bind Spaghetti Elemental. decoded cult documents teach that skill.
Remove lots of code to support (obsolete) Pasta Guardians
Can access Hippy store with Junk Junk.
Added some Pastamancer skill effects.
Fix typo: yearbookbCameraAscensions -> yearbookCameraAscensions
When buying antidotes before automated adventuring, checkpoint and restore
Make stationary buttons stationary.
Support for Pasta Thralls:
- settings: pastaThrall1 ... pastaThrall8 have "level" or "level,name"
- "thralls" CLI command tells what is known of your various thralls
- pick up current thrall from charpane.php or api.php
- pick up thrall names from charpane.php or from response text of various
Bind XXX spells.
- modifier variable "P" is current Pasta Thrall level
- modifiers for all pasta thralls, including L5 and L10 powers.
Fix detecting yeabook camera in haiku dungeon
Update count of upgrades when you look at the item description of the
In order to fully emulate the CAB, Stationary Buttons need an 'effdiv' and an
Get rid of 'overflow: auto' div for Stationary Buttons
Stationary button bar should now expand and contract as needed, and buttons should wrap even in Internet Explorer. (Tested on IE, Chrome and Firefox)
Rename stationarybuttons.css to stationarybuttons.1.css
If you've beaten Dungeon Fist once, KoL gives you a "Finish from Memory"
button. If that button is present, do not add a "Go to Goal" button.
On the other hand, if you use "choice-goal" for the Dungeon Fist choice
adventure, if that button is present, it will use it.
Don't use custom stationary button .css - until it is debugged.
_pastaAdditive tracks daily usage of experimental carbon fiber pasta additive
Limit usage of pasta additive to 0 if you are not a Pastamancer
The stationary button panel dynamically changes size depending on how many
rows of buttons there are.
Fix a NPE from leaving The Shore for the Gift Shop
Recognize your Storage meat while in a Way of the Surprising Fist run, and do not try to pull that meat
DOn't worry that The Sorceress' Chamber is an "unknown adventuring location"
Thrall Unit Tactics makes Pastamancer combat skills cheaper
Fix Thrall Unit Tactics cost reduction
If we've already logged an unknown adventure that we are NOT registering,
don't log it again.
sticks of spirit gum
Add "debug ash on" and "debug ash off" to turn on and off ASH script tracing
ASH tracing goes into ASH_datestamp.txt
When executing any ASH script, log when it starts and finishes in both the
DEBUG log and the ASH log
If you try to go to the Village or the Castle but the Carriageman isn't
drunk enough to take you, it doesn't countas an Encounter.
Log to DEBUG and ASH before and after a consult script is called.
Do not throw an NPE if FightRequest.nextAction is null after a consult script
Don't submit a skill request if you are in a fight or choice adventure.
Handle clan swimming pool better: let GenericRequest follow redirects.
When GenericRequest follows redirects to choice.php, include additional
fields - like forceoption=0
Refactor generation of Stationary Buttons:
choice.php offers only "auto"
noncombat - or end of fight or choice - offers only "again"
When in a choice adventure, add a stationary button for every available
Only add the hotkey viewer if you are in combat or have completed one; choice
adventures don't need hotkeys. Align the dropdown with the top of the buttons
Update "thralls" command to list the L1/L5/L10 abilities granted by each
thrall, as well as what the current modifier string is, given current level.
Using ASH to batch multiple items for a closet command generated a parse
error (which was ignored) before going on to processing the parameters one
at a time. The end result was correct, but the error message was unnecessaty
and confusing. Don't generate it.
Banishes seem to be more common these days, so added BanishManager. Keeps track of banishes from all current sources. Some untested as I don't have all the skills/items, and am not currently in an Avatar path. Assume banishes in Dis or Haiku Dungeon succeed. Check for Item/Skill use on all banishes, not just response text. Add preference banishedMonsters to track banishes. Add ash command is_banished($monsterName[name]). Daily Deed Panel now reports on all current banishes. Support those banishes that were tracked in preferences in old ones still for legacy support. Banishes (depending on type) should end on rollover, avatar drop, or turn passing.
I'm sure there will be tweaks needed. I plan to add a banishes GCLI command to show this detail nicely formatted, but this is not yet done.
Adding banish types should now only need to add one line to Banish Manager, tracking if limited per day, and detection of the use/succeed to refer to Banish Manager for complete support.
Add "thrall" datatype to ASH. New ASH function: thrall my_thrall()
A thrall datum has three proxy fields: .name, .level, .current_modifiers
Bind Undead Elbow Macroni gives you an Elbow Macaroni pasta thrall
Remoce some obsolete code from stationary buttons.
Make right click menu work with Stationary Buttons.
Added MP restores Regular Cloaca Cola and can of CRIMBCOLA.
Fix detection of failure to cast Cocktailcrafting and Saucecrafting due to odd KoL message suggesting you can't use the skill, rather than that you can't use it again today.
Add Saucemaven support, update Fullness data for Hell Ramen, Hi Mein to match latest spading.
Foyer should be Vanya's Castle Foyer
Add Inner Sauce support.
When casting a daily limited skill via the Skill Buff frame, only deselect
it after casting if you have reached the daily limit
Fix Inner Sauce handling.
Tidy up override skill check code.
New ASH functions: to_thrall( int ), to_thrall( string ), to_int( thrall )
New proxy fields for thralls: .id, .image, .tinyimage, .skill
When finding thralls by name, use fuzzy matching.
Updated Hypnotist of Hey Deze stata based on :
Since hot keys and the macro inspector are incompatible, if you are using the
latter, don't pull in support for the former.
Slight clean up for building the canonical name array of Pasta Thralls.
Add effects from summoning Pasta Thralls when not a Pastamancer. Maximizer only suggests casting them if not a Pastamancer.
Also, maximizer only suggests getting effects from a buffbot when they are buffs.
Evaluator.checkEffectConstraints() now uses EffectIds not text matches.
Add command "banishes" which shows status of current banishes (what is banished, what by, which turn and how many turns left).
Tweaked Banish Manager, now takes account of whether a banish is turn free when reckoning turn it was used and remaining duration.
Conversion for to_effect for Spirit Boon, Blessing of the War Snapper, Blessing of She-Who-Was, Blessing of the Storm Tortoise, and Turtle Power now takes account of current Blessing or Class.
to_effect and to_skill correctly account for new Class skills where the effect and skill have different names.
The Gnollish Bodybuilder has Init 60 and is a humanoid.
If you are in Beecore, Spaghetti Breakfast is not a useful breakfast skill
If you are less than level 10, the enchanted bean does not need a "plant" link
If you are in Beecore, food, drink, and usable items don't need "eat", "drink"
or "use" links if they have Beeosity (with a few exceptions).
Ass stolen accordion and three AT Nemesis quest accordions to "accordions"
Ranged weapons are no longer incompatible with Butts.
The "uneffect" command takes a comma-separated list of effects to remove. If
you give it an effect whose name includes a comma (as the uneffect link we
add to the charpane does), it got confused. Therefore, first see if the
entire parameter list matches an effect name. If it does, use it, rather
than splitting the parameters at commas.
The "acquire" command can now accept multiple items
Fix (hopefully) rollover and prism break Banish resets. Fix display of turns remaining using rollover and prism break banish reset Banishes using 'banishes' command.
Fix tinyimage for three thralls
The Untinker's screwdriver is in the Degrassi Knoll Garage, not the obsolete
Turtle Avatar now counts as a blessing for using Shell Up! and Butts.
Pasta Thrall modifiers.txt tweaks. Vampieroghi gives +60 HP at level 10. Undead Elbow Macaroni is Elbow Macaroni. Spaghetti Elemental gives experience.
Add more lookups where effect name and skill name don't match.
Ash command is_banished( monster ) returns false if monster can't be found.
Thirst of the Weasel now level 6, Batter Up! now level 11.
Add are you sure message if visiting Hot Tub in Mafia with a pygmy shaman curse effect if you haven't yet killed the protector spirit that requires the curse effect to access.
A CoinMasterReqeust can now take an array of diverse AdventureResults to buy
or sell. This will likely turn into multiple requests to KoL, but the caller
need not worry about that.
The Coinmasters Frame now takes advantage of this.
Insert an extra div for stationary buttons so KoL's right-click menu on
items can display the results correctly.
Include the whole enclosing table for deferred uselinks so that KoL's
right-click menu will work on deferred items.
Add CLI command to buy or sell from a coinmaster:
coinmaster buy nickname item, item ...
coinmaster sell nickname item, item, ...
Blood Sugar Sauce Magic is uneffected by itself
The various Flavour of Magic intrinsic effects can all be removed by Spirit of
Nothing. For Intrinsics that can be removed by skills, make the infinity in
the charpane an undeffect link that will cast the appropriate skill.
If you are in Beecore, you cannot make sing use or multi use creations if the
usable ingredient has a B in it. Give an appropriate error message, rather than
"No results detected" if you try it - and don't even show such concoctions on
the Creatable tab of the Item Manager.
When in Hardcore or Ronin, acquire will get NPC-purchasable items only from
the NPC store.
Log start and finish of all internally-called ASH scripts: consult, recover,
counter, chat, buy
Blood Sugar Sauce Magic is different for Sauceror's and non-Sauceror's.
decoded cult documents gives you a skill.
If can't cast Pastamastery because you've already done it today, recognize that
the summon limit is exceeded and increment noodleSummons
switch () requires an expression in the parenthesis
ASH user defined functions cannot override a library function with the same
When checking to see if a user defined function overrides a library function,
if a parameter of the user function will automatically coerces into the same
type as the parameter expected by the library function, that counts as a match
Relax type checking: you can override either a user defined or library function
if the parameter types do not exactly match, regardless of coercion.
Add Dismiss Pasta Thrall
The boring binder clip is usable in Beecore
Items removed from general store. Meat spading for Nightmare Meatrealm.
ASH batching of commands will now save up and batch multiple prefixes of the
same base CLI command.
If ASH is batching commands, sell( coinmaster, count, item ) will now go through
the "coinmaster sell" CLI command to take advantage of it.
Add preferences to track things related to Big Brother:
These get set when we notice them happening: you take the choice to
open the bulkhead and release Big Brother, you buy the item from him.
They also get set if we can deduce they happened: you are able to visit
Big Brother, he does not have the particular items for sale any more.
In the Coinmasters frame, do not show things the Big Brother does not
Location Details now includes chance to get the jump.
Don't try to use "null" as a prefix when batching commands
Mark Wet Willied as providing the "Underwater Familiar" modifier.
Big Brother only needs your familiar to have Underwater Familiar, rather
than being either a water breahing familiar or you having Wet Willied.
Coinmaster "sell" requests now honor the "keep one" list.
Just like autosell, don't worry about keeping singletons in coinmasters if
you are out of ronin.
Added Ash functions:
monster_initiative( [monster] ) - returns base initiative
monster_adjusted_initiative( [monster] ) - returns initiative + ML penalty
jump_chance( [monster] [,initiative] [,monster_level] ) - returns chance of getting the jump vs the monster, optionally at a given initiative, optionally at a given monster level, otherwise current values.
jump_chance( [location] [,initiative] [,monster_level] ) - returns chance of getting the jump in the location, optionally at a given initiative, optionally at a given monster level, otherwise current values.
For the diverse ASH functions that can be batched, if they are called when
batching is NOT active, make the appropriate request directly, rather than
going through the CLI.
Updated ash commands and proxy records.
unadjusted initiative comes from monster.raw_initiative proxy.
ML adjusted initiavite comes from monster.base_initiative proxy and monster_initiative().
Also updated names internally to getRawInitiative and getInitiative.
Saucemageddon is now 24 MP
Set _badlyRomanticArrows when a Reanimator is used. Show the Daily Deed entry when you have a Reanimator but not an Obtuse Angel.
Fix for "hermit" command
hermit * clover - get all of the hermit's clovers, acquiring worthless items
hermit * pepper - get as many peppers as you currently have worthless items
Cache Faxbot config file, inspired by Catch-22's patch.
download the faxbot config file in the DynamicBotFetcher thread
Initiative displayed in Location Details is now adjusted by monster level, to bring it in line with Attack and Defense displayed.
Soul Bubble is the class stunn for a Sauceror, but it is only available if
you have at least 5 Soulsauce. Disable the stationary button for that skill
if you don't have enough Soulsauce. Do not add conditional class stun skills
twice to the Stationary Buttons.
Added modifier functions class(name), skill(name) and equipped(name) to Expression.java. Class and skill are allowed for modifiers.txt, and now used for Inner Sauce, Blood Sugar Sauce Magic and Accordions. Haven't removed code for Operation Patriot Shield, as the Four Songs bit can't be converted into an expression (I think). R modifier could be replaced by [5*(1+skill(Impetuous Sauciness)+class(Sauceror))] but I haven't done so at present. N modifier for Accordion Appreciation retired. HP and MP restores list, restores.txt added, but isn't yet used for anything. Class, skill and equipped will be valid for it.
Fix calavera concertina
Fix AdventureRequest.registerEncounter so that it can successfully extract the
choice # from the responseText. Exclude the Swimming Pool and the Florist
Friar from having Encounters.
When you visit the Island Barracks after defeating your Nemesis, KoL adds an
extra field - "blech=xxx" to the URL. Ignore that when recognizing encounter.
Do a bit of request logging for the Florist Friar
The CSA fire starting kit and the Tales of Dread are not Encounters
When you record a special song on the gramophone in the barracks, update the
appropriate setting that tracks the daily limit of casts for that song.
When we do a mall purchase, we give KoL the item id of the item to buy. Assume
that KoL gave us the correct item. If we parse the results and think we get
something else, don't believe it; use the original item id.
The rolling pin and unrolling pin are reusable.
"acquire" will consider going to the hermit for any item he has in stock. Out of
Ronin, it will only do this if the "expected" price of a worthless item is less
than the mall price of the item it is trying to acquire.
The pilcrow character is used in CLI commands to specify that the following
characters are a raw item ID. It can also appear as an actual character in
an item name, unfortunately. Assume that a pilcorw specifies an item number only
if it is the first character of the item "name".
Add BugbearManager to track progress of the Bugbear Mother Ship.
mothershipProgress goes from 0 to 3 as levels are cleared.
(note that we do not recognize clearing zones yet)
statusMedbay (for example) is 0-x (insufficient bodata collected), open (all
biodata collected and zone accessible), unlocked (biodata collected but zone
not yet accessible), or cleared (zone has been cleared.
If try to use a spleen item you don't have - double clicking a "use" link, say -
don't increment spleen use for the failed attempt.
Add "bugbears" command to give status of the 9 Bugbear Mothership zones
Initial Smith's Tome support. Adds Smithness for use in modifiers.txt. Recognises skill and allows casting via casting dropdowns. Increments _smithnessSummons on cast.
Add Inigo's to list of songs you can record on the gramophone
Added known Smith Tome smithed items.
gnasirProgress is a bitmap of things you've done with Gnasir to advance desert exploration:
stone rose = 1
black paint = 2
killing jar = 4
worm-riding manual pages (15) = 8
successful wormride = 16
When you find a stone rose, add [gnasir] link to visit him
When you find manual pages
- If you have less than 15, add informational [x] to tell you how many you have
- If you have 15, add [gnasir] link to visit him
When you are given the worm-riding hooks and the desert is less than 100% explored:
- If you have a drum machine, "wormride" link uses a drum machine
- Otherwise "oasis" link takes you to Oasis to find one
When you find a drum machine and the desert is 100% explored
- "use" link will use it and let you fight a giant sandworm
When you find a drum machine and the desert is less than 100% explored
- If you have worm riding hooks, "wormride" link uses a drum machine
- Otherwise, no link (lets you save it for worm riding)
When you get a desert sightseeing pamphlet, give it a use link.
When you finish your desert exploration, you get a New Area Unlocked message for A Small Pyramid. Linkify that to go to the pyramid
When you click on the image/link to visit the small pyramid, if you have "autoCraft" enabled, make a Staff of Ed first, if you can.
Shakespeare's Sisters Accordion support added (buffing and accordions command).
Added other Smiths Tome concoctions. Added banish support for Louder Than Bomb.
Add fullness and inebriety for Smiths foods/drinks. Add Smithsness to side panel. Recognise successful use of Golden Light. Add two Advent 2013 items and effects.
Fix spleen entry for smithereens
Add making a Flaskfull of Hollow by meatpasting, cannot be untinkered.
Plural for This Charming Flan
Added other missing plurals.
Distinguish Sticky Fingers (the effect) from Sticky Fingers (the passive skill)
Fix a few modifier entries
When you clear a zone in the bugbear mothership, set the appropriate statusXXX
setting to "cleared"
Add Summoning Chamber as an adventuring location (until Lord Spookyraven is
defeated, at least).
Add plurals for cold seal sweat and boiling seal blood
Add Requesting: and Retrieved: lines to the ASH trace for all KoL server
Saucepanic is a 15 turn buff item.
When you ask for the MushroomFrame, dont load the current plot data in the
Checking to see if you own a mushroom plot requires a server hit. If you have
not bought a plot yet, give a visible error immediately, so the user can see
that KoLmafia went and checked.
"hermit * pepper" will get as many jabanero peppers as you have worthless items.
"hermit 5 pepper" will get 5 peppers, acquiring worthless items as needed.
With equipped accordion and Crab Claw Technique, Accordion Thieves get +50 to hit.
Mechanical Songbird is a fairy.
Provide Modifiers.getNumericModifier( FamiliarData, modifier) to get the
value of a particular modifier as provided by the specified familiar at its
current weight with its current equipment.
Use that function to get the "Item Drop" provided by your current familiar
when you are at the Twin Peaks choice adventure, since that source of Item Drop
does not count there.
bee -> ant
remove bad Override annotation
provide "svn cleanup" hook to SvnCommand in case some versioned files somehow get stuck in limbo. Untested.
fix typo preventing questF01 pref from updating
When you ascend into Valhalla (or log in while in Valhalla), mark the
Guild store as known to be unavailable.
The "stills" daily deed need not check if the guild store is open unless you
are a Moxie class with the Superhuman Cocktailcrafting skill.
The Bugbear "biodataZONE" settings have been removed, since the "statusZONE"
settings provide everything those settings provided and more.
Fix for Smithsness handling by Maximizer. Calculates smithsness from equipment and effects before parsing all the other modifiers.
Refactor FamiliarRequest to update our data model when the response comes
back from a request, rather than when we are about to submit the request.
Added two plurals
Add Can of Spaghetto
Add ash command my_storage_meat()
Add a zap group
modtrace now prints only two digits after the decimal in the running total
column, just as it does in the individual change column.
When cast by a non Pastamancer, Shield of the Pastalord confers Flimsy Shield of the Pastalord. The Evaluator code is probably not going to be relevant at present, but if we ever support modifiers of the form "Reduces physical damage taken by X%" it'll be needed.
Frankly Mr Shank now Muscle.
Add "debug listener on" (and off) command to enable/disable logging when
preference listeners are fired.
Defer preference listeners while refreshing the session; fire them only after
the session is done loading.
Defer preference listeners while parsing api.php?what=status, rather than
firing the (character) listeners multiple times.
When we are refreshing the session, do not ask for api.php as a result of
KoL telling us to reload charpane.php, since none of the requests we make
can actually change the status.
Use a few more efficient operations (like addAll) when getting all of the
Defer/undefer firing listeners around the processing the response of any request
not just an api.php request.
Do not fire a (character) change after every request; let the individual request
decide to do that as appropriate.
Don't try to burn mana on skills to extend an effect you can't get due to class or other effects.
Fix Dungeon Fist image display with Stationary Buttons or Combat Action Bar.
When we process a "rel" string, that precisely identifies the item that has
been moved to inventory.
If MindControlRequest needs to "retrieve" a detuned radio by purchasing it,
save a restore an outfit so you don't get left wearing Travolatan trousers.
Add a few plurals. Haggis-infused soap is multi-usable.
KoL calls it "The Typical Tavern Cellar", not "Tavern Cellar". Fix logging
visits to include the explored square again.
If a charpane looks like it is older than what api.php told us, don't process
it, but don't suppress showing it to the browser.
Using rusty hedge trimmers redirects to a choice adventure in Twin Peak
Visit place.php?whichplace=town_wrong, not town_wrong.php to unlock the arcade.
Fix the URLs of a lot of "maps" (containers) that contain adventuring zones
handful of Smithereens is multiusable
A few changes to the side panel in Mafia. If you are a Seal Clubber, Sauceror or Disco Bandit you'll see Fury, Soulsauce or Disco Momentum displayed between MP and Meat, otherwise the line is blank. Hobo Power, Smithsness, Beeosity, Surgeonosity, Raveosity, Clownosity are now displayed in one of four lines below Item drop change. If you have more than four, only four will be displayed. If you have less, the remainder of the lines are empty.
giant jar of protein powder is multiusable
Add a few accordions for the level 13 quest
More multiusable items
papier-mâché glob is multiusable
Logging "choice.php?forceoption=0" is uninteresting.
Add support for Penne Dreadful and Elbow Macaroni thralls, and for ph balancer, as new stat equalizer types
When getting the default plural for an item, use the "data name" rather than the
When KoL and KoLmafia's idea of whether an item is multiusable differ, change
the item in KoLmafia's internal database for the duration of the session.
The URL to visit the small pyramid has changed, so dection of its opening fails
Send mall purchases through standard "relstring" item recogniztion path.
The "skeleton" command will acquire a skeleton to use before trying to use it
Iron Palm Technique costs 0 MP and gives you the intrinsic Iron Palms, which can
be removed by casting Iron Palm Technique again.
Soul Rotation may only be cast by Saucerors.
! Potions are multiusable, Camp Scout pup tent is not.
Single in items.txt means single usable in combat. Usable in items.txt means single usable from inventory. Hopefully I've changed the right things in the right places!
When we find a new item with a relstring that says the item is multi-usable,
log the item as "multiple" rather than "usable".
KoL Con X Treasure Map
You can use a miniborg hiveminder to get a destroy-o-bot, and vice versa. Provide a warning if you try to use a spice melange or Ultra Mega Sour Ball with less than 3 fullness and drunkenness used.
Refactor some stuff from the previous commit
Add Nanorhino charge tracking.
Show Nanorhino charges in character pane.
Soul skills only available as Sauceror, so don't add them if Soulsauce is known but you aren't a Sauceror.
When you try to insult a pirate and he stammers and turns red, that still
counts as your once-per-battle insult attempt.
Fix proxy records: item.usable -> ItemDatabase.isUsable amd item.multi ->
Define isUsable to be anything that you can inv_use.php on and isMultiUsable
to be anything that you can multiuse.php on.
Fix a few items and effects, courtesy of checkitems and checkeffects
Bump version to 16.2