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: 17702
Maintain a set of disabled storeIds that you've discovered by actually trying to purchase
from them. They are valid until you restart KoLmafia (i.e., they are not stored in a
setting). Such stores will no longer show up in mall search results.

Revision: 17703
Don't skip updating probably-valid mall prices after encountering an invalid entry

Revision: 17704
ny store which is either isabled or has ignored you is marked "unavailable" for the rest
of the current session: it will no longer appear in mall searches, and attempts to buy from
it will immediately fail. When a store is initially so-marked, it is removed from all saved
mall searches and the current mall price of said purchases will be recalculated as if it
had not appeared in the initial search.

Revision: 17705
Attempting to travel to the Hole in the Sky without the steam-powered model rocketship
results in an adventure failure. MallPurchaseRequest now keeps two sets of unavailable
stores: those which are ignoring you, and those which are disabled. Clear the former when
you log in a new character, since the second character may not be ignored, but keep the
latter until you exit KoLmafia; disabled for one is disabled for all.

Revision: 17706
When using map_to_file(), allow writing to subfolders of /data

Revision: 17707
Allow reading/writing to KoLmafia's root directory for existing files (as before), but not subdirectories of it, except for data/scripts/relay

Revision: 17708
Whackage on the Daily Deeds panel: we don't need to stinkin' Object types when we are
dealing with Strings. Change the Hatter daily deed to not reallocate its lists when your
state changes; clear and rebuild the same list.

Revision: 17709
get rid of explicit Iterators when dealing with hats in the rabbit hole

Revision: 17710
The Daily Deeds panel shows your avatar. Add a listener which fires when we detect a
change in your avatar and updates that image. We can only detect such a change in
charsheet.php or charpane.php; not in api.php, unfortunately.

Revision: 17711
Refactor "pull all" code in StorageRequest to allow GenericRequest to call it directly
on a 504 error, rather than duplicating (some of) the actions

Revision: 17712
Correctly update oilPeakProgress on systems that do not use . as a decimal separator. Thanks to gulaschkanone.

Revision: 17713
Fix a typo

Revision: 17714
Only increment spleen for Sweet Synthesis if we successfully acquire an effect

Revision: 17715
When ascenting, read the 64735 scroll, not the 31337 scroll

Revision: 17716
When you say to harvest "none" in breakfast, don't try to create an Item named "none"

Revision: 17717
Anchor the "Effect Duration" modifier so it doesn't also match "Rollover Effect Duration".
Making a synchronized list in the Hatter Daily Deed doesn't solve anything.

Revision: 17718
Wax consumable spading

Revision: 17719
Any class can now use an aerogel accordion

Revision: 17720
Emptying storage via the Relay Browser goes through inventory.php

Revision: 17721
Don't run breakfast if in a (temporary) limitmode. Hermit is in Mountain zone, not Woods.
Courtesy of Ryo_Sangnoir, collect sea jelly (if capable and available) at breakfast

Revision: 17722
Don't automate the choice when collecting sea jelly during breakfast. Even so, make
collecting jelly be the default for that choice adventure.

Revision: 17723
Experimental: add "redo free adventures" checkbox on AdventureSelectPanel which controls
whether adventure requests which do not consume a turn count as a "turn". This affects the
GUI only: the adventure CLI command and adventure() ASH function always don't count
free adventures as an iteration, while the adv1 ASH function always counts them as a turn

Revision: 17724
Put back "wasAdventuring" stuff in KoLmafia.makeRequest, since it can be called recursively
via a user script calling "adventure".

Revision: 17725
ASH item names that start with [XXXX] cannot be ambiguous

Revision: 17726
Name change

Revision: 17727
When an automated request redirects to a fight or choice, it will be handled in
FightRequest.INSTANCE or ChoiceManager.INSTANCE, leaving a redirect and empty response
text in the original request. Don't look for quest changes based on location in such cases

Revision: 17728
Allow choice configuration for the four hidden shrines for gaining blessing and skipping

Revision: 17729
Track spooky jelly charges

Revision: 17730
Don't check for eldritch (and Twitch tower) stuff when looking at town sub-areas

Revision: 17731
Eldritch Scanner. Speakeasy moved to second floor of Lounge.

Revision: 17732
Refactor create of ShrineComboBoxes. Consider harvesting garden at breakfast if you are
NOT in Numclear Autumn, not if you ARE in Nuclear Autumn

Revision: 17733
Don't rewrite URL for otherimages/zonefont to go through KoLmafia's image cache.

Revision: 17734
When you retrieve your store log, the responseText does not contain your store's inventory

Revision: 17735
Since some items don't show up in standard.php unless you use a date of January 2 to check, always do that

Revision: 17736
When entering Standard restrictions, recheck standard.php since Bookshelf Books and Clan Items become visible

Revision: 17737
Ghost Dog Chow is multiusable. When loggin BRICK and seal figurine fights to session log,
only log the second "use" - the one with checked=1 in the URL.

Revision: 17738
eldritch alignment spray

Revision: 17739
When we read the equipment array infrom api.php, use switchEquipment rather than
setEquipment to update our model, which will shuffle between equipped and inventory as
needed. Since we don't actually expect KoLmafia's model to differ from KoL's model,
log every slot where is a difference.

Revision: 17740
Rapid Prototyping is out of Standard. When caclulating free crafting turns available, we
need to consider whether that skill is unrestricted for you currently.

Revision: 17741
eldritch alignment spray is now multiusable

Revision: 17742
When swapping outfits with ajax=1, always followup up with api.php?what=status, to make
sure we've put all items into the correct slots.

Revision: 17743
Ice house doesn't banish things under Standard restrictions

Revision: 17744
Sort usables and creatables before updating filters on them.

Revision: 17745
Check the Floundry

Revision: 17746
Plural, name change

Revision: 17747
Emit some kind of message for previously swallowed exceptions. Not well tested. May help in debugging start up problems.

Revision: 17748
Just before we run a user's kingLiberatedScript, check to see if you have a Florist Friar

Revision: 17749
General Store no longer has eldritch alignment spray

Revision: 17750
Allow the "reprice" gCLI command to reprice an unpriced item in your store even if the current mall price is mall minimum, by using "reprice min"

Revision: 17751
Apparently a longer wait is now needed after KoL times out when trying to pull all

