Version 14.8

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: 9599
Parse consumable quality - crappy, good, etc. - from item descriptions and
save in fullness.txt, inebriety.txt, spleenhit.txt.
$item[ xxx ].quality will return that value

Revision: 9600
Constants for for quality. Use character entity in effect name in food note

Revision: 9601
Don't abort automation if you reach your daily casting limit of a buff

Revision: 9602
Add consumption data proxy fields to items

Revision: 9603
The other half of that: do not return null for items with no cinsumtion data

Revision: 9604
Add Timer 1 ... Timer 10 pseudo-effects.
They are shruggable, so decorate them with a "Cancel" link on the charpane.

Revision: 9605
gametime_to_int as per Theraze @ kolmafia.us

Revision: 9606
Eliminate use of magic numberd for items and effects and skills in a few places.
When you move an item in or out of inventory, if your familiar can use it,
update the list of equipable familiar items, even if it's also useable by the
character as equipment. This affects hatracks and disembodied hands, so far

Revision: 9607
Just to be double plus happy happy, updateOutfits -> updateEquipmentLists

Revision: 9608
Add feature to sendGeneralWarning: the ability to give extra fields to the URL
Use this for the infernal seal warning, which requires checked=1

Revision: 9609
Various ASH functions are valid only inside relay scripts. If you call such
functions NOT inside a relay script, return the INIT value of whatever data
type is returned by that function.

Revision: 9610
Add town_fleamarket.php to the list of URLs that can deliver a clover.

Revision: 9611
Recognize when feeding an item to a Slimeling fails and do not remove it from
inventory or increase Slimeling charges on a failure

Revision: 9612
If you successfully insert the punchard into the Dwarf Contraption, remove it
from inventory.

Revision: 9613
Notice when you meet Unexplained Jamaican Man and he rewards you. Give a
reminder at the gash if you didn't do that.

Revision: 9614
Add raveosity to SSPD glowsticks

Revision: 9615
Notice if we've hax0red the hermit when we look at the quest log

Revision: 9616
Do not change the URL for the Hermitage to be autopermit=on; let the person
visit the Hermit and then opt-in to clicking the "buy a hermit permit" link

Revision: 9617
Visit quest log pages and end with page 1, so that remains the default page

Revision: 9618
When you buy a hermit permit in the relay browser, give link to hermit.
Fix comments in fullness and inebriety to point to new Well-Tempered site
When you search for NPC items - and only NPC items - in HC or Ronin, don't
bother with a mall search.

Revision: 9619
Don't skip getting tower level 6 item if you have a full telescope

Revision: 9620
add powers of various rave items
fix monster name of Demon of New Wave
fix duration of milk of magnesium

Revision: 9621
Declare coinmaster data type to be "stringlike" so == compares name of master

Revision: 9622
Add Roippi's Custom Daily Deeds patch. Have at it!

Revision: 9623
Visiting the Hermit with autopermit=on will use your hermit script, if you have
it in inventory, rather than buying a hermit permit.
When visiting the hermit, if you are rebuffed because you fon't have a permit,
we give you an autopermit-on use link labelled "buy a hermit permit". If you
happen to have the hermit script in inventory, this link now says "use your
hermit script".

Revision: 9624
Do not automatically put "" around mall searches

Revision: 9625
Fix custom skill daily deeds, as per Roippi @ kolmafia.us

Revision: 9626
Opt-in MRU list for Scripts menu.

Revision: 9627
When searching for an exact item in the mall, don't ask KoL to do a fuzzy match

Revision: 9628
The "init" keyword is now an alias for "initiative" in the maximizer.
Add "0.5 mp regen min, 0.5 mp regen max" to the default list of the Maximizer GUI.

Revision: 9629
add "init" alias to the maximizer, take 2.

Revision: 9630
Fix the "mallsell" command. Also clean up some code.

Revision: 9631
Check if your current familiar can equip the equipment in the outfit checkpoint before trying to do an EquipmentRequest.

Revision: 9632
Extend the debugcreate CLI command to accept lists of items. Avoid NPE when called with no parameter.

Revision: 9633
Add _carboLoaded user preference.

Revision: 9634
Initial support for new Guild challenge: new choice adventures, stealing pants
unequips them, new Mus and Mys challenge items.
Recognize "That is not something you can give to your Slimeling"

Revision: 9635
Fix fuzzy matching for custom skill deeds.
Correct typo in custom skill builder.

