Version 14.4

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: 8695
Check to see if you can equip an item before sending a request to the server.

Revision: 8696
Automatically retrieve starter items and closet worthless items before using chewing gum if done via 'acquire x worthless item'. Purchase three chewing gums at a time when it's optimal to do so.

Revision: 8697
When acquiring worthless items, reduce server hits in the (potentially likely) case that all starter items are in the closet rather than equipped.

Revision: 8698
If you want to retrieve three or more worthless items with chewing gum, or you can already interact with other players, go ahead and exhaust the supply of starter items.

Revision: 8699
Use a server friendlier version of the worthless item retrieval when the user can interact with other players, and use the more optimal version of worthless item retrieval otherwise (may adjust the threshold when the switch between retrieval algorithms happens).

Revision: 8700
Make sure to pull the worthless items out of the closet in the server-heavy version of worthless item retrieval.

Revision: 8701
Add missing boolean negation in retrieve gum check for server-heavy version of worthless item retrieval.

Revision: 8702
Not my night. Realized I was thinking of something totally different when I was counting the missing starter items for the server-friendlier version of the algorithm, so fixing it so that the correct amounts are used.

Revision: 8703
Timestamp every ChatMessage. Add license to ModeratorMessage.java. Remove empty tabs from ChatSender.

Revision: 8704
Equipped items count towards the starter item count. Also, only pull items out of the closet if you do not already have them.

Revision: 8705
When retrieving additional gum, rather than retrieve up to three, retrieve as many as the number of worthless items still missing to save on server hits. When doing so, do not try to retrieve additional gum if you already have enough gum to satisfy the current iteration.

Revision: 8706
Rather than call a method in every child class's constructor, just initialize the timestamp in the parent class constructor.

Revision: 8707
Remove turtle totem as a combat item from FightRequest

Revision: 8708
retriveItem is now willing to purchase Game Grid tickets from the mall.
acquire xxx coffee pixie stick will now recursively use retrieveItem to get
Game Grid tickets, if necessary, and will thus purchase them from the mall.

Revision: 8709
Initial support for new Typical Tavern

Revision: 8710
Throne modifiers for organ grinder and smiling rat.

Revision: 8711
Arena parameters for organ grinder and smiling rat.

Revision: 8712
The Suspicious Looking Guy has moved from the Wrong Side of the Tracks to the
Typical Tavern. Initial support for the Tavern Cellar (logging only, for now;
no auto-exploration).

Revision: 8713
Add a couple more choice adventure defaults for the Tavern Cellar

Revision: 8714
When you ascend, set the semirare window begin & end counters immediately.

Revision: 8715
Remove build warning.

Revision: 8716
Update jarbundler ant task

Revision: 8717
Add a pseudo-CAB with "auto" and "again" buttons to choices and noncambats
Add bone chips, the Dungeon Full of Skeletons, and the Skeleton Invader

Revision: 8718
Fix donations to the Statues that were formerly in the Hall of Legends

Revision: 8719
Update and add a few zap groups

Revision: 8720
Added plurals for smiling rat and rat tooth polish

Revision: 8721
Replace 2 spaces with tabs to recognize IotY familiars properly in the database. (their arena parameters are still needed)

Revision: 8722
Move Dungeon: Dungeon Full of Skeletons to Town: A Skeleton Invasion.
Add Two Skeleton Invaders

Revision: 8723
All usage of rats.php is now cellar.php. Remove obsolete TavernDecorator.
Move Tavern square tracking to TavernRequest

Revision: 8724
When filtering chat-related URLs from visit_url, be a little more selective, so
we don't disallow account_chatcolors.php, for example.

Revision: 8725
Altar of Bones is a Coin Master

Revision: 8726
Fix Altar of Bones trading. Add Three Skeleton Invaders

Revision: 8727
Drop rates for bone chips

Revision: 8728
Thanks to MCroft, fix "dmg" target in build file

Revision: 8729
Supposedly, your bookshelf and telescope only become available in Bad Moon when
you recall your memories, not when you free the king.
The Untinker has moved to the Forest Village.
Four Skeleton Invaders

Revision: 8730
Add ! to A Skeleton Invasion so it is recognized as the last adventure location when you login.
Added +3 beer lens to the list of goal options for lens hunting.

Revision: 8731
Correct fullness data for Humpty Dumplings

Revision: 8732
Include MCroft's additional build file enhancements to include the base version
in all the generated file names.
More use of AdventurePool in place of magic adventure numbers.

Revision: 8733
Add Five Skeleton Invaders. Add some consumption data for bone consumables.
Handle a fortune cookie with duplicate lucky numbers

Revision: 8734
Add bag of bones, Stabonic scroll, Bone Homie, Cannon Museum

Revision: 8735
You can trick or treat while falling down drunk. Add new candies and effects.

Revision: 8736
Add new Major Ray effects. Remove corresponding counters.
Remove hard-coded list of 0-autosell items allowed to be "acquired" and depend
on autoBuyPriceLimit.
Add modifier for Technicolor Yawn
Candy skeleton and effect

Revision: 8737
Initial support for pumpkins

Revision: 8738
Latest version of MCroft's build changes. Do not do "ant clean" if you are a
Windoze User who runs right from the "dist" directory.

Revision: 8739
bone spurs are Single Equip

Revision: 8740
Having seen 0, 1, and 2 pumpkins in the patch, extrapolate to 5.

Revision: 8741
Colorize He-Boulder major ray status effect names

Revision: 8742
Give the KoL Con Six Pack a secondary usage of "reusable". Add it to the list of
toys that are played with at breakfast. Untested. This is for you, Storella.

Revision: 8743
Colorize Everything Looks Yellow as olive, not yellow - just like we used to
colorize the Major Yellow Ray Recharge counter.
Add plural for pumpkin juice.
Remove dead code from end-of-round fight parsing