Revision: 17752
Eldritch Hammer

Revision: 17753
Fix powers for various Standard 2017 rewards. Trying to go to castle top floor before
opening ground floor is an adventure failure. Whack liberateKing such that no requests
are made for restricted avatar paths.

Revision: 17754
heart-shaped crate

Revision: 17755
heart-shaped crate is a free pull

Revision: 17756
Remove erroneous duplicated item in modifiers.txt. Mea culpa.

Revision: 17757
Sssshhsssblllrrggghsssssggggrrgglsssshhssslblgl. An Eldritch Horror adventuring zone.
Feeling Insignificant status effect.

Revision: 17758
More Tunnel of L.O.V.E. stuff

Revision: 17759
Fix setting URL for fighting An Eldritch Horror. Don't log all the damage done by fellow
battlers. Do log the initial and final message of your own fight.

Revision: 17760
fix a couple of powers

Revision: 17761
eldritch mushroom

Revision: 17762
Avoid NPE setting icon in compact side pane when you put familiar back in terrarium

Revision: 17763
eldritch ichor

Revision: 17764
fix power

Revision: 17765
eldritch ichor is now multiusable

Revision: 17766
More eldritch stuff: items, effect, skill, concoctions

Revision: 17767
Evoke Eldritch Horror uses a turn

Revision: 17768
depleted eldritch tincture. frequent wiggles

Revision: 17769
rename a method

Revision: 17770
a few calculators

Revision: 17771
Another calculator

Revision: 17772
old school stuff. eldritch mushroom pizza. Invalidate all saved mall prices from a
disabled mall store Plural.

Revision: 17773
Uses remaining of Sweet Synthesis in Maximizer = Spleen remaining.

Revision: 17774
LOV monsters seem to be Scale: 5. Log ichor tossing and deduct from inventory.

Revision: 17775
Another calculator

Revision: 17776

Revision: 17777
Epic whompage

Revision: 17778
Add loveTunnelAvailable

Revision: 17779
If you get access to LT&T or LOVE Tunnel using a 1 day pass, recognize when you no longer have access

Revision: 17780
One-day pass

Revision: 17781
more LOV items and effects

Revision: 17782
Fix recognition of filling a Jick jar

Revision: 17783
When parsing typed plural constants in ASH, allow \, to insert a , into a value

Revision: 17784
When single or multiusing items to create other items, only remove ingredients if crafting succeeds

Revision: 17785
Remove debugging code

Revision: 17786
ASH now allows an assignment to be a value, allowing things like the following:
int index; if ( ( index = index_of( "abc,def", "," ) ) != -1 ) ...

Revision: 17787
lump of not really wriggling eldritch matter. UseSkillRequest can redirect to a fight

Revision: 17788
Use checkSkillRedirect to recognize & handle skills that redirect to a fight.

Revision: 17789
Attempt to log prompt word and log entry at L.O.V. Exit.

Revision: 17790
When creating multiple SUSE items with a single call to inv_use, must remove consumed
ingredients for all of the items, not just one.

Revision: 17791
Plural of LOV Entrance Pass is LOV Entrance Passes

Revision: 17792
Another calculator

Revision: 17793
Track LOV Extraterrestrial Chocolate uses in _loveChocolatesUsed

Revision: 17794
When returning to a previously-visited clan, do not recheck the lounge and rumpus room

Revision: 17795
Fix ConcurrentModificationException when using rumpus room equipment during breakfast

Revision: 17796
Drop rate for tattered scrap of paper changed to 20%

Revision: 17797
Use chroner trigger before chroner cross during breakfast

Revision: 17798
Big Book of Communism (and used) and Hjodor's Guide (used) grant skills.
In Breakfast, pull up to 11 School of Hard Knowcks Diplomas from storage before using.
Also remove items from closet before using.

Revision: 17799
Tweaks and comments for breakfast toys

Revision: 17800
Remove ingredients when creating an item with a MUSE recipe

Revision: 17801
Do the same for SUSE recipes

Revision: 17802
Track LOV Enamorang wandering monster

Revision: 17803
Don't try to look at the Clan Floundry if there isn't one in the VIP lounge

Revision: 17804
LOV Elixirs are multiusable

Revision: 17805
Add _loveTunnelUsed

Revision: 17806
ASH restore_hp() and restore_mp() functions now set isRecoveryActive and save/restore your
equipment across call to internal functions, mirroring behavior of the CLI "restore"
command, and preventing infinite restoration loops from equipping items which lower your
maximum MP.

Revision: 17807
Lightly tested, initial support for Gelatinous Noob.

Revision: 17808
That's a lot of passive skills! Gelatinous Noob skills, no item bonuses in Noobcore. Two new modifiers, Absorb Adventures and Absorb Stats.

Revision: 17809
Set _noobSkillCount based on items absorbed today. Fix noobDeferredPoints increment to 5 when using Gummi-Memory.

Revision: 17810
Fix _noobSkillCount parsing

Revision: 17811
Log absorbing items, remove pesky debug code.

Revision: 17812
Start of Gelatinous Noob quest tracking.

Revision: 17813
In Noobcore, cannot Eat, Drink or Spleen.

Revision: 17814
Don't throw an exception when parsing malformed CCS file

Revision: 17815
Don't try to load gummy memory inline. Fix incrementing of noobDeferredPoints when using one.

Revision: 17816
Add ash item proxy record noob_skill, returns the skill you'll get from absorbing an item.

Revision: 17817
Lightly tested, added CLI command "absorb <item>"

Revision: 17818
Use ajax for absorb command

Revision: 17819
Add ASH function to interface to KoL's /count chat command:
int slash_count( item it )

Revision: 17820
So, it appears you CAN absorb gift items!

Revision: 17821
POST doesn't work for absorbing

Revision: 17822
Fix Pathological Greed, thanks Bale.

Revision: 17823
Allow outfit switching during mood execution, even if during "recovery".
absorb command will create items before retrieveing them, if needed.
Use KoLmafia-standard file encoding & line breaks.

Revision: 17824
Small step forward ?
Equipment doesn't give noob skills, Only numeric modifiers blocked on items? (Other than surgeonosity, which was coded that way to allow maximizing it). Sell price doesn't matter in granting noob skills. Untradeables can give noob skills if gift items.