Revision: 9636
Include familiar image names in familiars.txt

Revision: 9637
The "Throw Shield" skill is available when you have a Patriot Shield equipped.
Do not remove stationary buttons preferences that contain a conditionally granted combat skill.

Revision: 9638
Don't disable stationary buttons just because we think you don't have a skill.
Add a few equipment-granted skills when the correct equipment is equipped.
Clean up some code.

Revision: 9639
Detect stack overflows in ASH scripts and print error.
When ANY exception is trapped in ASH, after printing stack trace, print error.
Remove bogus "." following skill name "Ask the hobo to dance for you"

Revision: 9640
If KoL redirects us from fight.php to main.php, follow the redirect.

Revision: 9641
Place daily deeds help in a JScrollPanel.
Make help and custom builder non-modal (i.e. no longer exhibit on-top behavior)

Revision: 9642
When we run() a FightRequest, make sure it goes to fight.php

Revision: 9643
Use the java 1.4 implementation of createDialog.

Revision: 9644
If you have a Doppelshifter or a tiny costume wardrobe equipped, your familiar
effectively changes into a different familiar at the beginning of a battle and
back to its original form at the end of the battle. Notice this change and
set KoLCharacter.effectiveFamiliar to the corresponding FamiliarData.
Add ASH function: familiar my_effective_familiar();
Add the nine April Fool familiars into the 9 spots where we think they go.
The familiar ids are almost certainly wrong, but since they are never visible,
no big deal.

Revision: 9645
willyweed is not multi-usable.

Revision: 9646
When you find comedy equipment in the Laugh Floor, change the custom link that we add in relay browser. Mafia will now equip the item before doing comedy for Mourn, and restore your equipment afterwards.
Clean up some code.

Revision: 9647
When you use the link provided by Mafia and if you are wielding a 2-handed weapon, unequip it before trying to equip the Comic Hellhound Puppet.

Revision: 9648
On each load of fight.php, availableConditionalSkills is built with all the skills in the 7000-7999 range (conditionally granted combat skills) that the player can use.
For those who don't use the KoL CAB, stationary buttons corresponding to all the skills in availableConditionalSkills are added after the buttons for the last <n> non-conditional skills the player actually used in combat

Revision: 9649
One clockwork claws, two pairs of clockwork claws.

Revision: 9650
Add CONDITIONAL_COMBATSKILL_PATTERN, which was left out of Revision 9648.

Revision: 9651
Add nvigation link for new guild quest items back to guild chllenge

Revision: 9652
Change CharpaneRequest to extend RelayRequest so that relay overrides are always applied, even during automation. That way, when the browser is loaded and we load a cached version of the character pane, it will already contain the desired decorations.

Revision: 9653
Remove doubled calls to processCharacterPane()

Revision: 9654
Rather than use timestamp parsing, avoid concurrent charpane requests altogether.

Revision: 9655
The ash sells_item( coinmaster, item ) now checks that it count field in the
coinmaster's inventory is >0. This only matters for hermit clovers, currently,
since the count field is set to be howver many clovers are still available
every time you visit the hermit.
If the hermit sends us packing after we make a purchase, we have no worthless
items and didn't get a chance to see his stock. If we were purchasing clovers,
decrement the available count anyway.

Revision: 9656
Rework Custom Daily Deeds. In general: boolean, integer, and blank string preferences can be used interchangeably; blank strings and false booleans coerce to 0 and true coerces to 1. Replace "BooleanPref" and "MultiPref" with "Command" deed. Replace "BooleanItem" with Item, and allow a maxUses argument.
Add experimental "Combo" deed, allowing the user to construct comboboxen.
Update help documentation for Daily Deeds. Only construct help once instead of every time run() is called.
Update AddCustomDeedsPanel GUI to reflect the above changes (except "Combo" deed)
(re-)add pudding built-in deed to defaults.txt.

Revision: 9657
Fix character pane vanishing from relay browser

Revision: 9658
When trying humor on Mourn in the relay browser via kolmafia's special "visit
mourn" link, save and restore outfit around equipping the correct item, but
display the result of the comedy attempt.

Revision: 9659
Add form of Combo deed that accepts an integer preference.

Revision: 9660
Fix InventoryManager.getAccessibleCOunt to agree with retrieveItem re:
worthless items; both use HermitRequest.getWorthlessItemCount to get the
total of worthless items in inventory.