Revision: 8744
Add SevenLances_com to buffbot list.

Revision: 8745
Change wait() to not print countdown messages to the CLI

Revision: 8746
huge pumpkin

Revision: 8747
Add choice adventure for Mr. Alarm. Add missing field for huge pumpkin

Revision: 8748
Added some monster data for the Nemesis Cave

Revision: 8749
Added some plurals

Revision: 8750
Added candy skeleton modifier

Revision: 8751
Add Typical Tavern "higher quality" ("higher priced") beers to inebriety.txt

Revision: 8752
Don't untinker Bitchin' Meatcar on ascending (since we can't).

Revision: 8753
Add ashwiki CLI command. Modified from GChau's code on kolmafia.us

Revision: 8754
Your display case is no longer in the Cannon Museum. It is now in the Museum.

Revision: 8755
Incorporate Theraze's patch to abort automation against an adding machine or a
hulking construct if you have a black cat or OAF at your side.
Incorporate Theraze's patch to detect monster attack and defense modifications
in combat.

Revision: 8756
Remove some dead patterns. Use static constants.

Revision: 8757
More of the same: use static constants rather than magic numbers

Revision: 8758
the "newpic" function now takes arguments, which made recognition of the new
monster generated by CLEESH fail. Fix it.

Revision: 8759
Allow both "autopermit" and "autoworthless" for hermit.php.
Include both of those options for the use link when you get dinghy plans.
Accepting the Untinker's quest is "action=screwquest".
Do not give a link to innabox for the initial visit (pre-accepting quest) to
Untinker.
-mThis line, and those below, will be ignored--
M src/net/sourceforge/kolmafia/textui/RuntimeLibrary.java
M src/net/sourceforge/kolmafia/webui/UseLinkDecorator.java
M src/net/sourceforge/kolmafia/request/UntinkerRequest.java
M src/net/sourceforge/kolmafia/request/GenericRequest.java

Revision: 8760
Change semirare counter in Valhalla from 71-81 to 70-81.
When you ask the hermit to retrieve a specific number of clovers, don't peg the
number to get based on worthless items in inventory. Peg it on the number of
clovers actually available at the moment.
When getting breakfast, if you are still in Ronin or Hardcore and ask to get
clovers, peg amount to get, as before, on worthless items currently in
inventory. Out of Ronin, see how many clovers the hermit has and get them all.

Revision: 8761
EventManager should see 'has left the building' as being synonymous with 'logged out' and not post those messages to the CLI.

Revision: 8762
pumpkin juice is not currently multi-usable

Revision: 8763
When parsing result of saving a custom outfit, we get the outfit name from the
URL. Decode it, so that spaces don't become + characters.

Revision: 8764
When you harvest your pumpkin patch, log it in the session log

Revision: 8765
When you send a kmail, we only gave a useful session log entry if it included
items; just text and/or Meat logged the whole submitted URL. Now, give a useful
log entry whether or not you send items. Also, log the Meat you send.
If you have "return to inbox after sending" checked, we did not update your
inventory with items you sent. Nor did we update your session log with meat
you sent. Recognize the redirect to "messages.php?result=Message sent." and
parse the items and/or meat sent from the original URL.

Revision: 8766
Add "garden" CLI command. With no parameters, it will tell tell you what your
current crop it. "garden pick" will pick the crop.
Before you jump through the gash, harvest your crop.

Revision: 8767
Detect when your stick-on eyebrow piercing falls off in combat.
Add a three-argument form of visit_url:
visit_url( string location, boolean usePostMethod, boolean encoded );
The third argument indicates whether the &-separated fields in the location are
already url_encoded. If not, KoLmafia will split out the fields at & boundaries
and encode them, as before.
You probably won't need to use this unless your field values contain a &.

Revision: 8768
Apparently pumpkin juice became multi-usable mere hours after I marked it as
not multi-usable. Revert that fix.

Revision: 8769
When a tasteful dwelling furnishing breaks, remove it from campground items

Revision: 8770
Arena parameters for Piano Cat and Dramatic hedgehog
Guano Junction sonar drop rates

Revision: 8771
KoL allows any old crap in the "how much to bet" field of the MMG. It strips
out non-numeric characters and treats the rest as an integer. Unfortunately,
the "any old crap" appears in the URL that we parse to figure out how much the
poor wretch ... uhh, lucky winner ... bet. Interpret it the way KoL does.

Revision: 8772
Very initial support for ginormous pumpkin.

Revision: 8773
Recognize a ginormous pumpkin in your pumpkin patch

Revision: 8774
Add my_daycount() ASH function

Revision: 8775
When referencing an element in a map that is not present, return the default
value for the data type of that map, but do not add it to the map.
Remove "manual" flag from the recipe for the bitter pill.
Add two preferences: harvestGardenSoftcore and harvestGardenHardcore. These
contain the crop that breakfast will harvest for you, if it is present in your
garden. If that crop is not present (or is "none"), the garden is left alone.

Revision: 8776
When iterating through the slices of a composite, if you go as deep as requested
and the value is, itself, a composite, DO store the default value back, so that
the caller can modify the result and have it reflected in the original value.
When you set a condition, KoLmafia checks to see if it is already satisfied by
looking both in inventory and the closet. Only look in the closet if you have
autoSatisfyWithCloset set.

Revision: 8777
fix getCropIndex()

Revision: 8778
beanbat, batrat, and ratbat drop sonars
new starting equipment smashes into useless powder

Revision: 8779
Account for gaining or losing loose teeth when you dream

Revision: 8780
Add disclaimer to the bug report form in the Relay Browser, per gemelli request.
Attempt to give link to Knoll if the Untinker tells you where it is.

Revision: 8781
Server-side change to mines: the "alt" text no longer tags each square with the
"which" number (from 0 to 47), but istead by (column, row).
Replace "promising square" images with Bale's modified fast track sparkles,
rather than orange Dig signs.

Revision: 8782
Remove The Smile of Mr. A from the list of permable skills
Recognize the message when an Angel Hair Wisp is summoned.
Move parsing of campground accoutrements like the garden out of parseDwelling
and into parseCampground.
Default for visiting the Baron is now "skip" rather than "manual control"
Consumption info for decanter of fine scotch.

Revision: 8783
Add combat stats for Brawl monsters.
Change EquipmentManager.can_equip() (and thus the ASH can_equip() function) to
check whether current familiar can wear familiar item.
Change CLI equip command to give special messages if equipping familiar item
and you either have no familiar or the current familiar can't wear it

Revision: 8784
CLI/ASH "wait" command/function not prints countdown as before. waitq does not

Revision: 8785
When setting up relay request for use by a relay override script, clone the
URL correctly: allow for requests submitted by either GET or POST, and
recognize that the arguments are already URL encoded.

Revision: 8786
Rejigger pumpkin detection

Revision: 8787
Support for Ginormous Pumpkin as a dwelling:
- recognize it in campground and save as dwelling
- do not store dwellings in campground map.
- add get_dwelling() ASH function to get current dwelling

Revision: 8788
When considering modifiers, skip ginormous pumpkin growing in garden and include
any type of dwelling

Revision: 8789
get_dwelling() returns $item[ big rock] if you have no dwelling.

Revision: 8790
Fix item drop for guard bugbear

Revision: 8791
The "abort" action in combat is not a skill

Revision: 8792
When calculating values to bind to parameters in a function call, we need a
fresh array for each invocation, rather than reusing the same one.
The current dwelling is never null.

Revision: 8793
Add ASH function: string char_at( string source, int index );

Revision: 8794
Remove extra space in Spade Alert message as per Threaze @ kolmafia.us

Revision: 8795
Add Theraze's Major Monster Update. She had better be right.

Revision: 8796
Fix missing right parentheses in monsters.txt

Revision: 8797
Bug fixed in code.
Day 1 Advent 2010 items.

Revision: 8798
Added Screambat to the 3 zones where it can be encountered.

Revision: 8799
Initial support for Robot Reindeer

Revision: 8800
Initial support for Elf Alley

Revision: 8801
Add a few Elf Alley drops. Elf Hobo.

Revision: 8802
Actually add the drops to the Elf Hobo

Revision: 8803
Handle Cage Choice adventures better - Threaze @ kolmafia.us
Fixed bindlestocking typo that prevented login

Revision: 8804
Let's call it a Hobelf, just ike KoL.
Add some of the Uncle Hobo loot.
Add the new skills from the new skill books.

Revision: 8805
waitq will now respond to Abort - Threaze @ kolmafia.us

Revision: 8806
Uncle Hobo choice adventure.
The rest of Uncle Hobo's item drops

Revision: 8807
Uncle Hobo's beard, gloves, and belt are all single equip

Revision: 8808
Correct item number for holly-flavored Hob-O
Added autosell amount to candy skeleton

Revision: 8809
Activate "up" command and char pane arrows for summoned demons.
(This is only useful when you've rolled the effect from a previous day)

Revision: 8810
Updated some crimboco fullness data

Revision: 8811
Added Hippo Ballerina throne modifier (thanks Theraze)

Revision: 8812
Added Outside the Club monster stats.

Revision: 8813
Updated pulverize.txt to remove starting hats from the useless powder setting.
Added nosmash to 2 more anniversary items.

Revision: 8814
Update _sealsSummoned to the possible max if you've summoned too many infernal seals today.

Revision: 8815
Set _cameraUsed to true when you use a shaking 4-d camera. Previuosly, this was only set when the use action failed.

Revision: 8816
Set spookyPuttyCopiesMade to 5 if you're too scared to copy any more monsters today.

Revision: 8817
Recognize Uncle Hobo and stop when you find him.

Revision: 8818
Fix variable modifiers for Tuesday's ruby and Uncle Hobo's epic beard

Revision: 8819
Adjust cli output for saving and equipping outfit to make it more copy-n-paste friendly.

Revision: 8820
Add flaregun drops to a couple pirates. Fix popsicle fullness

Revision: 8821
Uncle Hobo is in Elf Alley

Revision: 8822
Now that relay form fields are no longer being double-URLencoded, don't
double-decode them either - which made plus signs unusable in text fields.
Some changes to the modifier expression language:
* 'A' value added, which is your ascension count.
* Some other values added in support of possible expressions for scaling
monsters' stats, but these may require some more thought - please do not use
yet.
* Unary minus now works in general, not just for negative numeric literals.

Revision: 8823
sonar-in-a-biscuit is combat usable.
Add CRIMBCOOKIES
Extract Modifier.Expression into Expression, subclassed into ModifierExpression
and MonsterExpression. Modifiers and RuntimeLibrary now use ModifierExpression

Revision: 8824
Fix MonsterExpression. Add monster_eval( string ) and expression_eval( string )

Revision: 8825
Initial support for CRIMBCO cubicles:
- CRIMBCO Gift Shop is a Coinmaster that uses CRIMBCO scrip
- The CRIMBCO Cafe is open
- new items, outfit, concoctions, adventure zone, skills, etc.

Revision: 8826
Fix CRIMBCO Cafeteria

Revision: 8827
Add a second argument (optional) to chat_clan() to allow players to post in hobopolis or the slimetube. Usage is, for example, chat_clan( 'hobopolis' , 'message' );

Revision: 8828
Add covert Crimbo gifts.
glob of blank-out is made by "using" bottle of blank-out
Your inventory of CRIMBCO scrip displayed in gift shop can have commas

Revision: 8829
Switch chat_clan() arguments around

Revision: 8830
Do not look for the combat item dropdown after a fight is over; if you run with
the WOWbar, it will be present, but invisible, and we will inappropriately
adjust combat item count for such items that drop in the last round.

Revision: 8831
Add BGE Merchandise

Revision: 8832
Add Holiday Log

Revision: 8833
Avoid NPE for unknown item names

Revision: 8834
bath ball gift sets and slow jam collections are multi-usable.

Revision: 8835
Added some plurals.

Revision: 8836
fix some plurals

Revision: 8837
Recognize Ed's first form as "Ed the Undying (1)", for compatibility with the
data in monsters.txt.

Revision: 8838
Add CRIMBCO cubicles monster

Revision: 8839
Add Best Game Ever

Revision: 8840
Refresh concoctions at most once per page load, rather than once per item
dropped that is consumable or an ingredient in some recipe. This gives a
significant speed-up when summoning large numbers of BRICKOs, for example.

Revision: 8841
Disable the change in Revision 8840 until I can figure out why it's hanging login for
some people.

Revision: 8842
Added an option "clear" to the checkpoint CLI command for clearing all checkpoints (implicit and explicit).

Revision: 8843
Add some articles and posessives to cubicle monsters.
Add tiny plastic CRIMBCO HQ
Add Sausage Festive and Stands Alone

Revision: 8844
Do not take an NPE reading messages from Mr. Mination.
Add tiny plastic fax machine.
CRIMBCO mug and BGE shotglass are drink helpers

Revision: 8845
Do not deduct Workytime tea from inventory if you are not bored enough

Revision: 8846
Add tiny plastic hobo elf.
CRIMBCO WC is an adventuring location
Fix how CRIMBCO drink helers are rendered
Remove redundant test in conditional
Add bath balls
Add Endless Conference Call
Add jams and new toast recipes

Revision: 8847
tiny plastic Mr. Mination

Revision: 8848
Add the code binder being equipped to the list of things that Hobopolis sewer
tunnel preparedness checks for.

Revision: 8849
Hobelf in Elf Alley differs from Hobelf in CRIMBCO WC

Revision: 8850
Add scissors duck and iny plastic Best Game Ever.
Very preliminary support for Faxbot:
- The FaxBotDatabase reads the FaxBot XML file containing all available faxes
categories, and commands
- People/Request a Fax creates the FaxRequestFrame
- The FaxRequestFrame displays all available monsters. You can look at them by
category, or all monsters alphabetically. You can check whether FaxBot is
online.
The "request" button does NOTHING, yet. Hopefully, this is still useful as a
reference for what command to send to get what monster.

Revision: 8851
Add stapler bear and adhesive tape dolly.
This completes the Crimbo 2010 support that I will be adding. See you in 2011.

Revision: 8852
Reinstate concoction refresh speedup from Revision 8840 - it should no longer hang.
If milk of magnesium usage is limited, give the actual reason rather than the
generic "a wizard did it".

Revision: 8853
Add slyz's fax machine & photocopied monster support. Untested (by me).

Revision: 8854
Added spangly sombrero Hatrack effects.
Added The HeyDezebound Heart modifiers.

Revision: 8855
Print monster name when you receive a fax

Revision: 8856
Add a status label to the Fax Request Frame.

Revision: 8857
Employee of the Month

Revision: 8858
(Speculatively) add Pork Power, Incensed, Chocolate Reign

Revision: 8859
Avoid debug logs when attempting to mallsell an ambiguous item, or one that
you simply don't have any of. Note that selling zero of an item remains an
error, but it's one you can recover from now.

Revision: 8860
On Fax Request Frame, do some preliminary verification before asking FaxBot to
send you a fax:
- You must not already have a photocopied monster
- You must have a VIP key
- You must be in a clan
- Your clan must have a fax machine.

Revision: 8861
(Almost) finish FaxBot support:
- Actually send the request to FaxBot and wait for response
- Bad commands (unexpected) and non-whitelisting are failures
- If FaxBot copies the monster into your fax, receive it.
You have to be in chat for us to successfully receive the response. I know how
to check if you are in KoLmafia chat, but not how to check if you are in chat
in the Relay Browser, so we don't enforce this, yet

Revision: 8862
Check if you have a photocopied monster already as the last step of validation
before sending a request to FaxBot. If so, pop up a confirm dialog asking if you
wish to discard it. If so, dump it immediately into your fax machine.
Detect when FaxBot rejects your fax request because it's recently sent another
fax to your clan. FaxBot requests that you try again in a minute, so, do so:
count down for a minute and retry.

Revision: 8863
Harpoon! is now as usable on land as it is underwater.
Added basic support for the tooth-dependent enchantments of the fossilized
necklace. For now, you must manually view the item description to get the
modifiers to update - but you were probably doing that after collecting
teeth, anyway.
Consequences now replace unmatched groups in the regex with empty strings,
rather than crashing with a NPE. Using this would have made the necklace
support much simpler, but would have caused problems for people that updated
the data files only.

Revision: 8864
Revert (s1) as indicating unknown item drop rate in monsters.txt; (0) works
perfectly well to indicate that and was already recognized by scripts.

Revision: 8865
When entoothing your fossilized necklace, the word "necklace" is now a link
to the item description, so you can immediately see the new tooth count (and
incidentally update mafia's modifiers for the necklace).

Revision: 8866
Fashionably Late gives +1 Adventure at rollover.

Revision: 8867
Fix adventure ranges of CRIMBCO Cafeteria offerings

Revision: 8868
Added basic stats for the six Bigg's Dig reanimated skeletons that add teeth
to the fossilized necklace.

Revision: 8869
The CRIMBO Cafetria is closed. Adventure dones in CRIMBO Headquarters are now
in "Removed". The CRIMBO Gift Shop is, for now, still open.

Revision: 8870
Initial support for Loathing Legion knife: equipment modifiers, use links,
tracking inventory upon folding, etc.

Revision: 8871
When automating a Fernswarthy's Basement stat or mpdrain test, and the
relevant outfit is either nonexistent or insufficient to pass the test, the
Modifier Maximizer is now invoked automatically. (The same isn't done for
element and hpdrain tests, because the Maximizer cannot currently express the
optimum balance between resistance and HP needed for those tests.)
Added some hidden prefs to fine-tune the mana burning process:
"skillBurnXXXX" (where XXXX is the skill number) sets the priority of this
skill: -100 or lower disables it for extension, numbers from -99 to 0 enable
it for extension up to (N+100)% of the burn limit, normally 1000+turns
remaining. The value is offset like this so that missing prefs read as 100%
by default. All previously hard-coded unextendable buffs (like combat rate
modifiers) now simply have a default skillBurnX of -100, so they can be
overridden if desired. Values greater than 0 are reserved for possible
future use to indicate that the skill should be auto-cast if there's nothing
else to spend burned MP on.
"lastChanceThreshold" is amount of unburned MP at which alternatives to
extending existing buffs will be considered, 100 by default. There is
currently one alternative implemented: "lastChanceBurn" will be executed as a
CLI command, with any instance of "#" replaced by the amount of MP that needs
to be used up somehow. This could be used to invoke a script that records AT
buffs, for example, or could simply be an "echo" or "abort" command that lets
you know you need to find something else to spend MP on.

Revision: 8872
Update some item data

Revision: 8873
Added a special case to the create vs. buy decision-making code: an on-hand
tiny plastic sword is valued at 0 meat, since you get it back from the drink.
This should avoid undesirable behavior if the historical price of the TPS is
ever greater than one of the items containing a TPS.
Added "debugBuy" boolean pref, which enables display of the calculated create
and buy prices during the decision-making process. This should help to track
down any future problems like the TPS one.

Revision: 8874
When processing a "too full" message as a result of eating food, reset the
amount of fullness we added when we submitted the request before calculating
what our real fullness must be.

Revision: 8875
Fix autocreation of the bad-ass belt and intragalactic rowboat, which were
broken by having concoction refreshes deferred during result processing
(which is where those special cases are detected.)

Revision: 8876
When you use a glob of Blank-Out in combat, only remove it from inventory if it
is actually used up.

Revision: 8877
Add modifer: Combat Mana Cost
Loathing Legion abacus is Combat Mana Cost: -5
Combat skills have mana cost additionally modified by Combat Mana Modifier
Add combat_mana_cost_modifier() ASH function

Revision: 8878
A sushi mat costs 100 sand dollars

Revision: 8879
Executive Narcolepsy gives you a free rest at your campground

Revision: 8880
More Executive Narcolepsy support. (TODO: Daily deeds support)

Revision: 8881
Account for Executive Narcolepsy in Daily Deeds "free rests" counter

Revision: 8882
Remove trailing space from description ID of Pie in the Sky

Revision: 8883
Add Loathing Legion knife and its derivatives to the "fold" command.

Revision: 8884
Fix typo in loathing legion electric knife.

Revision: 8885
Added a goal for the Frigid Northlands Garb to The Broodling Grounds location.

Revision: 8886
Handle inventory correctly when you use a Loathing Legion universal screwdriver
to unscrew things.

Revision: 8887
Daily Deeds panel changes:
Complete reorganization of buttons and info.
Removed _some_ buttons and trackers when they are inappropriate.
Reversed logic for still so it tracks usage.
Added support for Bag o' Tricks (_bagOTricksUsed added for tracking purposes).
Added tracking for bricko fights (_brickoFights added for tracking purposes).
Added tracking for organ grinder pies. (_pieDrops and _piePartsCount added for tracking purposes).
Added GAP runaway tracking. (_gapBuffs added for tracking purposes, thanks to lostcalpolydude for the code).
Updated support for telescope in bad moon aftercore.
Other changes:
Tracking of blank out usage (blankOutUsed preference added for tracking purposes).
Tracking of Zombo's empty eye usage (_lastZomboEye preference added for tracking purposes).
Adjusted crimbotree code to reduce logged messages.
Added shore link to forged documents, thanks to bale for the code.
Added GAP protection and cli command, thanks to lostcalpolydude for the code.

Revision: 8888
When folding Loathing Legion items, always include switch=1. Most of them don't
need that, but some - such as the universal screwdriver - won't fold without it.
Add A Wicked Buzz

Revision: 8889
AT Recordings are not lost if you already have too many AT buffs.

Revision: 8890
Add tracking support and usage limit for Lunch Break skill.
(boolean) _lunchBreak preference added for tracking purposes.
Cleaned up coding for vent rage gland skill.

Revision: 8891
The "equip" command now decides what slot an item is going into before deciding
whether you can equip it there. Do familiar checks for any item going into the
familiar slot, not just for familiar items.

Revision: 8892
Do not attempt to register (bogus) items with negative itemid. Print error.

Revision: 8893
When writing item overrides, skip - and log - items with id < 1

Revision: 8894
Fix fullness for wedge of gray cheese

Revision: 8895
Add autoCraft preference, defaults to true. If false, disables crafting of badass belt and intergalactic rowboat.

Revision: 8896
autoCraft Talisman o'nam and Bonerdago necklace

Revision: 8897
Add a bunch of changes that I culled from Theraze's full private patch file:
- Combine identical cases in a switch statement
- Fix tabification in a bunch of files
- Make a few formerly private symbols public
- Add hot tub as a possible HP restoration method
- Don't try to climb the Sorceress's tower in birdform
- Recognize the Baron's mansion in the tavern cellar
- When automating the cellar, include correct form fields. Unfortunately, it
still won't work right, since you can no longer choose a random square to
explore.
- jawbruiser is a curse item
- Fix HP, Def, and Atk for a variety of non-scaling monsters
- plural for the adhesive tape dolly

Revision: 8898
Add some arithmetic bitwise operators:
a & b --> and
a | b --> or
~a -> not
a << b -> left shift
a >> b -> right shift
a &= b --> a = a & b
a |= b --> a = a | b
In all of the above, the operands must be integers; no coercion is allowed.

Revision: 8899
Add more bitwise operators:
a >>> b --> unsigned right shift
a <<= b --> a = << b
a >>= b --> a = a >> b
a >>>= b -> a = >>> b

Revision: 8900
Add Traveling Trade Disco Bandit skill book - but not the skill, yet.

Revision: 8901
BGE temporary tattoo isn't consumed if you already have the tattoo.

Revision: 8902
The plural has been changed to: Autobiographies Of Dynamite Superman Jones

Revision: 8903
Add Kung Fu Hustler skill. Adjust effect numbers of three bath soap effects to
agree with Wiki - even though they are not in the "normal" order that all other
stat-based skill trios have. Untested.

Revision: 8904
Choice Spoilers for class-specific hookah components

Revision: 8905
The CRIMBCO Gift Shop is no longer available as a Coin Master

Revision: 8906
Create StatusPanel, a pancel containing nothing but a status label
Add such a panel to the Familiar Trainer so you can watch "equip all familiars"
Add code (disabled) to provide a Boss MCD warning for Baron von Ratsworth. It's
disabled because you cannot actually go change the MCD while sitting in
choice.php. What to do?

Revision: 8907
When parsing a fight, when we detect the WINWINWIN comment, log a message
indicating that you've wone the battle.

Revision: 8908
You get a snakehead charrm by "using" a gaudy key. Tweak won fight message.

Revision: 8909
Gaudy Pirate drops a gaudy key, not a snakehead charrm

Revision: 8910
fix recognition of fax command in ClanLoungeRequest.registerRequest

Revision: 8911
Add a filtering text box to the Fax Request Frame so that you can type "lob",
for example, and end up with "lobsterfrogman" selected.

Revision: 8912
Improve filtering of fax monster names

Revision: 8913
Added Uncle Crimbo's Sack

Revision: 8914
Add slyz's patch to only count chefTurnsUsed and bartenderTurnsUsed for
cratfting with "fancy" ingredients.

Revision: 8915
Add additional "special move" message for the pop-and-lock raver: came != come

Revision: 8916
Add arithmetic operator to ASH: a ** b is a to the power of b. a **= b is that
but also assigned the result to a.

Revision: 8917
Fix >= and <= comparisons working like ==

Revision: 8918
Add .gitignore

Revision: 8919
Update Foxtrot from 2005 to 2008 version to address some deadlock issues. In mafia code, changed void run() to Object run() and returned null as required to compile with new Foxtrot. Also change Runnable to Job.

Revision: 8920
When choosing a combo to test for the next "random rave", if there's only one
unknown combo, deduce what it has to be. Untested.

Revision: 8921
When we auto-identify the last rave combo, log it to gCLI, just as with bang
potions and stone spheres

Revision: 8922
Trim message in RuntimeLibrary chat_clan so as to avoid circumventing mafia limitations. Sorry to people who use it to access KoL's chat commands.

Revision: 8923
Corrected spelling for as jus gezund heit.

Revision: 8924
Move preferences to its own package

Revision: 8925
Rename ChangeListener to PreferenceListener and convert to top level class
Move listener registration to its own class

Revision: 8926
For consistency and simplicity, handle checkboxes as a type of listener rather than iterating over a special map

Revision: 8927
Formatting for build.xml

Revision: 8928
Even when in CLI mode, KoLmafia isn't necessarily running in a headless environment. Therefore, use explicit checks for the number of available frames or the presence of the KoLDesktop frame rather than doing a check on the mode being used. This should also address any problems running CLI commands that load user interface windows.

Revision: 8929
Fixes for Java 1.4 compilation errors

Revision: 8930
Remove KoLmafia's automatic activation of auto-attack, except in the case of entangling noodles.

Revision: 8931
Update isChatRequest member variable to include chat.php in the list of known chat URLs.
Change URL check in shouldIgnore() to just use the isChatRequest member variable.

Revision: 8932
Enable chat commands via CLI and ASH.
In the CLI, simply prefix your command with / and KoLmafia will send that off as a chat message. In ASH, use the newly-added chat_command(string) function containing all the information about your macro.
Rather than coding a list of things that should be accepted, instead, it will work like an honor system. KoLmafia will continue allowing you to use scripted chat commands until you send something which results in the chat parser believing that you said something in a non-clan channel. Should this happen, all future chat macros (and chat messages, for that matter) executed through script will fail to execute.
Additionally, now that the logic is there, switch from using skill-detecting auto attack logic to chat command based auto attack logic by just submitting /aa to chat instead.

Revision: 8933
Fix if check to only logout if no frames are left, rather than only logging out if there are frames left

Revision: 8934
Run javahome task to always set compiler to modern even if JAVA_HOME environment variable is not set

Revision: 8935
Just as we do for Warm Subject gift certificates, if you ask to multi-use
31337 scrolls and have not used one before, recognize that the first one is
special and issue an additional request to use the remaining ones.

Revision: 8936
On login, check to see if chat is available using the third page of the quest log, and do not issue requests to chat if chat is not available.
Allow 'disable' in addition to 'none' for disabling auto attack without using the chat macro.
Print a message indicating when auto attack is disabled to see if KoLmafia is unintentionally disabling auto-attack.

Revision: 8937
Do not remove auto attack for moxie classes that have autoSteal set to true (it's possible they have a combat macro set to do it and forgot about the preference).
If auto entangle preference indicates that entangling noodles should not be the default auto attack, remove the auto attack since KoLmafia is probably the one that set it.

Revision: 8938
Auto attacks do not need to be reset for tower fights and shadow fight.

Revision: 8939
Add last_item_message and last_skill_message to return the messages that KoLmafia reports in the event of error (these return an empty string in the event that the last skill/item use succeeded).

Revision: 8940
Fix three-argument version of visit_url to actually obey the 2nd and 3rd
arguments when called from a relay override script.
Add new ASH function:
string make_url( string location, string use_post_method, string encoded )
which takes the same arguments as visit_url but just crafts and returns the
url without submitting it.

Revision: 8941
Don't autocraft if we are already in the middle of autocrafting

Revision: 8942
ash function get_TG() returns current local time in HH:mm:ss z format, for example 17:32:20 EST

Revision: 8943
Initial support for Pandamonium: new items, new adventure zones, new NPCs to
visit.
Note: visiting NPCs can result in losing items from inventory. This is not
detected yet.

Revision: 8944
Rename get_TG to time_to_string().
Add a new method now_to_string(string) where the provided parameter is treated as a SimpleDateFormat format (see the Java API documentation for more details).
In summary, we now have today_to_string() which returns today's date, time_to_string() which returns the time right now, and now_to_string() which returns however you want to describe 'now'.

Revision: 8945
More Pandamonium updates

Revision: 8946
Handle item loss when visiting various NPCs in Pandamonium

Revision: 8947
Add in hacky support for ternary expressions

Revision: 8948
Add (speculative) Kung Foo intrinsic effects.
Add "panda" command to visit NPCs in Pandamonium
panda moan - visit Moaning Panda Park
panda temple - visit Azazel's Temple
panda comedy (insult|observational|prop) - attempt a form of comedy on Mourn
panda arena [bandmember] [item ] - attempt to give item to bandmember
bandmember can be either a name - Bognort, Stinkface, Flargwurm, Jim - or a
role in the band - guitarist, vocalist, bassist, drummer.

Revision: 8949
& and | are tokenChars. Sheesh.

Revision: 8950
? is also a tokenChar

Revision: 8951
Noob Cave badmoon adventure gives 14 drunkeness now

Revision: 8952
The ASH operator "^" is now a bitwise exclusive or, not pow()
Add ^= assignment. a ^= b is equivalent to a = a ^ b

Revision: 8953
Add conditional and no-pickpocket flags to sea monsters, courtesy of Winterbay

Revision: 8954
Add two parameter version of maximize CLI command and four parameter version of the internal maximize routine as ASH functions.
In the two parameter version, the first parameter is the maximizer string and the second parameter is true if you need the equivalent of the maximize? command.
In the four parameter version, there are two integers that have something to do with price. However, I don't know anything about modifier maximizer other than its return values, so you'll have to poke someone else to explain it to you. Or you can just pass zero for both integer values, which is what the two parameter version does.

Revision: 8955
Fix compilation error (haha).
Override _spec modifiers with the modifiers from the best guess made by modifier maximizer.

Revision: 8956
If the chatbot script accepts three parameters, automatically pass all messages coming from /clan to that chatbot script.
When invoking the three parameter version, KoLmafia will specify "/clan" as the third parameter for clan messages and the empty string for the third parameter for private messages.

Revision: 8957
Update the internal maximize function so that it has no return value, because it doesn't seem to mean anything useful (and it was only used by the CLI command anyway).
Try returning the status of the best result (which is used in the printout) rather than rely on the old strange return value for the internal maximize() function.

Revision: 8958
Make string comparisons case insensitive in internal value compares used in implementing things like switch, just as we do in ASH comparison operators.

Revision: 8959
Add who_clan(). Returns usernames of people in clan chat channel.

Revision: 8960
who_clan() now returns a map following the format boolean [string]. True for in channel, false for just listening. String is player name.

Revision: 8961
Make it easier to retrieve the internal parsed messages from chat.

Revision: 8962
Cache data files loaded from disk by file_to_map and map_to_file to avoid re-reading them from disk unnecessarily

Revision: 8963
Retain old behavior of not touching auto-attack if the user has their combat action set to a CCS.

Revision: 8964
Convert set to a map, similar to what the ASH function who_clan uses.
Update contact parsing to use simpler who_clan logic and to display colorized entries, with those in channel colored with black and those listening in gray.

Revision: 8965
Add new chat command to KoLmafia: /trivia
Typing /trivia into chat re-introduces the old KoLmafia feature of combining all PMs into one tab and (in case you aren't actually using KoLmafia chat, and also to make it easier to bulk-send items or buffs to winners) opens up KoLmafia's pop up a contact list window specific to trivia games. All PMs will be redirected to the one tab (which will be [trivia#] where # is an internal ID used to track each use of the /trivia command) and all people who send you a message will be listed in the contact list window in order of PM receipt.
In order to start a new game, simply typing /trivia again. In order to disable this feature and return to normal "each PM opens a new tab" behavior, type in /endtrivia or /stoptrivia.

Revision: 8966
It turns out that autoEntangle was only meant to mean "automatically add entangling noodles when macrofying non-CCS combat" and not "make sure I remember to auto-cast entangling noodles" (which is what I thought it meant), so removing auto-attack changing from KoLmafia since that was really all that was left.

Revision: 8967
Switch to using AJAX version of auto-attack update when removing auto attack via CLI command.
Avoid a server hit if KoLmafia already thinks your auto-attack is disabled.

Revision: 8968
It turns out that the chat command just sends a request to the AJAX version of the URL, so don't bother sending a chat request for things that KoLmafia recognizes.

Revision: 8969
Fix typo causing auto attack to be removed if KoLmafia recognized the skill name in the auto attack command

Revision: 8970
Since it's no longer a property in KoLmafia, expose the current auto attack settings as get_auto_attack() and set_auto_attack() so that users can check/reset the auto attack (if they want to have the old entangling noodles behavior, for example).
While it returns a string, I believe that most (if not all) of the time it's an integer value. If it is disabled, it will actually return "0" and if it is set to attack, it will actually return "1". For non-macros, it will return the skillId as a string, and I'm not sure what it returns for macros.
If it turns out that it's always an integer value, this method signature will be changed to always return an integer. Just let me know on the kolmafia.us forums.

Revision: 8971
Reduce ASH number consing: arithmetic generating integer 0 and 1 and float 0.0
should always use the built-in preallocated constants for those numbers rather
than allocating a new copy.
Logical operators ~ & | and ^ now work with booleans as well as with integers.

Revision: 8972
Remove goto and function menus from mini-browser.
Append KoLmafia bookmarks to the end of the goto menu rather than completely replace it so that new zones/areas that are added do not have to be maintained.

Revision: 8973
Limit function menu customizations to only splitting the inventory into four options (consumables, equipment, misc, autosell).

Revision: 8974
Only autoCraft Talisman o'Nam when second snakehead charrrm appears in inventory

Revision: 8975
Don't delete build folder to allow it to be symlinked to a shared memory folder for faster compiles.
Also don't delete dist folder to allow you to run everything from that directory without having to copy KoLmafia to another location. Mainly affects people who use Windows where the KoLmafia settings folder is in the same folder as the JAR.

Revision: 8976
Change internal representation of auto attack to an integer

Revision: 8977
Only call svnversion if there's a .svn folder available

Revision: 8978
Fix reading of cached data files containing special characters using the operating system file encoding rather than UTF-8.

Revision: 8979
Refactor fight parsing so that the Fight HTML can be parsed and logged without
actually being processed as a fight.
Update "test" command to allow loading and processing saved HTML from a fight
> test load [filename]
> test fight
[filename] must be in the KoLmafia data directory

Revision: 8980
Since you now get the Spooky Sapling in the middle of a choice adventure chain,
it is pointless to put a "use map" link on it to use the Spooky Temple map

Revision: 8981
Fix scoping for version number

Revision: 8982
Add radio button group to Gear Changer to allow filtering off-hand items:
All, Melee Weapon, Ranged Weapon, Shield, Other

Revision: 8983
Replace melee and ranged radio buttons for off-hand items in Gear Changer with a
single "weapon" button; since the weapon in your off-hand has to agree with the
type of weapon in the main-hand, it is pointless to show the other type.

Revision: 8984
When you visit the Tavern Cellar, parse the map and update the tavernCellar
setting with the current state of the cellar.
Fix the Tavern Quest solver to look at squares in a known-to-work path
rather than randomly. Untested.

Revision: 8985
Give user manual control of fight sequences that occur as the user is logging in. Refresh session after the fight-on-login completes.

Revision: 8986
Add festive sausage and holiday cheese log to fullness.txt so that they appear as food options in Item Manager.

Revision: 8987
When you read a file with file_to_map, read it with UTF-8 encoding the first
time also, not just when reading the cached version.

Revision: 8988
Add additional locations to compact topmenu Goto menu. Do this by appending to
the list of KoL supplied destinations, rather than by replacing the menu
wholesale.

Revision: 8989
Add The Sea as a destination in the Go To menu in compact topmenu mode.
Do not add destinations to that menu if KoL itself happens to have a destination
with the same name.

Revision: 8990
When the Bugged Baby Bugbear "wins" a bugged beanie, do not register the three
fake lead necklaces too.

Revision: 8991
version_number++

Revision: 8992
Fix Sell Stuff menu item in mafiatized Function menu

Revision: 8993
If you change outfits and cannot put on all the pieces, we did not detect this.
We now detect it and give an error: You only put on part of that outfit.
If you try to put on an outfit in which you are already wearing as much as you
can, but cannot wear all the pieces, you get another error which we formerly
logged, complete with HTML table, generating a very very long line in the CLI.
We now give an error: You're already wearing as much of that outfit as you can.

Revision: 8994
Adjust with of Monster category in Fax Request Frame.
Allow run_combat to finish combat even when the CCS has a consult script which
didn't finish the combat.

Revision: 8995
Update mafia license in licenses/

Revision: 8996
Allow '**' for exponentiation in modifier expressions in addition to '^', for
compatibility with ASH. I haven't bothered changing any existing expressions
in modifiers.txt, as there should never be any need for a XOR operation in
this float-only context.

Revision: 8997
Preliminary support for IOTM: familiar larva, familiar item, dropped arrows,
familiar and arena parameters.

Revision: 8998
Add Obtuse Angel combat skills. Add counters to track daily usage of them:
_badlyRomanticArrows, _boxingGloveArrows, _FingertrapArrows, _poisonArrows
Skip such skills in a CCS if you've used your daily allotment or have the wrong
familiar active.
Add setting to remember last target of badly romantic arrow: romanticTarget

Revision: 8999
Fix some inebriety and fullness data. Update mall prices.

Revision: 9000
Bump version to 14.4
 

Bale

Minion
Congratulations. You've been awesome this last week. Hola's been pretty awesome also.

It's amazing to think that after this KoLmafia will be over 9000!
 

Bale

Minion
Oh hell. I congratulated you too soon. A mere 7 hours after this release I see that KoL has made an update that breaks some parts of net.sourceforge.kolmafia.preferences.Preferences.
 

Theraze

Active member
Also breaking BadMoon detection and a variety of other sadness things. Ah well, it's all tied together.
 
Top