Revision: 17825
A bit more Gelatinous Noob quest tracking.

Revision: 17826
You CAN get Noob skills from Familiar Items.

Revision: 17827
Increment _noobSkillPoints when absorbing equipment

Revision: 17828
Maybe reduce Cyrpt evil when wearing a gravy boat

Revision: 17829
Fix Gluteus Maximu

Revision: 17830

Revision: 17831
Look at both floors of the clan lounge when you visit a clan for the first time

Revision: 17832
Initial parsing of absorbed equipment modifiers from charpane. Results are not used yet.

Revision: 17833
Reset stuff when freeing the king at the end of a Gelatinous Noob ascension

Revision: 17834
Log choice when ending a Gelatinous Noob ascension

Revision: 17835
Some more council text, fix status effect

Revision: 17836
Untested - Allow absorb command to be used on equipment.

Revision: 17837
Some more Council text in Noobcore

Revision: 17838
Gift Store item availability depends on number of ascensions and holidays.

Revision: 17839
Hopefully handle item bonuses better in (and after) Noobcore. Only surpress the modifiers when worn and for Maximizer, not for ash queries and inspection.

Revision: 17840
Add $ proxy field to get the raw KoL data name for an item

Revision: 17841
Another try at reducing Cyrpt evil when wearing a gravy boat

Revision: 17842
With Audience Engagement ON, Nasty Bears have different stats.

Revision: 17843
A couple more quest tracking steps

Revision: 17844
Add absorbed enchantment's into Mafia's character status.

Revision: 17845
Add absorb parsing and display, and my_absorbs() ash function.

Revision: 17846
Parse regeneration from Enchantments Absorbed

Revision: 17847
Stop including absorbed modifiers after leaving Gelatinous Noob

Revision: 17848
Handle multiple of same enchantment absorbed.

Revision: 17849
Untested. Update character modifiers and side pane after absorbing an item. Deprecate _noobSkillCount, use my_absorbs() instead in scripts. Allow absorbing non Standard items if in inventory.

Revision: 17850
In Noobcore, use character pane requests rather than API requests, as absorbs and enchantments don't exist in API.

Revision: 17851
Rest of the council quest tracking (assuming medal text is the same defeating Frats).

Revision: 17852
Fix (at least til Jick replaces JICK) Ascension History Request for Noobcore.

Revision: 17853
A shortened semi-rare window only applies in Oxygenarian runs (probably), not in other paths that happen to have no stomach or liver

Revision: 17854
Update absorb info after using the absorb command

Revision: 17855
Fix absorb exception typo.

Revision: 17856
Maximizer will suggest appropriate skill absorbs in Noobcore. Refactor ItemDatabase.isEquipment so that it works before EquipmentDatabase.isEquipment is populated.

Revision: 17857
Fix possible NPE when a clan's ball pit has 1 ball in it

Revision: 17858
Show skill name in absorbed items that grant skills in Maximizer. Maximizer shows equipment that can be absorbed to give enchantments til the end of the day.

Revision: 17859
Obey autoSatisfyWithCloset when equipping all famliars.
Small cleanups when parsing clan rumpus room

Revision: 17860
Recognize a ballpit with 1 ball in it

Revision: 17861
Falls-From-Sky can do multiple attacks per round. Only the last one determines the
correct skill to use to evade him next round.

Revision: 17862
Potentially update lastEmptiedStorage when you refresh storage via the refresh button
on Storage panels in the Item Manager

Revision: 17863
After you fight a lynyrd via a lynyrd snare, provide a link to use another lynyrd snare,
providing you have any in inventory and have used less than 3 today

Revision: 17864
Fix Dark Circles Under Your Eyes

Revision: 17865
Don't give a wineglass warning when overdrunk unless going to adventure.php

Revision: 17866
If you have not yet set an e-mail address, chat or peevpee will redirect to choice.php
to set one. You can walk away from that choice. You can also encounter this while
logging in, since we go to peevpee.php?place=fight to check on things - but this is not
a reason to abort logging in and finishing after you complete the choice.

Revision: 17867
Row numbers for Dependence Day items

Revision: 17868
Don't loop infinitely if something goes wrong with updating _klawSummons while using the Klaw Machine during breakfast

Revision: 17869
Try to retrieve items with the absorb command

Revision: 17870
Don't log normal profile requests. Do log psychoanalyzing Jick. Log acquisation of Jick jar
timespinner command bails with an error if you have no adventures left

Revision: 17871
Recognise absorbing items for extra adventures

Revision: 17872
Robortender, including arena parameters

Revision: 17873
items and effects found in mall

Revision: 17874
More items.

Revision: 17875
Some more drinks

Revision: 17876
More drinks

Revision: 17877
New Noobcore skills from Robortender items.

Revision: 17878
Fill in key/value mappins in an aggregate literal the first time it is referenced, not
at compile time. Evaluate the keys and values, allowing them to be variable references.

Revision: 17879
Remove no-longer-needed execute() methods for MapValue and ArrayValue

Revision: 17880
Gelatinous Noobs can pickpocket

Revision: 17881
fish head found, thanks Yendor

Revision: 17882
Fix level 2 council text tracking in Noobcore.

Revision: 17883
If KoL specifies a domain on a cookie, we must muge it before sending it on down to the
browser, since the browser doesn't know it is connecting to

Revision: 17884
Rather than deleting the entire domain attribute, replace domain with

Revision: 17885
Remove some duplicated defaults. Log duplicate and multiply defined properties. Refactor
loding of global and user settings and add lots of comments.

Revision: 17886
Fix errors revealed by checkitems and checkeffects

Revision: 17887
Update jarbundler from 2.2.0 to 3.3.0

Revision: 17888
Add support for healing with Gelatinous Reconstruction

Revision: 17889
Normailze Meat drops with help from Wiki

Revision: 17890
Add support for folding toggle switch

Revision: 17891
Recognize a LOV Enamorang monster in Deep Machine Tunnels

Revision: 17892
Add a bunch of ASH support for doing interesting things with properties:
boolean [string] get_all_properties( string filter, boolean global )
boolean property_exists( string name )
boolean property_exists( string name, boolean global )
boolean property_has_default( string name )
string property_default_value( string name )
string get_property( string name, boolean global )
string remove_property( string name )
string remove_property( string name, boolean global )
boolean rename_property( string old_name, string new_name )