Revision: 9661
ACOMBINE recipes require meat paste if knoll is not available

Revision: 9662
RelayRequest handles a request submitted to us by the Relay Broswer which we
forward along to KoL. Since we can print to the gCLI/status line during the
processing of such a request, after we get the reply, we call enableDisplay to
make the GUI green again. A CharPane request is now a RelayRequest, but can be
called in many automated sequences. We do not want the GUI to turn green after
every CharPaneRequest. Therefore, instead of enableDisplay, call
enableDisplayIfSequenceComplete.

Revision: 9663
Search for item dataname when doing an exact mall search

Revision: 9664
Print a message when a mall purchase fails because you are on the player's ignore list.

Revision: 9665
_zapCount preference increments when wand is used. Only tested lightly.

Revision: 9666
For the purposes of fuzzy matching, consider "#" to be a word character
rather than a boundary. This keeps digits from matching HTML numeric
character entities, when they are much more likely to be an item quantity.
The downside is that the few items with an actual "#" in the name (such as
the four Hodgman journals) now require that you actually type the "#".

Revision: 9667
If breakfast tailors its summoning to your path, don't bother calling Lunch
Break if you can't eat and don't bother summoning Crimbo Candy in Beecore.

Revision: 9668
Fix item drops for War Hippy Spy

Revision: 9669
In addition to general "accessible" method, allow individual Coin Masters to
have a canBuy() and/or a canSell() method.
The Game Shoppe disalows purchases from those in Hardcore or Ronin, but you
can still trade in your cards.

Revision: 9670
Using a PYEC resets _zapCount.

Revision: 9671
Save LibraryFunction.interpreter in a local variable during execution of a
batch_close(), since it's possible that one of the batched commands will
somehow invoke an ASH interpreter, which will clear the global variable.
This is quite likely to happen if the user has a relay override for
charpane.php, since even internal charpane updates are now RelayRequests.
Produce a runtime exception rather than a debug log if char_at() is used on
the first index past the end of the string.

Revision: 9672
The PurchaseRequest for a ten-leaf clover from the Hermit includes the actual
number of clovers currently available from him, or -1 if unknown.

Revision: 9673
Colorize things in the item manager according to KoL-specified quality

Revision: 9674
fix some consumption data, as revealed by weird sorting in the Item Manager

Revision: 9675
Recognizes items with HTML tags in their name when parsing transfers to and from the Display Case.

Revision: 9676
Improve readability of highlighted quality-colorized items.

Revision: 9677
All varieties of ListCellRenderer need to accept the "isSelected" parameter of
getRenderer

Revision: 9678
Also improve readability of highlighted items in StorageRenderer and EquipmentPowerRenderer.

Revision: 9679
Add nudge to turn in rat whiskers before ascending.

Revision: 9680
Add autoSatisfyWithStorage - default true - to control whether an out-of-Ronin
character will freely pull items from storage to satisfy "acquire"
When you need to "acquire" a worthless item to visit the Hermit, consider the
closet and storage, as well as inventory, as controlled by appropriate setting

Revision: 9681
Only chat message that start with a whisper chat command are private messages.

Revision: 9682
Add a "Pen Pal" tab to Mafia's kmail GUI.
Save messages from any mailbox, not only the Inbox.
Fix the "Mail retrieved from page 0" message.

Revision: 9683
Skills in the 7000-7999 range are now categorized as "conditional", so that uncategorized skills are treated like class skills for stationary combat buttons.

Revision: 9684
Changing any of autoSatisfyWithNPCs, autoSatisfyWithStorage, or
autoSatisfyWithCoinmasters forces conctions to refresh.
When creating the "availableIngredients" list, don't put storage items on it
unless autoSatsifyWithStorage is true.

Revision: 9685
Default exec target to useCWDasROOT

Revision: 9686
Avoid auto-following redirects for relay browser requests (let the browser see the KoL response and resend it on its own).

Revision: 9687
Use Look & Feel defaults instead of assuming highlighted text is white.

Revision: 9688
Add other sources for Sugar Rush in statuseffects.txt

Revision: 9689
Update the browser launching code to not use KoLmafia code.
Since a lot of stuff moved to "util", make it so that the "lib" folder contains the source code and related files for third-party libraries.
Rather than add javac fork options, instead update the build process to build things separately. If there are still problems, users should probably set the ANT_OPTS environment variable to give Ant more memory to use to build KoLmafia.

Revision: 9690
If you have autoSatisfyWithNPCs set, assign a "cost" to worthless items. If you
have all 13 starter items available, the cost is fixed: 50 Meat for a chewing
gum on a string. If you have fewer than 13, the number of pieces of chewing gum
you will need to use is probabilistic. Define the cost as 50 Meat times the
"expected" number of pieces of gum needed - which is as high as 4.25, if you
have no sewer items yet.
Concoctions using items available from the Hermit are now creatable even if you
curently have no worthless items: the "ingredient" of a jaba pepper, say, is a
worthless item, and "acquire" will go fishing for a worthless item, if neded,
for the expected cost as described above.
Note that this is not QUITE enough; if you haven't hax0red the Hermit, a Hermit
permit is also an implicit ingredient for any hermit item. We don't handle that
yet. Coming soon...

Revision: 9691
Add _inigosCasts preference.
When we cast a limited-use buff, parse the "casts used today" message.

Revision: 9692
Don't match any "casts used today" in the skills.php dialog boxes when parsing responseText.

Revision: 9693
When you queue a consumable in the Food or Booze panel, we calculate the list
of ingredients used and make them visible in a tab on the dequeue panel. This
also includes adventures and budgeted pulls. Other limiting factors include
meat spent at NPCs and still usages to improve booze or mixers.
Include Meat Spent in the displayed list of resources consumed.

Revision: 9694
Display still usages in "Ingredients Used" tab. Which is now "Resources Used".
When dequeue items and non-item resources drop to zero, remove them from the
list, just like items.

Revision: 9695
Initial support for the new IoTM, the Pair of Stomping Boots. Boot runaways share the _banderRunaways counter. Add the _bootStomps user preference to track how many times the "Release the Boots" skill has been used

Revision: 9696
Stomping Boots can't do the Scavenger Hunt.
It's "Resources Used", not "Ingredients Used".

Revision: 9697
Add authors.txt in case anyone needs author information when doing git-svn rebase

Revision: 9698
Hermit items have an implicit price of 1 worthless item + 1 hermit permit until
the Hermit has been hax0red, it which point, they cost only 1 worthless item.
When Looting the Hermit, d't use the presence or absence of the ten-leaf clover
in the list of hermit items as an indication of whether we've visited the Hermit
yet.

Revision: 9699
More limited-use skill tracking:
_benettonsCasts
_companionshipCasts
_donhosCasts
_elronsCasts
_precisionCasts
_thingfinderCasts

Revision: 9700
Add the "neweffect" CLI command. When provided with an effect description ID, it will add the effect to EffectDatabase, which allows to create an override with the new effect.

Revision: 9701
Add new paste spleen items and effects. Transporter transponder are now multiuseable.

Revision: 9702
remove the _bootStomp preference, replace it with _pasteDrops.
Add _pasteDrop and boot runaways to the Daily Deeds panel and to the side pane.

Revision: 9703
Since using the "Release the Boots" skill with the Pair of Stomping Boots always uses up a charge, whether you get a paste or not, track the number of times the skill has been used with the _bootStomps preference.
Show the number of stomps instead of the number of paste drops in Daily Deeds and in the side panes.

Revision: 9704
Consumables with negative stat gains are not affected by stat gain modifiers.

Revision: 9705
Since we already scrape familiar names when we vsit the terrarium, make them
available in ASH via a proxy field. E.g., $familiar[mosquito].name

Revision: 9706
Delete empty directories in src tree.

Revision: 9707
Forgot an empty directory :-(

Revision: 9708
Fix familiar numbers for April Fools familiars, thanks to lostcalpolydude

Revision: 9709
Autostops to obtain underwater skills for all classes. Thanks Winterbay @ kolmafia.us

Revision: 9710
Add <html></html> tags after you've added other HTML tags for pullable items

Revision: 9711
Add Vending Machine as a Coin Master using fat loot tokens.
I followed the instructions in ExampleCoinMaster.txt. They worked perfectly and
it was just as easy as I'd hoped it would be. Next time, somebody else can add
the new Coin Master. :)

Revision: 9712
Detect SVN revision even if you're using git-svn instead of regular SVN

Revision: 9713
Use git-svn info instead so we still detect revision numbers if user has local changes