Revision: 17893
Recognise success trying to use Antagonistic Snowman Kits after the first.

Revision: 17894
get_all_properties really does return a case-insensitive map now

Revision: 17895
Add a couple defaults for properties KoLmafia actually uses itself.
Allow remove_property to remove a user property which is built-in as a global property

Revision: 17896
Mark Frame classes as built-in property names, since they are created by KoLmafia and
hold parameters needed to restore previous settings.

Revision: 17897
Unfortunately, get_all_properties() cannot return a case insensitive map

Revision: 17898
Don't add a toggle switch to inventory (internally) when folding it into the other form

Revision: 17899
Fix handling of 504 error when pulling everything

Revision: 17900
Gelatinous Noob Shadow

Revision: 17901
_circleDrumUsed needs a default in defaults.txt

Revision: 17902
Add _gingerbreadCityToday setting which is set when you use a counterfeit city.
ASH set_property() function no longer prints in the gCLI

Revision: 17903
Do print property changes, even from ASH, for builtin properties

Revision: 17904
fake cocktails are multiusable. Do not throw an NPE when editing the list of script buttons
and try to "move up" the topmost button or "move down" the bottommost button.
Log L.O.V.E. Tunnel rooms better, a la how we log The Gourd, which is, similarly,
alternating choices and fights.

Revision: 17905
Add _gingerbreadClockAdvanced to track when you've advanced the clock.
Add _gingerbreadCityTurns to track how many times you have visited the Gingerbread City.
For now, it counts visits, not actual turns used, since the Noon/Midnight NCs are "visits"
bit don't actually take turns. Will fix later.

Revision: 17906
Turns out you cannot use a dotted decimal host address in a cookie domain.

Revision: 17907
Clear nosyNoseMonster when ascending

Revision: 17908
run_choice() logs option chosen to gCLI, but need not log it to the session log

Revision: 17909
Add ASH function: string numberology_prize( number )

Revision: 17910
Since an AggregateLiteral is now a Value, allow it to appear as the RHS of an Assignment

Revision: 17911
Add ASH convenience functions:
boolean starts_with( string value, string prefix );
boolean ends_with( string value, string suffix );

Revision: 17912
Add ASH function to get the full unambiguous card name from the Deck of Every Card:
string every_card_name( string name )

Revision: 17913
Setting "encountersUntilDMTChoice" tracks how many encounters in the Deep Machine Tunnels
are needed before the choice adventure shows up; if this setting is 0, the choice will
show up the next time you venture into the Deep Machine TunnelsA.

Revision: 17914
Add _robortenderDrinks, which tracks drinks it has consumed in a comma-separated list of drink names

Revision: 17915
Change _robortenderDrinks to _roboDrinks

Revision: 17916
Update Robortender modifiers based on drinks consumed

Revision: 17917
Update documentation

Revision: 17918
In Preferences, both global and user maps are now synchronized maps. Certain operations -
like saving a map to a file - are also synchronized so that the in-memory property set and
the file are atomically in-sunch with each other.

Revision: 17919
Both read and write _roboDrinks

Revision: 17920
Add Array literals to ASH. Yuo can now tdo things like this:
string [] a2 = { "one", "two", "three", "two", "one" };

Revision: 17921
Add ASH get_closet() and get_storage() commands:
int [item] get_closet();
int [item] get_storage();g

Revision: 17922
Aerogel accordion can be used to cast AT buffs

Revision: 17923
Add "robo" to give your Robotender drinks

Revision: 17924
New Halloween candy

Revision: 17925
l'il ghost costume

Revision: 17926
Update writingDesksDefeated in Deep Machine Tunnels

Revision: 17927
Be more defensive and don't allow non-item/non-skill restoratives to pass through
unchecked to code that expects an item or a skill.

Revision: 17928
Increment _gingerbreadCityTurns when we fight a Gingerbread monster or see one of the
timed choice adventures in that zone, not when we simply adventure there.

Revision: 17929
Update regex

Revision: 17930
Add gingerBlackmailAccomplished to track if you've blackmailed the city counciler this run.
All four settings in that gingerquest reset on ascension.
Clean up isVisible method for ConsumablesFilter in Item Manager; son't look on memento
list for non-items.

Revision: 17931
Add _eldritchTentacleFought to track the fight in the Science Tent

Revision: 17932
Fix right-click svn update from Script Manager, per heeheehee

Revision: 17933
_floundryItemCreated attempts to track whether you've created an item at the Clan Floundry

Revision: 17934
Update the side panel after feeding a drink to the Robortender

Revision: 17935
You can both gain muscle and unlock the subway line on the same turn at Midnight in the
Gingerbread Train Station

Revision: 17936
Add ASH function:
void mood_execute( int multiplicity )
multiplicity determines the minimum number of casts (or items) a given trigger will use; if
the mood trigger is "cast 1 SKILL", multiplicty 3 will treat it as "cast 3 SKILL".
multiplicity = -1 is what KoLmafia uses internally for between battle checks.
multiplicity = 0 is what the CLI command "mood execute" uses.

Revision: 17937
Add ASH Runtime functions:
int last_choice()
string [int] available_choice_options()

Revision: 17938
Add ASH function: string [int] available_choice_options( boolean spoilers )
If the argument is "true", the Relay Browser choice spoilers will be appended to KoL's
choice choice text (in parentheses).

Revision: 17939
Must execute values of array literals. Make Aggregate Literals work with typedefs.
Foreach over an aggregate where the value is a typedef of an aggregate should not
recursively type into the keys of the typedef; the value is the aggregate.

Revision: 17940
Initial Spacegate content

Revision: 17941
Spacegate Fabrication coinmaster

Revision: 17942
More Spacegate stuff

Revision: 17943

Revision: 17944
You can walk away from grabbing Spacegate gear

Revision: 17945

Revision: 17946

Revision: 17947
Remove checking for only equipping part of an outfit, since equipping only part of an outfit can otherwise be parsed properly

Revision: 17948
spacegateAlways and _spacegateToday settings. The Spacegate is snarfblat=494.
portable Spacegate is row 947.
reset a couple of Gingerbread City quest tracking settings on ascension