Revision: 9714
Improve tolerance to people using the word 'revision' in their commit messages

Revision: 9715
Put skill use code in a synchronized block in case it's the mood management code running in multiple places during relay browser usage

Revision: 9716
Remove synchronization blocks

Revision: 9717
Update .classpath to include lib folder

Revision: 9718
Add a dummy CLI command to represent requests from the GUI

Revision: 9719
Rather than have GenericRequest and KoLAdventure extend Job, have them extend Runnable instead.
This means that every "request" in KoLmafia will be run inside of a runnable wrapper. In this way, we can put everything inside of a try-catch and see if there's any exceptions that are happening if a request is run in a worker thread that might not be getting reported in a debug log.

Revision: 9720
Remove unused imports, organize imports in alphabetical order, and group them by package

Revision: 9721
Don't send KoL login cookie to external sites.
Only disallow mall.php instead of all URLs that have mall.

Revision: 9722
Move "does this request have a result" check to be based on the URL string, and have the learn skill/recipe logic call it before registering the result.

Revision: 9723
Very initial support for Way of the Surprising Fist:
- If we see path = 6 in api.php, set path to "Way of the Surprising Fist"
- Ditto if we see a "Drop Way of the Surprising Fist" buttn on the account page
(It would be nice to have confirmation that that is what the button says...)
- Recognize ascension from valhalla into Fistcore
- Add KoLCharacter.inFistcore() for use in future support for the challenge path
All untested.

Revision: 9724
Fix mall purchase requests not running

Revision: 9725
Miscellaneous Way of the Surprising Fist changes:
- Add Fist Skills. Only Master of the Surprising Fist is permable
- Attempt to notice learning them from using the scroll.
- Count known fist skills in fistSkillsKnown
- Do not populate weapon and offhand lists in Gear Changer if you are
following the Way of the Surprising Fist
- New items: Teachings of the Fist and Thwaitgold grasshopper statuette
And, add a setting - charitableDonations - which will, by and by, track the
total autosell value of items you have donated to charity. Not yet.

Revision: 9726
Add a new setting: totalCharitableDonations. charitableDonations is the amount
of meat you don't get from autoselling items during a Fistcore run, cleared at
ascension. totalCharitableDonations is NOT cleared on ascensions, and is thus
the total cumulative amount donated.
One of those is useful for tracking progress towards a trophy, but we don't
know which one, yet. Is it like Golden Meat Stack or like The Three Amigos?
We don't know.
Increment both settings when you autosell items.

Revision: 9727
Fix regexp for learning surprising fist skills

Revision: 9728
In Fistcore, vacations take 5 turns and cost 0 meat.
When running a request in the RequestThread, make sure there is a URL string
before checking whether the request returns a result.

Revision: 9729
Add ResultProcessor.handleDonations to check for random charitable donations
you make (or which are made for you) in Fistcore. Currently, only the hippy
orchard profits are detected.

Revision: 9730
Recognize more charitable donations

Revision: 9731
Recognize message when you donate the proceeds from the Wizard of Ego or
Nemesis quests to charity, thanks to Terion.

Revision: 9732
Various (untested) Fistcore changes:
- Do not equip worm-riding hooks when executing "wormride" link
- Do not require (or equip) a star weapon in the Sorceress Entryway. Instead,
make sure that Earthen Fist is active, by casting Worldpunch, if necessary.
- Do not equip the huge mirror shard to deflect the electrical trap

Revision: 9733
Fix source of Retrograde Relaxation: change a space to a tab

Revision: 9734
Apparently, only autosell donations count. Make that an internal parameter,
initialized to "true", and don't tally random donations in that case.

Revision: 9735
When you autosell items in Fistcore, log "You donate xxx Meat to charity"

Revision: 9736
Don't double-learn steel organ skills.

Revision: 9737
Fix autodetection of items that the Traveling Trader has on offer.
Fix purchasing items with tokens from storage.
Remove unnecessary blank line.

Revision: 9738
Fix logging traveling trader purchaes.

Revision: 9739
Place all events in an [events] tab rather than spamming all channels

Revision: 9740
Remove worm-riding hooks from inventory not weapon slot, when you use a drum
machine in Fistcore

Revision: 9741
Broadcast /w messages to all channels, put all other events in events tab

Revision: 9742
Remove unused single-parameter makeRequest() method