Revision: 17949
spaceBabyLanguageFluency setting. Adventure failure when Spacegate is out of energy.
murderbot memory chip. Adventure Zone is Through the Spacegate

Revision: 17950
Add a couple of Spacegate monsters per Manuel

Revision: 17951
murderbot recipes

Revision: 17952
New Spacegate items, effects, monsters

Revision: 17953
Limit access to the Spacegate Fabricator

Revision: 17954
More stargate items from mall

Revision: 17955
Remove unnecessary plural. Monsters in the Encyclopedia now are shown in a special
frame that includes a toolbar that allows you to cycle through the multiple images
a particular monster might have.

Revision: 17956
Monster Encyclopedia lets you cycle through the variants of Ed the Undying

Revision: 17957
Spacegate items and monsters. Slime Tube monsters have multiple images.

Revision: 17958
Fix bugs revealed by checkitems and checkeffects

Revision: 17959
You can walk away from the Spacegate Vaccination Machine

Revision: 17960

Revision: 17961

Revision: 17962
Allow pseudo-monsters with ID < 0 to have a "Manuel Name" entry. Do that for all the
Slime Tube monsters, which map to "Slime Tube Monster", which has Manuel entries.

Revision: 17963
Add MonsterDescriptionFrame to list of built-in properties

Revision: 17964
Spant crafting, Spant Armor outfit

Revision: 17965
Update writingDesksDefeated when you kill the last writing desk

Revision: 17966

Revision: 17967
recognize SPANT when parsing concoctions.txt

Revision: 17968
space pirate treasure map

Revision: 17969
Add some settings: spacgateVaccine1, spacegateVaccine2, and spacegateVaccine3 are true
if you have unlocked the repsective vaccine. Learn that (and set properties) when
visiting the Vaccination station and when unlocking a vaccine.
Add CLI command: "spacegate vaccine #" to get vaccinated with the specified vaccine.
Add setting: _spacegateVaccine is true if you've been vaccinated today.
Add appropriate "spacegate vaccine" command to appropriate effect, so we know how to
get that effect.

Revision: 17970
The "spacegate" command now verifies that you are cleared to access the Spacegate facility

Revision: 17971
Let the Maximizer know when you can't get Spacegate vaccines

Revision: 17972
Add a couple more Spacegate monsters

Revision: 17973
Fix a typo

Revision: 17974
Add two more settings to track Space Pirate and Procrastinator Language Proficiency
Clear all three Spacegate Language Proficiencies on ascension
Add more Spacegate monsters

Revision: 17975
More Spacegate passive skills

Revision: 17976
ASH function: int [item] get_free_pulls() - like get_inventory(), get_storage(), etc.
Add pseudo monster: intelligent alien (-31) - like hostile intelligent alien.
It may not actually exist in-game, but there is an amusing serioes of 10 images you can
cycle through to look at the options.

Revision: 17977
Add a link to spant ingredients to the spant shop

Revision: 17978
Add Spant soldier. Put Through the Spacegate monsters into that zone. Add item drops for
all such monsters. Plural for primitive alien booze

Revision: 17979

Revision: 17980
Procrastinator locker key

Revision: 17981
Allow comments starting with // inside (non-string) plural typed constants

Revision: 17982
Handle the various Spaceget choices that deal with the Procrastinator, Space Baby, and
Space Pirate quests

Revision: 17983
Non-Euclidean Finance.

Revision: 17984
Remove research items from inventory when they are turned in

Revision: 17985
Space Pirate Astrogation Handbook

Revision: 17986
Remove items from inventory rather than doubling them

Revision: 17987
alien sandwich recipe

Revision: 17988
Another Spacegate item

Revision: 17989
exotic hostile plant, fascinating alien plant sample, alien plant pod

Revision: 17990
Remove fadcinating alien plant sample when your turn it in for research

Revision: 17991
Visiting Gingerbread City will show you digital clock if you've bought that update

Revision: 17992
Use _eldritchTentacleFought to display available fight in Daily Deeds.

Revision: 17993
Combat rate for The Poop Deck

Revision: 17994
Don't update Spookyraven Manor quest settings when "visiting" areas that you can't actually visit yet

Revision: 17995
When you visit the Spacegate Terminal, save your current planet parameters in _spacegateXXX
settings. In theory, when you dial up a planet and are given the parameters for the first
time, do the same thing.

Revision: 17996
carton of snake milk is usable

Revision: 17997
primitive alien totem

Revision: 17998
alien animal milk. _spacegatePlanetIndex in a number from 0-25 which is affects the scaling
montster attributes of Spacegate monsters. Give formulas for Scale and Initiative to all
such monsters

Revision: 17999
Track use of alien plant pod and alien animal milk

Revision: 18000
Add ASH function: int my_session_meat() which tracks how much meat the character has gained
or lost since login via character actions; mall sales and incoming kmail containing meat
will increment my_meat(), but not this value.

Revision: 18001
Fix enamorang counter

Revision: 18002
Revert the previous change. Start the enamorang counter as soon as you use it, unlike other wanderers.

Revision: 18003
KoL changed the name of the Space Baby childrens' book to children's book

Revision: 18004
spant shoulderpads equip requirement

Revision: 18005
Fix some item powers

Revision: 18006
When running into "Not in a Fight", recognize that the fight is over

Revision: 18007
Recognise learning second (or greater) use of Pirate Bellow

Revision: 18008
New-You Club Membership Form

Revision: 18009
Some Eudora support - Note that due to a KoL API bug, it will not all work yet.

Revision: 18010
More Daily Affirmations

Revision: 18011
Affirmation Cookie

Revision: 18012
Update quest settings when using your father's diary even if you use it in the relay browser

Revision: 18013
Add "toggle [effect]" CLI command. Currently only useful for toggling between "Become Intensely interested" and "Become Superficially interested"

Revision: 18014
When you find the Procrastinator terminal, set Procrastinator language
fluency to 0, not space pirate language fluency.
Peg language fluencies at 100%

Revision: 18015
Parse Spacegate language fluencies from response text

Revision: 18016
Fix a typo

Revision: 18017
Print a stacktrace if we get an I/O error trying to download a file

Revision: 18018
Fix a typo

Revision: 18019
Adjust for KoL's typo fix

Revision: 18020
We've been using Java 6 for a long time. Update compilation/execution
requirements to reflect that.

Revision: 18021
Fix stupid non-UTF-8 character in Apple provided source file

Revision: 18022
Don't count Absorb Adventures as rollover Adventures

Revision: 18023
When automating fights, follow the initial redirect with "ireallymeanit" before
macrofying the rest of the fight.

Revision: 18024
Fetch Easyfax's xonfiguration file using an alternate URL which hopefully
will work with standard Java runtimes

Revision: 18025
Revert the Adventure modifier fix, since it broke other things

Revision: 18026
Just as the Maximizer won't suggest creating items that cost a Mr. Accessory, do not suggest creating items that cost an Uncle Buck

Revision: 18027
Recognize GN and NA runs for Clan Snapshot, and recognize most-consumed food when it has a quantity

Revision: 18028
License to Adventure is the new path

Revision: 18029
Organ and familiar limits for License to Adventure

Revision: 18030
In License to Adventure, you can only drink martinis

Revision: 18031
Drinks allowed in License to Adventure are determined by image, making it a separate list than what is used by the tuxedo shirt

Revision: 18032
Track License to Adventure upgrades, and apply modifiers and so on based on chosen upgrades

Revision: 18033
When switching clans, update Rollover Adventures and PvP Fights displayed in the side panel immediately

Revision: 18034
Booze capacity stops going up at level 11 in License to Adventure

Revision: 18035
patent invisibility tonic is now multi-usable

Revision: 18036
Don't warn about 100% familiar runs in License to Adventure

Revision: 18037
Path items

Revision: 18038
License to Adventure council quest text

Revision: 18039
Villainous Enemies

Revision: 18040
When you define a map with value as a zero-length array, file_to_map can
now populate it. The values will be variable-length array literals that
consume all the data values from the line of your file. Thus:
You can now use foreach to iterate over an aggregate literal.

Revision: 18041
Thwaitgold bug statue is no longer tradable

Revision: 18042
primitive alien loincloth.

Revision: 18043
Permit aggregate literals on the right side of an assignment statment to
omit the data type, since we know it from the variable reference. (This is
how it already worked for variable initialization, which otherwise looks
and behaves like an assignment.)

Revision: 18044
Improve error messages for aggregate references in places they are not allowed.
An AggregateType only containsAggregate() if its dataType is an aggregate

Revision: 18045
Disavowed. The actual modifier isn't handled yet.

Revision: 18046
Super Villain's Lair

Revision: 18047
Recognize lair enemies when fighting them

Revision: 18048
You can walk away from LI-11 HQ

Revision: 18049
Victor's Spoils

Revision: 18050
Threatening Missive

Revision: 18051
Fix recently introduced bug iun AggregateType

Revision: 18052
Remove the appropriate key when it is used in the Super Villain's Lair

Revision: 18053
You don't need a wand in License to Adventure

Revision: 18054
Interim - contains is always true in AggregateValue

Revision: 18055
Try again to make contains change....

Revision: 18056
Make an ArrayValue, not an ArrayLiteral, when reading map fields into a 0-length
array. Allow fixed-length aggregates (not maps, nor 0-length arrays) to be
"compact" when doing map_to_file.

Revision: 18057
neutron lollipop is now candy

Revision: 18058
Incredible Self-Esteem

Revision: 18059
Spoil the best option for the License to Adventure choice that benefits from Universal Symbology Guide

Revision: 18060
In Super Villain's Lair, handle (most) clues for the ideal colored button, and spoil the best result if identified. Also, log the clue text.

Revision: 18061
Correct a color hint, add some more

Revision: 18062
Experimental - In Softcore, Maximizer will suggest pulling items from storage to give effects, and will suggest buying from mall and then pulling from storage for equipment and effects, if "buyable/pullable" is selected.

Revision: 18063
Some consumable spading

Revision: 18064
More color clues

Revision: 18065
All color clues recognized

Revision: 18066
Track remaining License to Adventure upgrades, handle more of them

Revision: 18067
Some consumable spading

Revision: 18068
Another path item

Revision: 18069

Revision: 18070
More KGB

Revision: 18071
Another effect

Revision: 18072
Parse License to Adventure upgrades properly when not all options are unlocked

Revision: 18073
Some monster info

Revision: 18074
Some consumable spading

Revision: 18075
Some consumable spading

Revision: 18076
Track once-per-day stuff in Super Villain's Lair, along with progress

Revision: 18077
Afternoon Delight is now awesome

Revision: 18078
primitive alien items and martinis

Revision: 18079
Untested - When buying with storage in Maximizer, consider storage meat, not on hand meat.

Revision: 18080
Add image for KGB tranquilizer dart

Revision: 18081
The missing Spy buffs and some consumable spading.

Revision: 18082
Fix Thanksgetting

Revision: 18083
Incredible Self-Esteem can't be permed

Revision: 18084
Hopefully a better, untested, fix for considering storage buying in Maximizer

Revision: 18085
Update enchantments on Kremlin's Greatest Briefcase when logging in, and when changing them. Except for HP/MP regen, for now.

Revision: 18086
Don't try to drink non-martinis in LtA

Revision: 18087
Tiny bit more consumable spading, including improved martinis

Revision: 18088
Consumable spading - rest of the Batfellow consumables, relatively low numbers of datapoints (because at 1/2m meat each, even alts struggle!)

Revision: 18089
Some Licence to Adventure stuff : +11 rollover adventures from skill, adventure bonus to Martini's from skills, don't show food as edible.

Revision: 18090
splendid martini - early spading, but probably right

Revision: 18091
Remove some debug text

Revision: 18092
Celsius 233

Revision: 18093
high-end ginger wine spading

Revision: 18094
Eternal Flame

Revision: 18095
Afternoon Delight also was improved

Revision: 18096
Fix typos

Revision: 18097
If a combat filter returns an invalid action and we end up calling it again
in the same round, if it returns the same action, abort, rather than infinitely

Revision: 18098
Track extra war kills in License to Adventure

Revision: 18099
Splendid Martini's get bonus from Ben Dover's olives

Revision: 18100
Restore code which did not submit a macro on round zero of a multifight

Revision: 18101
Martini's get extra adventures from Ben Dover's olives if their base adventure gain would have been less than 10.

Revision: 18102
Recognise completing bridge with portable bridge. Untested.