Revision: 9743
Add new InternalMessage type for KoLmafia internal messages, and those are the only ones that are printed only to the events tab (all others are printed to chat as well).
Remove RecentEventsFrame. Instead, take advantage of the fact that all messages are broadcast to the gCLI and to chat and rely on "events" CLI command for people who would like a complete printout of everything that's occurred.

Revision: 9744
Move quest logic into separate classes rather than keeping it in monolithic KoLmafia.java

Revision: 9745
Fix entries being double posted to [events] tab.
Minor performance improvement for handling highlighted messages and event broadcasts by caching the list of open tabs/windows as they are added rather than rebuilding a list every time.

Revision: 9746
Reorganize demon name recognition in the SUmmoning Chamber.

Revision: 9747
Crimbo paste

Revision: 9748
Move response text parsing out of StaticEntity.

Revision: 9749
Go back to using timestamp in order to determine whether to use a character pane response or not

Revision: 9750
When logging in, delay 'events' printout until after login has completed

Revision: 9751
Remove internal mail reader and instead launch relay browser.

Revision: 9752
Allow mainpane to be overridden on load via URL parameter. Leverage this to render the mail window with all other decorations.

Revision: 9753
Fix moderator / system messages showing up as events instead of channel messages

Revision: 9754
Since relay overrides might be using Javascript, reload the charpane and menupane rather than attempt to dynamically replace the content.

Revision: 9755
Fix relay overrides not being applied as a result of a faulty re-implementation in 9749.

Revision: 9756
Add NPZR chemistry set and its potions

Revision: 9757
Ultrasoldier Serum is not multiuseable.

Revision: 9758
Access frames via top, since it's not the main window running the Javascript but rather the frames in the main window.