Revision: 18103
Track extra desert progress from Universal GPS

Revision: 18104
Add bondPoints, incremented at prism break. Will learn it from ascension history if you haven't used Lazenby's Life Lessons (not currently supported). Add bondVillainsDefeated, incremented when defeating Villainous Villains. Very lightly tested. Note - Between bondPoints, bondVillainsDefeated, level and contacts, you should be able to calculate social capital.

Revision: 18105
Reset a few fight variables on round 0

Revision: 18106
Lazenby's Life Lesson

Revision: 18107
The Nuge's favorite crossbow pulveriultimate wad

Revision: 18108
Untested. Visit Clan Lounge after prismbreak and ascension as what is available may have changed.

Revision: 18109
Fix nocombats logic for locations

Revision: 18110
Track briefcase clicks

Revision: 18111
Fix error from previous commit

Revision: 18112
Add 5 turns to the lastAdventure location when using a turkey blaster

Revision: 18113
A valid lastAdventure location can have 0 turns spent (for turkey blaster checking)

Revision: 18114
Fix handling of ghostLocation when parsing the Quest Log

Revision: 18115
License to Chill

Revision: 18116

Revision: 18117
Eternal Flame modifier

Revision: 18118
Fix a typo

Revision: 18119
Spacegate Choice adventures, add Spacegate Equipment Requisition equipment as concoctions, add spacegate destination command.

Revision: 18120
Gingerbread City choice adventures

Revision: 18121
Some consumable spading

Revision: 18122
Fix typo

Revision: 18123
Spant eggs

Revision: 18124
Visiting the Palindome and redirecting to a fight or choise is sufficient to
recognize that the Palndome quest is now started, at least

Revision: 18125
Don't mark Palindome quest as started if you try to visit it by direct URL
submission and have not yet made a Talisman o' Namsilat

Revision: 18126
golden stuff

Revision: 18127
sticks of golden gum

Revision: 18128
If GenericRequest automatically follows the "ireallymeantit" redirect for
fight.php, before doing so, let FightRequest initialize the new round 0,
including macroPrefixLength, so that consult scripts and combat filters will be
sure to start with the correct round index.

Revision: 18129
License to Adventure +item bonuses are doubled by Steely-Eyed Squint

Revision: 18130
Fix multi-fights: When automating them, need to invoke fight.php first
(no redirection needed).

Revision: 18131
Start of LI-11 Motor Pool voucher support

Revision: 18132
Workshed handling updated

Revision: 18133

Revision: 18134
Track Fuel, remove items used in Fuel Conversion, add ash command get_fuel().

Revision: 18135
Update CLI/Session log when converting to fuel

Revision: 18136
Asdon Martin skills. Pie man was not meant to eat spading. _missileLauncherUsed tracks missile launcher use each day. Add fuel_cost( skill ) ash command.

Revision: 18137
Add asdonmartin drive command. Will remove existing driving styles to set a new one. Maximizer supports the command, but does NOT consider cost of the one that will be removed (as other exclusive effects).

Revision: 18138

Revision: 18139
Fix banish tracking

Revision: 18140
Recognise missile launcher success. Fix front-bumper detection.

Revision: 18141
Hopefully avoid NPE with no Workshed item running Maximizer

Revision: 18142
Reset inMultiFight as soon as we actually see the initial round

Revision: 18143
Adter we've decided to execute a consult script, force into CONTINUE state

Revision: 18144
Spring-Loaded Front Bumper banish now turn free. Fix alien rock samples typo.

Revision: 18145
Remove mention of command to fuel Asdon Martin til that command is added.

Revision: 18146
Track daily activations of various KGB stuff

Revision: 18147
Fix council text after KoL typo fix.

Revision: 18148
Handle all enchantment changes for KGB

Revision: 18149
Track Beancannon uses

Revision: 18150
Recognize 1 fuel remaining

Revision: 18151
Correct Copy/Paste in Ascension Snapshot.

Revision: 18152
Remove Asdon Martin effects for free when uneffecting

Revision: 18153
Universal GPS doesn't work on the first turn

Revision: 18154
L.I.M.P. Stock Certificate

Revision: 18155
Dust bunny

Revision: 18156
Track banish from Daily Affirmation: Be a Mind Master

Revision: 18157
When you walk away from a choice to a location that redirects, we are no
longer handling a choice

Revision: 18158

Revision: 18159

Revision: 18160
Spring-Loaded Front Bumper resets at rollover

Revision: 18161
Some other banishes that reset by rollover as well as turns.

Revision: 18162
Fix a typo

Revision: 18163
Update Disavowed modifier whenever the effect is viewed. Not a great solution, but probably better than nothing.

Revision: 18164
Track daily use of Victor's Spoils. Track cornucopias opened this ascension.

Revision: 18165
License to Chill is reusable

Revision: 18166
Possible bug fix, untested

Revision: 18167
Add "asdonmartin fuel [#] item"

Revision: 18168
Revert an unintended part of the previous commit

Revision: 18169
Minor code change

Revision: 18170
Meteorite-Ade is limited to 3 uses per day

Revision: 18171
Apparently, /iii is a valid image directory.

Revision: 18172
Meteor Showered

Revision: 18173
Remove metal meteoroid when turning it into equipment

Revision: 18174
Track daily uses of Macrometeorite and Meteor Shower

Revision: 18175
Don't load metal meteoroid use inline

Revision: 18176

Revision: 18177
Track Micrometeorite uses

Revision: 18178
Reusable skill book is reusable

Revision: 18179
Add meadeorite to booze list

Revision: 18180
Untested, bondPoints caps at 24 (when rescuing king or viewing ascension record).

Revision: 18181
Correctly find Coinmasters with uppercase characters in nickname. Expose nickname in Coinmaster proxy record. Add checks for relevant charter access to charter store availability.

Revision: 18182
Quest tracking for Baker and Hammer quests

Revision: 18183
Horsery contract

Revision: 18184
Handle Horsery modifiers, add horseryAvailable

Revision: 18185
Recognize when you return your horse

Revision: 18186
Meteor Masquerade

Revision: 18187
Tweaked message to better indicate why a skill was not available. Untested.

Revision: 18188
Recognize new path

Revision: 18189

Revision: 18190
Fix a typo

Revision: 18191
perfectly fair coin

Revision: 18192
Some precise spading thanks to LAR. Upper bound on windchimes, lower bound on gas balloon.

Revision: 18193
Update combat rates

Revision: 18194

Revision: 18195
Add a space

Revision: 18196
aerogel accordion benefits from Accordion Appreciation

Revision: 18197
Track daily malware use

Revision: 18198
Reset some monster stuff when Macrometeorite (or CLEESH) is cast

Revision: 18199
Fix a typo

Revision: 18200
genie bottle

Revision: 18201
some initial support for the genie bottle. Ascension Path point-granting
fun-destroying items are not consumed one they can't destroy your fun
any more because you have enough points.

Revision: 18202
More genie items

Revision: 18203
Some nosmash stuff

Revision: 18204
Fortune Cookie counters for Live. Ascend. Repeat.

Revision: 18205
A couple of ponies.

Revision: 18206
Meteor Food

Revision: 18207
A pony (7 ponies, and 5 are the same for me!)

Revision: 18208
Ponies, thanks to Magus_Prime

Revision: 18209
Ponies complete, thanks theo1001

Revision: 18210

Revision: 18211
Genie stats cap at 11000

Revision: 18212
Don't start special counters from genie fights

Revision: 18213
Track Bag o' Tricks charges

Revision: 18214
Recognize multi-casting of Sweet Synthesis

Revision: 18215
More Lyle items

Revision: 18216
Summon Annoyance displays its cost again

Revision: 18217
Don't load pocket wish inline

Revision: 18218

Revision: 18219
Add _genieWishesUsed

Revision: 18220
Primitive alien totem is a totem

Revision: 18221
More Lyle stuff

Revision: 18222
Mob Penguin union rail worker

Revision: 18223
Mob Penguin union rail worker scaling stats.

Revision: 18224
Update buff turns from primitive alien totem

Revision: 18225
Some new items from new familiar

Revision: 18226
XO Shop (once implemented) will use concoctions rather than coinmaster.

Revision: 18227
Add genie command, _genieFightsUsed

Revision: 18228
XO crafting

Revision: 18229

Revision: 18230
Add a fax bot

Revision: 18231
Fix a typo

Revision: 18232
multiuse stuff

Revision: 18233
Maximizer tweak (thanks AlbinoRhino), missing powers, cap and floor for Mob Penguin

Revision: 18234
More XO items

Revision: 18235
New skills, item

Revision: 18236
Another mob penguin

Revision: 18237
Arena parameters for XO Skeleton

Revision: 18238
Hugs and Kisses tracking, mafia ring banish

Revision: 18239
Mafia ring banish also ends at rollover

Revision: 18240

Revision: 18241
New penguin

Revision: 18242
Non-local files can start with http:// or https://.

Revision: 18243
Halloween candy

Revision: 18244
Partial revert of 18242.

Revision: 18245
A couple of multiuse items. The "use" command can lead to a multi-fight. Log
"Eldritch Attunement" as the "location" when in multifight as a result of it

Revision: 18246
Provide run_choice( int option, boolean handle_fights) which lets an ASH script
choose whether to handle a fight using your CCS (the default, with the single-
argument version of run_choice) or to simply start the fight and let the
caller finish it.

Revision: 18247
Add ASH functions: boolean in_multi_fight() and boolean choice_follows_fight()

Revision: 18248
Fix typo

Revision: 18249
All Accordions are mainhand only, not just Accordion Thief only ones.

Revision: 18250
DataUtilities (used by file_to_map et. al.) will again handle http:// and https:// without breaking price updates.
Disabled version checking at SourceForge because the implementation is not working and the failure effects subsequent https:// processing in DataUtilities for an as yet unknown reason.

Revision: 18251
Mob Penguin capitalization is more consistent

Revision: 18252
Untested, prefer Aerogel Accordion over Antique Accordion for buffs.

Revision: 18253
Preemptively set user agent to work around file_to_map https:, price updates and version checking conflicts. Restore version checking. Only check for version once a day.

Revision: 18254
Pantogram pants. No handling for variable enchantments or name yet.

Revision: 18255

Revision: 18256
Allow relay overrides for individual campground pages, using (for example) campground.telescope.ash. To make a relay override that will only apply for a single workshed item, campground.workshed.X.ash can be used, where X is the item id for the workshed item.
Remove the last traces of masterRelayOverride, since it is unlikely that anyone is using one any more.

Revision: 18257
portable pantogram redirects to a choice and cannot have an inline use link

Revision: 18258
Handle variable pantogram pants enchantments and name

Revision: 18259
Minor code change

Revision: 18260
Adjust regex to handle pantogram pants

Revision: 18261
Penguin Scales

Revision: 18262
Fix typo

Revision: 18263
Don't start wandering monster counters when using the Time-Spinner, Cap'm Caronch's map, or fighting witchess pieces

Revision: 18264
Use gzip

Revision: 18265
Cute Meteor

Revision: 18266
Don't suggest making Spacegate equipment if you don't have access to do so. Prepare some crafting methods for their eventual expiration from Standard.

Revision: 18267
Mob Penguin organizer

Revision: 18268
Mob Penguin Organizer stats

Revision: 18269
El Dia de los Muertos Borrachos y Agradecido: items y effects

Revision: 18270
El Dia de los Muertos Borrachos y Agradecido monsters

Revision: 18271
Don't extend Gelatinous Noob combat modifier effects during mana burning

Revision: 18272
mumming trunk

Revision: 18273
When we get an IOException during data post, print the exception's message.

Revision: 18274
You can walk away from the Mummery

Revision: 18275
Advent calendar stuff

Revision: 18276
A few locations with no wandering monsters

Revision: 18277
Fixed some plurals.
Tweaked the plural matcher to match unescaped data in KoLmafia and escaped data on the wiki.
Allowed checkplurals to accept a range of item numbers [start, end)

Revision: 18278

Revision: 18279
More plurals

Revision: 18280
Rollover resets the KGB banish

Revision: 18281
Yet more plurals.

Revision: 18282
More plurals.

Revision: 18283
Maybe this is it for the plurals for a while?

Revision: 18284
Fix errors revealed by checkitems and checkeffects

Revision: 18285
Update mallprices

Revision: 18286
Bump version to 17.12