Revision: 9759
KoL dates round to the nearest second, and there can be more than one charpane request within a second (particularly when you're using something fast like combat macros, or short combats like one-round combats).
Therefore, only skip a charpane request if the difference is greater than a second.

Revision: 9760
Since relay overrides will still run on non-200 replies, don't blank out the response text.
However, this does raise an interesting problem with relay overrides in general ... namely, what should they be doing if they get a 302 response?

Revision: 9761
Add 100% familiar run warning for people who use the relay browser.

Revision: 9762
Track non-combat experience gained by a familiar, reset on each ascension. Use this non-combat experience to determine if the familiar warning should be shown.
Should go without saying, but this only starts tracking as of this commit, so anyone on a 100% run who has already used non-combat methods to gain familiar experience will need to track their 100% by hand.

Revision: 9763
We zero fistSkillsKnown when you jump the gash and reset it to 1 if you have
Master of the Suprising Fist permed after you ascend. The latter is not useful,
since that skill doesn't affect the strength of fist skills in a new Fistcore
run until you learn it again.

Revision: 9764
Have 'exec' target depend on 'compile' instead of 'jar'

Revision: 9765
Since multiple charpane requests can run at the same time, rather than reuse the same request object (which is going to cause all sorts of weird problems) instantiate new ones and let them run in parallel.

Revision: 9766
Arrrboretum has no combats

Revision: 9767
Only highlight [events] tab on internal event

Revision: 9768
Only send familiar warning if the king has not been liberated.

Revision: 9769
Remember where you have picked up various Teachings of the Fist

Revision: 9770
If combat rate for area where you're visiting is zero, do not show familiar warning.

Revision: 9771
Fist preferences -> fist

Revision: 9772
... Fix only alerting on areas with all non-combats.

Revision: 9773
Continue giving familiar usage warning for black cat runs

Revision: 9774
Fix compile error

Revision: 9775
Add combat experience when you win a fight

Revision: 9776
plural for Mt. Noob Pale Ale

Revision: 9777
Detect familiar larva growth failure due to lack of a Terrarium.

Revision: 9778
Fix constant refreshes when gCLI is integrated with chat.

Revision: 9779
Give a better estimate of familiar experience gained on a combat win using modifiers rather than a hard-coded list.
Handle 100% familiar run checking with a single value in preferences (singleFamiliarRun) which represents the current familiar being used during the run.
If the familiar is not yet known, this value is set to zero so it can be detected as needed. Set this value to -1 when more than one familiar is detected as being used for something that initiates a combat, though this recognizes items that initiate combats (which I'm not sure count, but if you're using a different familiar for that combat, you probably didn't care too much).
Since it's down to a single value, you could theoretically cheat KoLmafia by setting the value to -1 (which is the same value that KoLmafia will set the preference to if it detects you start using more than one familiar), making this work kinda like an invisible preference, but since it resets every run, it's rather useless as one.

Revision: 9780
Add entry for singleFamiliarRun to defaults.txt

Revision: 9781
If throwException is set to false for number parsing, don't print a stack trace to the console

Revision: 9782
Null out channel cache when resetting chat between logins.

Revision: 9783
When you select the Salamanderenity effect in the Active Effects part of the Skill Casting frame, select the Salamander Kata skill.

Revision: 9784
Adjusted error output of outfit command to display the requested parameters.

Revision: 9785
Marked Loathing Legion items that can be equipped as nosmash.

Revision: 9786
HermitRequest.resetConcoctions will only add or remove the Hermit Permit from
the list of ingredients if the mixing method is KoLConstants.COINMASTER. This
excludes, in particular, the ten-leaf clover.

Revision: 9787
Use Worldpunch to open the Goatlet. Untested.

Revision: 9788
Change EquipmentManager.canEquip() to return false for weapons and offhand
items if you are in Fistcore. This should have wide-ranging effects, from
the ASH can_equip() function to making the modifier maximizer automatically
ignore weapons and offhand items in Fistcore.

Revision: 9789
Add "Unarmed" boolean modifier. Add clip art items.

Revision: 9790
Fix the entries for the NPZR chemistry set potions in statuseffect.txt

Revision: 9791
Potions grant an effect. Register unknown effects found in potion descriptions.
Add checkpotions command.
Add new status effects granted by clip art potions

Revision: 9792
Added skill <---> effect translations for:
Iron Palm Technique, Miyagi Massage, and Worldpunch

Revision: 9793
small meat gain -> small meat boost

Revision: 9794
Convert effect <-> skill translation from code to data

Revision: 9795
Initial support for Tome of Clip Art: detect usage, presence of bookshelf, and
usage. Log initial casting of spell and raw URL for selection of imahes.
Ultra-speculative consumption data for clip art food & booze - just so they
appear on the Food & Booze tabs of the Item Manager. Add some plurals.

Revision: 9796
Recognize when Wu Tang the Betrayer is defeated. When Wu Tang the Betrayer has been defeated this ascension, the Black Market is not available.

Revision: 9797
Set the lastWuTangDefeated preference when the woods are visited and we notice the link to the empty Black Market.

Revision: 9798
Fix typo for Unarmed modifier. Add 9 remaining Clip Art status effects

Revision: 9799
Only consume MP and increment tome summoning count for Clip Art creations that
result in an item.

Revision: 9800
Add mutex group for halos.
Fix descid for Thwaitgold grasshopper statuette
Fix previously missing equipment powers for some clip art weapons.
can of black paint does not have an autsell price any more

Revision: 9801
Added some infrastructure towards support of clip art summoning (although not
the actual request class, so there's no user-visible benefit yet.) In
particular, ingredients in concoctions.txt that are entirely numeric are
interpreted as parameters instead; up to four parameters per recipe can be
used if they each fit in a byte. This allowed the clip art recipes to be
entirely specified within the file, rather than having to be hard-coded
elsewhere.
Added "valueOfTome" pref (default 0), for eventual use in create vs. buy
decisions for clip art items.

Revision: 9802
Don't check for meat before taking a vacation in fistcore.
Show the name item we failed to buy when you are in Ronin.

Revision: 9803
Restore code that was accidentally removed in Revision 9802

Revision: 9804
Merging channels happens at message receipt, allowing chatbot scripts to see hobopolis and the slimetube. Dungeon is the sender for dungeon message. If Dungeon (#917625) a) logs on, and b) joins a clan I may need to change this. I have tested this and it works as I expected, but I could use feedback from people who regularly merge channels. Have I changed anything you used to like?

Revision: 9805
Revert 9804. Three parameter versions of chatbot scripts now receive /clan, /slimetube and /hobopolis.

Revision: 9806
The create vs. buy decision now applies in all cases where both creation and
Mall purchase are valid options, not merely the cases where you have some
(but not all) of the needed ingredients. The buyScript mechanism is still
supported, but should hopefully be less needed now.
The decision to buy a completed item rather than creating it from ingredients
already in inventory requires assigning a value to those ingredients, which
really depends on play style. Not everyone is going to put in the effort
needed to maximize their Mall profits; they might use only autosell to
dispose of excess items, or just hoard them. Therefore, a new float
preference "valueOfInventory" allows players to indicate the worth of items,
with these key values:
0.0 - Items already in inventory are considered free.
1.0 - Items are valued at their autosell price.
2.0 - Items are valued at current Mall price, unless they are min-priced.
3.0 - Items are always valued at Mall price (not really realistic).
Intermediate values interpolate between integral values. The default is 1.8,
reflecting the fact that items won't sell immediately in the Mall without
undercutting or advertising. This preference, and several previously hidden
prefs affecting create vs. buy decisions, are now exposed on a new Creatable
-> Fine Tuning page in the Item Manager. (The page will eventually have a
list of manual creations, which is why I put it there instead of
Preferences.)
To offset the increased frequency of create vs. buy decisions, they now make
greater use of historical prices. If there is a greater than 2:1 ratio in
the cost of the two options, using prices up to 7 days old, the decision will
be made without hitting the server with a Mall search.

Revision: 9807
Capitalization typo fixed.

Revision: 9808
Fixed Unarmed modifier so that it checks the proper equipment list - which
may be speculative rather than the player's current equipment.
Fixed "recipe" command to display yield and ingredient quantities, and to
display special creation flags even if there's more than one.

Revision: 9809
Partially revert Revision 8537; any item returned by getAccessibleCount() should also
be supported by retrieveItem(), so it's unnecessary for the maximizer to try
to uncloset or pull items itself (which was buggy, anyway). The display of
retrieval method was useful, so rather than trying to duplicate
retrieveItem's logic, I've added simulation capability to retrieveItem
itself.
"acquire?" (and its CLI synonyms) now displays the retrieval method that will
be tried first.
Cleaned up spacing in a few CLI command descriptions.

Revision: 9810
Fix null pointer exception when looking up coinmaster buyer information for $item[none]

Revision: 9811
Add a few missing entries in Modifiers.txt, thanks to ckb @ kolmafia.us

Revision: 9812
Add a Clip Art creation. Creating a Clip Art item will use a Tome summon.

Revision: 9813
When handling Evilometer beeps, find out which area the current monster is from, instead of relying on the location where you are adventuring. This allows beeps from puttied cyrpt monsters to be accounted for.

Revision: 9814
Fix powers of clipart accessories

Revision: 9815
Forget the last item used once its consumption has been parsed.

Revision: 9816
Recognize Stinkpalm damage.
Treat strings containing only whitespaces passed to to_item() the same as empty strings.

Revision: 9817
Do not parse the message given by the X-Ray Vision effect as damage done to the monster.
Clip Art potions are not multi-usable.

Revision: 9818
Recognize damage done to Somerset Lopez, Demon Mariachi when removing the Earworm effect.

Revision: 9819
Adjust basics.css to set basement helper width to 100%.
This will NOT overwrite the old basics.css file in your relay directory,
you will need to manually delete it for the change to take effect.

Revision: 9820
clip art potions are usable, not multiple or single.

Revision: 9821
Initial support for Gygaxian Libram

Revision: 9822
Rather than adding a bogus style to the equipment and potion lists in the
basement decorator and then fixing it with a .css file, use a reasonable
style the first time. Thanks to matt.chugg@kolmafia.us

Revision: 9823
Add potions and effects from "using" dice - which are multiusable.
More basement helper changes to make it work with Internet Exploder, the
standard of compatibility

Revision: 9824
Correct the amount of meat shown in the "Resources Used" tab when queuing consumables.

Revision: 9825
Special logging for rolling dice. dungeon dragon chest.

Revision: 9826
Add logic to the Maximizer to decide whether to show effects obtained via CLI commands (friars, summon, concert, telescope, ballpit, pool, shower, styx, skate).

Revision: 9827
Recognize that you know the password to the Dispensary when you encounter the "Sleeping Near the Enemy" adventure.

Revision: 9828
Track usage of Frosty's Iceball in the _iceballUses preference. Remove the Iceball from inventory if it disintegrates (untested).

Revision: 9829
Add generic potions to list of HP and MP restorers.
Add Natural 1 and 20/20 Vision status effects

Revision: 9830
Restore your familiar after trying to battle the Tower Familiars even if we fail.

Revision: 9831
Detect usage failures for d12 and d20

Revision: 9832
Update mall prices. Bump version to 14.8
 
Top