<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.kolmafia.us/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gnocchi+masala</id>
	<title>Kolmafia - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.kolmafia.us/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gnocchi+masala"/>
	<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Special:Contributions/Gnocchi_masala"/>
	<updated>2026-04-24T21:23:16Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Help:To_Do_List&amp;diff=7669</id>
		<title>Help:To Do List</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Help:To_Do_List&amp;diff=7669"/>
		<updated>2014-03-30T07:30:31Z</updated>

		<summary type="html">&lt;p&gt;Gnocchi masala: Revisions 10765, 10772 &amp;amp; 10774 implement static scope for code that is only to be executed once on loading.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;To Do&amp;quot; List ==&lt;br /&gt;
&lt;br /&gt;
This is a list of stuff that is missing from the wiki or else needs major work. Please help!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you need tips for editing the wiki, find that here: [[Help:Editing]].&lt;br /&gt;
&lt;br /&gt;
*CLI Commands are usually only added to the [[CLI Reference]]. Only very complicated commands require their own page.&lt;br /&gt;
&lt;br /&gt;
*ASH commands need to be listed on their category page as well as on the [[Ash Functions]] list. &lt;br /&gt;
**It is not necessary to always create a code sample, although it is preferred.&lt;br /&gt;
**If you don&#039;t add a code sample, please remember to add &#039;&#039;&#039;needscode=yes|&#039;&#039;&#039; to the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Missing Stuff ==&lt;br /&gt;
 10078: ash function format_dtg&lt;br /&gt;
 10081: ash function format_dtg renamed to be&lt;br /&gt;
 string &#039;&#039;&#039;format_date_time(inFormat, dtg, outFormat)&#039;&#039;&#039;&lt;br /&gt;
 more info: http://kolmafia.us/showthread.php?8451-time_to_string()-with-parameter&amp;amp;p=64058&amp;amp;viewfull=1#post64058&lt;br /&gt;
&lt;br /&gt;
 Modify examples on proxy record page because of:&lt;br /&gt;
 10122: Add the boolean &amp;quot;fancy&amp;quot; and &amp;quot;candy&amp;quot; fields to item &#039;&#039;&#039;proxy records&#039;&#039;&#039;.&lt;br /&gt;
 10147: Initial support for &amp;quot;Crimbo 2011&amp;quot; coinmaster: trade candy for Candy Credits&lt;br /&gt;
 10412: Add $skill &#039;&#039;&#039;proxy records&#039;&#039;&#039;: .dailylimit and .timescast&lt;br /&gt;
 10879: Add a boolean &amp;quot;boss&amp;quot; field to $monster[]&lt;br /&gt;
&lt;br /&gt;
 10227: Add the &amp;lt;s&amp;gt;&amp;quot;&#039;&#039;&#039;closet empty&#039;&#039;&#039;&amp;quot; CLI command, and&amp;lt;/s&amp;gt; the &#039;&#039;&#039;empty_closet()&#039;&#039;&#039; ASH function.&lt;br /&gt;
&lt;br /&gt;
 r9181, 9183, 9184 &amp;amp; r9190: &#039;&#039;&#039;moods&#039;&#039;&#039; per slyz&#039;s summary here: http://kolmafia.us/showthread.php?8852-Composable-Moods&lt;br /&gt;
&lt;br /&gt;
 r10344 Add &#039;&#039;&#039;tavern( string goal )&#039;&#039;&#039; ASH function. &lt;br /&gt;
 goal can be &amp;quot;faucet&amp;quot;, &amp;quot;baron&amp;quot;, or  &amp;quot;explore&amp;quot; (to explore all remaining unexplored squares). &lt;br /&gt;
 r10345 Add ASH &#039;&#039;&#039;tavern( &amp;quot;fight&amp;quot; )&#039;&#039;&#039; to explore cellar until the Baron&#039;s mansion is found &lt;br /&gt;
 and then go in to fight him.&lt;br /&gt;
&lt;br /&gt;
 r10753-6 &#039;&#039;&#039;get_goals()&#039;&#039;&#039; returns a string[int] containing all the conditions that KoLmafia will &lt;br /&gt;
 try to satisfy. Add g&#039;&#039;&#039;oal_exists()&#039;&#039;&#039; where you can pass in a goal type (choiceadv, autostop, &lt;br /&gt;
 meat, health, mana, item) and KoLmafia will tell you if there are any goals that match.&lt;br /&gt;
&lt;br /&gt;
 10922: Add &#039;&#039;&#039;get_player_id()&#039;&#039;&#039; method to ASH&lt;br /&gt;
&lt;br /&gt;
 10937: Add &#039;&#039;&#039;minstrel_quest()&#039;&#039;&#039; boolean function,&lt;br /&gt;
 which returns true when Clancy has a new quest for you.&lt;br /&gt;
&lt;br /&gt;
 10971: Added boolean &#039;&#039;&#039;hippy_stone_broken()&#039;&#039;&#039; function&lt;br /&gt;
&lt;br /&gt;
 11023: Make the CLI &amp;quot;attack&amp;quot; command work again. Make &amp;quot;pvp&amp;quot; equivalent to &amp;quot;steal&amp;quot; instead &lt;br /&gt;
 of &amp;quot;attack&amp;quot;. Added &amp;quot;swagger&amp;quot; as equivalent to &amp;quot;flowers&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 11055: Added a 2-parameter version of &#039;&#039;&#039;to_string()&#039;&#039;&#039;, where the first parameter can&lt;br /&gt;
 currently be an int or float (other types are possible, but didn&#039;t seem&lt;br /&gt;
 useful), and the second is a format string as defined by the Java&lt;br /&gt;
 String.format() method (which in turn is based on C printf() format strings).&lt;br /&gt;
 For example, &amp;quot;%.2f&amp;quot; will output a float with exactly two digits after the&lt;br /&gt;
 (localized) decimal point.&lt;br /&gt;
&lt;br /&gt;
 11110: Add ASH function: &#039;&#039;&#039;pvp_attacks_left()&#039;&#039;&#039;. This is guaranteed accurate only if you &lt;br /&gt;
 have recently looked at the Fight! page. Tracking of PVP fights gained via&lt;br /&gt;
 consumption or familiar action and initialization at login will come later -&lt;br /&gt;
 after api.php is updated to include the figure.&lt;br /&gt;
 &lt;br /&gt;
 Add &#039;&#039;&#039;beforePVPScript&#039;&#039;&#039; setting which contains a script to be executed before a PVP&lt;br /&gt;
 attack. At the moment, this is only called from the Relay Browser - and only if&lt;br /&gt;
 relayRunsBeforePVPScript is true&lt;br /&gt;
 &lt;br /&gt;
 11112: Call beforePVPScript, if present, during automated PVP via the &amp;quot;flowers&amp;quot; command&lt;br /&gt;
&lt;br /&gt;
 11112: Change ASH &#039;&#039;&#039;have_outfit()&#039;&#039;&#039; to work with custom outfits, as well as normal outfit &lt;br /&gt;
 Add ASH &#039;&#039;&#039;is_wearing_outfit()&#039;&#039;&#039; to return TRUE if you are currently wearing the&lt;br /&gt;
 specified custom or normal outfit.&lt;br /&gt;
&lt;br /&gt;
 10815: Allow certain ASH constants to be used in custom combat settings. &lt;br /&gt;
 $phylum[] refers to the monster categorization, see the built-in ASH constants documentation for more information.&lt;br /&gt;
 $element[] refers to either the attack or the defense element. As long as one matches, this check will be satisfied. This may limit its usefulness, but we can evaluate it later.&lt;br /&gt;
 $item[] refers to an item that the monster drops. If there are multiple monsters that drop the item, or if you just can&#039;t remember which one it is, and your combat strategy happens to depend on it...&lt;br /&gt;
 In order to match, everything that you specify must match. So if you specify an impossible combination, that CCS section will not run.&lt;br /&gt;
 &lt;br /&gt;
 [ $element[ spooky ] $item[ hobo nickel ] ]&lt;br /&gt;
 skill entangling noodles&lt;br /&gt;
 skill weapon of the pastalord&lt;br /&gt;
 &lt;br /&gt;
 [ bathroom $element[ spooky ] ]&lt;br /&gt;
 attack&lt;br /&gt;
 &lt;br /&gt;
 [ $phylum[ beast ] ]&lt;br /&gt;
 skill stomp&lt;br /&gt;
 attack&lt;br /&gt;
&lt;br /&gt;
 11197: new ASH functions:&lt;br /&gt;
 boolean &#039;&#039;&#039;is_familiar_equipment_locked()&#039;&#039;&#039; &lt;br /&gt;
 -returns true if current familiar equipment is locked, otherwise false&lt;br /&gt;
 void &#039;&#039;&#039;lock_familiar_equipment(boolean locking)&#039;&#039;&#039;&lt;br /&gt;
 -tries to lock/unlock fam equipment accordingly.&lt;br /&gt;
&lt;br /&gt;
 11208: Add int &#039;&#039;&#039;get_clan_id()&#039;&#039;&#039; and string &#039;&#039;&#039;get_clan_name()&#039;&#039;&#039; functions.&lt;br /&gt;
&lt;br /&gt;
 11267: Pass chat events along to &#039;&#039;&#039;chatbotscript&#039;&#039;&#039;. The sender is an empty string, &lt;br /&gt;
 the channel is &amp;quot;Events&amp;quot;, and the message is stripped of its HTML.&lt;br /&gt;
&lt;br /&gt;
 11432: Add &#039;&#039;&#039;is_discardable()&#039;&#039;&#039; which will return true even if an item can be autosold, &lt;br /&gt;
 so be careful you don&#039;t get cheated out of some meat.&lt;br /&gt;
&lt;br /&gt;
 11438: Revert use of gift flag to previous interpretation: KoL has the item marked as&lt;br /&gt;
 a &amp;quot;Gift Item&amp;quot;. Instead, change isGiftable() - which is also used by the ASH&lt;br /&gt;
 is_giftable() function - to allow either the &amp;quot;tradeable&amp;quot; or &amp;quot;gift&amp;quot; flags.&lt;br /&gt;
 Fix the item.gift proxy field to return the value of the gift flag, rather than&lt;br /&gt;
 being a synonym for is_giftable().&lt;br /&gt;
&lt;br /&gt;
 11555: Add monster.raw_attack, monster.raw_defense, and monster.raw_hp to return the &lt;br /&gt;
 unmodified stats from monsters.txt.&lt;br /&gt;
&lt;br /&gt;
 11561:  Add monster &#039;&#039;&#039;image_to_monster( string )&#039;&#039;&#039; ASH function for looking up monster by image file name.&lt;br /&gt;
 Add monster.image proxy field for going the other way.&lt;br /&gt;
&lt;br /&gt;
 11771: experimental: add overloaded maximize() signature in ASH&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;maximize( string maximizerString, int maxPrice, int priceLevel, boolean simulate, boolean showEquipment )&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 returns an aggregate of records with each record containing the fields:&lt;br /&gt;
 **display =&amp;gt; display text, as it is shown in the maximizer frame&lt;br /&gt;
 **cmd =&amp;gt; actual command string that the maximizer runs to get the boost&lt;br /&gt;
 **score =&amp;gt; the boost&#039;s score&lt;br /&gt;
 **effect =&amp;gt; the effect provided by the boost - if applicable. effect[none] if it is equipment.&lt;br /&gt;
 **item =&amp;gt; $item[] that is being suggested for use or equipment&lt;br /&gt;
 **skill =&amp;gt; $skill[] that is being suggested&lt;br /&gt;
 &lt;br /&gt;
 If the showEquipment argument is false, equipment will be omitted from the results.&lt;br /&gt;
&lt;br /&gt;
 r11707: Experimental ASH feature: the main() function of imported scripts can now be&lt;br /&gt;
 invoked, under the alternate name main@filename()&lt;br /&gt;
 (where &#039;filename&#039; can be overridden by a &#039;script&#039; directive, any &amp;quot;.ash&amp;quot;&lt;br /&gt;
 suffix is dropped, and non-alphanumeric characters are replaced by&lt;br /&gt;
 underscores). Note that no spaces are allowed around the @, the whole thing&lt;br /&gt;
 is a single token.&lt;br /&gt;
&lt;br /&gt;
 r11965: Add my_companion()&lt;br /&gt;
&lt;br /&gt;
 r11985: Add the &amp;quot;skeleton&amp;quot; CLI command.&lt;br /&gt;
&lt;br /&gt;
 r12019: Add &amp;quot;eudora&amp;quot; CLI command&lt;br /&gt;
&lt;br /&gt;
 r12060: add ASH get_moods(), returns an aggregate of currently defined mood names.&lt;br /&gt;
 &amp;quot;mood listall&amp;quot; in the gCLI will also print a list of defined moods.&lt;br /&gt;
&lt;br /&gt;
 r12062: add ASH get_outfits() and get_custom_outfits()&lt;br /&gt;
&lt;br /&gt;
 r12070: Overloaded version of appearance_rates considers monster queue: &lt;br /&gt;
 appearance_rates( $location[] location, boolean includeQueue )&lt;br /&gt;
&lt;br /&gt;
 r12105: maximizerMRULength is now maximizerMRUSize&lt;br /&gt;
 That affects this page: [[Hidden_Features#Most_Recently_Used_Modifier_Maximizer_Expression]]&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;SVN Features added&#039;&#039;&#039; by Roippi! SVN integration was (brokenly) implemented in r12141 and more correctly implemented in r12144.&lt;br /&gt;
 &lt;br /&gt;
 FOR USERS:&lt;br /&gt;
 * svn checkout &amp;lt;svnurl&amp;gt; - checks out a svn repository and adds the files from the working copy to the appropriate locations.&lt;br /&gt;
 * svn update - updates all of your installed projects and pushes any changes to the appropriate locations.&lt;br /&gt;
 * svn list - lists installed projects.&lt;br /&gt;
 * svn delete &amp;lt;scriptname&amp;gt; - deletes installed projects and the corresponding files that it pushed. &amp;lt;scriptname&amp;gt; fuzzy matches the script names from svn list.&lt;br /&gt;
 &lt;br /&gt;
 FOR SCRIPTERS:&lt;br /&gt;
 You can provide a &amp;lt;nowiki&amp;gt;svn://, http://, or https://&amp;lt;/nowiki&amp;gt; link to a valid svn repo. The link does not need to be to the root of the repository.&lt;br /&gt;
 At the location specified by the url, there are only four permissible folders:&lt;br /&gt;
 * ccs/&lt;br /&gt;
 * data/&lt;br /&gt;
 * images/&lt;br /&gt;
 * relay/&lt;br /&gt;
 * scripts/&lt;br /&gt;
 &lt;br /&gt;
 Any files or directories in the location specified by your url that are not named the above will cause your repo to fail validation and thus it will not be checked out.&lt;br /&gt;
 Within the valid folders, you can nest files however you want.&lt;br /&gt;
 When users check out your project, the files (and nested folders) will be pushed to the corresponding mafia directories.&lt;br /&gt;
 &lt;br /&gt;
 r12157: &#039;&#039;&#039;svn increment &amp;lt;projectname&amp;gt;&#039;&#039;&#039; and &#039;&#039;&#039;svn decrement &amp;lt;projectname&amp;gt;&#039;&#039;&#039; moves an installed svn project up/down one revision, respectively.&lt;br /&gt;
 &#039;&#039;&#039;svn update&#039;&#039;&#039; can also take &amp;lt;projectname&amp;gt; argument or a &amp;lt;SVNURL&amp;gt; argument. Or just be blank to update everything.&lt;br /&gt;
 r12177 svn inc/dec does the same thing as svn increment/decrement. Because typing stuff is hard. &lt;br /&gt;
 &lt;br /&gt;
 12167: command &amp;quot;&#039;&#039;&#039;svn sync&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 Looks through your working copies for modifications, then checks if that file differs from the local copy. If it differs, the WC file is copied over the local copy one.&lt;br /&gt;
 Note that this is very different from &amp;quot;svn update&amp;quot; and indeed does not contact the repository server at all.&lt;br /&gt;
 &lt;br /&gt;
 If you are unsure if you want this feature, this is only for people who maintain modifications to the files in their svn/ folders that they want merged in with updates from the repo.&lt;br /&gt;
 If you are just doing checkout/update operations and don&#039;t know what this &amp;quot;merging&amp;quot; business is about, you don&#039;t need this feature.&lt;br /&gt;
 &lt;br /&gt;
 Users who want to automatically sync after update operations can set syncAfterSvnUpdate = true.&lt;br /&gt;
&lt;br /&gt;
 r12153: add &#039;&#039;&#039;svnUpdateOnLogin&#039;&#039;&#039; (global, default false), which runs svn update before breakfast/loginScript.&lt;br /&gt;
 This could be useful if your loginScript has svn dependencies.&lt;br /&gt;
 &lt;br /&gt;
 r12188: add global preference &#039;&#039;&#039;_svnUpdated&#039;&#039;&#039;&lt;br /&gt;
 only do login svn update (mediated by svnUpdateOnLogin) at most once per day.&lt;br /&gt;
&lt;br /&gt;
 r12181: add preference &#039;&#039;&#039;simpleSvnUpdate&#039;&#039;&#039; (global, default true)&lt;br /&gt;
 If true, simply checks if the root of your working copy is at HEAD, skipping it if so. &lt;br /&gt;
 Speeds up the average update operation by 75% (and is probably nicer on servers). &lt;br /&gt;
 Advanced users who have done something like a non-root &amp;quot;svn switch&amp;quot; or are using svn externals should know whether they want to turn this off.&lt;br /&gt;
 &lt;br /&gt;
 Again the ticky box goes at the bottom of general preferences, it is soon time for these to be moved to their own page.&lt;br /&gt;
&lt;br /&gt;
 r12198 new ash svn functions:&lt;br /&gt;
 boolean &#039;&#039;&#039;svn_exists&#039;&#039;&#039;( String projectname ) - returns true if a valid working copy named projectname exists in the svn/ folder&lt;br /&gt;
 boolean &#039;&#039;&#039;svn_at_head&#039;&#039;&#039;( String projectname ) - returns true if projectname exists, is a valid WC, and is currently at the same revision # as the repository. &lt;br /&gt;
 This will hit the repo server, so be nice.&lt;br /&gt;
&lt;br /&gt;
 r12206: initial support for automatic svn dependency installation. &lt;br /&gt;
 global preference &#039;&#039;&#039;svnInstallDependencies&#039;&#039;&#039; (default true) controls whether svn will try to install dependencies.&lt;br /&gt;
 &lt;br /&gt;
 Scripters are now allowed to place a file called dependencies.txt in the top-level of a project.&lt;br /&gt;
 Calling it anything else will fail validation, as before. This special file will not be &amp;quot;pushed&amp;quot; to anywhere locally, it will just remain in the working copy folder.&lt;br /&gt;
 On each line of dependencies.txt, you specify one URL to another SVN project.&lt;br /&gt;
&lt;br /&gt;
 r12211: preference &#039;&#039;&#039;svnShowCommitMessages&#039;&#039;&#039; (global, default false) controls whether you want to see new commit messages from svn update operations.&lt;br /&gt;
&lt;br /&gt;
 r12215: add ash function: &#039;&#039;&#039;record svn_info( String project )&#039;&#039;&#039; &lt;br /&gt;
 record has the following fields-&lt;br /&gt;
 &lt;br /&gt;
 String url: the url that the project was checked out from&lt;br /&gt;
 int revision: the revision that the working copy is at&lt;br /&gt;
 String lastChangedAuthor: the author who committed the last change&lt;br /&gt;
 int lastChangedRev: the revision that most recently modified this working copy (note, not necessarily the same as revision field)&lt;br /&gt;
 String lastChangedDate: the date/time when lastChangedRevision happened&lt;br /&gt;
&lt;br /&gt;
 r12238: Add _floristPlantsUsed as a comma-separated list and &#039;&#039;&#039;florist_available()&#039;&#039;&#039;.&lt;br /&gt;
 Add &amp;quot;florist plant [plantname]&amp;quot; to add a plant. [plantname] is case-insensitive, but otherwise must exactly match KoL&#039;s name for the plant.&lt;br /&gt;
 Check what is currently planted when you log in.&lt;br /&gt;
&lt;br /&gt;
 r12244: Add string [location][int] &#039;&#039;&#039;get_florist_plants()&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 example 1...&lt;br /&gt;
 foreach loc, counter, plant in get_florist_plants() {&lt;br /&gt;
    print( &amp;quot;Location &#039;&amp;quot; + loc + &amp;quot;&#039;&amp;quot; );&lt;br /&gt;
    print( &amp;quot;Counter &#039;&amp;quot; + counter + &amp;quot;&#039;&amp;quot; );&lt;br /&gt;
    print( &amp;quot;Plant &#039;&amp;quot; + plant + &amp;quot;&#039;&amp;quot; );&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 example 2...&lt;br /&gt;
 string [location][int] plants = get_florist_plants();&lt;br /&gt;
 foreach loc in plants {&lt;br /&gt;
    print( &amp;quot;Location &#039;&amp;quot; + loc + &amp;quot;&#039;&amp;quot; );&lt;br /&gt;
    string [int] array = plants[ loc ];&lt;br /&gt;
    foreach index in array {&lt;br /&gt;
        string plant = array[index];&lt;br /&gt;
        if ( plant != &amp;quot;&amp;quot; )&lt;br /&gt;
            print( &amp;quot;Plant = &amp;quot; + plant );&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 r12255: Experimental support for Dad Sea Monkee - untested in-game.&lt;br /&gt;
 - When we first see Dad Sea Monkee, parse the clues and solve for them.&lt;br /&gt;
 - &amp;quot;&#039;&#039;&#039;dad&#039;&#039;&#039;&amp;quot; CLI command lists the elemental weakness (and spell) for rounds 1-10&lt;br /&gt;
 - element &#039;&#039;&#039;dad_sea_monkee_weakness( int round )&#039;&#039;&#039; ASH function for consult scripts.&lt;br /&gt;
&lt;br /&gt;
 12657: Add &amp;quot;&#039;&#039;&#039;cache clear&#039;&#039;&#039;&amp;quot; command to remove all cached images from /images&lt;br /&gt;
 &lt;br /&gt;
 12659: New setting - lastImageCacheClear - records the time when you last cleared the&lt;br /&gt;
 image cache. &amp;quot;&#039;&#039;&#039;cache&#039;&#039;&#039;&amp;quot; command with no arguments reports that time.&lt;br /&gt;
&lt;br /&gt;
 12662: Add &#039;&#039;&#039;get_ignore_zone_warnings()&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 12932: Adds my_discomomentum().&lt;br /&gt;
&lt;br /&gt;
 13088: Make Prismatic Damage a real, if derived, modifier name. It cannot be used in&lt;br /&gt;
 modifiers.txt, bit you can ask for it by name either in ASH or the Maximizer&lt;br /&gt;
&lt;br /&gt;
 13175: Add ash command my_soulsauce().&lt;br /&gt;
&lt;br /&gt;
 13213: Add &amp;quot;debug ash on&amp;quot; and &amp;quot;debug ash off&amp;quot; to turn on and off ASH script tracing &lt;br /&gt;
 ASH tracing goes into ASH_datestamp.txt&lt;br /&gt;
&lt;br /&gt;
 13222: Add preference banishedMonsters to track banishes. Add ash command is_banished($monsterName[name])&lt;br /&gt;
&lt;br /&gt;
 13223: Add &amp;quot;thrall&amp;quot; datatype to ASH. &lt;br /&gt;
 New ASH function: thrall my_thrall()&lt;br /&gt;
&lt;br /&gt;
 13234: New ASH functions: to_thrall( int ), to_thrall( string ), to_int( thrall )&lt;br /&gt;
 New proxy fields for thralls: .id, .image, .tinyimage, .skill&lt;br /&gt;
&lt;br /&gt;
 13256: Add CLI command to buy or sell from a coinmaster:&lt;br /&gt;
 coinmaster buy nickname item, item ...&lt;br /&gt;
 coinmaster sell nickname item, item, ...&lt;br /&gt;
&lt;br /&gt;
 r13280 &amp;amp; r13282: Added Ash functions:&lt;br /&gt;
 &#039;&#039;&#039;monster_initiative( [monster] )&#039;&#039;&#039; - returns initiative + ML penalty&lt;br /&gt;
&lt;br /&gt;
 13299: Add &amp;quot;&#039;&#039;&#039;bugbears&#039;&#039;&#039;&amp;quot; command to give status of the 9 Bugbear Mothership zones&lt;br /&gt;
&lt;br /&gt;
 13393: Added ash function &#039;&#039;&#039;stun_skill()&#039;&#039;&#039;, returns the character&#039;s stun skill based on  lass/preferences.&lt;br /&gt;
&lt;br /&gt;
 13395: CLI command &#039;&#039;&#039;restores&#039;&#039;&#039; added, tells you detail on all currently available restores. &amp;quot;restores all&amp;quot; tells you about all restores, &amp;quot;restores obtainable&amp;quot; tells you about all restores that you have or are tradeable.&lt;br /&gt;
&lt;br /&gt;
 13576: New ash data type $bounty&lt;br /&gt;
&lt;br /&gt;
 13581: Add ash to_bounty() function&lt;br /&gt;
&lt;br /&gt;
 13617: Add &#039;&#039;&#039;bounty&#039;&#039;&#039; CLI command. &lt;br /&gt;
 bounty - lists bounty progress and untaken bounties&lt;br /&gt;
 bounty easy|hard|special - accepts a bounty&lt;br /&gt;
&lt;br /&gt;
 13618: Add faxbot ash( $monster ) command. Note that chat must be open for this to successfully work, just as for other mafia fax interfaces.&lt;br /&gt;
&lt;br /&gt;
 13638: Add &amp;quot;bjornify&amp;quot; gCLI command, bjornify_familiar( familiar ), and my_bjorned_familiar().&lt;br /&gt;
&lt;br /&gt;
 13704: Add &amp;quot;grim&amp;quot; gCLI command to get a Grim Brother effect&lt;br /&gt;
&lt;br /&gt;
 13725: Track Audience (only works with character pane at present, request to add to api has been made). Appears on mafia side panel, also available with ash command my_audience().&lt;br /&gt;
&lt;br /&gt;
== Needs Major Work ==&lt;br /&gt;
&lt;br /&gt;
[[Proxy Records]] is only slightly better than a placeholder.&lt;br /&gt;
&lt;br /&gt;
 In r10047, the adventure tab interface was altered. Fix SinginSally&#039;s guide on pages...&lt;br /&gt;
 &lt;br /&gt;
 http://wiki.kolmafia.us/index.php?title=KoLmafia_Guide:_Attack_Script&lt;br /&gt;
 http://wiki.kolmafia.us/index.php?title=KoLmafia_Guide:_Custom_Combat_Script&lt;br /&gt;
 http://wiki.kolmafia.us/index.php?title=KoLmafia_Guide:_Goal-Oriented_Adventuring&lt;br /&gt;
&lt;br /&gt;
 Information on moods calling other moods: http://kolmafia.us/showthread.php?8852-Composable-Moods&amp;amp;p=66468&amp;amp;viewfull=1#post66468&lt;br /&gt;
&lt;br /&gt;
 r10025: Added &#039;&#039;&#039;choice&#039;&#039;&#039; CLI command, to resolve manual or unsupported choiceadventures &lt;br /&gt;
 Added &amp;quot;choice&amp;quot; CLI command, to resolve manual or unsupported choice&lt;br /&gt;
 adventures without having to visit the relay browser - which might be&lt;br /&gt;
 inconvenient if you&#039;re already in the CLI, and don&#039;t need to see the full&lt;br /&gt;
 adventure text to decide which option you want. With no parameter, &amp;quot;choice&amp;quot;&lt;br /&gt;
 just lists the options. With a numeric parameter, it picks that option. &lt;br /&gt;
 With any other parameter, it picks the first option containing that text (in&lt;br /&gt;
 either the actual button text, or mafia&#039;s spoiler text).&lt;br /&gt;
&lt;br /&gt;
== Needs Code Samples ==&lt;br /&gt;
&lt;br /&gt;
There is a list of all pages that require code samples: [[:Category:Needs_Code_Sample|Category:Needs Code Sample]]&lt;br /&gt;
&lt;br /&gt;
Information on how to create a code sample: [[Template:CodeSample]]&lt;/div&gt;</summary>
		<author><name>Gnocchi masala</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Control_Structures&amp;diff=3167</id>
		<title>Control Structures</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Control_Structures&amp;diff=3167"/>
		<updated>2014-03-30T07:23:55Z</updated>

		<summary type="html">&lt;p&gt;Gnocchi masala: Revisions 10765, 10772 &amp;amp; 10774 implement static scope for code that is only to be executed once on loading.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
==Conditional==&lt;br /&gt;
===if===&lt;br /&gt;
{{&lt;br /&gt;
CodeSample|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
if ( boolean )&lt;br /&gt;
{&lt;br /&gt;
   // any statements here&lt;br /&gt;
   // are only going to be executed&lt;br /&gt;
   // if the boolean returns true&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}&lt;br /&gt;
{{&lt;br /&gt;
CodeSample|&lt;br /&gt;
description=Single-statement conditionals may omit the curly braces.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
if ( boolean )&lt;br /&gt;
   // curly braces aren&#039;t required if only one statement follows the conditional&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}&lt;br /&gt;
===else===&lt;br /&gt;
{{&lt;br /&gt;
CodeSample|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
if ( boolean )&lt;br /&gt;
{&lt;br /&gt;
   // statements if true&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
   // the statements here&lt;br /&gt;
   // are only going to be executed&lt;br /&gt;
   // if the boolean returns false&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
===else if===&lt;br /&gt;
{{&lt;br /&gt;
CodeSample|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
if ( boolean 1 )&lt;br /&gt;
{&lt;br /&gt;
   // statements if true&lt;br /&gt;
}&lt;br /&gt;
else if ( boolean 2 )&lt;br /&gt;
{&lt;br /&gt;
   // the statements here&lt;br /&gt;
   // are only going to be executed&lt;br /&gt;
   // if boolean 1 returns false&lt;br /&gt;
   // &amp;amp; boolean 2 returns true&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
===switch===&lt;br /&gt;
{{&lt;br /&gt;
CodeSample|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
switch ( variable )&lt;br /&gt;
{&lt;br /&gt;
   case value:&lt;br /&gt;
      // statements if variable == value&lt;br /&gt;
      // more such statements&lt;br /&gt;
      break;&lt;br /&gt;
   //repeat above for as many values as desired&lt;br /&gt;
   default:&lt;br /&gt;
      // statements executed if&lt;br /&gt;
      // none of the cases were true&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Note that each &amp;quot;case&amp;quot; can only test against a single value; that value can be a variable itself, but not a test expression.&lt;br /&gt;
&lt;br /&gt;
{{&lt;br /&gt;
CodeSample|&lt;br /&gt;
description=If switch has no parameter, then each case is evaluated as a boolean expression, like a string of if-then statements.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
switch&lt;br /&gt;
{&lt;br /&gt;
   case boolean expression:&lt;br /&gt;
      // if the expression is true, this statement is executed&lt;br /&gt;
      // more such statements&lt;br /&gt;
      break;&lt;br /&gt;
   //repeat above for as many conditionals as desired&lt;br /&gt;
   default:&lt;br /&gt;
      // statements executed if&lt;br /&gt;
      // none of the cases were true&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==Unconditional==&lt;br /&gt;
===try / finally===&lt;br /&gt;
{{&lt;br /&gt;
CodeSample|&lt;br /&gt;
description=Block1 is executed as normal, and then block2 is executed regardless of whether&lt;br /&gt;
block1 finished normally, generated an error, or encountered a &#039;return&#039;,&lt;br /&gt;
&#039;break&#039;, or &#039;continue&#039; statement.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
try&lt;br /&gt;
{&lt;br /&gt;
   // block1&lt;br /&gt;
}&lt;br /&gt;
finally&lt;br /&gt;
{&lt;br /&gt;
   // block2&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
===static===&lt;br /&gt;
{{&lt;br /&gt;
CodeSample|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
static&lt;br /&gt;
{&lt;br /&gt;
   // any statements here&lt;br /&gt;
   // are only going to be executed once at the&lt;br /&gt;
   // first time the script executes in a session.&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}&lt;br /&gt;
{{&lt;br /&gt;
CodeSample|&lt;br /&gt;
description=Single-statement static declarations may omit the curly braces.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
static&lt;br /&gt;
   // curly braces aren&#039;t required if only one statement follows the static keyword.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==Loops==&lt;br /&gt;
===while===&lt;br /&gt;
{{&lt;br /&gt;
CodeSample|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
while ( boolean )&lt;br /&gt;
{&lt;br /&gt;
   // as with an if statement&lt;br /&gt;
   // this area is only entered&lt;br /&gt;
   // if the boolean tests true&lt;br /&gt;
   // once all this is done&lt;br /&gt;
   // it goes back to the begining&lt;br /&gt;
   // and will keep executing&lt;br /&gt;
   // as long as the boolean remains true&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
===repeat until===&lt;br /&gt;
&lt;br /&gt;
This is similar to the [http://en.wikipedia.org/wiki/Do_while_loop do...while loop], but only ends the loop when the &amp;lt;code&amp;gt;boolean&amp;lt;/code&amp;gt; expression evaluates to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{&lt;br /&gt;
CodeSample|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
repeat&lt;br /&gt;
{&lt;br /&gt;
   // this is the same&lt;br /&gt;
   // as the while loop above&lt;br /&gt;
   // with one exception:&lt;br /&gt;
   // all of this code will&lt;br /&gt;
   // execute at least once&lt;br /&gt;
   // as the test doesn&#039;t occur&lt;br /&gt;
   // until the very end&lt;br /&gt;
} until ( boolean );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
===for===&lt;br /&gt;
{{&lt;br /&gt;
CodeSample|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
for x from a to b by c {&lt;br /&gt;
   //do stuff&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}&lt;br /&gt;
Above is the general case. You don&#039;t need to specify whether it&#039;s going up or down - although doing so by using upto or downto does allow a runtime check to make sure you didn&#039;t screw up.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t specify &amp;quot;c&amp;quot;, it defaults to incrementing/decrementing by 1.  The first iteration is at a and the last is at b (that is to say, it goes from a to b, inclusive).&lt;br /&gt;
&lt;br /&gt;
===foreach===&lt;br /&gt;
{{&lt;br /&gt;
CodeSample|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
foreach key in aggregate {&lt;br /&gt;
   //do stuff&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}&lt;br /&gt;
Assigns each key in the supplied map or slice to &amp;quot;&amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt;&amp;quot; and iterates through the map. Due to how maps are handled, &amp;lt;code&amp;gt;foreach&amp;lt;/code&amp;gt; is guaranteed to iterate through the map in sorted order.&lt;br /&gt;
&lt;br /&gt;
{{&lt;br /&gt;
CodeSample|&lt;br /&gt;
description=For example:|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
boolean [int][string] map;&lt;br /&gt;
map[15][&amp;quot;test&amp;quot;] = true;&lt;br /&gt;
foreach int_index in map {&lt;br /&gt;
   print(int_index); //this will print &#039;15&#039; once, since there is only one valid value for this index&lt;br /&gt;
   foreach string_index in map[int_index] //this iterates over the &amp;quot;slice&amp;quot; of the map where 1 is fixed as the index&lt;br /&gt;
   { &lt;br /&gt;
      print(string_index); //This will print &amp;quot;test&amp;quot; once, since there is only one valid value for this index&lt;br /&gt;
      print(map[int_index][string_index]); //this will print &amp;quot;true&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;|&lt;br /&gt;
moreinfo=&lt;br /&gt;
So the output is&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
15&lt;br /&gt;
test&lt;br /&gt;
true&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
{{&lt;br /&gt;
CodeSample|&lt;br /&gt;
description=For a multidimensional map, instead of nesting &amp;lt;code&amp;gt;foreach&amp;lt;/code&amp;gt; statements two iterators can be used inline.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
foreach x, y in map {&lt;br /&gt;
   //do stuff&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}&lt;br /&gt;
{{&lt;br /&gt;
CodeSample|&lt;br /&gt;
description=This is identical to:|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
foreach x in map {&lt;br /&gt;
   foreach y in map[x] {&lt;br /&gt;
      //do stuff&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{CodeSample|&lt;br /&gt;
description=You can also directly specify the value stored in the map by specifying one more variable than the number of keys in the map:|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
//string [string, int, item] my_map;&lt;br /&gt;
foreach s, i, m, value in my_map {&lt;br /&gt;
    print( s + &amp;quot;, &amp;quot; + i + &amp;quot;, &amp;quot; + m + &amp;quot; =&amp;gt; &amp;quot; + value );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
See the page for [[Data Structures]] for more information on aggregates.&lt;br /&gt;
&lt;br /&gt;
==Continuation &amp;amp; Exiting==&lt;br /&gt;
Like many languages with looping structures, ASH supports the break and continue statements.  All looping structures (for, while, repeat until, and foreach) support these statements.&lt;br /&gt;
&lt;br /&gt;
===break===&lt;br /&gt;
Breaks out of the smallest enclosing loop.  In a switch statement, breaks out of the switch statement.  Execution resumes at the first statement after the end of the loop/switch statement.&lt;br /&gt;
&lt;br /&gt;
===continue===&lt;br /&gt;
Continues on to the next iteration of the loop (skipping any statements in this iteration that occur after the continue statement).  In a switch statement, continue is allowed iff the switch is inside a loop, and acts as any other continue.&lt;br /&gt;
&lt;br /&gt;
===return===&lt;br /&gt;
Exits the function and returns the value following the return statement, if specified. Note that the value&#039;s datatype must match that of the function itself (void functions can only use return by itself).&lt;br /&gt;
&lt;br /&gt;
===exit===&lt;br /&gt;
Exits the script. Using return when in main() achieves the same effect. Note that while this will end the current script, it will not stop automation.&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting]]&lt;/div&gt;</summary>
		<author><name>Gnocchi masala</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Proxy_Records&amp;diff=7536</id>
		<title>Proxy Records</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Proxy_Records&amp;diff=7536"/>
		<updated>2014-03-30T07:06:04Z</updated>

		<summary type="html">&lt;p&gt;Gnocchi masala: Refreshed output of code samples.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Proxy Records is a way for KoLmafia to pass additional information to the scripter. Many datatypes contain these proxy records. such as items, skills, effects, monsters and coinmasters. This information is referred to as proxy records because the manner of reference is similar to a field of a [[Data_Structures#Records|record]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{CodeSample|&lt;br /&gt;
description=This is an example of how to retrieve proxy record information in a script. Notice it uses the same notation as if the item datatype is a record.|&lt;br /&gt;
code=&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
item it = $item[coffee pixie stick];&lt;br /&gt;
print(&amp;quot;You can buy a &amp;quot;+ it +&amp;quot; at the &amp;quot;+ it.seller);&lt;br /&gt;
print(&amp;quot;It will consume &amp;quot;+ it.spleen +&amp;quot; spleen and give &amp;quot;+ it.adventures +&amp;quot; adventures.&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here&#039;s an example of displaying a proxy record in the CLI. Note that it displays all fields associated with that datatype.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; ash $item[coffee pixie stick]&lt;br /&gt;
&lt;br /&gt;
Returned: coffee pixie stick&lt;br /&gt;
plural =&amp;gt; coffee pixie sticks&lt;br /&gt;
descid =&amp;gt; 936288573&lt;br /&gt;
image =&amp;gt; cpstick.gif&lt;br /&gt;
smallimage =&amp;gt; cpstick.gif&lt;br /&gt;
levelreq =&amp;gt; 4&lt;br /&gt;
quality =&amp;gt;&lt;br /&gt;
adventures =&amp;gt; 5-10&lt;br /&gt;
muscle =&amp;gt; 0&lt;br /&gt;
mysticality =&amp;gt; 0&lt;br /&gt;
moxie =&amp;gt; 0&lt;br /&gt;
fullness =&amp;gt; 0&lt;br /&gt;
inebriety =&amp;gt; 0&lt;br /&gt;
spleen =&amp;gt; 4&lt;br /&gt;
minhp =&amp;gt; 0&lt;br /&gt;
maxhp =&amp;gt; 0&lt;br /&gt;
minmp =&amp;gt; 0&lt;br /&gt;
maxmp =&amp;gt; 0&lt;br /&gt;
dailyusesleft =&amp;gt; 0&lt;br /&gt;
notes =&amp;gt;&lt;br /&gt;
quest =&amp;gt; false&lt;br /&gt;
gift =&amp;gt; false&lt;br /&gt;
tradeable =&amp;gt; false&lt;br /&gt;
discardable =&amp;gt; true&lt;br /&gt;
combat =&amp;gt; false&lt;br /&gt;
reusable =&amp;gt; false&lt;br /&gt;
usable =&amp;gt; true&lt;br /&gt;
multi =&amp;gt; true&lt;br /&gt;
fancy =&amp;gt; false&lt;br /&gt;
candy =&amp;gt; false&lt;br /&gt;
seller =&amp;gt; Arcade Ticket Counter&lt;br /&gt;
buyer =&amp;gt; none&lt;br /&gt;
name_length =&amp;gt; 18&lt;br /&gt;
&lt;br /&gt;
&amp;gt; ash $coinmaster[Arcade Ticket Counter]&lt;br /&gt;
&lt;br /&gt;
Returned: Arcade Ticket Counter&lt;br /&gt;
token =&amp;gt; ticket&lt;br /&gt;
item =&amp;gt; Game Grid ticket&lt;br /&gt;
property =&amp;gt;&lt;br /&gt;
available_tokens =&amp;gt; 13&lt;br /&gt;
buys =&amp;gt; false&lt;br /&gt;
sells =&amp;gt; true&lt;br /&gt;
&lt;br /&gt;
&amp;gt; ash $location[The Penultimate Fantasy Airship]&lt;br /&gt;
&lt;br /&gt;
Returned: The Penultimate Fantasy Airship&lt;br /&gt;
nocombats =&amp;gt; false&lt;br /&gt;
zone =&amp;gt; Beanstalk&lt;br /&gt;
parent =&amp;gt; Beanstalk&lt;br /&gt;
parentdesc =&amp;gt; Above the Beanstalk&lt;br /&gt;
environment =&amp;gt; outdoor&lt;br /&gt;
bounty =&amp;gt; burned-out arcanodiode&lt;br /&gt;
combat_queue =&amp;gt; Irritating Series of Random Encounters; Quiet Healer; Irritating Series of Random Encounters; Burly Sidekick; Protagonist&lt;br /&gt;
noncombat_queue =&amp;gt; Rip Rop Wrappety Do; F-F-Fantastic!; The Super Secret Canadian Mind-Control Device; The Super Secret Canadian Mind-Control Device; The Super Secret Canadian Mind-Control Device&lt;br /&gt;
kisses =&amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
&amp;gt; ash $item[burned-out arcanodiode]&lt;br /&gt;
&lt;br /&gt;
Returned: burned-out arcanodiode&lt;br /&gt;
plural =&amp;gt; burned-out arcanodiodes&lt;br /&gt;
descid =&amp;gt; 207784873&lt;br /&gt;
image =&amp;gt; diode.gif&lt;br /&gt;
smallimage =&amp;gt; diode.gif&lt;br /&gt;
levelreq =&amp;gt; 0&lt;br /&gt;
quality =&amp;gt;&lt;br /&gt;
adventures =&amp;gt;&lt;br /&gt;
muscle =&amp;gt;&lt;br /&gt;
mysticality =&amp;gt;&lt;br /&gt;
moxie =&amp;gt;&lt;br /&gt;
fullness =&amp;gt; 0&lt;br /&gt;
inebriety =&amp;gt; 0&lt;br /&gt;
spleen =&amp;gt; 0&lt;br /&gt;
minhp =&amp;gt; 0&lt;br /&gt;
maxhp =&amp;gt; 0&lt;br /&gt;
minmp =&amp;gt; 0&lt;br /&gt;
maxmp =&amp;gt; 0&lt;br /&gt;
dailyusesleft =&amp;gt; 0&lt;br /&gt;
notes =&amp;gt;&lt;br /&gt;
quest =&amp;gt; true&lt;br /&gt;
gift =&amp;gt; false&lt;br /&gt;
tradeable =&amp;gt; false&lt;br /&gt;
discardable =&amp;gt; false&lt;br /&gt;
combat =&amp;gt; false&lt;br /&gt;
reusable =&amp;gt; false&lt;br /&gt;
usable =&amp;gt; false&lt;br /&gt;
multi =&amp;gt; false&lt;br /&gt;
fancy =&amp;gt; false&lt;br /&gt;
candy =&amp;gt; false&lt;br /&gt;
seller =&amp;gt; none&lt;br /&gt;
buyer =&amp;gt; none&lt;br /&gt;
name_length =&amp;gt; 22&lt;br /&gt;
&lt;br /&gt;
&amp;gt; ash $skill[empathy of the newt]&lt;br /&gt;
&lt;br /&gt;
Returned: Empathy of the Newt&lt;br /&gt;
level =&amp;gt; 8&lt;br /&gt;
image =&amp;gt; empathy.gif&lt;br /&gt;
traincost =&amp;gt; 3250&lt;br /&gt;
class =&amp;gt; Turtle Tamer&lt;br /&gt;
libram =&amp;gt; false&lt;br /&gt;
passive =&amp;gt; false&lt;br /&gt;
buff =&amp;gt; true&lt;br /&gt;
combat =&amp;gt; false&lt;br /&gt;
song =&amp;gt; false&lt;br /&gt;
expression =&amp;gt; false&lt;br /&gt;
permable =&amp;gt; true&lt;br /&gt;
dailylimit =&amp;gt; -1&lt;br /&gt;
timescast =&amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
&amp;gt; ash $familiar[slimeling]&lt;br /&gt;
&lt;br /&gt;
Returned: Slimeling&lt;br /&gt;
combat =&amp;gt; true&lt;br /&gt;
hatchling =&amp;gt; squirming Slime larva&lt;br /&gt;
image =&amp;gt; slimeling.gif&lt;br /&gt;
name =&amp;gt; Princess Vina&lt;br /&gt;
charges =&amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
&amp;gt; ash $monster[black widow]&lt;br /&gt;
&lt;br /&gt;
Returned: black widow&lt;br /&gt;
base_hp =&amp;gt; 121&lt;br /&gt;
base_attack =&amp;gt; 132&lt;br /&gt;
base_defense =&amp;gt; 110&lt;br /&gt;
raw_hp =&amp;gt; 121&lt;br /&gt;
raw_attack =&amp;gt; 132&lt;br /&gt;
raw_defense =&amp;gt; 110&lt;br /&gt;
base_initiative =&amp;gt; 50&lt;br /&gt;
raw_initiative =&amp;gt; 50&lt;br /&gt;
attack_element =&amp;gt; none&lt;br /&gt;
defense_element =&amp;gt; none&lt;br /&gt;
physical_resistance =&amp;gt; 0&lt;br /&gt;
min_meat =&amp;gt; 40&lt;br /&gt;
max_meat =&amp;gt; 60&lt;br /&gt;
base_mainstat_exp =&amp;gt; 16.5&lt;br /&gt;
phylum =&amp;gt; bug&lt;br /&gt;
poison =&amp;gt; Really Quite Poisoned&lt;br /&gt;
boss =&amp;gt; false&lt;br /&gt;
image =&amp;gt; blackwidow.gif&lt;br /&gt;
&lt;br /&gt;
&amp;gt; ash $effect[sugar rush]&lt;br /&gt;
&lt;br /&gt;
Returned: Sugar Rush&lt;br /&gt;
default =&amp;gt; use either 1 Angry Farmer candy, 1 Tasty Fun Good rice candy, 1 Crimbo candied pecan, Crimbo fudge, Crimbo peppermint bark, 1 Breath mint, 1 that gum you like&lt;br /&gt;
note =&amp;gt;&lt;br /&gt;
all =&amp;gt; aggregate boolean [string]&lt;br /&gt;
  use 1 Angry Farmer candy =&amp;gt; true&lt;br /&gt;
  use 1 Tasty Fun Good rice candy =&amp;gt; true&lt;br /&gt;
  use 1 Crimbo candied pecan =&amp;gt; true&lt;br /&gt;
  use Crimbo fudge =&amp;gt; true&lt;br /&gt;
  use Crimbo peppermint bark =&amp;gt; true&lt;br /&gt;
  use 1 Breath mint =&amp;gt; true&lt;br /&gt;
  use 1 that gum you like =&amp;gt; true&lt;br /&gt;
image =&amp;gt; http://images.kingdomofloathing.com/itemimages/hoppedup.gif&lt;br /&gt;
descid =&amp;gt; 83695b70e0470a36125feca3198a16b4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting]]&lt;/div&gt;</summary>
		<author><name>Gnocchi masala</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Help:To_Do_List&amp;diff=7668</id>
		<title>Help:To Do List</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Help:To_Do_List&amp;diff=7668"/>
		<updated>2014-03-30T06:55:16Z</updated>

		<summary type="html">&lt;p&gt;Gnocchi masala: Revision 12906 add shop_price() &amp;amp; refresh_shop() functions.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;To Do&amp;quot; List ==&lt;br /&gt;
&lt;br /&gt;
This is a list of stuff that is missing from the wiki or else needs major work. Please help!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you need tips for editing the wiki, find that here: [[Help:Editing]].&lt;br /&gt;
&lt;br /&gt;
*CLI Commands are usually only added to the [[CLI Reference]]. Only very complicated commands require their own page.&lt;br /&gt;
&lt;br /&gt;
*ASH commands need to be listed on their category page as well as on the [[Ash Functions]] list. &lt;br /&gt;
**It is not necessary to always create a code sample, although it is preferred.&lt;br /&gt;
**If you don&#039;t add a code sample, please remember to add &#039;&#039;&#039;needscode=yes|&#039;&#039;&#039; to the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Missing Stuff ==&lt;br /&gt;
 10078: ash function format_dtg&lt;br /&gt;
 10081: ash function format_dtg renamed to be&lt;br /&gt;
 string &#039;&#039;&#039;format_date_time(inFormat, dtg, outFormat)&#039;&#039;&#039;&lt;br /&gt;
 more info: http://kolmafia.us/showthread.php?8451-time_to_string()-with-parameter&amp;amp;p=64058&amp;amp;viewfull=1#post64058&lt;br /&gt;
&lt;br /&gt;
 Modify examples on proxy record page because of:&lt;br /&gt;
 10122: Add the boolean &amp;quot;fancy&amp;quot; and &amp;quot;candy&amp;quot; fields to item &#039;&#039;&#039;proxy records&#039;&#039;&#039;.&lt;br /&gt;
 10147: Initial support for &amp;quot;Crimbo 2011&amp;quot; coinmaster: trade candy for Candy Credits&lt;br /&gt;
 10412: Add $skill &#039;&#039;&#039;proxy records&#039;&#039;&#039;: .dailylimit and .timescast&lt;br /&gt;
 10879: Add a boolean &amp;quot;boss&amp;quot; field to $monster[]&lt;br /&gt;
&lt;br /&gt;
 10227: Add the &amp;lt;s&amp;gt;&amp;quot;&#039;&#039;&#039;closet empty&#039;&#039;&#039;&amp;quot; CLI command, and&amp;lt;/s&amp;gt; the &#039;&#039;&#039;empty_closet()&#039;&#039;&#039; ASH function.&lt;br /&gt;
&lt;br /&gt;
 r9181, 9183, 9184 &amp;amp; r9190: &#039;&#039;&#039;moods&#039;&#039;&#039; per slyz&#039;s summary here: http://kolmafia.us/showthread.php?8852-Composable-Moods&lt;br /&gt;
&lt;br /&gt;
 r10344 Add &#039;&#039;&#039;tavern( string goal )&#039;&#039;&#039; ASH function. &lt;br /&gt;
 goal can be &amp;quot;faucet&amp;quot;, &amp;quot;baron&amp;quot;, or  &amp;quot;explore&amp;quot; (to explore all remaining unexplored squares). &lt;br /&gt;
 r10345 Add ASH &#039;&#039;&#039;tavern( &amp;quot;fight&amp;quot; )&#039;&#039;&#039; to explore cellar until the Baron&#039;s mansion is found &lt;br /&gt;
 and then go in to fight him.&lt;br /&gt;
&lt;br /&gt;
 r10753-6 &#039;&#039;&#039;get_goals()&#039;&#039;&#039; returns a string[int] containing all the conditions that KoLmafia will &lt;br /&gt;
 try to satisfy. Add g&#039;&#039;&#039;oal_exists()&#039;&#039;&#039; where you can pass in a goal type (choiceadv, autostop, &lt;br /&gt;
 meat, health, mana, item) and KoLmafia will tell you if there are any goals that match.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;static&#039;&#039;&#039; scope is added!&lt;br /&gt;
 r10765: Add a &amp;quot;final&amp;quot; scope type to ASH which allows data/commands to be executed only &lt;br /&gt;
 once per session.&lt;br /&gt;
 r10772: A final declaration can either take a block, surrounded by {}, or a single&lt;br /&gt;
 command or declaration.&lt;br /&gt;
 r10774: ASH: &amp;quot;final&amp;quot; -&amp;gt; &amp;quot;static&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 10922: Add &#039;&#039;&#039;get_player_id()&#039;&#039;&#039; method to ASH&lt;br /&gt;
&lt;br /&gt;
 10937: Add &#039;&#039;&#039;minstrel_quest()&#039;&#039;&#039; boolean function,&lt;br /&gt;
 which returns true when Clancy has a new quest for you.&lt;br /&gt;
&lt;br /&gt;
 10971: Added boolean &#039;&#039;&#039;hippy_stone_broken()&#039;&#039;&#039; function&lt;br /&gt;
&lt;br /&gt;
 11023: Make the CLI &amp;quot;attack&amp;quot; command work again. Make &amp;quot;pvp&amp;quot; equivalent to &amp;quot;steal&amp;quot; instead &lt;br /&gt;
 of &amp;quot;attack&amp;quot;. Added &amp;quot;swagger&amp;quot; as equivalent to &amp;quot;flowers&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 11055: Added a 2-parameter version of &#039;&#039;&#039;to_string()&#039;&#039;&#039;, where the first parameter can&lt;br /&gt;
 currently be an int or float (other types are possible, but didn&#039;t seem&lt;br /&gt;
 useful), and the second is a format string as defined by the Java&lt;br /&gt;
 String.format() method (which in turn is based on C printf() format strings).&lt;br /&gt;
 For example, &amp;quot;%.2f&amp;quot; will output a float with exactly two digits after the&lt;br /&gt;
 (localized) decimal point.&lt;br /&gt;
&lt;br /&gt;
 11110: Add ASH function: &#039;&#039;&#039;pvp_attacks_left()&#039;&#039;&#039;. This is guaranteed accurate only if you &lt;br /&gt;
 have recently looked at the Fight! page. Tracking of PVP fights gained via&lt;br /&gt;
 consumption or familiar action and initialization at login will come later -&lt;br /&gt;
 after api.php is updated to include the figure.&lt;br /&gt;
 &lt;br /&gt;
 Add &#039;&#039;&#039;beforePVPScript&#039;&#039;&#039; setting which contains a script to be executed before a PVP&lt;br /&gt;
 attack. At the moment, this is only called from the Relay Browser - and only if&lt;br /&gt;
 relayRunsBeforePVPScript is true&lt;br /&gt;
 &lt;br /&gt;
 11112: Call beforePVPScript, if present, during automated PVP via the &amp;quot;flowers&amp;quot; command&lt;br /&gt;
&lt;br /&gt;
 11112: Change ASH &#039;&#039;&#039;have_outfit()&#039;&#039;&#039; to work with custom outfits, as well as normal outfit &lt;br /&gt;
 Add ASH &#039;&#039;&#039;is_wearing_outfit()&#039;&#039;&#039; to return TRUE if you are currently wearing the&lt;br /&gt;
 specified custom or normal outfit.&lt;br /&gt;
&lt;br /&gt;
 10815: Allow certain ASH constants to be used in custom combat settings. &lt;br /&gt;
 $phylum[] refers to the monster categorization, see the built-in ASH constants documentation for more information.&lt;br /&gt;
 $element[] refers to either the attack or the defense element. As long as one matches, this check will be satisfied. This may limit its usefulness, but we can evaluate it later.&lt;br /&gt;
 $item[] refers to an item that the monster drops. If there are multiple monsters that drop the item, or if you just can&#039;t remember which one it is, and your combat strategy happens to depend on it...&lt;br /&gt;
 In order to match, everything that you specify must match. So if you specify an impossible combination, that CCS section will not run.&lt;br /&gt;
 &lt;br /&gt;
 [ $element[ spooky ] $item[ hobo nickel ] ]&lt;br /&gt;
 skill entangling noodles&lt;br /&gt;
 skill weapon of the pastalord&lt;br /&gt;
 &lt;br /&gt;
 [ bathroom $element[ spooky ] ]&lt;br /&gt;
 attack&lt;br /&gt;
 &lt;br /&gt;
 [ $phylum[ beast ] ]&lt;br /&gt;
 skill stomp&lt;br /&gt;
 attack&lt;br /&gt;
&lt;br /&gt;
 11197: new ASH functions:&lt;br /&gt;
 boolean &#039;&#039;&#039;is_familiar_equipment_locked()&#039;&#039;&#039; &lt;br /&gt;
 -returns true if current familiar equipment is locked, otherwise false&lt;br /&gt;
 void &#039;&#039;&#039;lock_familiar_equipment(boolean locking)&#039;&#039;&#039;&lt;br /&gt;
 -tries to lock/unlock fam equipment accordingly.&lt;br /&gt;
&lt;br /&gt;
 11208: Add int &#039;&#039;&#039;get_clan_id()&#039;&#039;&#039; and string &#039;&#039;&#039;get_clan_name()&#039;&#039;&#039; functions.&lt;br /&gt;
&lt;br /&gt;
 11267: Pass chat events along to &#039;&#039;&#039;chatbotscript&#039;&#039;&#039;. The sender is an empty string, &lt;br /&gt;
 the channel is &amp;quot;Events&amp;quot;, and the message is stripped of its HTML.&lt;br /&gt;
&lt;br /&gt;
 11432: Add &#039;&#039;&#039;is_discardable()&#039;&#039;&#039; which will return true even if an item can be autosold, &lt;br /&gt;
 so be careful you don&#039;t get cheated out of some meat.&lt;br /&gt;
&lt;br /&gt;
 11438: Revert use of gift flag to previous interpretation: KoL has the item marked as&lt;br /&gt;
 a &amp;quot;Gift Item&amp;quot;. Instead, change isGiftable() - which is also used by the ASH&lt;br /&gt;
 is_giftable() function - to allow either the &amp;quot;tradeable&amp;quot; or &amp;quot;gift&amp;quot; flags.&lt;br /&gt;
 Fix the item.gift proxy field to return the value of the gift flag, rather than&lt;br /&gt;
 being a synonym for is_giftable().&lt;br /&gt;
&lt;br /&gt;
 11555: Add monster.raw_attack, monster.raw_defense, and monster.raw_hp to return the &lt;br /&gt;
 unmodified stats from monsters.txt.&lt;br /&gt;
&lt;br /&gt;
 11561:  Add monster &#039;&#039;&#039;image_to_monster( string )&#039;&#039;&#039; ASH function for looking up monster by image file name.&lt;br /&gt;
 Add monster.image proxy field for going the other way.&lt;br /&gt;
&lt;br /&gt;
 11771: experimental: add overloaded maximize() signature in ASH&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;maximize( string maximizerString, int maxPrice, int priceLevel, boolean simulate, boolean showEquipment )&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 returns an aggregate of records with each record containing the fields:&lt;br /&gt;
 **display =&amp;gt; display text, as it is shown in the maximizer frame&lt;br /&gt;
 **cmd =&amp;gt; actual command string that the maximizer runs to get the boost&lt;br /&gt;
 **score =&amp;gt; the boost&#039;s score&lt;br /&gt;
 **effect =&amp;gt; the effect provided by the boost - if applicable. effect[none] if it is equipment.&lt;br /&gt;
 **item =&amp;gt; $item[] that is being suggested for use or equipment&lt;br /&gt;
 **skill =&amp;gt; $skill[] that is being suggested&lt;br /&gt;
 &lt;br /&gt;
 If the showEquipment argument is false, equipment will be omitted from the results.&lt;br /&gt;
&lt;br /&gt;
 r11707: Experimental ASH feature: the main() function of imported scripts can now be&lt;br /&gt;
 invoked, under the alternate name main@filename()&lt;br /&gt;
 (where &#039;filename&#039; can be overridden by a &#039;script&#039; directive, any &amp;quot;.ash&amp;quot;&lt;br /&gt;
 suffix is dropped, and non-alphanumeric characters are replaced by&lt;br /&gt;
 underscores). Note that no spaces are allowed around the @, the whole thing&lt;br /&gt;
 is a single token.&lt;br /&gt;
&lt;br /&gt;
 r11965: Add my_companion()&lt;br /&gt;
&lt;br /&gt;
 r11985: Add the &amp;quot;skeleton&amp;quot; CLI command.&lt;br /&gt;
&lt;br /&gt;
 r12019: Add &amp;quot;eudora&amp;quot; CLI command&lt;br /&gt;
&lt;br /&gt;
 r12060: add ASH get_moods(), returns an aggregate of currently defined mood names.&lt;br /&gt;
 &amp;quot;mood listall&amp;quot; in the gCLI will also print a list of defined moods.&lt;br /&gt;
&lt;br /&gt;
 r12062: add ASH get_outfits() and get_custom_outfits()&lt;br /&gt;
&lt;br /&gt;
 r12070: Overloaded version of appearance_rates considers monster queue: &lt;br /&gt;
 appearance_rates( $location[] location, boolean includeQueue )&lt;br /&gt;
&lt;br /&gt;
 r12105: maximizerMRULength is now maximizerMRUSize&lt;br /&gt;
 That affects this page: [[Hidden_Features#Most_Recently_Used_Modifier_Maximizer_Expression]]&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;SVN Features added&#039;&#039;&#039; by Roippi! SVN integration was (brokenly) implemented in r12141 and more correctly implemented in r12144.&lt;br /&gt;
 &lt;br /&gt;
 FOR USERS:&lt;br /&gt;
 * svn checkout &amp;lt;svnurl&amp;gt; - checks out a svn repository and adds the files from the working copy to the appropriate locations.&lt;br /&gt;
 * svn update - updates all of your installed projects and pushes any changes to the appropriate locations.&lt;br /&gt;
 * svn list - lists installed projects.&lt;br /&gt;
 * svn delete &amp;lt;scriptname&amp;gt; - deletes installed projects and the corresponding files that it pushed. &amp;lt;scriptname&amp;gt; fuzzy matches the script names from svn list.&lt;br /&gt;
 &lt;br /&gt;
 FOR SCRIPTERS:&lt;br /&gt;
 You can provide a &amp;lt;nowiki&amp;gt;svn://, http://, or https://&amp;lt;/nowiki&amp;gt; link to a valid svn repo. The link does not need to be to the root of the repository.&lt;br /&gt;
 At the location specified by the url, there are only four permissible folders:&lt;br /&gt;
 * ccs/&lt;br /&gt;
 * data/&lt;br /&gt;
 * images/&lt;br /&gt;
 * relay/&lt;br /&gt;
 * scripts/&lt;br /&gt;
 &lt;br /&gt;
 Any files or directories in the location specified by your url that are not named the above will cause your repo to fail validation and thus it will not be checked out.&lt;br /&gt;
 Within the valid folders, you can nest files however you want.&lt;br /&gt;
 When users check out your project, the files (and nested folders) will be pushed to the corresponding mafia directories.&lt;br /&gt;
 &lt;br /&gt;
 r12157: &#039;&#039;&#039;svn increment &amp;lt;projectname&amp;gt;&#039;&#039;&#039; and &#039;&#039;&#039;svn decrement &amp;lt;projectname&amp;gt;&#039;&#039;&#039; moves an installed svn project up/down one revision, respectively.&lt;br /&gt;
 &#039;&#039;&#039;svn update&#039;&#039;&#039; can also take &amp;lt;projectname&amp;gt; argument or a &amp;lt;SVNURL&amp;gt; argument. Or just be blank to update everything.&lt;br /&gt;
 r12177 svn inc/dec does the same thing as svn increment/decrement. Because typing stuff is hard. &lt;br /&gt;
 &lt;br /&gt;
 12167: command &amp;quot;&#039;&#039;&#039;svn sync&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 Looks through your working copies for modifications, then checks if that file differs from the local copy. If it differs, the WC file is copied over the local copy one.&lt;br /&gt;
 Note that this is very different from &amp;quot;svn update&amp;quot; and indeed does not contact the repository server at all.&lt;br /&gt;
 &lt;br /&gt;
 If you are unsure if you want this feature, this is only for people who maintain modifications to the files in their svn/ folders that they want merged in with updates from the repo.&lt;br /&gt;
 If you are just doing checkout/update operations and don&#039;t know what this &amp;quot;merging&amp;quot; business is about, you don&#039;t need this feature.&lt;br /&gt;
 &lt;br /&gt;
 Users who want to automatically sync after update operations can set syncAfterSvnUpdate = true.&lt;br /&gt;
&lt;br /&gt;
 r12153: add &#039;&#039;&#039;svnUpdateOnLogin&#039;&#039;&#039; (global, default false), which runs svn update before breakfast/loginScript.&lt;br /&gt;
 This could be useful if your loginScript has svn dependencies.&lt;br /&gt;
 &lt;br /&gt;
 r12188: add global preference &#039;&#039;&#039;_svnUpdated&#039;&#039;&#039;&lt;br /&gt;
 only do login svn update (mediated by svnUpdateOnLogin) at most once per day.&lt;br /&gt;
&lt;br /&gt;
 r12181: add preference &#039;&#039;&#039;simpleSvnUpdate&#039;&#039;&#039; (global, default true)&lt;br /&gt;
 If true, simply checks if the root of your working copy is at HEAD, skipping it if so. &lt;br /&gt;
 Speeds up the average update operation by 75% (and is probably nicer on servers). &lt;br /&gt;
 Advanced users who have done something like a non-root &amp;quot;svn switch&amp;quot; or are using svn externals should know whether they want to turn this off.&lt;br /&gt;
 &lt;br /&gt;
 Again the ticky box goes at the bottom of general preferences, it is soon time for these to be moved to their own page.&lt;br /&gt;
&lt;br /&gt;
 r12198 new ash svn functions:&lt;br /&gt;
 boolean &#039;&#039;&#039;svn_exists&#039;&#039;&#039;( String projectname ) - returns true if a valid working copy named projectname exists in the svn/ folder&lt;br /&gt;
 boolean &#039;&#039;&#039;svn_at_head&#039;&#039;&#039;( String projectname ) - returns true if projectname exists, is a valid WC, and is currently at the same revision # as the repository. &lt;br /&gt;
 This will hit the repo server, so be nice.&lt;br /&gt;
&lt;br /&gt;
 r12206: initial support for automatic svn dependency installation. &lt;br /&gt;
 global preference &#039;&#039;&#039;svnInstallDependencies&#039;&#039;&#039; (default true) controls whether svn will try to install dependencies.&lt;br /&gt;
 &lt;br /&gt;
 Scripters are now allowed to place a file called dependencies.txt in the top-level of a project.&lt;br /&gt;
 Calling it anything else will fail validation, as before. This special file will not be &amp;quot;pushed&amp;quot; to anywhere locally, it will just remain in the working copy folder.&lt;br /&gt;
 On each line of dependencies.txt, you specify one URL to another SVN project.&lt;br /&gt;
&lt;br /&gt;
 r12211: preference &#039;&#039;&#039;svnShowCommitMessages&#039;&#039;&#039; (global, default false) controls whether you want to see new commit messages from svn update operations.&lt;br /&gt;
&lt;br /&gt;
 r12215: add ash function: &#039;&#039;&#039;record svn_info( String project )&#039;&#039;&#039; &lt;br /&gt;
 record has the following fields-&lt;br /&gt;
 &lt;br /&gt;
 String url: the url that the project was checked out from&lt;br /&gt;
 int revision: the revision that the working copy is at&lt;br /&gt;
 String lastChangedAuthor: the author who committed the last change&lt;br /&gt;
 int lastChangedRev: the revision that most recently modified this working copy (note, not necessarily the same as revision field)&lt;br /&gt;
 String lastChangedDate: the date/time when lastChangedRevision happened&lt;br /&gt;
&lt;br /&gt;
 r12238: Add _floristPlantsUsed as a comma-separated list and &#039;&#039;&#039;florist_available()&#039;&#039;&#039;.&lt;br /&gt;
 Add &amp;quot;florist plant [plantname]&amp;quot; to add a plant. [plantname] is case-insensitive, but otherwise must exactly match KoL&#039;s name for the plant.&lt;br /&gt;
 Check what is currently planted when you log in.&lt;br /&gt;
&lt;br /&gt;
 r12244: Add string [location][int] &#039;&#039;&#039;get_florist_plants()&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 example 1...&lt;br /&gt;
 foreach loc, counter, plant in get_florist_plants() {&lt;br /&gt;
    print( &amp;quot;Location &#039;&amp;quot; + loc + &amp;quot;&#039;&amp;quot; );&lt;br /&gt;
    print( &amp;quot;Counter &#039;&amp;quot; + counter + &amp;quot;&#039;&amp;quot; );&lt;br /&gt;
    print( &amp;quot;Plant &#039;&amp;quot; + plant + &amp;quot;&#039;&amp;quot; );&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 example 2...&lt;br /&gt;
 string [location][int] plants = get_florist_plants();&lt;br /&gt;
 foreach loc in plants {&lt;br /&gt;
    print( &amp;quot;Location &#039;&amp;quot; + loc + &amp;quot;&#039;&amp;quot; );&lt;br /&gt;
    string [int] array = plants[ loc ];&lt;br /&gt;
    foreach index in array {&lt;br /&gt;
        string plant = array[index];&lt;br /&gt;
        if ( plant != &amp;quot;&amp;quot; )&lt;br /&gt;
            print( &amp;quot;Plant = &amp;quot; + plant );&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 r12255: Experimental support for Dad Sea Monkee - untested in-game.&lt;br /&gt;
 - When we first see Dad Sea Monkee, parse the clues and solve for them.&lt;br /&gt;
 - &amp;quot;&#039;&#039;&#039;dad&#039;&#039;&#039;&amp;quot; CLI command lists the elemental weakness (and spell) for rounds 1-10&lt;br /&gt;
 - element &#039;&#039;&#039;dad_sea_monkee_weakness( int round )&#039;&#039;&#039; ASH function for consult scripts.&lt;br /&gt;
&lt;br /&gt;
 12657: Add &amp;quot;&#039;&#039;&#039;cache clear&#039;&#039;&#039;&amp;quot; command to remove all cached images from /images&lt;br /&gt;
 &lt;br /&gt;
 12659: New setting - lastImageCacheClear - records the time when you last cleared the&lt;br /&gt;
 image cache. &amp;quot;&#039;&#039;&#039;cache&#039;&#039;&#039;&amp;quot; command with no arguments reports that time.&lt;br /&gt;
&lt;br /&gt;
 12662: Add &#039;&#039;&#039;get_ignore_zone_warnings()&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 12932: Adds my_discomomentum().&lt;br /&gt;
&lt;br /&gt;
 13088: Make Prismatic Damage a real, if derived, modifier name. It cannot be used in&lt;br /&gt;
 modifiers.txt, bit you can ask for it by name either in ASH or the Maximizer&lt;br /&gt;
&lt;br /&gt;
 13175: Add ash command my_soulsauce().&lt;br /&gt;
&lt;br /&gt;
 13213: Add &amp;quot;debug ash on&amp;quot; and &amp;quot;debug ash off&amp;quot; to turn on and off ASH script tracing &lt;br /&gt;
 ASH tracing goes into ASH_datestamp.txt&lt;br /&gt;
&lt;br /&gt;
 13222: Add preference banishedMonsters to track banishes. Add ash command is_banished($monsterName[name])&lt;br /&gt;
&lt;br /&gt;
 13223: Add &amp;quot;thrall&amp;quot; datatype to ASH. &lt;br /&gt;
 New ASH function: thrall my_thrall()&lt;br /&gt;
&lt;br /&gt;
 13234: New ASH functions: to_thrall( int ), to_thrall( string ), to_int( thrall )&lt;br /&gt;
 New proxy fields for thralls: .id, .image, .tinyimage, .skill&lt;br /&gt;
&lt;br /&gt;
 13256: Add CLI command to buy or sell from a coinmaster:&lt;br /&gt;
 coinmaster buy nickname item, item ...&lt;br /&gt;
 coinmaster sell nickname item, item, ...&lt;br /&gt;
&lt;br /&gt;
 r13280 &amp;amp; r13282: Added Ash functions:&lt;br /&gt;
 &#039;&#039;&#039;monster_initiative( [monster] )&#039;&#039;&#039; - returns initiative + ML penalty&lt;br /&gt;
&lt;br /&gt;
 13299: Add &amp;quot;&#039;&#039;&#039;bugbears&#039;&#039;&#039;&amp;quot; command to give status of the 9 Bugbear Mothership zones&lt;br /&gt;
&lt;br /&gt;
 13393: Added ash function &#039;&#039;&#039;stun_skill()&#039;&#039;&#039;, returns the character&#039;s stun skill based on  lass/preferences.&lt;br /&gt;
&lt;br /&gt;
 13395: CLI command &#039;&#039;&#039;restores&#039;&#039;&#039; added, tells you detail on all currently available restores. &amp;quot;restores all&amp;quot; tells you about all restores, &amp;quot;restores obtainable&amp;quot; tells you about all restores that you have or are tradeable.&lt;br /&gt;
&lt;br /&gt;
 13576: New ash data type $bounty&lt;br /&gt;
&lt;br /&gt;
 13581: Add ash to_bounty() function&lt;br /&gt;
&lt;br /&gt;
 13617: Add &#039;&#039;&#039;bounty&#039;&#039;&#039; CLI command. &lt;br /&gt;
 bounty - lists bounty progress and untaken bounties&lt;br /&gt;
 bounty easy|hard|special - accepts a bounty&lt;br /&gt;
&lt;br /&gt;
 13618: Add faxbot ash( $monster ) command. Note that chat must be open for this to successfully work, just as for other mafia fax interfaces.&lt;br /&gt;
&lt;br /&gt;
 13638: Add &amp;quot;bjornify&amp;quot; gCLI command, bjornify_familiar( familiar ), and my_bjorned_familiar().&lt;br /&gt;
&lt;br /&gt;
 13704: Add &amp;quot;grim&amp;quot; gCLI command to get a Grim Brother effect&lt;br /&gt;
&lt;br /&gt;
 13725: Track Audience (only works with character pane at present, request to add to api has been made). Appears on mafia side panel, also available with ash command my_audience().&lt;br /&gt;
&lt;br /&gt;
== Needs Major Work ==&lt;br /&gt;
&lt;br /&gt;
[[Proxy Records]] is only slightly better than a placeholder.&lt;br /&gt;
&lt;br /&gt;
 In r10047, the adventure tab interface was altered. Fix SinginSally&#039;s guide on pages...&lt;br /&gt;
 &lt;br /&gt;
 http://wiki.kolmafia.us/index.php?title=KoLmafia_Guide:_Attack_Script&lt;br /&gt;
 http://wiki.kolmafia.us/index.php?title=KoLmafia_Guide:_Custom_Combat_Script&lt;br /&gt;
 http://wiki.kolmafia.us/index.php?title=KoLmafia_Guide:_Goal-Oriented_Adventuring&lt;br /&gt;
&lt;br /&gt;
 Information on moods calling other moods: http://kolmafia.us/showthread.php?8852-Composable-Moods&amp;amp;p=66468&amp;amp;viewfull=1#post66468&lt;br /&gt;
&lt;br /&gt;
 r10025: Added &#039;&#039;&#039;choice&#039;&#039;&#039; CLI command, to resolve manual or unsupported choiceadventures &lt;br /&gt;
 Added &amp;quot;choice&amp;quot; CLI command, to resolve manual or unsupported choice&lt;br /&gt;
 adventures without having to visit the relay browser - which might be&lt;br /&gt;
 inconvenient if you&#039;re already in the CLI, and don&#039;t need to see the full&lt;br /&gt;
 adventure text to decide which option you want. With no parameter, &amp;quot;choice&amp;quot;&lt;br /&gt;
 just lists the options. With a numeric parameter, it picks that option. &lt;br /&gt;
 With any other parameter, it picks the first option containing that text (in&lt;br /&gt;
 either the actual button text, or mafia&#039;s spoiler text).&lt;br /&gt;
&lt;br /&gt;
== Needs Code Samples ==&lt;br /&gt;
&lt;br /&gt;
There is a list of all pages that require code samples: [[:Category:Needs_Code_Sample|Category:Needs Code Sample]]&lt;br /&gt;
&lt;br /&gt;
Information on how to create a code sample: [[Template:CodeSample]]&lt;/div&gt;</summary>
		<author><name>Gnocchi masala</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Item_Management&amp;diff=4235</id>
		<title>Item Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Item_Management&amp;diff=4235"/>
		<updated>2014-03-30T06:52:00Z</updated>

		<summary type="html">&lt;p&gt;Gnocchi masala: Revision 12906 add shop_price() function.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
==Informational==&lt;br /&gt;
{{Flink|int|my_meat|desc=Returns the amount of meat you have on hand.}}&lt;br /&gt;
{{Flink|int|my_closet_meat|desc=Returns the amount of meat you have in your Colossal Closet.}}&lt;br /&gt;
{{Flink|int|my_storage_meat|desc=Returns the amount of meat you have in Hagnk&#039;s Ancestral Mini-Storage.}}&lt;br /&gt;
{{Flink|int|pulls_remaining|desc=Returns the number of pulls you can make from storage, or 0 if not applicable.}}&lt;br /&gt;
{{Flink|boolean|have_chef|desc=Returns true if you have a chef-boxen at your campground.}}&lt;br /&gt;
{{Flink|boolean|have_bartender|desc=Returns true if you have a bartender-boxen at your campground.}}&lt;br /&gt;
{{Flink|int [item]|get_campground|desc=Returns a map of your campground items.}}&lt;br /&gt;
{{Flink|item|get_dwelling|desc=Returns the item corresponding with your dwelling.}}&lt;br /&gt;
{{Flink|boolean|have_mushroom_plot|desc=Returns true if and only if you&#039;ve purchased a mushroom plot this run.}}&lt;br /&gt;
{{Flink|int|stills_available|desc=Returns the number of Nash Crosby&#039;s Still uses left for the day (0 if not accessible).}}&lt;br /&gt;
{{Flink|string|item_type|item|desc=Returns the type of item specified.}}&lt;br /&gt;
{{Flink|int|item_amount|item}}&lt;br /&gt;
{{Flink|int|closet_amount|item}}&lt;br /&gt;
{{Flink|int|display_amount|item}}&lt;br /&gt;
{{Flink|int|equipped_amount|item}}&lt;br /&gt;
{{Flink|int|shop_amount|item}}&lt;br /&gt;
{{Flink|int [item]|get_shop|desc=Returns entire contents of shop and quantity of each item}}&lt;br /&gt;
{{Flink|int|stash_amount|item|}}&lt;br /&gt;
{{Flink|int|storage_amount|item|desc=These 7 functions return the total number available of a given item in the respective section of your inventory.}}&lt;br /&gt;
{{Flink|int|available_amount|item|desc=Returns the total number available of a given item in all inventory sections accessible to your character based on current restrictions.}}&lt;br /&gt;
{{Flink|int|creatable_amount|item|desc=Returns the amount of the item that you are capable of creating given your current inventory and skills.}}&lt;br /&gt;
{{Flink|int [item]|get_ingredients|item|desc=Returns a map where each key is one of the required ingredients, with the integer value the number required. If you don&#039;t have the skills needed to make the item, it will return an empty map.}}&lt;br /&gt;
{{Flink|int [item]|get_inventory|desc=Returns a map where each key is an item in your inventory, with the integer value its quantity.}}&lt;br /&gt;
{{Flink|int [item]|get_related|item|string|desc=Returns associated items in a zap or fold group (see page for details).}}&lt;br /&gt;
[[File:Item category.png|frame|You can categorize items in KoL using [[is tradeable|is_tradeable()]], [[is giftable|is_giftable()]], and [[is displayable|is_displayable()]].]]&lt;br /&gt;
{{Flink|boolean|is_tradeable|item|desc=Returns whether the item can be placed in the mall.}}&lt;br /&gt;
{{Flink|boolean|is_giftable|item|desc=Returns whether the item can be traded in a gift package.}}&lt;br /&gt;
{{Flink|boolean|is_displayable|item|desc=Returns whether the item can be put in a display case (true for all but quest items).}}&lt;br /&gt;
{{Flink|boolean|have_shop|desc=Returns whether you have a mall store.}}&lt;br /&gt;
{{Flink|boolean|have_display|desc=Returns whether you have a display case.}}&lt;br /&gt;
{{Flink|boolean|is_npc_item|item|desc=Returns whether the item can be bought from an NPC store.}}&lt;br /&gt;
{{Flink|void|refresh_stash|desc=Takes a new look at the contents of your clan stash, as that section of inventory cannot be internally tracked due to access by others.}}&lt;br /&gt;
{{Flink|void|refresh_shop|desc=Takes a new look at the contents of your mall store, as that section of inventory cannot be internally tracked due to access by others.}}&lt;br /&gt;
{{Flink|int|shop_price|item|desc=Returns the current price for the given item if it is present in your mall store.}}&lt;br /&gt;
{{Flink|int|mall_price|item|desc=Returns the current (lowest) mall price of the given item.}}&lt;br /&gt;
{{Flink|int|npc_price|item|desc=Returns the current price of the given item if it can currently be bought from an NPC store.}}&lt;br /&gt;
{{Flink|int|historical_price|item|desc=Returns the most recently checked price for an item. This will never hit the server, unlike mall_price().}}&lt;br /&gt;
{{Flink|float|historical_age|item|desc=Returns the age of the most recently checked price for an item in days. This allows you to decide if you want to use historical_price() or mall_price().}}&lt;br /&gt;
{{Flink|int|autosell_price|item|desc=Returns the autosell price of the item (0 for items that cannot be autosold).}}&lt;br /&gt;
{{Flink|int|get_power|item|desc=Returns the power of the item (0 for items that don&#039;t have a power).}}&lt;br /&gt;
{{Flink|string|to_plural|item|desc=Returns the plural of an item as a string.}}&lt;br /&gt;
{{Flink|int|meat_drop|{{opt|monster}}|desc=Returns a certain monster&#039;s base meat drop.}}&lt;br /&gt;
{{Flink|int [item]|item_drops|{{opt|monster}}|desc=Returns an array of a certain monster&#039;s base item drops, keying item to drop rate. Has certain limitations detailed on individual page.}}&lt;br /&gt;
{{Flink|record [int]|item_drops_array|{{opt|monster}}|desc=Returns an array of records holding information regarding a certain monster&#039;s base item drops.}}&lt;br /&gt;
&lt;br /&gt;
==Moving Items Around==&lt;br /&gt;
{{Flink|boolean|put_closet|int|{{opt|item}}}}&lt;br /&gt;
{{Flink|boolean|put_display|int|item}}&lt;br /&gt;
{{Flink|boolean|put_stash|int|item}}&lt;br /&gt;
{{Flink|boolean|take_closet|int|{{opt|item}}}}&lt;br /&gt;
{{Flink|boolean|take_display|int|item}}&lt;br /&gt;
{{Flink|boolean|take_stash|int|item}}&lt;br /&gt;
{{Flink|boolean|take_storage|int|item|desc=Attempts to take or put the specified item in the appropriate section of your inventory, and returns its success.&amp;lt;br /&amp;gt;If the item parameter is omitted from put_closet() or take_closet(), meat is transferred instead of an item.}}&lt;br /&gt;
{{Flink|boolean|put_shop|int|int|{{opt|int}}|item}}&lt;br /&gt;
{{Flink|boolean|take_shop|{{opt|int}}|item|desc=Adds or removes items in your store and returns success.}}&lt;br /&gt;
&lt;br /&gt;
==Acquiring &amp;amp; Using Items==&lt;br /&gt;
{{Flink|boolean|autosell|int|item|desc=Attempts to autosell the given items and reports success.}}&lt;br /&gt;
{{Flink|boolean|buy|int|item}}&lt;br /&gt;
{{Flink|boolean|create|int|item|desc=Attempts to create the specified items, following your KoLmafia settings regarding purchases to gather ingredients &amp;amp; require boxen.}}&lt;br /&gt;
{{Flink|boolean|drink|int|item|desc=Attempts to drink items as specified and reports success.}}&lt;br /&gt;
{{Flink|boolean|eat|int|item|desc=Attempts to eat items as specified and reports success.}}&lt;br /&gt;
{{Flink|boolean|eatsilent|int|item|desc=Attempts to eat items as specified.}}&lt;br /&gt;
{{Flink|boolean|hermit|int|item|desc=Trades worthless items (buying and using chewing gum if needed) to the hermit for specified items (see page for details).}}&lt;br /&gt;
{{Flink|boolean|use|int|item|desc=Attempts to use items as specified and reports success.}}&lt;br /&gt;
{{Flink|boolean|overdrink|int|item}}&lt;br /&gt;
{{Flink|boolean|retrieve_item|int|item|desc=Uses KoLmafia internal logic to gather items (see page for details).}}&lt;br /&gt;
{{Flink|int|buy|int|item|int|desc=Tries to purchase the specified items (see page for details).}}&lt;br /&gt;
{{Flink|int|craft|string|int|item|item|desc=Raw crafting that obeys KoLmafia settings (see page for details).}}&lt;br /&gt;
{{Flink|string|last_item_message|desc=Returns message that KoL reports in the event of error.}}&lt;br /&gt;
&lt;br /&gt;
==Coinmaster Control==&lt;br /&gt;
Some items can be bought from or sold to various &amp;quot;coinmasters&amp;quot; which are like shops that deal in a currency other than meat. These coinmasters include the Dimemaster and Quartermaster during the Island War, the Hermit, the Mr. Store and many others. Some relevant information can be found in [[proxy records]] for the item and coinmaster data types. The rest is controlled by the following functions.&lt;br /&gt;
&lt;br /&gt;
===Inquiries===&lt;br /&gt;
{{Flink|coinmaster|to_coinmaster|string|desc=Converts a string to a valid coinmaster.}}&lt;br /&gt;
{{Flink|boolean|is_coinmaster_item|item|desc=Is a given item acquirable from a coinmster.}}&lt;br /&gt;
{{Flink|boolean|buys_item|coinmaster|item|desc=Is a specific item acquirable from the named coinmster.}}&lt;br /&gt;
{{Flink|int|buy_price|coinmaster|item|desc=What is the coinmaster&#039;s purchase price for an item.}}&lt;br /&gt;
{{Flink|boolean|sells_item|coinmaster|item|desc=Is a specific item sellable to the named coinmster.}}&lt;br /&gt;
{{Flink|int|sell_price|coinmaster|item|desc=What is the coinmaster&#039;s selling price for an item.}}&lt;br /&gt;
&lt;br /&gt;
===Coinmaster transactions===&lt;br /&gt;
{{Flink|boolean|is_accessible|coinmaster|desc=Is a given coinmaster currently accessible.}}&lt;br /&gt;
{{Flink|string|inaccessible_reason|coinmaster|desc=The reason a given coinmaster is currently inaccessible.}}&lt;br /&gt;
{{Flink|boolean|visit|coinmaster|desc=Refreshes information at a coinmaster.}}&lt;br /&gt;
{{Flink|boolean|buy|coinmaster|int|item|desc=Buys an item from a coinmaster.}}&lt;br /&gt;
{{Flink|boolean|sell|coinmaster|int|item|desc=Sells an item to a coinmaster.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting]]&lt;/div&gt;</summary>
		<author><name>Gnocchi masala</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Shop_price&amp;diff=8264</id>
		<title>Shop price</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Shop_price&amp;diff=8264"/>
		<updated>2014-03-30T06:48:52Z</updated>

		<summary type="html">&lt;p&gt;Gnocchi masala: Revision 12906 add shop_price() function.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|shop_price}}{{&lt;br /&gt;
#vardefine:return_type|int}}{{&lt;br /&gt;
&lt;br /&gt;
FunctionPage|&lt;br /&gt;
name={{#var:name}}|&lt;br /&gt;
&lt;br /&gt;
function1={{Function|&lt;br /&gt;
name={{#var:name}}|&lt;br /&gt;
aggregate={{#var:aggregate}}|&lt;br /&gt;
return_type={{#var:return_type}}|&lt;br /&gt;
return_also={{#var:return_also}}|&lt;br /&gt;
parameter1={{Param|item|it}}|&lt;br /&gt;
p1desc={{Pspan|it}} is the item to check|&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
function_description=Returns the price of a given item that are currently for sale in your mall store. If the item is not currently for sale then 999999999 is returned.|&lt;br /&gt;
needscode=yes|&lt;br /&gt;
see_also={{SeeAlso|mall_price|historical_price|autosell_price|npc_price}}|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Item Management]]&lt;/div&gt;</summary>
		<author><name>Gnocchi masala</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Ash_Functions&amp;diff=2595</id>
		<title>Ash Functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Ash_Functions&amp;diff=2595"/>
		<updated>2014-03-30T06:42:44Z</updated>

		<summary type="html">&lt;p&gt;Gnocchi masala: Revision 12906 add shop_price() function.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
Master list of all ASH functions. All functions as of r8144 are listed; this list is intended to be kept current, but it is possible that some functions added since the above revision may be missing. (Please feel free to add in any you notice.)&lt;br /&gt;
===a===&lt;br /&gt;
{{Flink|void|abort|{{opt|string}}}}&lt;br /&gt;
{{Flink|void|add_item_condition|int|item}}&lt;br /&gt;
{{Flink|boolean|adv1|location|int|string}}&lt;br /&gt;
{{Flink|boolean|adventure|int|location|{{opt|string}}}}&lt;br /&gt;
{{Flink|float [monster]|appearance_rates|location|{{opt|boolean}}}}&lt;br /&gt;
{{Flink|buffer|append|buffer|string}}&lt;br /&gt;
{{Flink|buffer|append_replacement|matcher|buffer|string}}&lt;br /&gt;
{{Flink|buffer|append_tail|matcher|buffer}}&lt;br /&gt;
{{Flink|buffer|attack}}&lt;br /&gt;
{{Flink|boolean|autosell|int|item}}&lt;br /&gt;
{{Flink|int|autosell_price|item}}&lt;br /&gt;
{{Flink|int|available_amount|item}}&lt;br /&gt;
===b===&lt;br /&gt;
{{Flink|boolean|batch_close}}&lt;br /&gt;
{{Flink|void|batch_open}}&lt;br /&gt;
{{Flink|boolean|black_market_available}}&lt;br /&gt;
{{Flink|boolean|boolean_modifier|string|{{opt|string}}}}&lt;br /&gt;
{{Flink|boolean|boolean_modifier|item|string}}&lt;br /&gt;
{{Flink|int|buffed_hit_stat}}&lt;br /&gt;
{{Flink|boolean|buy|int|item}}&lt;br /&gt;
{{Flink|int|buy|int|item|int}}&lt;br /&gt;
{{Flink|boolean|buy|coinmaster|int|item}}&lt;br /&gt;
{{Flink|int|buy_price|coinmaster|item}}&lt;br /&gt;
{{Flink|boolean|buys_item|coinmaster|item}}&lt;br /&gt;
===c===&lt;br /&gt;
{{Flink|boolean|can_drink}}&lt;br /&gt;
{{Flink|boolean|can_eat}}&lt;br /&gt;
{{Flink|boolean|can_equip|item}}&lt;br /&gt;
{{Flink|boolean|can_interact}}&lt;br /&gt;
{{flink|boolean|canadia_available}}&lt;br /&gt;
{{Flink|int|ceil|float}}&lt;br /&gt;
{{Flink|boolean|chamber}}&lt;br /&gt;
{{Flink|boolean|change_mcd|int}}&lt;br /&gt;
{{Flink|string|char_at|string|int}}&lt;br /&gt;
{{Flink|void|chat_clan|string|{{opt|string}}}}&lt;br /&gt;
{{Flink|void|chat_macro|string}}&lt;br /&gt;
{{Flink|void|chat_notify|string|string}}&lt;br /&gt;
{{Flink|void|chat_private|string|string}}&lt;br /&gt;
{{Flink|class|class_modifier|string|string}}&lt;br /&gt;
{{Flink|class|class_modifier|item|string}}&lt;br /&gt;
{{Flink|void|clear|aggregate}}&lt;br /&gt;
{{Flink|boolean|cli_execute|string}}&lt;br /&gt;
{{Flink|int|closet_amount|item}}&lt;br /&gt;
{{Flink|int|combat_mana_cost_modifier}}&lt;br /&gt;
{{Flink|float|combat_rate_modifier}}&lt;br /&gt;
{{Flink|boolean|contains_text|string|string}}&lt;br /&gt;
{{Flink|void|council}}&lt;br /&gt;
{{Flink|int|count|aggregate}}&lt;br /&gt;
{{Flink|boolean|craft|string|int|item|item}}&lt;br /&gt;
{{Flink|int|creatable_amount|item}}&lt;br /&gt;
{{Flink|boolean|create|int|item}}&lt;br /&gt;
{{Flink|matcher|create_matcher|string|string}}&lt;br /&gt;
{{Flink|stat|current_hit_stat}}&lt;br /&gt;
{{Flink|int|current_mcd}}&lt;br /&gt;
&lt;br /&gt;
===d===&lt;br /&gt;
{{Flink|element|dad_sea_monkee_weakness|int}}&lt;br /&gt;
{{Flink|item|daily_special}}&lt;br /&gt;
{{Flink|float|damage_absorption_percent}}&lt;br /&gt;
{{Flink|int|damage_reduction}}&lt;br /&gt;
{{Flink|buffer|delete|buffer|int|int}}&lt;br /&gt;
{{Flink|void|disable|string}}&lt;br /&gt;
{{flink|boolean|dispensary_available}}&lt;br /&gt;
{{Flink|int|display_amount|item}}&lt;br /&gt;
{{Flink|boolean|drink|int|item}}&lt;br /&gt;
&lt;br /&gt;
===e===&lt;br /&gt;
{{Flink|boolean|eat|int|item}}&lt;br /&gt;
{{Flink|boolean|eatsilent|int|item}}&lt;br /&gt;
{{Flink|effect|effect_modifier|string|string}}&lt;br /&gt;
{{Flink|effect|effect_modifier|item|string}}&lt;br /&gt;
{{Flink|float|elemental_resistance|element}}&lt;br /&gt;
{{Flink|float|elemental_resistance|{{opt|monster}}}}&lt;br /&gt;
{{Flink|boolean|empty_closet}}&lt;br /&gt;
{{Flink|void|enable|string}}&lt;br /&gt;
{{Flink|int|end|matcher|{{opt|int}}}}&lt;br /&gt;
{{Flink|boolean|enthrone_familiar|familiar}}&lt;br /&gt;
{{Flink|string|entity_decode|string}}&lt;br /&gt;
{{Flink|string|entity_encode|string}}&lt;br /&gt;
{{Flink|boolean|entryway}}&lt;br /&gt;
{{Flink|boolean|equip|{{opt|slot}}|item}}&lt;br /&gt;
{{Flink|int|equipped_amount|item}}&lt;br /&gt;
{{Flink|item|equipped_item|slot}}&lt;br /&gt;
{{Flink|int|expected_damage|{{opt|monster}}}}&lt;br /&gt;
{{Flink|float|experience_bonus}}&lt;br /&gt;
{{Flink|float|expression_eval}}&lt;br /&gt;
{{Flink|int [item]|extract_items|string}}&lt;br /&gt;
{{Flink|int|extract_meat|string}}&lt;br /&gt;
&lt;br /&gt;
===f===&lt;br /&gt;
{{Flink|item|familiar_equipment|familiar}}&lt;br /&gt;
{{Flink|item|familiar_equipped_equipment|familiar}}&lt;br /&gt;
{{Flink|int|familiar_weight|familiar}}&lt;br /&gt;
{{Flink|boolean|file_to_map|string|aggregate|{{opt|boolean}}}}&lt;br /&gt;
{{Flink|boolean|find|matcher}}&lt;br /&gt;
{{Flink|int|floor|float}}&lt;br /&gt;
{{Flink|string|form_field|string}}&lt;br /&gt;
{{Flink|string [string]|form_fields}}&lt;br /&gt;
{{Flink|string|format_date_time|string|string|string}}&lt;br /&gt;
{{Flink|boolean|friars_available}}&lt;br /&gt;
{{Flink|int|fullness_limit}}&lt;br /&gt;
&lt;br /&gt;
===g===&lt;br /&gt;
{{Flink|boolean|galaktik_cures_discounted}}&lt;br /&gt;
{{Flink|int|gameday_to_int}}&lt;br /&gt;
{{Flink|string|gameday_to_string}}&lt;br /&gt;
{{Flink|int|gametime_to_int}}&lt;br /&gt;
{{Flink|int|get_auto_attack}}&lt;br /&gt;
{{Flink|int [item]|get_campground}}&lt;br /&gt;
{{Flink|string|get_ccs_action|int}}&lt;br /&gt;
{{Flink|int|get_clan_id}}&lt;br /&gt;
{{Flink|string|get_clan_name}}&lt;br /&gt;
{{Flink|string|get_counters|string|int|int}}&lt;br /&gt;
{{Flink|string [int]|get_custom_outfits}}&lt;br /&gt;
{{Flink|item|get_dwelling|}}&lt;br /&gt;
{{Flink|string [int]|get_goals}}&lt;br /&gt;
{{Flink|int [item]|get_ingredients|item}}&lt;br /&gt;
{{Flink|int [item]|get_inventory}}&lt;br /&gt;
{{Flink|monster [int]|get_monsters|location}}&lt;br /&gt;
{{Flink|string [int]|get_moods}}&lt;br /&gt;
{{Flink|string [int]|get_outfits}}&lt;br /&gt;
{{Flink|string|get_path}}&lt;br /&gt;
{{Flink|string|get_path_full}}&lt;br /&gt;
{{Flink|string|get_path_variables}}&lt;br /&gt;
{{Flink|string|get_player_id|string}}&lt;br /&gt;
{{Flink|int|get_power|item}}&lt;br /&gt;
{{Flink|string|get_property|string}}&lt;br /&gt;
{{Flink|int [item]|get_related|item|string}}&lt;br /&gt;
{{Flink|int|get_revision}}&lt;br /&gt;
{{Flink|int [item]|get_shop}}&lt;br /&gt;
{{Flink|string|get_version}}&lt;br /&gt;
{{flink|boolean|gnomads_available}}&lt;br /&gt;
{{flink|boolean|goal_exists|string}}&lt;br /&gt;
{{Flink|string|group|matcher|{{opt|int}}}}&lt;br /&gt;
{{Flink|int|group_count|matcher}}&lt;br /&gt;
{{Flink|string [int, int]|group_string|string|string}}&lt;br /&gt;
{{Flink|item|guardians}}&lt;br /&gt;
{{Flink|boolean|guild_store_available}}&lt;br /&gt;
&lt;br /&gt;
===h===&lt;br /&gt;
{{Flink|boolean|have_bartender}}&lt;br /&gt;
{{Flink|boolean|have_chef}}&lt;br /&gt;
{{Flink|boolean|have_display}}&lt;br /&gt;
{{Flink|int|have_effect|effect}}&lt;br /&gt;
{{Flink|boolean|have_equipped|item}}&lt;br /&gt;
{{Flink|boolean|have_familiar|familiar}}&lt;br /&gt;
{{Flink|boolean|have_mushroom_plot}}&lt;br /&gt;
{{Flink|boolean|have_outfit|string}}&lt;br /&gt;
{{Flink|boolean|have_shop}}&lt;br /&gt;
{{Flink|boolean|have_skill|skill}}&lt;br /&gt;
{{Flink|boolean|hedgemaze}}&lt;br /&gt;
{{Flink|boolean|hermit|int|item}}&lt;br /&gt;
{{flink|boolean|hidden_temple_unlocked}}&lt;br /&gt;
{{Flink|boolean|hippy_stone_broken}}&lt;br /&gt;
{{Flink|boolean|hippy_store_available}}&lt;br /&gt;
{{Flink|float|historical_age|item}}&lt;br /&gt;
{{Flink|int|historical_price|item}}&lt;br /&gt;
&lt;br /&gt;
===i===&lt;br /&gt;
{{Flink|monster|image_to_monster|strict_string}}&lt;br /&gt;
{{Flink|boolean|in_bad_moon}}&lt;br /&gt;
{{Flink|boolean|in_hardcore}}&lt;br /&gt;
{{Flink|boolean|in_moxie_sign}}&lt;br /&gt;
{{Flink|boolean|in_muscle_sign}}&lt;br /&gt;
{{Flink|boolean|in_mysticality_sign}}&lt;br /&gt;
{{Flink|string|inaccessible_reason|coinmaster|}}&lt;br /&gt;
{{Flink|int|index_of|string|string|{{opt|int}}}}&lt;br /&gt;
{{Flink|int|inebriety_limit}}&lt;br /&gt;
{{Flink|float|initiative_modifier}}&lt;br /&gt;
{{Flink|buffer|insert|buffer|int|string}}&lt;br /&gt;
{{Flink|boolean|is_accessible|coinmaster}}&lt;br /&gt;
{{Flink|boolean|is_coinmaster_item|item}}&lt;br /&gt;
{{Flink|boolean|is_discardable|item}}&lt;br /&gt;
{{Flink|boolean|is_displayable|item}}&lt;br /&gt;
{{Flink|boolean|is_giftable|item}}&lt;br /&gt;
{{Flink|boolean|is_goal|item}}&lt;br /&gt;
{{Flink|boolean|is_integer|string}}&lt;br /&gt;
{{Flink|boolean|is_npc_item|item}}&lt;br /&gt;
{{Flink|boolean|is_online|string}}&lt;br /&gt;
{{Flink|boolean|is_tradeable|item}}&lt;br /&gt;
{{Flink|boolean|is_trendy|any}}&lt;br /&gt;
{{Flink|boolean|is_wearing_outfit|string}}&lt;br /&gt;
{{Flink|int|item_amount|item}}&lt;br /&gt;
{{Flink|float|item_drop_modifier}}&lt;br /&gt;
{{Flink|int [item]|item_drops|{{opt|monster}}}}&lt;br /&gt;
{{Flink|record [int]|item_drops_array|{{opt|monster}}}}&lt;br /&gt;
{{Flink|string|item_type|item}}&lt;br /&gt;
===j===&lt;br /&gt;
{{flink|int|jump_chance|{{opt|monster}}|{{opt|int}}|{{opt|int}}}}&lt;br /&gt;
{{flink|int|jump_chance|location|{{opt|int}}|{{opt|int}}}}&lt;br /&gt;
&lt;br /&gt;
===k===&lt;br /&gt;
{{flink|boolean|knoll_available}}&lt;br /&gt;
===l===&lt;br /&gt;
{{Flink|int|last_index_of|string|string|{{opt|int}}}}&lt;br /&gt;
{{Flink|string|last_item_message}}&lt;br /&gt;
{{Flink|monster|last_monster}}&lt;br /&gt;
{{Flink|string|last_skill_message}}&lt;br /&gt;
{{Flink|int|length|string}}&lt;br /&gt;
{{Flink|buffer|load_html|string}}&lt;br /&gt;
{{Flink|void|lock_familiar_equipment|boolean}}&lt;br /&gt;
{{Flink|void|logprint|string}}&lt;br /&gt;
===m===&lt;br /&gt;
{{Flink|string|make_url|string|boolean|boolean}}&lt;br /&gt;
{{Flink|int|mall_price|item}}&lt;br /&gt;
{{Flink|int|mana_cost_modifier}}&lt;br /&gt;
{{Flink|boolean|map_to_file|aggregate|string|{{opt|boolean}}}}&lt;br /&gt;
{{Flink|float|max|float|float}}&lt;br /&gt;
{{Flink|int|max|int|int}}&lt;br /&gt;
{{Flink|boolean|maximize|string|boolean}}&lt;br /&gt;
{{Flink|boolean|maximize|string|int|int|boolean}}&lt;br /&gt;
{{Flink|record [int]|maximize|string|int|int|boolean|boolean}}&lt;br /&gt;
{{Flink|int|meat_drop|{{opt|monster}}}}&lt;br /&gt;
{{Flink|float|meat_drop_modifier}}&lt;br /&gt;
{{Flink|float|min|float|float}}&lt;br /&gt;
{{Flink|int|min|int|int}}&lt;br /&gt;
{{Flink|item|minstrel_instrument}}&lt;br /&gt;
{{Flink|int|minstrel_level}}&lt;br /&gt;
{{Flink|boolean|minstrel_quest}}&lt;br /&gt;
{{Flink|int|mmg_bet_amount|int}}&lt;br /&gt;
{{Flink|string|mmg_bet_owner|int}}&lt;br /&gt;
{{Flink|int|mmg_bet_owner_id|int}}&lt;br /&gt;
{{Flink|string|mmg_bet_taker}}&lt;br /&gt;
{{Flink|string|mmg_bet_taker_id}}&lt;br /&gt;
{{Flink|int|mmg_bet_winnings}}&lt;br /&gt;
{{Flink|int|mmg_make_bet|int|boolean}}&lt;br /&gt;
{{Flink|int [int]|mmg_my_bets}}&lt;br /&gt;
{{Flink|int [int]|mmg_offered_bets}}&lt;br /&gt;
{{Flink|boolean|mmg_retract_bet|int}}&lt;br /&gt;
{{Flink|void|mmg_search|int|int}}&lt;br /&gt;
{{Flink|int|mmg_take_bet|int|boolean}}&lt;br /&gt;
{{Flink|void|mmg_visit}}&lt;br /&gt;
{{Flink|int|mmg_wait_event|int}}&lt;br /&gt;
{{Flink|float|modifier_eval|string}}&lt;br /&gt;
{{Flink|int|monster_attack|{{opt|monster}}}}&lt;br /&gt;
{{Flink|int|monster_defense|{{opt|monster}}}}&lt;br /&gt;
{{Flink|int|monster_initiative|{{opt|monster}}}}&lt;br /&gt;
{{Flink|element|monster_element|{{opt|monster}}}}&lt;br /&gt;
{{Flink|float|monster_eval|string}}&lt;br /&gt;
{{Flink|int|monster_hp|{{opt|monster}}}}&lt;br /&gt;
{{Flink|int|monster_level_adjustment}}&lt;br /&gt;
{{Flink|phylum|monster_phylum|{{opt|monster}}}}&lt;br /&gt;
{{Flink|int|moon_light}}&lt;br /&gt;
{{Flink|int|moon_phase}}&lt;br /&gt;
{{Flink|int|mp_cost|skill}}&lt;br /&gt;
{{Flink|int|my_adventures}}&lt;br /&gt;
{{Flink|int|my_ascensions}}&lt;br /&gt;
{{Flink|int|my_basestat|stat}}&lt;br /&gt;
{{Flink|int|my_buffedstat|stat}}&lt;br /&gt;
{{Flink|class|my_class}}&lt;br /&gt;
{{Flink|int|my_closet_meat}}&lt;br /&gt;
{{Flink|string|my_companion}}&lt;br /&gt;
{{Flink|int|my_daycount|}}&lt;br /&gt;
{{Flink|int|my_discomomentum}}&lt;br /&gt;
{{Flink|familiar|my_effective_familiar}}&lt;br /&gt;
{{Flink|int [effect]|my_effects}}&lt;br /&gt;
{{Flink|familiar|my_enthroned_familiar}}&lt;br /&gt;
{{Flink|familiar|my_familiar}}&lt;br /&gt;
{{Flink|int|my_fullness}}&lt;br /&gt;
{{Flink|int|my_fury}}&lt;br /&gt;
{{Flink|string|my_hash}}&lt;br /&gt;
{{Flink|int|my_hp}}&lt;br /&gt;
{{Flink|string|my_id}}&lt;br /&gt;
{{Flink|int|my_inebriety}}&lt;br /&gt;
{{Flink|int|my_level}}&lt;br /&gt;
{{Flink|location|my_location}}&lt;br /&gt;
{{Flink|int|my_maxhp}}&lt;br /&gt;
{{Flink|int|my_maxfury}}&lt;br /&gt;
{{Flink|int|my_maxmp}}&lt;br /&gt;
{{Flink|int|my_meat}}&lt;br /&gt;
{{Flink|int|my_mp}}&lt;br /&gt;
{{Flink|string|my_name}}&lt;br /&gt;
{{flink|string|my_path}}&lt;br /&gt;
{{Flink|stat|my_primestat}}&lt;br /&gt;
{{flink|string|my_sign}}&lt;br /&gt;
{{Flink|int|my_spleen_use}}&lt;br /&gt;
{{Flink|int|my_storage_meat}}&lt;br /&gt;
{{Flink|int|my_turncount}}&lt;br /&gt;
&lt;br /&gt;
===n===&lt;br /&gt;
{{Flink|float|now_to_string|string}}&lt;br /&gt;
{{Flink|int|npc_price|item}}&lt;br /&gt;
{{Flink|float|numeric_modifier|string|{{opt|string}}}}&lt;br /&gt;
{{Flink|float|numeric_modifier|item|string}}&lt;br /&gt;
{{Flink|float|numeric_modifier|effect|string}}&lt;br /&gt;
{{Flink|float|numeric_modifier|skill|string}}&lt;br /&gt;
{{Flink|float|numeric_modifier|familiar|string|int|item}}&lt;br /&gt;
&lt;br /&gt;
===o===&lt;br /&gt;
{{Flink|boolean|outfit|string}}&lt;br /&gt;
{{Flink|item [int]|outfit_pieces|string}}&lt;br /&gt;
{{Flink|boolean|overdrink|int|item}}&lt;br /&gt;
&lt;br /&gt;
===p===&lt;br /&gt;
{{Flink|void|print|string|{{opt|string}}}}&lt;br /&gt;
{{Flink|void|print_html|string}}&lt;br /&gt;
{{Flink|int|pulls_remaining}}&lt;br /&gt;
{{Flink|boolean|put_closet|int|{{opt|item}}}}&lt;br /&gt;
{{Flink|boolean|put_display|int|item}}&lt;br /&gt;
{{Flink|boolean|put_shop|int|int|{{opt|int}}|item}}&lt;br /&gt;
{{Flink|boolean|put_stash|int|item}}&lt;br /&gt;
{{Flink|int|pvp_attacks_left}}&lt;br /&gt;
===r===&lt;br /&gt;
{{Flink|int|random|int}}&lt;br /&gt;
{{Flink|int|raw_damage_absorption}}&lt;br /&gt;
{{Flink|void|refresh_shop}}&lt;br /&gt;
{{Flink|void|refresh_stash}}&lt;br /&gt;
{{Flink|void|refresh_status}}&lt;br /&gt;
{{Flink|void|remove_item_condition|int|item}}&lt;br /&gt;
{{Flink|boolean|replace|buffer|int|int|string}}&lt;br /&gt;
{{Flink|string|replace_all|matcher|string}}&lt;br /&gt;
{{Flink|string|replace_first|matcher|string}}&lt;br /&gt;
{{Flink|buffer|replace_string|buffer|string|string}}&lt;br /&gt;
{{Flink|buffer|replace_string|string|string|string}}&lt;br /&gt;
{{Flink|matcher|reset|matcher|{{opt|string}}}}&lt;br /&gt;
{{Flink|boolean|restore_hp|int}}&lt;br /&gt;
{{Flink|boolean|restore_mp|int}}&lt;br /&gt;
{{Flink|boolean|retrieve_item|int|item}}&lt;br /&gt;
{{Flink|int|round|float}}&lt;br /&gt;
{{Flink|buffer|run_combat}}&lt;br /&gt;
{{Flink|buffer|runaway}}&lt;br /&gt;
&lt;br /&gt;
===s===&lt;br /&gt;
{{Flink|boolean|sell|coinmaster|int|item}}&lt;br /&gt;
{{Flink|int|sell_price|coinmaster|item}}&lt;br /&gt;
{{Flink|boolean|sells_item|coinmaster|item}}&lt;br /&gt;
{{Flink|string [int]|session_logs|{{opt|string}}|int}}&lt;br /&gt;
{{Flink|void|set_auto_attack|int}}&lt;br /&gt;
{{Flink|void|set_length|buffer|int}}&lt;br /&gt;
{{Flink|void|set_location|location}}&lt;br /&gt;
{{Flink|void|set_property|string|string}}&lt;br /&gt;
{{Flink|int|shop_amount|item}}&lt;br /&gt;
{{Flink|int|shop_price|item}}&lt;br /&gt;
{{Flink|int|spleen_limit}}&lt;br /&gt;
{{Flink|string [int]|split_string|string|{{opt|string}}}}&lt;br /&gt;
{{Flink|float|square_root|float}}&lt;br /&gt;
{{Flink|int|start|matcher|{{opt|int}}}}&lt;br /&gt;
{{Flink|int|stash_amount|item}}&lt;br /&gt;
{{Flink|stat|stat_bonus_today}}&lt;br /&gt;
{{Flink|stat|stat_bonus_tomorrow}}&lt;br /&gt;
{{Flink|stat|stat_modifier|effect|string}}&lt;br /&gt;
{{Flink|buffer|steal}}&lt;br /&gt;
{{Flink|int|stills_available}}&lt;br /&gt;
{{Flink|int|storage_amount|item}}&lt;br /&gt;
{{Flink|string|string_modifier|string}}&lt;br /&gt;
{{Flink|string|string_modifier|string|string}}&lt;br /&gt;
{{Flink|skill|stun_skill}}&lt;br /&gt;
{{Flink|string|substring|string|int|{{opt|int}}}}&lt;br /&gt;
&lt;br /&gt;
===t===&lt;br /&gt;
{{Flink|boolean|take_closet|int|{{opt|item}}}}&lt;br /&gt;
{{Flink|boolean|take_display|int|item}}&lt;br /&gt;
{{Flink|boolean|take_shop|{{opt|int}}|item}}&lt;br /&gt;
{{Flink|boolean|take_stash|int|item}}&lt;br /&gt;
{{Flink|boolean|take_storage|int|item}}&lt;br /&gt;
{{Flink|int|tavern|{{opt|string}}}}&lt;br /&gt;
{{Flink|buffer|throw_item|item}}&lt;br /&gt;
{{Flink|buffer|throw_items|item|item}}&lt;br /&gt;
{{Flink|buffer|time_to_string}}&lt;br /&gt;
{{Flink|boolean|to_boolean|any}}&lt;br /&gt;
{{Flink|class|to_class|string}}&lt;br /&gt;
{{Flink|coinmaster|to_coinmaster|string}}&lt;br /&gt;
{{Flink|effect|to_effect|int}}&lt;br /&gt;
{{Flink|effect|to_effect|string}}&lt;br /&gt;
{{Flink|effect|to_effect|skill}}&lt;br /&gt;
{{Flink|element|to_element|string}}&lt;br /&gt;
{{Flink|familiar|to_familiar|int}}&lt;br /&gt;
{{Flink|familiar|to_familiar|string}}&lt;br /&gt;
{{Flink|float|to_float|any}}&lt;br /&gt;
{{Flink|int|to_int|any}}&lt;br /&gt;
{{Flink|item|to_item|string}}&lt;br /&gt;
{{Flink|item|to_item|int}}&lt;br /&gt;
{{Flink|item|to_item|string|int}}&lt;br /&gt;
{{Flink|string|to_json|null}}&lt;br /&gt;
{{Flink|location|to_location|string}}&lt;br /&gt;
{{Flink|location|to_location|int}}&lt;br /&gt;
{{Flink|string|to_lower_case|string}}&lt;br /&gt;
{{Flink|monster|to_monster|string}}&lt;br /&gt;
{{Flink|phylum|to_phylum|string}}&lt;br /&gt;
{{Flink|string|to_plural|item}}&lt;br /&gt;
{{Flink|skill|to_skill|int}}&lt;br /&gt;
{{Flink|skill|to_skill|string}}&lt;br /&gt;
{{Flink|skill|to_skill|effect}}&lt;br /&gt;
{{Flink|slot|to_slot|item}}&lt;br /&gt;
{{Flink|stat|to_stat|string}}&lt;br /&gt;
{{Flink|string|to_string|any}}&lt;br /&gt;
{{Flink|string|to_upper_case|string}}&lt;br /&gt;
{{Flink|string|to_url|location}}&lt;br /&gt;
{{Flink|string|today_to_string}}&lt;br /&gt;
{{Flink|int|truncate|float}}&lt;br /&gt;
{{Flink|int|turns_per_cast|skill}}&lt;br /&gt;
{{Flink|int|turns_played}}&lt;br /&gt;
&lt;br /&gt;
===u===&lt;br /&gt;
{{Flink|string|url_decode|string}}&lt;br /&gt;
{{Flink|string|url_encode|string}}&lt;br /&gt;
{{Flink|boolean|use|int|item}}&lt;br /&gt;
{{Flink|boolean|use_familiar|familiar}}&lt;br /&gt;
{{Flink|boolean|use_skill|int|skill|{{opt|string}}}}&lt;br /&gt;
{{Flink|buffer|use_skill|skill}}&lt;br /&gt;
{{Flink|boolean|user_confirm|string}}&lt;br /&gt;
{{Flink|boolean|user_confirm|string|int|boolean}}&lt;br /&gt;
&lt;br /&gt;
===v===&lt;br /&gt;
{{Flink|boolean|visit|coinmaster}}&lt;br /&gt;
{{Flink|buffer|visit_url|string}}&lt;br /&gt;
{{Flink|buffer|visit_url|string|boolean}}&lt;br /&gt;
{{Flink|buffer|visit_url|string|boolean|boolean}}&lt;br /&gt;
===w===&lt;br /&gt;
{{Flink|void|wait|int}}&lt;br /&gt;
{{Flink|void|waitq|int}}&lt;br /&gt;
{{Flink|int|weapon_hands|item}}&lt;br /&gt;
{{Flink|stat|weapon_type|item}}&lt;br /&gt;
{{Flink|int|weight_adjustment}}&lt;br /&gt;
{{Flink|boolean|white_citadel_available}}&lt;br /&gt;
{{Flink|boolean [string]|who_clan}}&lt;br /&gt;
{{Flink|boolean|will_usually_dodge}}&lt;br /&gt;
{{Flink|boolean|will_usually_miss}}&lt;br /&gt;
{{Flink|void|write|string}}&lt;br /&gt;
{{Flink|void|writeln|string}}&lt;/div&gt;</summary>
		<author><name>Gnocchi masala</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Item_Management&amp;diff=4234</id>
		<title>Item Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Item_Management&amp;diff=4234"/>
		<updated>2014-03-30T06:34:32Z</updated>

		<summary type="html">&lt;p&gt;Gnocchi masala: Revision 12906 add refresh_shop() function.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
==Informational==&lt;br /&gt;
{{Flink|int|my_meat|desc=Returns the amount of meat you have on hand.}}&lt;br /&gt;
{{Flink|int|my_closet_meat|desc=Returns the amount of meat you have in your Colossal Closet.}}&lt;br /&gt;
{{Flink|int|my_storage_meat|desc=Returns the amount of meat you have in Hagnk&#039;s Ancestral Mini-Storage.}}&lt;br /&gt;
{{Flink|int|pulls_remaining|desc=Returns the number of pulls you can make from storage, or 0 if not applicable.}}&lt;br /&gt;
{{Flink|boolean|have_chef|desc=Returns true if you have a chef-boxen at your campground.}}&lt;br /&gt;
{{Flink|boolean|have_bartender|desc=Returns true if you have a bartender-boxen at your campground.}}&lt;br /&gt;
{{Flink|int [item]|get_campground|desc=Returns a map of your campground items.}}&lt;br /&gt;
{{Flink|item|get_dwelling|desc=Returns the item corresponding with your dwelling.}}&lt;br /&gt;
{{Flink|boolean|have_mushroom_plot|desc=Returns true if and only if you&#039;ve purchased a mushroom plot this run.}}&lt;br /&gt;
{{Flink|int|stills_available|desc=Returns the number of Nash Crosby&#039;s Still uses left for the day (0 if not accessible).}}&lt;br /&gt;
{{Flink|string|item_type|item|desc=Returns the type of item specified.}}&lt;br /&gt;
{{Flink|int|item_amount|item}}&lt;br /&gt;
{{Flink|int|closet_amount|item}}&lt;br /&gt;
{{Flink|int|display_amount|item}}&lt;br /&gt;
{{Flink|int|equipped_amount|item}}&lt;br /&gt;
{{Flink|int|shop_amount|item}}&lt;br /&gt;
{{Flink|int [item]|get_shop|desc=Returns entire contents of shop and quantity of each item}}&lt;br /&gt;
{{Flink|int|stash_amount|item|}}&lt;br /&gt;
{{Flink|int|storage_amount|item|desc=These 7 functions return the total number available of a given item in the respective section of your inventory.}}&lt;br /&gt;
{{Flink|int|available_amount|item|desc=Returns the total number available of a given item in all inventory sections accessible to your character based on current restrictions.}}&lt;br /&gt;
{{Flink|int|creatable_amount|item|desc=Returns the amount of the item that you are capable of creating given your current inventory and skills.}}&lt;br /&gt;
{{Flink|int [item]|get_ingredients|item|desc=Returns a map where each key is one of the required ingredients, with the integer value the number required. If you don&#039;t have the skills needed to make the item, it will return an empty map.}}&lt;br /&gt;
{{Flink|int [item]|get_inventory|desc=Returns a map where each key is an item in your inventory, with the integer value its quantity.}}&lt;br /&gt;
{{Flink|int [item]|get_related|item|string|desc=Returns associated items in a zap or fold group (see page for details).}}&lt;br /&gt;
[[File:Item category.png|frame|You can categorize items in KoL using [[is tradeable|is_tradeable()]], [[is giftable|is_giftable()]], and [[is displayable|is_displayable()]].]]&lt;br /&gt;
{{Flink|boolean|is_tradeable|item|desc=Returns whether the item can be placed in the mall.}}&lt;br /&gt;
{{Flink|boolean|is_giftable|item|desc=Returns whether the item can be traded in a gift package.}}&lt;br /&gt;
{{Flink|boolean|is_displayable|item|desc=Returns whether the item can be put in a display case (true for all but quest items).}}&lt;br /&gt;
{{Flink|boolean|have_shop|desc=Returns whether you have a mall store.}}&lt;br /&gt;
{{Flink|boolean|have_display|desc=Returns whether you have a display case.}}&lt;br /&gt;
{{Flink|boolean|is_npc_item|item|desc=Returns whether the item can be bought from an NPC store.}}&lt;br /&gt;
{{Flink|void|refresh_stash|desc=Takes a new look at the contents of your clan stash, as that section of inventory cannot be internally tracked due to access by others.}}&lt;br /&gt;
{{Flink|void|refresh_shop|desc=Takes a new look at the contents of your mall store, as that section of inventory cannot be internally tracked due to access by others.}}&lt;br /&gt;
{{Flink|int|mall_price|item|desc=Returns the current (lowest) mall price of the given item.}}&lt;br /&gt;
{{Flink|int|npc_price|item|desc=Returns the current price of the given item if it can currently be bought from an NPC store.}}&lt;br /&gt;
{{Flink|int|historical_price|item|desc=Returns the most recently checked price for an item. This will never hit the server, unlike mall_price().}}&lt;br /&gt;
{{Flink|float|historical_age|item|desc=Returns the age of the most recently checked price for an item in days. This allows you to decide if you want to use historical_price() or mall_price().}}&lt;br /&gt;
{{Flink|int|autosell_price|item|desc=Returns the autosell price of the item (0 for items that cannot be autosold).}}&lt;br /&gt;
{{Flink|int|get_power|item|desc=Returns the power of the item (0 for items that don&#039;t have a power).}}&lt;br /&gt;
{{Flink|string|to_plural|item|desc=Returns the plural of an item as a string.}}&lt;br /&gt;
{{Flink|int|meat_drop|{{opt|monster}}|desc=Returns a certain monster&#039;s base meat drop.}}&lt;br /&gt;
{{Flink|int [item]|item_drops|{{opt|monster}}|desc=Returns an array of a certain monster&#039;s base item drops, keying item to drop rate. Has certain limitations detailed on individual page.}}&lt;br /&gt;
{{Flink|record [int]|item_drops_array|{{opt|monster}}|desc=Returns an array of records holding information regarding a certain monster&#039;s base item drops.}}&lt;br /&gt;
&lt;br /&gt;
==Moving Items Around==&lt;br /&gt;
{{Flink|boolean|put_closet|int|{{opt|item}}}}&lt;br /&gt;
{{Flink|boolean|put_display|int|item}}&lt;br /&gt;
{{Flink|boolean|put_stash|int|item}}&lt;br /&gt;
{{Flink|boolean|take_closet|int|{{opt|item}}}}&lt;br /&gt;
{{Flink|boolean|take_display|int|item}}&lt;br /&gt;
{{Flink|boolean|take_stash|int|item}}&lt;br /&gt;
{{Flink|boolean|take_storage|int|item|desc=Attempts to take or put the specified item in the appropriate section of your inventory, and returns its success.&amp;lt;br /&amp;gt;If the item parameter is omitted from put_closet() or take_closet(), meat is transferred instead of an item.}}&lt;br /&gt;
{{Flink|boolean|put_shop|int|int|{{opt|int}}|item}}&lt;br /&gt;
{{Flink|boolean|take_shop|{{opt|int}}|item|desc=Adds or removes items in your store and returns success.}}&lt;br /&gt;
&lt;br /&gt;
==Acquiring &amp;amp; Using Items==&lt;br /&gt;
{{Flink|boolean|autosell|int|item|desc=Attempts to autosell the given items and reports success.}}&lt;br /&gt;
{{Flink|boolean|buy|int|item}}&lt;br /&gt;
{{Flink|boolean|create|int|item|desc=Attempts to create the specified items, following your KoLmafia settings regarding purchases to gather ingredients &amp;amp; require boxen.}}&lt;br /&gt;
{{Flink|boolean|drink|int|item|desc=Attempts to drink items as specified and reports success.}}&lt;br /&gt;
{{Flink|boolean|eat|int|item|desc=Attempts to eat items as specified and reports success.}}&lt;br /&gt;
{{Flink|boolean|eatsilent|int|item|desc=Attempts to eat items as specified.}}&lt;br /&gt;
{{Flink|boolean|hermit|int|item|desc=Trades worthless items (buying and using chewing gum if needed) to the hermit for specified items (see page for details).}}&lt;br /&gt;
{{Flink|boolean|use|int|item|desc=Attempts to use items as specified and reports success.}}&lt;br /&gt;
{{Flink|boolean|overdrink|int|item}}&lt;br /&gt;
{{Flink|boolean|retrieve_item|int|item|desc=Uses KoLmafia internal logic to gather items (see page for details).}}&lt;br /&gt;
{{Flink|int|buy|int|item|int|desc=Tries to purchase the specified items (see page for details).}}&lt;br /&gt;
{{Flink|int|craft|string|int|item|item|desc=Raw crafting that obeys KoLmafia settings (see page for details).}}&lt;br /&gt;
{{Flink|string|last_item_message|desc=Returns message that KoL reports in the event of error.}}&lt;br /&gt;
&lt;br /&gt;
==Coinmaster Control==&lt;br /&gt;
Some items can be bought from or sold to various &amp;quot;coinmasters&amp;quot; which are like shops that deal in a currency other than meat. These coinmasters include the Dimemaster and Quartermaster during the Island War, the Hermit, the Mr. Store and many others. Some relevant information can be found in [[proxy records]] for the item and coinmaster data types. The rest is controlled by the following functions.&lt;br /&gt;
&lt;br /&gt;
===Inquiries===&lt;br /&gt;
{{Flink|coinmaster|to_coinmaster|string|desc=Converts a string to a valid coinmaster.}}&lt;br /&gt;
{{Flink|boolean|is_coinmaster_item|item|desc=Is a given item acquirable from a coinmster.}}&lt;br /&gt;
{{Flink|boolean|buys_item|coinmaster|item|desc=Is a specific item acquirable from the named coinmster.}}&lt;br /&gt;
{{Flink|int|buy_price|coinmaster|item|desc=What is the coinmaster&#039;s purchase price for an item.}}&lt;br /&gt;
{{Flink|boolean|sells_item|coinmaster|item|desc=Is a specific item sellable to the named coinmster.}}&lt;br /&gt;
{{Flink|int|sell_price|coinmaster|item|desc=What is the coinmaster&#039;s selling price for an item.}}&lt;br /&gt;
&lt;br /&gt;
===Coinmaster transactions===&lt;br /&gt;
{{Flink|boolean|is_accessible|coinmaster|desc=Is a given coinmaster currently accessible.}}&lt;br /&gt;
{{Flink|string|inaccessible_reason|coinmaster|desc=The reason a given coinmaster is currently inaccessible.}}&lt;br /&gt;
{{Flink|boolean|visit|coinmaster|desc=Refreshes information at a coinmaster.}}&lt;br /&gt;
{{Flink|boolean|buy|coinmaster|int|item|desc=Buys an item from a coinmaster.}}&lt;br /&gt;
{{Flink|boolean|sell|coinmaster|int|item|desc=Sells an item to a coinmaster.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting]]&lt;/div&gt;</summary>
		<author><name>Gnocchi masala</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Refresh_shop&amp;diff=8260</id>
		<title>Refresh shop</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Refresh_shop&amp;diff=8260"/>
		<updated>2014-03-30T06:32:41Z</updated>

		<summary type="html">&lt;p&gt;Gnocchi masala: Revision 12906 add refresh_shop() function.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|refresh_shop}}{{&lt;br /&gt;
#vardefine:return_type|void}}{{&lt;br /&gt;
&lt;br /&gt;
FunctionPage|&lt;br /&gt;
name={{#var:name}}|&lt;br /&gt;
&lt;br /&gt;
function1={{Function|&lt;br /&gt;
name={{#var:name}}|&lt;br /&gt;
aggregate={{#var:aggregate}}|&lt;br /&gt;
return_type={{#var:return_type}}|&lt;br /&gt;
return_also={{#var:return_also}}|&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
function_description=Forces mafia to re-check your mall store (useful since it&#039;s impossible for mafia to internally track this section of &amp;quot;your&amp;quot; inventory).|&lt;br /&gt;
&lt;br /&gt;
needscode=yes|&lt;br /&gt;
&lt;br /&gt;
cli_equiv=Not Known|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Item Management]]&lt;/div&gt;</summary>
		<author><name>Gnocchi masala</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Ash_Functions&amp;diff=2594</id>
		<title>Ash Functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Ash_Functions&amp;diff=2594"/>
		<updated>2014-03-30T06:30:16Z</updated>

		<summary type="html">&lt;p&gt;Gnocchi masala: Revision 12906 add refresh_shop() function. Also all refresh_* functions so far return void not boolean.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
Master list of all ASH functions. All functions as of r8144 are listed; this list is intended to be kept current, but it is possible that some functions added since the above revision may be missing. (Please feel free to add in any you notice.)&lt;br /&gt;
===a===&lt;br /&gt;
{{Flink|void|abort|{{opt|string}}}}&lt;br /&gt;
{{Flink|void|add_item_condition|int|item}}&lt;br /&gt;
{{Flink|boolean|adv1|location|int|string}}&lt;br /&gt;
{{Flink|boolean|adventure|int|location|{{opt|string}}}}&lt;br /&gt;
{{Flink|float [monster]|appearance_rates|location|{{opt|boolean}}}}&lt;br /&gt;
{{Flink|buffer|append|buffer|string}}&lt;br /&gt;
{{Flink|buffer|append_replacement|matcher|buffer|string}}&lt;br /&gt;
{{Flink|buffer|append_tail|matcher|buffer}}&lt;br /&gt;
{{Flink|buffer|attack}}&lt;br /&gt;
{{Flink|boolean|autosell|int|item}}&lt;br /&gt;
{{Flink|int|autosell_price|item}}&lt;br /&gt;
{{Flink|int|available_amount|item}}&lt;br /&gt;
===b===&lt;br /&gt;
{{Flink|boolean|batch_close}}&lt;br /&gt;
{{Flink|void|batch_open}}&lt;br /&gt;
{{Flink|boolean|black_market_available}}&lt;br /&gt;
{{Flink|boolean|boolean_modifier|string|{{opt|string}}}}&lt;br /&gt;
{{Flink|boolean|boolean_modifier|item|string}}&lt;br /&gt;
{{Flink|int|buffed_hit_stat}}&lt;br /&gt;
{{Flink|boolean|buy|int|item}}&lt;br /&gt;
{{Flink|int|buy|int|item|int}}&lt;br /&gt;
{{Flink|boolean|buy|coinmaster|int|item}}&lt;br /&gt;
{{Flink|int|buy_price|coinmaster|item}}&lt;br /&gt;
{{Flink|boolean|buys_item|coinmaster|item}}&lt;br /&gt;
===c===&lt;br /&gt;
{{Flink|boolean|can_drink}}&lt;br /&gt;
{{Flink|boolean|can_eat}}&lt;br /&gt;
{{Flink|boolean|can_equip|item}}&lt;br /&gt;
{{Flink|boolean|can_interact}}&lt;br /&gt;
{{flink|boolean|canadia_available}}&lt;br /&gt;
{{Flink|int|ceil|float}}&lt;br /&gt;
{{Flink|boolean|chamber}}&lt;br /&gt;
{{Flink|boolean|change_mcd|int}}&lt;br /&gt;
{{Flink|string|char_at|string|int}}&lt;br /&gt;
{{Flink|void|chat_clan|string|{{opt|string}}}}&lt;br /&gt;
{{Flink|void|chat_macro|string}}&lt;br /&gt;
{{Flink|void|chat_notify|string|string}}&lt;br /&gt;
{{Flink|void|chat_private|string|string}}&lt;br /&gt;
{{Flink|class|class_modifier|string|string}}&lt;br /&gt;
{{Flink|class|class_modifier|item|string}}&lt;br /&gt;
{{Flink|void|clear|aggregate}}&lt;br /&gt;
{{Flink|boolean|cli_execute|string}}&lt;br /&gt;
{{Flink|int|closet_amount|item}}&lt;br /&gt;
{{Flink|int|combat_mana_cost_modifier}}&lt;br /&gt;
{{Flink|float|combat_rate_modifier}}&lt;br /&gt;
{{Flink|boolean|contains_text|string|string}}&lt;br /&gt;
{{Flink|void|council}}&lt;br /&gt;
{{Flink|int|count|aggregate}}&lt;br /&gt;
{{Flink|boolean|craft|string|int|item|item}}&lt;br /&gt;
{{Flink|int|creatable_amount|item}}&lt;br /&gt;
{{Flink|boolean|create|int|item}}&lt;br /&gt;
{{Flink|matcher|create_matcher|string|string}}&lt;br /&gt;
{{Flink|stat|current_hit_stat}}&lt;br /&gt;
{{Flink|int|current_mcd}}&lt;br /&gt;
&lt;br /&gt;
===d===&lt;br /&gt;
{{Flink|element|dad_sea_monkee_weakness|int}}&lt;br /&gt;
{{Flink|item|daily_special}}&lt;br /&gt;
{{Flink|float|damage_absorption_percent}}&lt;br /&gt;
{{Flink|int|damage_reduction}}&lt;br /&gt;
{{Flink|buffer|delete|buffer|int|int}}&lt;br /&gt;
{{Flink|void|disable|string}}&lt;br /&gt;
{{flink|boolean|dispensary_available}}&lt;br /&gt;
{{Flink|int|display_amount|item}}&lt;br /&gt;
{{Flink|boolean|drink|int|item}}&lt;br /&gt;
&lt;br /&gt;
===e===&lt;br /&gt;
{{Flink|boolean|eat|int|item}}&lt;br /&gt;
{{Flink|boolean|eatsilent|int|item}}&lt;br /&gt;
{{Flink|effect|effect_modifier|string|string}}&lt;br /&gt;
{{Flink|effect|effect_modifier|item|string}}&lt;br /&gt;
{{Flink|float|elemental_resistance|element}}&lt;br /&gt;
{{Flink|float|elemental_resistance|{{opt|monster}}}}&lt;br /&gt;
{{Flink|boolean|empty_closet}}&lt;br /&gt;
{{Flink|void|enable|string}}&lt;br /&gt;
{{Flink|int|end|matcher|{{opt|int}}}}&lt;br /&gt;
{{Flink|boolean|enthrone_familiar|familiar}}&lt;br /&gt;
{{Flink|string|entity_decode|string}}&lt;br /&gt;
{{Flink|string|entity_encode|string}}&lt;br /&gt;
{{Flink|boolean|entryway}}&lt;br /&gt;
{{Flink|boolean|equip|{{opt|slot}}|item}}&lt;br /&gt;
{{Flink|int|equipped_amount|item}}&lt;br /&gt;
{{Flink|item|equipped_item|slot}}&lt;br /&gt;
{{Flink|int|expected_damage|{{opt|monster}}}}&lt;br /&gt;
{{Flink|float|experience_bonus}}&lt;br /&gt;
{{Flink|float|expression_eval}}&lt;br /&gt;
{{Flink|int [item]|extract_items|string}}&lt;br /&gt;
{{Flink|int|extract_meat|string}}&lt;br /&gt;
&lt;br /&gt;
===f===&lt;br /&gt;
{{Flink|item|familiar_equipment|familiar}}&lt;br /&gt;
{{Flink|item|familiar_equipped_equipment|familiar}}&lt;br /&gt;
{{Flink|int|familiar_weight|familiar}}&lt;br /&gt;
{{Flink|boolean|file_to_map|string|aggregate|{{opt|boolean}}}}&lt;br /&gt;
{{Flink|boolean|find|matcher}}&lt;br /&gt;
{{Flink|int|floor|float}}&lt;br /&gt;
{{Flink|string|form_field|string}}&lt;br /&gt;
{{Flink|string [string]|form_fields}}&lt;br /&gt;
{{Flink|string|format_date_time|string|string|string}}&lt;br /&gt;
{{Flink|boolean|friars_available}}&lt;br /&gt;
{{Flink|int|fullness_limit}}&lt;br /&gt;
&lt;br /&gt;
===g===&lt;br /&gt;
{{Flink|boolean|galaktik_cures_discounted}}&lt;br /&gt;
{{Flink|int|gameday_to_int}}&lt;br /&gt;
{{Flink|string|gameday_to_string}}&lt;br /&gt;
{{Flink|int|gametime_to_int}}&lt;br /&gt;
{{Flink|int|get_auto_attack}}&lt;br /&gt;
{{Flink|int [item]|get_campground}}&lt;br /&gt;
{{Flink|string|get_ccs_action|int}}&lt;br /&gt;
{{Flink|int|get_clan_id}}&lt;br /&gt;
{{Flink|string|get_clan_name}}&lt;br /&gt;
{{Flink|string|get_counters|string|int|int}}&lt;br /&gt;
{{Flink|string [int]|get_custom_outfits}}&lt;br /&gt;
{{Flink|item|get_dwelling|}}&lt;br /&gt;
{{Flink|string [int]|get_goals}}&lt;br /&gt;
{{Flink|int [item]|get_ingredients|item}}&lt;br /&gt;
{{Flink|int [item]|get_inventory}}&lt;br /&gt;
{{Flink|monster [int]|get_monsters|location}}&lt;br /&gt;
{{Flink|string [int]|get_moods}}&lt;br /&gt;
{{Flink|string [int]|get_outfits}}&lt;br /&gt;
{{Flink|string|get_path}}&lt;br /&gt;
{{Flink|string|get_path_full}}&lt;br /&gt;
{{Flink|string|get_path_variables}}&lt;br /&gt;
{{Flink|string|get_player_id|string}}&lt;br /&gt;
{{Flink|int|get_power|item}}&lt;br /&gt;
{{Flink|string|get_property|string}}&lt;br /&gt;
{{Flink|int [item]|get_related|item|string}}&lt;br /&gt;
{{Flink|int|get_revision}}&lt;br /&gt;
{{Flink|int [item]|get_shop}}&lt;br /&gt;
{{Flink|string|get_version}}&lt;br /&gt;
{{flink|boolean|gnomads_available}}&lt;br /&gt;
{{flink|boolean|goal_exists|string}}&lt;br /&gt;
{{Flink|string|group|matcher|{{opt|int}}}}&lt;br /&gt;
{{Flink|int|group_count|matcher}}&lt;br /&gt;
{{Flink|string [int, int]|group_string|string|string}}&lt;br /&gt;
{{Flink|item|guardians}}&lt;br /&gt;
{{Flink|boolean|guild_store_available}}&lt;br /&gt;
&lt;br /&gt;
===h===&lt;br /&gt;
{{Flink|boolean|have_bartender}}&lt;br /&gt;
{{Flink|boolean|have_chef}}&lt;br /&gt;
{{Flink|boolean|have_display}}&lt;br /&gt;
{{Flink|int|have_effect|effect}}&lt;br /&gt;
{{Flink|boolean|have_equipped|item}}&lt;br /&gt;
{{Flink|boolean|have_familiar|familiar}}&lt;br /&gt;
{{Flink|boolean|have_mushroom_plot}}&lt;br /&gt;
{{Flink|boolean|have_outfit|string}}&lt;br /&gt;
{{Flink|boolean|have_shop}}&lt;br /&gt;
{{Flink|boolean|have_skill|skill}}&lt;br /&gt;
{{Flink|boolean|hedgemaze}}&lt;br /&gt;
{{Flink|boolean|hermit|int|item}}&lt;br /&gt;
{{flink|boolean|hidden_temple_unlocked}}&lt;br /&gt;
{{Flink|boolean|hippy_stone_broken}}&lt;br /&gt;
{{Flink|boolean|hippy_store_available}}&lt;br /&gt;
{{Flink|float|historical_age|item}}&lt;br /&gt;
{{Flink|int|historical_price|item}}&lt;br /&gt;
&lt;br /&gt;
===i===&lt;br /&gt;
{{Flink|monster|image_to_monster|strict_string}}&lt;br /&gt;
{{Flink|boolean|in_bad_moon}}&lt;br /&gt;
{{Flink|boolean|in_hardcore}}&lt;br /&gt;
{{Flink|boolean|in_moxie_sign}}&lt;br /&gt;
{{Flink|boolean|in_muscle_sign}}&lt;br /&gt;
{{Flink|boolean|in_mysticality_sign}}&lt;br /&gt;
{{Flink|string|inaccessible_reason|coinmaster|}}&lt;br /&gt;
{{Flink|int|index_of|string|string|{{opt|int}}}}&lt;br /&gt;
{{Flink|int|inebriety_limit}}&lt;br /&gt;
{{Flink|float|initiative_modifier}}&lt;br /&gt;
{{Flink|buffer|insert|buffer|int|string}}&lt;br /&gt;
{{Flink|boolean|is_accessible|coinmaster}}&lt;br /&gt;
{{Flink|boolean|is_coinmaster_item|item}}&lt;br /&gt;
{{Flink|boolean|is_discardable|item}}&lt;br /&gt;
{{Flink|boolean|is_displayable|item}}&lt;br /&gt;
{{Flink|boolean|is_giftable|item}}&lt;br /&gt;
{{Flink|boolean|is_goal|item}}&lt;br /&gt;
{{Flink|boolean|is_integer|string}}&lt;br /&gt;
{{Flink|boolean|is_npc_item|item}}&lt;br /&gt;
{{Flink|boolean|is_online|string}}&lt;br /&gt;
{{Flink|boolean|is_tradeable|item}}&lt;br /&gt;
{{Flink|boolean|is_trendy|any}}&lt;br /&gt;
{{Flink|boolean|is_wearing_outfit|string}}&lt;br /&gt;
{{Flink|int|item_amount|item}}&lt;br /&gt;
{{Flink|float|item_drop_modifier}}&lt;br /&gt;
{{Flink|int [item]|item_drops|{{opt|monster}}}}&lt;br /&gt;
{{Flink|record [int]|item_drops_array|{{opt|monster}}}}&lt;br /&gt;
{{Flink|string|item_type|item}}&lt;br /&gt;
===j===&lt;br /&gt;
{{flink|int|jump_chance|{{opt|monster}}|{{opt|int}}|{{opt|int}}}}&lt;br /&gt;
{{flink|int|jump_chance|location|{{opt|int}}|{{opt|int}}}}&lt;br /&gt;
&lt;br /&gt;
===k===&lt;br /&gt;
{{flink|boolean|knoll_available}}&lt;br /&gt;
===l===&lt;br /&gt;
{{Flink|int|last_index_of|string|string|{{opt|int}}}}&lt;br /&gt;
{{Flink|string|last_item_message}}&lt;br /&gt;
{{Flink|monster|last_monster}}&lt;br /&gt;
{{Flink|string|last_skill_message}}&lt;br /&gt;
{{Flink|int|length|string}}&lt;br /&gt;
{{Flink|buffer|load_html|string}}&lt;br /&gt;
{{Flink|void|lock_familiar_equipment|boolean}}&lt;br /&gt;
{{Flink|void|logprint|string}}&lt;br /&gt;
===m===&lt;br /&gt;
{{Flink|string|make_url|string|boolean|boolean}}&lt;br /&gt;
{{Flink|int|mall_price|item}}&lt;br /&gt;
{{Flink|int|mana_cost_modifier}}&lt;br /&gt;
{{Flink|boolean|map_to_file|aggregate|string|{{opt|boolean}}}}&lt;br /&gt;
{{Flink|float|max|float|float}}&lt;br /&gt;
{{Flink|int|max|int|int}}&lt;br /&gt;
{{Flink|boolean|maximize|string|boolean}}&lt;br /&gt;
{{Flink|boolean|maximize|string|int|int|boolean}}&lt;br /&gt;
{{Flink|record [int]|maximize|string|int|int|boolean|boolean}}&lt;br /&gt;
{{Flink|int|meat_drop|{{opt|monster}}}}&lt;br /&gt;
{{Flink|float|meat_drop_modifier}}&lt;br /&gt;
{{Flink|float|min|float|float}}&lt;br /&gt;
{{Flink|int|min|int|int}}&lt;br /&gt;
{{Flink|item|minstrel_instrument}}&lt;br /&gt;
{{Flink|int|minstrel_level}}&lt;br /&gt;
{{Flink|boolean|minstrel_quest}}&lt;br /&gt;
{{Flink|int|mmg_bet_amount|int}}&lt;br /&gt;
{{Flink|string|mmg_bet_owner|int}}&lt;br /&gt;
{{Flink|int|mmg_bet_owner_id|int}}&lt;br /&gt;
{{Flink|string|mmg_bet_taker}}&lt;br /&gt;
{{Flink|string|mmg_bet_taker_id}}&lt;br /&gt;
{{Flink|int|mmg_bet_winnings}}&lt;br /&gt;
{{Flink|int|mmg_make_bet|int|boolean}}&lt;br /&gt;
{{Flink|int [int]|mmg_my_bets}}&lt;br /&gt;
{{Flink|int [int]|mmg_offered_bets}}&lt;br /&gt;
{{Flink|boolean|mmg_retract_bet|int}}&lt;br /&gt;
{{Flink|void|mmg_search|int|int}}&lt;br /&gt;
{{Flink|int|mmg_take_bet|int|boolean}}&lt;br /&gt;
{{Flink|void|mmg_visit}}&lt;br /&gt;
{{Flink|int|mmg_wait_event|int}}&lt;br /&gt;
{{Flink|float|modifier_eval|string}}&lt;br /&gt;
{{Flink|int|monster_attack|{{opt|monster}}}}&lt;br /&gt;
{{Flink|int|monster_defense|{{opt|monster}}}}&lt;br /&gt;
{{Flink|int|monster_initiative|{{opt|monster}}}}&lt;br /&gt;
{{Flink|element|monster_element|{{opt|monster}}}}&lt;br /&gt;
{{Flink|float|monster_eval|string}}&lt;br /&gt;
{{Flink|int|monster_hp|{{opt|monster}}}}&lt;br /&gt;
{{Flink|int|monster_level_adjustment}}&lt;br /&gt;
{{Flink|phylum|monster_phylum|{{opt|monster}}}}&lt;br /&gt;
{{Flink|int|moon_light}}&lt;br /&gt;
{{Flink|int|moon_phase}}&lt;br /&gt;
{{Flink|int|mp_cost|skill}}&lt;br /&gt;
{{Flink|int|my_adventures}}&lt;br /&gt;
{{Flink|int|my_ascensions}}&lt;br /&gt;
{{Flink|int|my_basestat|stat}}&lt;br /&gt;
{{Flink|int|my_buffedstat|stat}}&lt;br /&gt;
{{Flink|class|my_class}}&lt;br /&gt;
{{Flink|int|my_closet_meat}}&lt;br /&gt;
{{Flink|string|my_companion}}&lt;br /&gt;
{{Flink|int|my_daycount|}}&lt;br /&gt;
{{Flink|int|my_discomomentum}}&lt;br /&gt;
{{Flink|familiar|my_effective_familiar}}&lt;br /&gt;
{{Flink|int [effect]|my_effects}}&lt;br /&gt;
{{Flink|familiar|my_enthroned_familiar}}&lt;br /&gt;
{{Flink|familiar|my_familiar}}&lt;br /&gt;
{{Flink|int|my_fullness}}&lt;br /&gt;
{{Flink|int|my_fury}}&lt;br /&gt;
{{Flink|string|my_hash}}&lt;br /&gt;
{{Flink|int|my_hp}}&lt;br /&gt;
{{Flink|string|my_id}}&lt;br /&gt;
{{Flink|int|my_inebriety}}&lt;br /&gt;
{{Flink|int|my_level}}&lt;br /&gt;
{{Flink|location|my_location}}&lt;br /&gt;
{{Flink|int|my_maxhp}}&lt;br /&gt;
{{Flink|int|my_maxfury}}&lt;br /&gt;
{{Flink|int|my_maxmp}}&lt;br /&gt;
{{Flink|int|my_meat}}&lt;br /&gt;
{{Flink|int|my_mp}}&lt;br /&gt;
{{Flink|string|my_name}}&lt;br /&gt;
{{flink|string|my_path}}&lt;br /&gt;
{{Flink|stat|my_primestat}}&lt;br /&gt;
{{flink|string|my_sign}}&lt;br /&gt;
{{Flink|int|my_spleen_use}}&lt;br /&gt;
{{Flink|int|my_storage_meat}}&lt;br /&gt;
{{Flink|int|my_turncount}}&lt;br /&gt;
&lt;br /&gt;
===n===&lt;br /&gt;
{{Flink|float|now_to_string|string}}&lt;br /&gt;
{{Flink|int|npc_price|item}}&lt;br /&gt;
{{Flink|float|numeric_modifier|string|{{opt|string}}}}&lt;br /&gt;
{{Flink|float|numeric_modifier|item|string}}&lt;br /&gt;
{{Flink|float|numeric_modifier|effect|string}}&lt;br /&gt;
{{Flink|float|numeric_modifier|skill|string}}&lt;br /&gt;
{{Flink|float|numeric_modifier|familiar|string|int|item}}&lt;br /&gt;
&lt;br /&gt;
===o===&lt;br /&gt;
{{Flink|boolean|outfit|string}}&lt;br /&gt;
{{Flink|item [int]|outfit_pieces|string}}&lt;br /&gt;
{{Flink|boolean|overdrink|int|item}}&lt;br /&gt;
&lt;br /&gt;
===p===&lt;br /&gt;
{{Flink|void|print|string|{{opt|string}}}}&lt;br /&gt;
{{Flink|void|print_html|string}}&lt;br /&gt;
{{Flink|int|pulls_remaining}}&lt;br /&gt;
{{Flink|boolean|put_closet|int|{{opt|item}}}}&lt;br /&gt;
{{Flink|boolean|put_display|int|item}}&lt;br /&gt;
{{Flink|boolean|put_shop|int|int|{{opt|int}}|item}}&lt;br /&gt;
{{Flink|boolean|put_stash|int|item}}&lt;br /&gt;
{{Flink|int|pvp_attacks_left}}&lt;br /&gt;
===r===&lt;br /&gt;
{{Flink|int|random|int}}&lt;br /&gt;
{{Flink|int|raw_damage_absorption}}&lt;br /&gt;
{{Flink|void|refresh_shop}}&lt;br /&gt;
{{Flink|void|refresh_stash}}&lt;br /&gt;
{{Flink|void|refresh_status}}&lt;br /&gt;
{{Flink|void|remove_item_condition|int|item}}&lt;br /&gt;
{{Flink|boolean|replace|buffer|int|int|string}}&lt;br /&gt;
{{Flink|string|replace_all|matcher|string}}&lt;br /&gt;
{{Flink|string|replace_first|matcher|string}}&lt;br /&gt;
{{Flink|buffer|replace_string|buffer|string|string}}&lt;br /&gt;
{{Flink|buffer|replace_string|string|string|string}}&lt;br /&gt;
{{Flink|matcher|reset|matcher|{{opt|string}}}}&lt;br /&gt;
{{Flink|boolean|restore_hp|int}}&lt;br /&gt;
{{Flink|boolean|restore_mp|int}}&lt;br /&gt;
{{Flink|boolean|retrieve_item|int|item}}&lt;br /&gt;
{{Flink|int|round|float}}&lt;br /&gt;
{{Flink|buffer|run_combat}}&lt;br /&gt;
{{Flink|buffer|runaway}}&lt;br /&gt;
&lt;br /&gt;
===s===&lt;br /&gt;
{{Flink|boolean|sell|coinmaster|int|item}}&lt;br /&gt;
{{Flink|int|sell_price|coinmaster|item}}&lt;br /&gt;
{{Flink|boolean|sells_item|coinmaster|item}}&lt;br /&gt;
{{Flink|string [int]|session_logs|{{opt|string}}|int}}&lt;br /&gt;
{{Flink|void|set_auto_attack|int}}&lt;br /&gt;
{{Flink|void|set_length|buffer|int}}&lt;br /&gt;
{{Flink|void|set_location|location}}&lt;br /&gt;
{{Flink|void|set_property|string|string}}&lt;br /&gt;
{{Flink|int|shop_amount|item}}&lt;br /&gt;
{{Flink|int|spleen_limit}}&lt;br /&gt;
{{Flink|string [int]|split_string|string|{{opt|string}}}}&lt;br /&gt;
{{Flink|float|square_root|float}}&lt;br /&gt;
{{Flink|int|start|matcher|{{opt|int}}}}&lt;br /&gt;
{{Flink|int|stash_amount|item}}&lt;br /&gt;
{{Flink|stat|stat_bonus_today}}&lt;br /&gt;
{{Flink|stat|stat_bonus_tomorrow}}&lt;br /&gt;
{{Flink|stat|stat_modifier|effect|string}}&lt;br /&gt;
{{Flink|buffer|steal}}&lt;br /&gt;
{{Flink|int|stills_available}}&lt;br /&gt;
{{Flink|int|storage_amount|item}}&lt;br /&gt;
{{Flink|string|string_modifier|string}}&lt;br /&gt;
{{Flink|string|string_modifier|string|string}}&lt;br /&gt;
{{Flink|skill|stun_skill}}&lt;br /&gt;
{{Flink|string|substring|string|int|{{opt|int}}}}&lt;br /&gt;
&lt;br /&gt;
===t===&lt;br /&gt;
{{Flink|boolean|take_closet|int|{{opt|item}}}}&lt;br /&gt;
{{Flink|boolean|take_display|int|item}}&lt;br /&gt;
{{Flink|boolean|take_shop|{{opt|int}}|item}}&lt;br /&gt;
{{Flink|boolean|take_stash|int|item}}&lt;br /&gt;
{{Flink|boolean|take_storage|int|item}}&lt;br /&gt;
{{Flink|int|tavern|{{opt|string}}}}&lt;br /&gt;
{{Flink|buffer|throw_item|item}}&lt;br /&gt;
{{Flink|buffer|throw_items|item|item}}&lt;br /&gt;
{{Flink|buffer|time_to_string}}&lt;br /&gt;
{{Flink|boolean|to_boolean|any}}&lt;br /&gt;
{{Flink|class|to_class|string}}&lt;br /&gt;
{{Flink|coinmaster|to_coinmaster|string}}&lt;br /&gt;
{{Flink|effect|to_effect|int}}&lt;br /&gt;
{{Flink|effect|to_effect|string}}&lt;br /&gt;
{{Flink|effect|to_effect|skill}}&lt;br /&gt;
{{Flink|element|to_element|string}}&lt;br /&gt;
{{Flink|familiar|to_familiar|int}}&lt;br /&gt;
{{Flink|familiar|to_familiar|string}}&lt;br /&gt;
{{Flink|float|to_float|any}}&lt;br /&gt;
{{Flink|int|to_int|any}}&lt;br /&gt;
{{Flink|item|to_item|string}}&lt;br /&gt;
{{Flink|item|to_item|int}}&lt;br /&gt;
{{Flink|item|to_item|string|int}}&lt;br /&gt;
{{Flink|string|to_json|null}}&lt;br /&gt;
{{Flink|location|to_location|string}}&lt;br /&gt;
{{Flink|location|to_location|int}}&lt;br /&gt;
{{Flink|string|to_lower_case|string}}&lt;br /&gt;
{{Flink|monster|to_monster|string}}&lt;br /&gt;
{{Flink|phylum|to_phylum|string}}&lt;br /&gt;
{{Flink|string|to_plural|item}}&lt;br /&gt;
{{Flink|skill|to_skill|int}}&lt;br /&gt;
{{Flink|skill|to_skill|string}}&lt;br /&gt;
{{Flink|skill|to_skill|effect}}&lt;br /&gt;
{{Flink|slot|to_slot|item}}&lt;br /&gt;
{{Flink|stat|to_stat|string}}&lt;br /&gt;
{{Flink|string|to_string|any}}&lt;br /&gt;
{{Flink|string|to_upper_case|string}}&lt;br /&gt;
{{Flink|string|to_url|location}}&lt;br /&gt;
{{Flink|string|today_to_string}}&lt;br /&gt;
{{Flink|int|truncate|float}}&lt;br /&gt;
{{Flink|int|turns_per_cast|skill}}&lt;br /&gt;
{{Flink|int|turns_played}}&lt;br /&gt;
&lt;br /&gt;
===u===&lt;br /&gt;
{{Flink|string|url_decode|string}}&lt;br /&gt;
{{Flink|string|url_encode|string}}&lt;br /&gt;
{{Flink|boolean|use|int|item}}&lt;br /&gt;
{{Flink|boolean|use_familiar|familiar}}&lt;br /&gt;
{{Flink|boolean|use_skill|int|skill|{{opt|string}}}}&lt;br /&gt;
{{Flink|buffer|use_skill|skill}}&lt;br /&gt;
{{Flink|boolean|user_confirm|string}}&lt;br /&gt;
{{Flink|boolean|user_confirm|string|int|boolean}}&lt;br /&gt;
&lt;br /&gt;
===v===&lt;br /&gt;
{{Flink|boolean|visit|coinmaster}}&lt;br /&gt;
{{Flink|buffer|visit_url|string}}&lt;br /&gt;
{{Flink|buffer|visit_url|string|boolean}}&lt;br /&gt;
{{Flink|buffer|visit_url|string|boolean|boolean}}&lt;br /&gt;
===w===&lt;br /&gt;
{{Flink|void|wait|int}}&lt;br /&gt;
{{Flink|void|waitq|int}}&lt;br /&gt;
{{Flink|int|weapon_hands|item}}&lt;br /&gt;
{{Flink|stat|weapon_type|item}}&lt;br /&gt;
{{Flink|int|weight_adjustment}}&lt;br /&gt;
{{Flink|boolean|white_citadel_available}}&lt;br /&gt;
{{Flink|boolean [string]|who_clan}}&lt;br /&gt;
{{Flink|boolean|will_usually_dodge}}&lt;br /&gt;
{{Flink|boolean|will_usually_miss}}&lt;br /&gt;
{{Flink|void|write|string}}&lt;br /&gt;
{{Flink|void|writeln|string}}&lt;/div&gt;</summary>
		<author><name>Gnocchi masala</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Ash_Functions&amp;diff=2593</id>
		<title>Ash Functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Ash_Functions&amp;diff=2593"/>
		<updated>2014-03-30T06:25:36Z</updated>

		<summary type="html">&lt;p&gt;Gnocchi masala: Veracity&amp;#039;s revision 12905 implementing changed shop funcionality.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
Master list of all ASH functions. All functions as of r8144 are listed; this list is intended to be kept current, but it is possible that some functions added since the above revision may be missing. (Please feel free to add in any you notice.)&lt;br /&gt;
===a===&lt;br /&gt;
{{Flink|void|abort|{{opt|string}}}}&lt;br /&gt;
{{Flink|void|add_item_condition|int|item}}&lt;br /&gt;
{{Flink|boolean|adv1|location|int|string}}&lt;br /&gt;
{{Flink|boolean|adventure|int|location|{{opt|string}}}}&lt;br /&gt;
{{Flink|float [monster]|appearance_rates|location|{{opt|boolean}}}}&lt;br /&gt;
{{Flink|buffer|append|buffer|string}}&lt;br /&gt;
{{Flink|buffer|append_replacement|matcher|buffer|string}}&lt;br /&gt;
{{Flink|buffer|append_tail|matcher|buffer}}&lt;br /&gt;
{{Flink|buffer|attack}}&lt;br /&gt;
{{Flink|boolean|autosell|int|item}}&lt;br /&gt;
{{Flink|int|autosell_price|item}}&lt;br /&gt;
{{Flink|int|available_amount|item}}&lt;br /&gt;
===b===&lt;br /&gt;
{{Flink|boolean|batch_close}}&lt;br /&gt;
{{Flink|void|batch_open}}&lt;br /&gt;
{{Flink|boolean|black_market_available}}&lt;br /&gt;
{{Flink|boolean|boolean_modifier|string|{{opt|string}}}}&lt;br /&gt;
{{Flink|boolean|boolean_modifier|item|string}}&lt;br /&gt;
{{Flink|int|buffed_hit_stat}}&lt;br /&gt;
{{Flink|boolean|buy|int|item}}&lt;br /&gt;
{{Flink|int|buy|int|item|int}}&lt;br /&gt;
{{Flink|boolean|buy|coinmaster|int|item}}&lt;br /&gt;
{{Flink|int|buy_price|coinmaster|item}}&lt;br /&gt;
{{Flink|boolean|buys_item|coinmaster|item}}&lt;br /&gt;
===c===&lt;br /&gt;
{{Flink|boolean|can_drink}}&lt;br /&gt;
{{Flink|boolean|can_eat}}&lt;br /&gt;
{{Flink|boolean|can_equip|item}}&lt;br /&gt;
{{Flink|boolean|can_interact}}&lt;br /&gt;
{{flink|boolean|canadia_available}}&lt;br /&gt;
{{Flink|int|ceil|float}}&lt;br /&gt;
{{Flink|boolean|chamber}}&lt;br /&gt;
{{Flink|boolean|change_mcd|int}}&lt;br /&gt;
{{Flink|string|char_at|string|int}}&lt;br /&gt;
{{Flink|void|chat_clan|string|{{opt|string}}}}&lt;br /&gt;
{{Flink|void|chat_macro|string}}&lt;br /&gt;
{{Flink|void|chat_notify|string|string}}&lt;br /&gt;
{{Flink|void|chat_private|string|string}}&lt;br /&gt;
{{Flink|class|class_modifier|string|string}}&lt;br /&gt;
{{Flink|class|class_modifier|item|string}}&lt;br /&gt;
{{Flink|void|clear|aggregate}}&lt;br /&gt;
{{Flink|boolean|cli_execute|string}}&lt;br /&gt;
{{Flink|int|closet_amount|item}}&lt;br /&gt;
{{Flink|int|combat_mana_cost_modifier}}&lt;br /&gt;
{{Flink|float|combat_rate_modifier}}&lt;br /&gt;
{{Flink|boolean|contains_text|string|string}}&lt;br /&gt;
{{Flink|void|council}}&lt;br /&gt;
{{Flink|int|count|aggregate}}&lt;br /&gt;
{{Flink|boolean|craft|string|int|item|item}}&lt;br /&gt;
{{Flink|int|creatable_amount|item}}&lt;br /&gt;
{{Flink|boolean|create|int|item}}&lt;br /&gt;
{{Flink|matcher|create_matcher|string|string}}&lt;br /&gt;
{{Flink|stat|current_hit_stat}}&lt;br /&gt;
{{Flink|int|current_mcd}}&lt;br /&gt;
&lt;br /&gt;
===d===&lt;br /&gt;
{{Flink|element|dad_sea_monkee_weakness|int}}&lt;br /&gt;
{{Flink|item|daily_special}}&lt;br /&gt;
{{Flink|float|damage_absorption_percent}}&lt;br /&gt;
{{Flink|int|damage_reduction}}&lt;br /&gt;
{{Flink|buffer|delete|buffer|int|int}}&lt;br /&gt;
{{Flink|void|disable|string}}&lt;br /&gt;
{{flink|boolean|dispensary_available}}&lt;br /&gt;
{{Flink|int|display_amount|item}}&lt;br /&gt;
{{Flink|boolean|drink|int|item}}&lt;br /&gt;
&lt;br /&gt;
===e===&lt;br /&gt;
{{Flink|boolean|eat|int|item}}&lt;br /&gt;
{{Flink|boolean|eatsilent|int|item}}&lt;br /&gt;
{{Flink|effect|effect_modifier|string|string}}&lt;br /&gt;
{{Flink|effect|effect_modifier|item|string}}&lt;br /&gt;
{{Flink|float|elemental_resistance|element}}&lt;br /&gt;
{{Flink|float|elemental_resistance|{{opt|monster}}}}&lt;br /&gt;
{{Flink|boolean|empty_closet}}&lt;br /&gt;
{{Flink|void|enable|string}}&lt;br /&gt;
{{Flink|int|end|matcher|{{opt|int}}}}&lt;br /&gt;
{{Flink|boolean|enthrone_familiar|familiar}}&lt;br /&gt;
{{Flink|string|entity_decode|string}}&lt;br /&gt;
{{Flink|string|entity_encode|string}}&lt;br /&gt;
{{Flink|boolean|entryway}}&lt;br /&gt;
{{Flink|boolean|equip|{{opt|slot}}|item}}&lt;br /&gt;
{{Flink|int|equipped_amount|item}}&lt;br /&gt;
{{Flink|item|equipped_item|slot}}&lt;br /&gt;
{{Flink|int|expected_damage|{{opt|monster}}}}&lt;br /&gt;
{{Flink|float|experience_bonus}}&lt;br /&gt;
{{Flink|float|expression_eval}}&lt;br /&gt;
{{Flink|int [item]|extract_items|string}}&lt;br /&gt;
{{Flink|int|extract_meat|string}}&lt;br /&gt;
&lt;br /&gt;
===f===&lt;br /&gt;
{{Flink|item|familiar_equipment|familiar}}&lt;br /&gt;
{{Flink|item|familiar_equipped_equipment|familiar}}&lt;br /&gt;
{{Flink|int|familiar_weight|familiar}}&lt;br /&gt;
{{Flink|boolean|file_to_map|string|aggregate|{{opt|boolean}}}}&lt;br /&gt;
{{Flink|boolean|find|matcher}}&lt;br /&gt;
{{Flink|int|floor|float}}&lt;br /&gt;
{{Flink|string|form_field|string}}&lt;br /&gt;
{{Flink|string [string]|form_fields}}&lt;br /&gt;
{{Flink|string|format_date_time|string|string|string}}&lt;br /&gt;
{{Flink|boolean|friars_available}}&lt;br /&gt;
{{Flink|int|fullness_limit}}&lt;br /&gt;
&lt;br /&gt;
===g===&lt;br /&gt;
{{Flink|boolean|galaktik_cures_discounted}}&lt;br /&gt;
{{Flink|int|gameday_to_int}}&lt;br /&gt;
{{Flink|string|gameday_to_string}}&lt;br /&gt;
{{Flink|int|gametime_to_int}}&lt;br /&gt;
{{Flink|int|get_auto_attack}}&lt;br /&gt;
{{Flink|int [item]|get_campground}}&lt;br /&gt;
{{Flink|string|get_ccs_action|int}}&lt;br /&gt;
{{Flink|int|get_clan_id}}&lt;br /&gt;
{{Flink|string|get_clan_name}}&lt;br /&gt;
{{Flink|string|get_counters|string|int|int}}&lt;br /&gt;
{{Flink|string [int]|get_custom_outfits}}&lt;br /&gt;
{{Flink|item|get_dwelling|}}&lt;br /&gt;
{{Flink|string [int]|get_goals}}&lt;br /&gt;
{{Flink|int [item]|get_ingredients|item}}&lt;br /&gt;
{{Flink|int [item]|get_inventory}}&lt;br /&gt;
{{Flink|monster [int]|get_monsters|location}}&lt;br /&gt;
{{Flink|string [int]|get_moods}}&lt;br /&gt;
{{Flink|string [int]|get_outfits}}&lt;br /&gt;
{{Flink|string|get_path}}&lt;br /&gt;
{{Flink|string|get_path_full}}&lt;br /&gt;
{{Flink|string|get_path_variables}}&lt;br /&gt;
{{Flink|string|get_player_id|string}}&lt;br /&gt;
{{Flink|int|get_power|item}}&lt;br /&gt;
{{Flink|string|get_property|string}}&lt;br /&gt;
{{Flink|int [item]|get_related|item|string}}&lt;br /&gt;
{{Flink|int|get_revision}}&lt;br /&gt;
{{Flink|int [item]|get_shop}}&lt;br /&gt;
{{Flink|string|get_version}}&lt;br /&gt;
{{flink|boolean|gnomads_available}}&lt;br /&gt;
{{flink|boolean|goal_exists|string}}&lt;br /&gt;
{{Flink|string|group|matcher|{{opt|int}}}}&lt;br /&gt;
{{Flink|int|group_count|matcher}}&lt;br /&gt;
{{Flink|string [int, int]|group_string|string|string}}&lt;br /&gt;
{{Flink|item|guardians}}&lt;br /&gt;
{{Flink|boolean|guild_store_available}}&lt;br /&gt;
&lt;br /&gt;
===h===&lt;br /&gt;
{{Flink|boolean|have_bartender}}&lt;br /&gt;
{{Flink|boolean|have_chef}}&lt;br /&gt;
{{Flink|boolean|have_display}}&lt;br /&gt;
{{Flink|int|have_effect|effect}}&lt;br /&gt;
{{Flink|boolean|have_equipped|item}}&lt;br /&gt;
{{Flink|boolean|have_familiar|familiar}}&lt;br /&gt;
{{Flink|boolean|have_mushroom_plot}}&lt;br /&gt;
{{Flink|boolean|have_outfit|string}}&lt;br /&gt;
{{Flink|boolean|have_shop}}&lt;br /&gt;
{{Flink|boolean|have_skill|skill}}&lt;br /&gt;
{{Flink|boolean|hedgemaze}}&lt;br /&gt;
{{Flink|boolean|hermit|int|item}}&lt;br /&gt;
{{flink|boolean|hidden_temple_unlocked}}&lt;br /&gt;
{{Flink|boolean|hippy_stone_broken}}&lt;br /&gt;
{{Flink|boolean|hippy_store_available}}&lt;br /&gt;
{{Flink|float|historical_age|item}}&lt;br /&gt;
{{Flink|int|historical_price|item}}&lt;br /&gt;
&lt;br /&gt;
===i===&lt;br /&gt;
{{Flink|monster|image_to_monster|strict_string}}&lt;br /&gt;
{{Flink|boolean|in_bad_moon}}&lt;br /&gt;
{{Flink|boolean|in_hardcore}}&lt;br /&gt;
{{Flink|boolean|in_moxie_sign}}&lt;br /&gt;
{{Flink|boolean|in_muscle_sign}}&lt;br /&gt;
{{Flink|boolean|in_mysticality_sign}}&lt;br /&gt;
{{Flink|string|inaccessible_reason|coinmaster|}}&lt;br /&gt;
{{Flink|int|index_of|string|string|{{opt|int}}}}&lt;br /&gt;
{{Flink|int|inebriety_limit}}&lt;br /&gt;
{{Flink|float|initiative_modifier}}&lt;br /&gt;
{{Flink|buffer|insert|buffer|int|string}}&lt;br /&gt;
{{Flink|boolean|is_accessible|coinmaster}}&lt;br /&gt;
{{Flink|boolean|is_coinmaster_item|item}}&lt;br /&gt;
{{Flink|boolean|is_discardable|item}}&lt;br /&gt;
{{Flink|boolean|is_displayable|item}}&lt;br /&gt;
{{Flink|boolean|is_giftable|item}}&lt;br /&gt;
{{Flink|boolean|is_goal|item}}&lt;br /&gt;
{{Flink|boolean|is_integer|string}}&lt;br /&gt;
{{Flink|boolean|is_npc_item|item}}&lt;br /&gt;
{{Flink|boolean|is_online|string}}&lt;br /&gt;
{{Flink|boolean|is_tradeable|item}}&lt;br /&gt;
{{Flink|boolean|is_trendy|any}}&lt;br /&gt;
{{Flink|boolean|is_wearing_outfit|string}}&lt;br /&gt;
{{Flink|int|item_amount|item}}&lt;br /&gt;
{{Flink|float|item_drop_modifier}}&lt;br /&gt;
{{Flink|int [item]|item_drops|{{opt|monster}}}}&lt;br /&gt;
{{Flink|record [int]|item_drops_array|{{opt|monster}}}}&lt;br /&gt;
{{Flink|string|item_type|item}}&lt;br /&gt;
===j===&lt;br /&gt;
{{flink|int|jump_chance|{{opt|monster}}|{{opt|int}}|{{opt|int}}}}&lt;br /&gt;
{{flink|int|jump_chance|location|{{opt|int}}|{{opt|int}}}}&lt;br /&gt;
&lt;br /&gt;
===k===&lt;br /&gt;
{{flink|boolean|knoll_available}}&lt;br /&gt;
===l===&lt;br /&gt;
{{Flink|int|last_index_of|string|string|{{opt|int}}}}&lt;br /&gt;
{{Flink|string|last_item_message}}&lt;br /&gt;
{{Flink|monster|last_monster}}&lt;br /&gt;
{{Flink|string|last_skill_message}}&lt;br /&gt;
{{Flink|int|length|string}}&lt;br /&gt;
{{Flink|buffer|load_html|string}}&lt;br /&gt;
{{Flink|void|lock_familiar_equipment|boolean}}&lt;br /&gt;
{{Flink|void|logprint|string}}&lt;br /&gt;
===m===&lt;br /&gt;
{{Flink|string|make_url|string|boolean|boolean}}&lt;br /&gt;
{{Flink|int|mall_price|item}}&lt;br /&gt;
{{Flink|int|mana_cost_modifier}}&lt;br /&gt;
{{Flink|boolean|map_to_file|aggregate|string|{{opt|boolean}}}}&lt;br /&gt;
{{Flink|float|max|float|float}}&lt;br /&gt;
{{Flink|int|max|int|int}}&lt;br /&gt;
{{Flink|boolean|maximize|string|boolean}}&lt;br /&gt;
{{Flink|boolean|maximize|string|int|int|boolean}}&lt;br /&gt;
{{Flink|record [int]|maximize|string|int|int|boolean|boolean}}&lt;br /&gt;
{{Flink|int|meat_drop|{{opt|monster}}}}&lt;br /&gt;
{{Flink|float|meat_drop_modifier}}&lt;br /&gt;
{{Flink|float|min|float|float}}&lt;br /&gt;
{{Flink|int|min|int|int}}&lt;br /&gt;
{{Flink|item|minstrel_instrument}}&lt;br /&gt;
{{Flink|int|minstrel_level}}&lt;br /&gt;
{{Flink|boolean|minstrel_quest}}&lt;br /&gt;
{{Flink|int|mmg_bet_amount|int}}&lt;br /&gt;
{{Flink|string|mmg_bet_owner|int}}&lt;br /&gt;
{{Flink|int|mmg_bet_owner_id|int}}&lt;br /&gt;
{{Flink|string|mmg_bet_taker}}&lt;br /&gt;
{{Flink|string|mmg_bet_taker_id}}&lt;br /&gt;
{{Flink|int|mmg_bet_winnings}}&lt;br /&gt;
{{Flink|int|mmg_make_bet|int|boolean}}&lt;br /&gt;
{{Flink|int [int]|mmg_my_bets}}&lt;br /&gt;
{{Flink|int [int]|mmg_offered_bets}}&lt;br /&gt;
{{Flink|boolean|mmg_retract_bet|int}}&lt;br /&gt;
{{Flink|void|mmg_search|int|int}}&lt;br /&gt;
{{Flink|int|mmg_take_bet|int|boolean}}&lt;br /&gt;
{{Flink|void|mmg_visit}}&lt;br /&gt;
{{Flink|int|mmg_wait_event|int}}&lt;br /&gt;
{{Flink|float|modifier_eval|string}}&lt;br /&gt;
{{Flink|int|monster_attack|{{opt|monster}}}}&lt;br /&gt;
{{Flink|int|monster_defense|{{opt|monster}}}}&lt;br /&gt;
{{Flink|int|monster_initiative|{{opt|monster}}}}&lt;br /&gt;
{{Flink|element|monster_element|{{opt|monster}}}}&lt;br /&gt;
{{Flink|float|monster_eval|string}}&lt;br /&gt;
{{Flink|int|monster_hp|{{opt|monster}}}}&lt;br /&gt;
{{Flink|int|monster_level_adjustment}}&lt;br /&gt;
{{Flink|phylum|monster_phylum|{{opt|monster}}}}&lt;br /&gt;
{{Flink|int|moon_light}}&lt;br /&gt;
{{Flink|int|moon_phase}}&lt;br /&gt;
{{Flink|int|mp_cost|skill}}&lt;br /&gt;
{{Flink|int|my_adventures}}&lt;br /&gt;
{{Flink|int|my_ascensions}}&lt;br /&gt;
{{Flink|int|my_basestat|stat}}&lt;br /&gt;
{{Flink|int|my_buffedstat|stat}}&lt;br /&gt;
{{Flink|class|my_class}}&lt;br /&gt;
{{Flink|int|my_closet_meat}}&lt;br /&gt;
{{Flink|string|my_companion}}&lt;br /&gt;
{{Flink|int|my_daycount|}}&lt;br /&gt;
{{Flink|int|my_discomomentum}}&lt;br /&gt;
{{Flink|familiar|my_effective_familiar}}&lt;br /&gt;
{{Flink|int [effect]|my_effects}}&lt;br /&gt;
{{Flink|familiar|my_enthroned_familiar}}&lt;br /&gt;
{{Flink|familiar|my_familiar}}&lt;br /&gt;
{{Flink|int|my_fullness}}&lt;br /&gt;
{{Flink|int|my_fury}}&lt;br /&gt;
{{Flink|string|my_hash}}&lt;br /&gt;
{{Flink|int|my_hp}}&lt;br /&gt;
{{Flink|string|my_id}}&lt;br /&gt;
{{Flink|int|my_inebriety}}&lt;br /&gt;
{{Flink|int|my_level}}&lt;br /&gt;
{{Flink|location|my_location}}&lt;br /&gt;
{{Flink|int|my_maxhp}}&lt;br /&gt;
{{Flink|int|my_maxfury}}&lt;br /&gt;
{{Flink|int|my_maxmp}}&lt;br /&gt;
{{Flink|int|my_meat}}&lt;br /&gt;
{{Flink|int|my_mp}}&lt;br /&gt;
{{Flink|string|my_name}}&lt;br /&gt;
{{flink|string|my_path}}&lt;br /&gt;
{{Flink|stat|my_primestat}}&lt;br /&gt;
{{flink|string|my_sign}}&lt;br /&gt;
{{Flink|int|my_spleen_use}}&lt;br /&gt;
{{Flink|int|my_storage_meat}}&lt;br /&gt;
{{Flink|int|my_turncount}}&lt;br /&gt;
&lt;br /&gt;
===n===&lt;br /&gt;
{{Flink|float|now_to_string|string}}&lt;br /&gt;
{{Flink|int|npc_price|item}}&lt;br /&gt;
{{Flink|float|numeric_modifier|string|{{opt|string}}}}&lt;br /&gt;
{{Flink|float|numeric_modifier|item|string}}&lt;br /&gt;
{{Flink|float|numeric_modifier|effect|string}}&lt;br /&gt;
{{Flink|float|numeric_modifier|skill|string}}&lt;br /&gt;
{{Flink|float|numeric_modifier|familiar|string|int|item}}&lt;br /&gt;
&lt;br /&gt;
===o===&lt;br /&gt;
{{Flink|boolean|outfit|string}}&lt;br /&gt;
{{Flink|item [int]|outfit_pieces|string}}&lt;br /&gt;
{{Flink|boolean|overdrink|int|item}}&lt;br /&gt;
&lt;br /&gt;
===p===&lt;br /&gt;
{{Flink|void|print|string|{{opt|string}}}}&lt;br /&gt;
{{Flink|void|print_html|string}}&lt;br /&gt;
{{Flink|int|pulls_remaining}}&lt;br /&gt;
{{Flink|boolean|put_closet|int|{{opt|item}}}}&lt;br /&gt;
{{Flink|boolean|put_display|int|item}}&lt;br /&gt;
{{Flink|boolean|put_shop|int|int|{{opt|int}}|item}}&lt;br /&gt;
{{Flink|boolean|put_stash|int|item}}&lt;br /&gt;
{{Flink|int|pvp_attacks_left}}&lt;br /&gt;
===r===&lt;br /&gt;
{{Flink|int|random|int}}&lt;br /&gt;
{{Flink|int|raw_damage_absorption}}&lt;br /&gt;
{{Flink|boolean|refresh_stash}}&lt;br /&gt;
{{Flink|boolean|refresh_status}}&lt;br /&gt;
{{Flink|void|remove_item_condition|int|item}}&lt;br /&gt;
{{Flink|boolean|replace|buffer|int|int|string}}&lt;br /&gt;
{{Flink|string|replace_all|matcher|string}}&lt;br /&gt;
{{Flink|string|replace_first|matcher|string}}&lt;br /&gt;
{{Flink|buffer|replace_string|buffer|string|string}}&lt;br /&gt;
{{Flink|buffer|replace_string|string|string|string}}&lt;br /&gt;
{{Flink|matcher|reset|matcher|{{opt|string}}}}&lt;br /&gt;
{{Flink|boolean|restore_hp|int}}&lt;br /&gt;
{{Flink|boolean|restore_mp|int}}&lt;br /&gt;
{{Flink|boolean|retrieve_item|int|item}}&lt;br /&gt;
{{Flink|int|round|float}}&lt;br /&gt;
{{Flink|buffer|run_combat}}&lt;br /&gt;
{{Flink|buffer|runaway}}&lt;br /&gt;
&lt;br /&gt;
===s===&lt;br /&gt;
{{Flink|boolean|sell|coinmaster|int|item}}&lt;br /&gt;
{{Flink|int|sell_price|coinmaster|item}}&lt;br /&gt;
{{Flink|boolean|sells_item|coinmaster|item}}&lt;br /&gt;
{{Flink|string [int]|session_logs|{{opt|string}}|int}}&lt;br /&gt;
{{Flink|void|set_auto_attack|int}}&lt;br /&gt;
{{Flink|void|set_length|buffer|int}}&lt;br /&gt;
{{Flink|void|set_location|location}}&lt;br /&gt;
{{Flink|void|set_property|string|string}}&lt;br /&gt;
{{Flink|int|shop_amount|item}}&lt;br /&gt;
{{Flink|int|spleen_limit}}&lt;br /&gt;
{{Flink|string [int]|split_string|string|{{opt|string}}}}&lt;br /&gt;
{{Flink|float|square_root|float}}&lt;br /&gt;
{{Flink|int|start|matcher|{{opt|int}}}}&lt;br /&gt;
{{Flink|int|stash_amount|item}}&lt;br /&gt;
{{Flink|stat|stat_bonus_today}}&lt;br /&gt;
{{Flink|stat|stat_bonus_tomorrow}}&lt;br /&gt;
{{Flink|stat|stat_modifier|effect|string}}&lt;br /&gt;
{{Flink|buffer|steal}}&lt;br /&gt;
{{Flink|int|stills_available}}&lt;br /&gt;
{{Flink|int|storage_amount|item}}&lt;br /&gt;
{{Flink|string|string_modifier|string}}&lt;br /&gt;
{{Flink|string|string_modifier|string|string}}&lt;br /&gt;
{{Flink|skill|stun_skill}}&lt;br /&gt;
{{Flink|string|substring|string|int|{{opt|int}}}}&lt;br /&gt;
&lt;br /&gt;
===t===&lt;br /&gt;
{{Flink|boolean|take_closet|int|{{opt|item}}}}&lt;br /&gt;
{{Flink|boolean|take_display|int|item}}&lt;br /&gt;
{{Flink|boolean|take_shop|{{opt|int}}|item}}&lt;br /&gt;
{{Flink|boolean|take_stash|int|item}}&lt;br /&gt;
{{Flink|boolean|take_storage|int|item}}&lt;br /&gt;
{{Flink|int|tavern|{{opt|string}}}}&lt;br /&gt;
{{Flink|buffer|throw_item|item}}&lt;br /&gt;
{{Flink|buffer|throw_items|item|item}}&lt;br /&gt;
{{Flink|buffer|time_to_string}}&lt;br /&gt;
{{Flink|boolean|to_boolean|any}}&lt;br /&gt;
{{Flink|class|to_class|string}}&lt;br /&gt;
{{Flink|coinmaster|to_coinmaster|string}}&lt;br /&gt;
{{Flink|effect|to_effect|int}}&lt;br /&gt;
{{Flink|effect|to_effect|string}}&lt;br /&gt;
{{Flink|effect|to_effect|skill}}&lt;br /&gt;
{{Flink|element|to_element|string}}&lt;br /&gt;
{{Flink|familiar|to_familiar|int}}&lt;br /&gt;
{{Flink|familiar|to_familiar|string}}&lt;br /&gt;
{{Flink|float|to_float|any}}&lt;br /&gt;
{{Flink|int|to_int|any}}&lt;br /&gt;
{{Flink|item|to_item|string}}&lt;br /&gt;
{{Flink|item|to_item|int}}&lt;br /&gt;
{{Flink|item|to_item|string|int}}&lt;br /&gt;
{{Flink|string|to_json|null}}&lt;br /&gt;
{{Flink|location|to_location|string}}&lt;br /&gt;
{{Flink|location|to_location|int}}&lt;br /&gt;
{{Flink|string|to_lower_case|string}}&lt;br /&gt;
{{Flink|monster|to_monster|string}}&lt;br /&gt;
{{Flink|phylum|to_phylum|string}}&lt;br /&gt;
{{Flink|string|to_plural|item}}&lt;br /&gt;
{{Flink|skill|to_skill|int}}&lt;br /&gt;
{{Flink|skill|to_skill|string}}&lt;br /&gt;
{{Flink|skill|to_skill|effect}}&lt;br /&gt;
{{Flink|slot|to_slot|item}}&lt;br /&gt;
{{Flink|stat|to_stat|string}}&lt;br /&gt;
{{Flink|string|to_string|any}}&lt;br /&gt;
{{Flink|string|to_upper_case|string}}&lt;br /&gt;
{{Flink|string|to_url|location}}&lt;br /&gt;
{{Flink|string|today_to_string}}&lt;br /&gt;
{{Flink|int|truncate|float}}&lt;br /&gt;
{{Flink|int|turns_per_cast|skill}}&lt;br /&gt;
{{Flink|int|turns_played}}&lt;br /&gt;
&lt;br /&gt;
===u===&lt;br /&gt;
{{Flink|string|url_decode|string}}&lt;br /&gt;
{{Flink|string|url_encode|string}}&lt;br /&gt;
{{Flink|boolean|use|int|item}}&lt;br /&gt;
{{Flink|boolean|use_familiar|familiar}}&lt;br /&gt;
{{Flink|boolean|use_skill|int|skill|{{opt|string}}}}&lt;br /&gt;
{{Flink|buffer|use_skill|skill}}&lt;br /&gt;
{{Flink|boolean|user_confirm|string}}&lt;br /&gt;
{{Flink|boolean|user_confirm|string|int|boolean}}&lt;br /&gt;
&lt;br /&gt;
===v===&lt;br /&gt;
{{Flink|boolean|visit|coinmaster}}&lt;br /&gt;
{{Flink|buffer|visit_url|string}}&lt;br /&gt;
{{Flink|buffer|visit_url|string|boolean}}&lt;br /&gt;
{{Flink|buffer|visit_url|string|boolean|boolean}}&lt;br /&gt;
===w===&lt;br /&gt;
{{Flink|void|wait|int}}&lt;br /&gt;
{{Flink|void|waitq|int}}&lt;br /&gt;
{{Flink|int|weapon_hands|item}}&lt;br /&gt;
{{Flink|stat|weapon_type|item}}&lt;br /&gt;
{{Flink|int|weight_adjustment}}&lt;br /&gt;
{{Flink|boolean|white_citadel_available}}&lt;br /&gt;
{{Flink|boolean [string]|who_clan}}&lt;br /&gt;
{{Flink|boolean|will_usually_dodge}}&lt;br /&gt;
{{Flink|boolean|will_usually_miss}}&lt;br /&gt;
{{Flink|void|write|string}}&lt;br /&gt;
{{Flink|void|writeln|string}}&lt;/div&gt;</summary>
		<author><name>Gnocchi masala</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Help:To_Do_List&amp;diff=7667</id>
		<title>Help:To Do List</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Help:To_Do_List&amp;diff=7667"/>
		<updated>2014-03-30T06:06:12Z</updated>

		<summary type="html">&lt;p&gt;Gnocchi masala: Veracity&amp;#039;s revision 12905 implementing changed shop funcionality.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;To Do&amp;quot; List ==&lt;br /&gt;
&lt;br /&gt;
This is a list of stuff that is missing from the wiki or else needs major work. Please help!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you need tips for editing the wiki, find that here: [[Help:Editing]].&lt;br /&gt;
&lt;br /&gt;
*CLI Commands are usually only added to the [[CLI Reference]]. Only very complicated commands require their own page.&lt;br /&gt;
&lt;br /&gt;
*ASH commands need to be listed on their category page as well as on the [[Ash Functions]] list. &lt;br /&gt;
**It is not necessary to always create a code sample, although it is preferred.&lt;br /&gt;
**If you don&#039;t add a code sample, please remember to add &#039;&#039;&#039;needscode=yes|&#039;&#039;&#039; to the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Missing Stuff ==&lt;br /&gt;
 10078: ash function format_dtg&lt;br /&gt;
 10081: ash function format_dtg renamed to be&lt;br /&gt;
 string &#039;&#039;&#039;format_date_time(inFormat, dtg, outFormat)&#039;&#039;&#039;&lt;br /&gt;
 more info: http://kolmafia.us/showthread.php?8451-time_to_string()-with-parameter&amp;amp;p=64058&amp;amp;viewfull=1#post64058&lt;br /&gt;
&lt;br /&gt;
 Modify examples on proxy record page because of:&lt;br /&gt;
 10122: Add the boolean &amp;quot;fancy&amp;quot; and &amp;quot;candy&amp;quot; fields to item &#039;&#039;&#039;proxy records&#039;&#039;&#039;.&lt;br /&gt;
 10147: Initial support for &amp;quot;Crimbo 2011&amp;quot; coinmaster: trade candy for Candy Credits&lt;br /&gt;
 10412: Add $skill &#039;&#039;&#039;proxy records&#039;&#039;&#039;: .dailylimit and .timescast&lt;br /&gt;
 10879: Add a boolean &amp;quot;boss&amp;quot; field to $monster[]&lt;br /&gt;
&lt;br /&gt;
 10227: Add the &amp;lt;s&amp;gt;&amp;quot;&#039;&#039;&#039;closet empty&#039;&#039;&#039;&amp;quot; CLI command, and&amp;lt;/s&amp;gt; the &#039;&#039;&#039;empty_closet()&#039;&#039;&#039; ASH function.&lt;br /&gt;
&lt;br /&gt;
 r9181, 9183, 9184 &amp;amp; r9190: &#039;&#039;&#039;moods&#039;&#039;&#039; per slyz&#039;s summary here: http://kolmafia.us/showthread.php?8852-Composable-Moods&lt;br /&gt;
&lt;br /&gt;
 r10344 Add &#039;&#039;&#039;tavern( string goal )&#039;&#039;&#039; ASH function. &lt;br /&gt;
 goal can be &amp;quot;faucet&amp;quot;, &amp;quot;baron&amp;quot;, or  &amp;quot;explore&amp;quot; (to explore all remaining unexplored squares). &lt;br /&gt;
 r10345 Add ASH &#039;&#039;&#039;tavern( &amp;quot;fight&amp;quot; )&#039;&#039;&#039; to explore cellar until the Baron&#039;s mansion is found &lt;br /&gt;
 and then go in to fight him.&lt;br /&gt;
&lt;br /&gt;
 r10753-6 &#039;&#039;&#039;get_goals()&#039;&#039;&#039; returns a string[int] containing all the conditions that KoLmafia will &lt;br /&gt;
 try to satisfy. Add g&#039;&#039;&#039;oal_exists()&#039;&#039;&#039; where you can pass in a goal type (choiceadv, autostop, &lt;br /&gt;
 meat, health, mana, item) and KoLmafia will tell you if there are any goals that match.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;static&#039;&#039;&#039; scope is added!&lt;br /&gt;
 r10765: Add a &amp;quot;final&amp;quot; scope type to ASH which allows data/commands to be executed only &lt;br /&gt;
 once per session.&lt;br /&gt;
 r10772: A final declaration can either take a block, surrounded by {}, or a single&lt;br /&gt;
 command or declaration.&lt;br /&gt;
 r10774: ASH: &amp;quot;final&amp;quot; -&amp;gt; &amp;quot;static&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 10922: Add &#039;&#039;&#039;get_player_id()&#039;&#039;&#039; method to ASH&lt;br /&gt;
&lt;br /&gt;
 10937: Add &#039;&#039;&#039;minstrel_quest()&#039;&#039;&#039; boolean function,&lt;br /&gt;
 which returns true when Clancy has a new quest for you.&lt;br /&gt;
&lt;br /&gt;
 10971: Added boolean &#039;&#039;&#039;hippy_stone_broken()&#039;&#039;&#039; function&lt;br /&gt;
&lt;br /&gt;
 11023: Make the CLI &amp;quot;attack&amp;quot; command work again. Make &amp;quot;pvp&amp;quot; equivalent to &amp;quot;steal&amp;quot; instead &lt;br /&gt;
 of &amp;quot;attack&amp;quot;. Added &amp;quot;swagger&amp;quot; as equivalent to &amp;quot;flowers&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 11055: Added a 2-parameter version of &#039;&#039;&#039;to_string()&#039;&#039;&#039;, where the first parameter can&lt;br /&gt;
 currently be an int or float (other types are possible, but didn&#039;t seem&lt;br /&gt;
 useful), and the second is a format string as defined by the Java&lt;br /&gt;
 String.format() method (which in turn is based on C printf() format strings).&lt;br /&gt;
 For example, &amp;quot;%.2f&amp;quot; will output a float with exactly two digits after the&lt;br /&gt;
 (localized) decimal point.&lt;br /&gt;
&lt;br /&gt;
 11110: Add ASH function: &#039;&#039;&#039;pvp_attacks_left()&#039;&#039;&#039;. This is guaranteed accurate only if you &lt;br /&gt;
 have recently looked at the Fight! page. Tracking of PVP fights gained via&lt;br /&gt;
 consumption or familiar action and initialization at login will come later -&lt;br /&gt;
 after api.php is updated to include the figure.&lt;br /&gt;
 &lt;br /&gt;
 Add &#039;&#039;&#039;beforePVPScript&#039;&#039;&#039; setting which contains a script to be executed before a PVP&lt;br /&gt;
 attack. At the moment, this is only called from the Relay Browser - and only if&lt;br /&gt;
 relayRunsBeforePVPScript is true&lt;br /&gt;
 &lt;br /&gt;
 11112: Call beforePVPScript, if present, during automated PVP via the &amp;quot;flowers&amp;quot; command&lt;br /&gt;
&lt;br /&gt;
 11112: Change ASH &#039;&#039;&#039;have_outfit()&#039;&#039;&#039; to work with custom outfits, as well as normal outfit &lt;br /&gt;
 Add ASH &#039;&#039;&#039;is_wearing_outfit()&#039;&#039;&#039; to return TRUE if you are currently wearing the&lt;br /&gt;
 specified custom or normal outfit.&lt;br /&gt;
&lt;br /&gt;
 10815: Allow certain ASH constants to be used in custom combat settings. &lt;br /&gt;
 $phylum[] refers to the monster categorization, see the built-in ASH constants documentation for more information.&lt;br /&gt;
 $element[] refers to either the attack or the defense element. As long as one matches, this check will be satisfied. This may limit its usefulness, but we can evaluate it later.&lt;br /&gt;
 $item[] refers to an item that the monster drops. If there are multiple monsters that drop the item, or if you just can&#039;t remember which one it is, and your combat strategy happens to depend on it...&lt;br /&gt;
 In order to match, everything that you specify must match. So if you specify an impossible combination, that CCS section will not run.&lt;br /&gt;
 &lt;br /&gt;
 [ $element[ spooky ] $item[ hobo nickel ] ]&lt;br /&gt;
 skill entangling noodles&lt;br /&gt;
 skill weapon of the pastalord&lt;br /&gt;
 &lt;br /&gt;
 [ bathroom $element[ spooky ] ]&lt;br /&gt;
 attack&lt;br /&gt;
 &lt;br /&gt;
 [ $phylum[ beast ] ]&lt;br /&gt;
 skill stomp&lt;br /&gt;
 attack&lt;br /&gt;
&lt;br /&gt;
 11197: new ASH functions:&lt;br /&gt;
 boolean &#039;&#039;&#039;is_familiar_equipment_locked()&#039;&#039;&#039; &lt;br /&gt;
 -returns true if current familiar equipment is locked, otherwise false&lt;br /&gt;
 void &#039;&#039;&#039;lock_familiar_equipment(boolean locking)&#039;&#039;&#039;&lt;br /&gt;
 -tries to lock/unlock fam equipment accordingly.&lt;br /&gt;
&lt;br /&gt;
 11208: Add int &#039;&#039;&#039;get_clan_id()&#039;&#039;&#039; and string &#039;&#039;&#039;get_clan_name()&#039;&#039;&#039; functions.&lt;br /&gt;
&lt;br /&gt;
 11267: Pass chat events along to &#039;&#039;&#039;chatbotscript&#039;&#039;&#039;. The sender is an empty string, &lt;br /&gt;
 the channel is &amp;quot;Events&amp;quot;, and the message is stripped of its HTML.&lt;br /&gt;
&lt;br /&gt;
 11432: Add &#039;&#039;&#039;is_discardable()&#039;&#039;&#039; which will return true even if an item can be autosold, &lt;br /&gt;
 so be careful you don&#039;t get cheated out of some meat.&lt;br /&gt;
&lt;br /&gt;
 11438: Revert use of gift flag to previous interpretation: KoL has the item marked as&lt;br /&gt;
 a &amp;quot;Gift Item&amp;quot;. Instead, change isGiftable() - which is also used by the ASH&lt;br /&gt;
 is_giftable() function - to allow either the &amp;quot;tradeable&amp;quot; or &amp;quot;gift&amp;quot; flags.&lt;br /&gt;
 Fix the item.gift proxy field to return the value of the gift flag, rather than&lt;br /&gt;
 being a synonym for is_giftable().&lt;br /&gt;
&lt;br /&gt;
 11555: Add monster.raw_attack, monster.raw_defense, and monster.raw_hp to return the &lt;br /&gt;
 unmodified stats from monsters.txt.&lt;br /&gt;
&lt;br /&gt;
 11561:  Add monster &#039;&#039;&#039;image_to_monster( string )&#039;&#039;&#039; ASH function for looking up monster by image file name.&lt;br /&gt;
 Add monster.image proxy field for going the other way.&lt;br /&gt;
&lt;br /&gt;
 11771: experimental: add overloaded maximize() signature in ASH&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;maximize( string maximizerString, int maxPrice, int priceLevel, boolean simulate, boolean showEquipment )&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 returns an aggregate of records with each record containing the fields:&lt;br /&gt;
 **display =&amp;gt; display text, as it is shown in the maximizer frame&lt;br /&gt;
 **cmd =&amp;gt; actual command string that the maximizer runs to get the boost&lt;br /&gt;
 **score =&amp;gt; the boost&#039;s score&lt;br /&gt;
 **effect =&amp;gt; the effect provided by the boost - if applicable. effect[none] if it is equipment.&lt;br /&gt;
 **item =&amp;gt; $item[] that is being suggested for use or equipment&lt;br /&gt;
 **skill =&amp;gt; $skill[] that is being suggested&lt;br /&gt;
 &lt;br /&gt;
 If the showEquipment argument is false, equipment will be omitted from the results.&lt;br /&gt;
&lt;br /&gt;
 r11707: Experimental ASH feature: the main() function of imported scripts can now be&lt;br /&gt;
 invoked, under the alternate name main@filename()&lt;br /&gt;
 (where &#039;filename&#039; can be overridden by a &#039;script&#039; directive, any &amp;quot;.ash&amp;quot;&lt;br /&gt;
 suffix is dropped, and non-alphanumeric characters are replaced by&lt;br /&gt;
 underscores). Note that no spaces are allowed around the @, the whole thing&lt;br /&gt;
 is a single token.&lt;br /&gt;
&lt;br /&gt;
 r11965: Add my_companion()&lt;br /&gt;
&lt;br /&gt;
 r11985: Add the &amp;quot;skeleton&amp;quot; CLI command.&lt;br /&gt;
&lt;br /&gt;
 r12019: Add &amp;quot;eudora&amp;quot; CLI command&lt;br /&gt;
&lt;br /&gt;
 r12060: add ASH get_moods(), returns an aggregate of currently defined mood names.&lt;br /&gt;
 &amp;quot;mood listall&amp;quot; in the gCLI will also print a list of defined moods.&lt;br /&gt;
&lt;br /&gt;
 r12062: add ASH get_outfits() and get_custom_outfits()&lt;br /&gt;
&lt;br /&gt;
 r12070: Overloaded version of appearance_rates considers monster queue: &lt;br /&gt;
 appearance_rates( $location[] location, boolean includeQueue )&lt;br /&gt;
&lt;br /&gt;
 r12105: maximizerMRULength is now maximizerMRUSize&lt;br /&gt;
 That affects this page: [[Hidden_Features#Most_Recently_Used_Modifier_Maximizer_Expression]]&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;SVN Features added&#039;&#039;&#039; by Roippi! SVN integration was (brokenly) implemented in r12141 and more correctly implemented in r12144.&lt;br /&gt;
 &lt;br /&gt;
 FOR USERS:&lt;br /&gt;
 * svn checkout &amp;lt;svnurl&amp;gt; - checks out a svn repository and adds the files from the working copy to the appropriate locations.&lt;br /&gt;
 * svn update - updates all of your installed projects and pushes any changes to the appropriate locations.&lt;br /&gt;
 * svn list - lists installed projects.&lt;br /&gt;
 * svn delete &amp;lt;scriptname&amp;gt; - deletes installed projects and the corresponding files that it pushed. &amp;lt;scriptname&amp;gt; fuzzy matches the script names from svn list.&lt;br /&gt;
 &lt;br /&gt;
 FOR SCRIPTERS:&lt;br /&gt;
 You can provide a &amp;lt;nowiki&amp;gt;svn://, http://, or https://&amp;lt;/nowiki&amp;gt; link to a valid svn repo. The link does not need to be to the root of the repository.&lt;br /&gt;
 At the location specified by the url, there are only four permissible folders:&lt;br /&gt;
 * ccs/&lt;br /&gt;
 * data/&lt;br /&gt;
 * images/&lt;br /&gt;
 * relay/&lt;br /&gt;
 * scripts/&lt;br /&gt;
 &lt;br /&gt;
 Any files or directories in the location specified by your url that are not named the above will cause your repo to fail validation and thus it will not be checked out.&lt;br /&gt;
 Within the valid folders, you can nest files however you want.&lt;br /&gt;
 When users check out your project, the files (and nested folders) will be pushed to the corresponding mafia directories.&lt;br /&gt;
 &lt;br /&gt;
 r12157: &#039;&#039;&#039;svn increment &amp;lt;projectname&amp;gt;&#039;&#039;&#039; and &#039;&#039;&#039;svn decrement &amp;lt;projectname&amp;gt;&#039;&#039;&#039; moves an installed svn project up/down one revision, respectively.&lt;br /&gt;
 &#039;&#039;&#039;svn update&#039;&#039;&#039; can also take &amp;lt;projectname&amp;gt; argument or a &amp;lt;SVNURL&amp;gt; argument. Or just be blank to update everything.&lt;br /&gt;
 r12177 svn inc/dec does the same thing as svn increment/decrement. Because typing stuff is hard. &lt;br /&gt;
 &lt;br /&gt;
 12167: command &amp;quot;&#039;&#039;&#039;svn sync&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 Looks through your working copies for modifications, then checks if that file differs from the local copy. If it differs, the WC file is copied over the local copy one.&lt;br /&gt;
 Note that this is very different from &amp;quot;svn update&amp;quot; and indeed does not contact the repository server at all.&lt;br /&gt;
 &lt;br /&gt;
 If you are unsure if you want this feature, this is only for people who maintain modifications to the files in their svn/ folders that they want merged in with updates from the repo.&lt;br /&gt;
 If you are just doing checkout/update operations and don&#039;t know what this &amp;quot;merging&amp;quot; business is about, you don&#039;t need this feature.&lt;br /&gt;
 &lt;br /&gt;
 Users who want to automatically sync after update operations can set syncAfterSvnUpdate = true.&lt;br /&gt;
&lt;br /&gt;
 r12153: add &#039;&#039;&#039;svnUpdateOnLogin&#039;&#039;&#039; (global, default false), which runs svn update before breakfast/loginScript.&lt;br /&gt;
 This could be useful if your loginScript has svn dependencies.&lt;br /&gt;
 &lt;br /&gt;
 r12188: add global preference &#039;&#039;&#039;_svnUpdated&#039;&#039;&#039;&lt;br /&gt;
 only do login svn update (mediated by svnUpdateOnLogin) at most once per day.&lt;br /&gt;
&lt;br /&gt;
 r12181: add preference &#039;&#039;&#039;simpleSvnUpdate&#039;&#039;&#039; (global, default true)&lt;br /&gt;
 If true, simply checks if the root of your working copy is at HEAD, skipping it if so. &lt;br /&gt;
 Speeds up the average update operation by 75% (and is probably nicer on servers). &lt;br /&gt;
 Advanced users who have done something like a non-root &amp;quot;svn switch&amp;quot; or are using svn externals should know whether they want to turn this off.&lt;br /&gt;
 &lt;br /&gt;
 Again the ticky box goes at the bottom of general preferences, it is soon time for these to be moved to their own page.&lt;br /&gt;
&lt;br /&gt;
 r12198 new ash svn functions:&lt;br /&gt;
 boolean &#039;&#039;&#039;svn_exists&#039;&#039;&#039;( String projectname ) - returns true if a valid working copy named projectname exists in the svn/ folder&lt;br /&gt;
 boolean &#039;&#039;&#039;svn_at_head&#039;&#039;&#039;( String projectname ) - returns true if projectname exists, is a valid WC, and is currently at the same revision # as the repository. &lt;br /&gt;
 This will hit the repo server, so be nice.&lt;br /&gt;
&lt;br /&gt;
 r12206: initial support for automatic svn dependency installation. &lt;br /&gt;
 global preference &#039;&#039;&#039;svnInstallDependencies&#039;&#039;&#039; (default true) controls whether svn will try to install dependencies.&lt;br /&gt;
 &lt;br /&gt;
 Scripters are now allowed to place a file called dependencies.txt in the top-level of a project.&lt;br /&gt;
 Calling it anything else will fail validation, as before. This special file will not be &amp;quot;pushed&amp;quot; to anywhere locally, it will just remain in the working copy folder.&lt;br /&gt;
 On each line of dependencies.txt, you specify one URL to another SVN project.&lt;br /&gt;
&lt;br /&gt;
 r12211: preference &#039;&#039;&#039;svnShowCommitMessages&#039;&#039;&#039; (global, default false) controls whether you want to see new commit messages from svn update operations.&lt;br /&gt;
&lt;br /&gt;
 r12215: add ash function: &#039;&#039;&#039;record svn_info( String project )&#039;&#039;&#039; &lt;br /&gt;
 record has the following fields-&lt;br /&gt;
 &lt;br /&gt;
 String url: the url that the project was checked out from&lt;br /&gt;
 int revision: the revision that the working copy is at&lt;br /&gt;
 String lastChangedAuthor: the author who committed the last change&lt;br /&gt;
 int lastChangedRev: the revision that most recently modified this working copy (note, not necessarily the same as revision field)&lt;br /&gt;
 String lastChangedDate: the date/time when lastChangedRevision happened&lt;br /&gt;
&lt;br /&gt;
 r12238: Add _floristPlantsUsed as a comma-separated list and &#039;&#039;&#039;florist_available()&#039;&#039;&#039;.&lt;br /&gt;
 Add &amp;quot;florist plant [plantname]&amp;quot; to add a plant. [plantname] is case-insensitive, but otherwise must exactly match KoL&#039;s name for the plant.&lt;br /&gt;
 Check what is currently planted when you log in.&lt;br /&gt;
&lt;br /&gt;
 r12244: Add string [location][int] &#039;&#039;&#039;get_florist_plants()&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 example 1...&lt;br /&gt;
 foreach loc, counter, plant in get_florist_plants() {&lt;br /&gt;
    print( &amp;quot;Location &#039;&amp;quot; + loc + &amp;quot;&#039;&amp;quot; );&lt;br /&gt;
    print( &amp;quot;Counter &#039;&amp;quot; + counter + &amp;quot;&#039;&amp;quot; );&lt;br /&gt;
    print( &amp;quot;Plant &#039;&amp;quot; + plant + &amp;quot;&#039;&amp;quot; );&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 example 2...&lt;br /&gt;
 string [location][int] plants = get_florist_plants();&lt;br /&gt;
 foreach loc in plants {&lt;br /&gt;
    print( &amp;quot;Location &#039;&amp;quot; + loc + &amp;quot;&#039;&amp;quot; );&lt;br /&gt;
    string [int] array = plants[ loc ];&lt;br /&gt;
    foreach index in array {&lt;br /&gt;
        string plant = array[index];&lt;br /&gt;
        if ( plant != &amp;quot;&amp;quot; )&lt;br /&gt;
            print( &amp;quot;Plant = &amp;quot; + plant );&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 r12255: Experimental support for Dad Sea Monkee - untested in-game.&lt;br /&gt;
 - When we first see Dad Sea Monkee, parse the clues and solve for them.&lt;br /&gt;
 - &amp;quot;&#039;&#039;&#039;dad&#039;&#039;&#039;&amp;quot; CLI command lists the elemental weakness (and spell) for rounds 1-10&lt;br /&gt;
 - element &#039;&#039;&#039;dad_sea_monkee_weakness( int round )&#039;&#039;&#039; ASH function for consult scripts.&lt;br /&gt;
&lt;br /&gt;
 12657: Add &amp;quot;&#039;&#039;&#039;cache clear&#039;&#039;&#039;&amp;quot; command to remove all cached images from /images&lt;br /&gt;
 &lt;br /&gt;
 12659: New setting - lastImageCacheClear - records the time when you last cleared the&lt;br /&gt;
 image cache. &amp;quot;&#039;&#039;&#039;cache&#039;&#039;&#039;&amp;quot; command with no arguments reports that time.&lt;br /&gt;
&lt;br /&gt;
 12662: Add &#039;&#039;&#039;get_ignore_zone_warnings()&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 12906: Add &#039;&#039;&#039;shop_price( item )&#039;&#039;&#039; and &#039;&#039;&#039;refresh_shop()&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 12932: Adds my_discomomentum().&lt;br /&gt;
&lt;br /&gt;
 13088: Make Prismatic Damage a real, if derived, modifier name. It cannot be used in&lt;br /&gt;
 modifiers.txt, bit you can ask for it by name either in ASH or the Maximizer&lt;br /&gt;
&lt;br /&gt;
 13175: Add ash command my_soulsauce().&lt;br /&gt;
&lt;br /&gt;
 13213: Add &amp;quot;debug ash on&amp;quot; and &amp;quot;debug ash off&amp;quot; to turn on and off ASH script tracing &lt;br /&gt;
 ASH tracing goes into ASH_datestamp.txt&lt;br /&gt;
&lt;br /&gt;
 13222: Add preference banishedMonsters to track banishes. Add ash command is_banished($monsterName[name])&lt;br /&gt;
&lt;br /&gt;
 13223: Add &amp;quot;thrall&amp;quot; datatype to ASH. &lt;br /&gt;
 New ASH function: thrall my_thrall()&lt;br /&gt;
&lt;br /&gt;
 13234: New ASH functions: to_thrall( int ), to_thrall( string ), to_int( thrall )&lt;br /&gt;
 New proxy fields for thralls: .id, .image, .tinyimage, .skill&lt;br /&gt;
&lt;br /&gt;
 13256: Add CLI command to buy or sell from a coinmaster:&lt;br /&gt;
 coinmaster buy nickname item, item ...&lt;br /&gt;
 coinmaster sell nickname item, item, ...&lt;br /&gt;
&lt;br /&gt;
 r13280 &amp;amp; r13282: Added Ash functions:&lt;br /&gt;
 &#039;&#039;&#039;monster_initiative( [monster] )&#039;&#039;&#039; - returns initiative + ML penalty&lt;br /&gt;
&lt;br /&gt;
 13299: Add &amp;quot;&#039;&#039;&#039;bugbears&#039;&#039;&#039;&amp;quot; command to give status of the 9 Bugbear Mothership zones&lt;br /&gt;
&lt;br /&gt;
 13393: Added ash function &#039;&#039;&#039;stun_skill()&#039;&#039;&#039;, returns the character&#039;s stun skill based on  lass/preferences.&lt;br /&gt;
&lt;br /&gt;
 13395: CLI command &#039;&#039;&#039;restores&#039;&#039;&#039; added, tells you detail on all currently available restores. &amp;quot;restores all&amp;quot; tells you about all restores, &amp;quot;restores obtainable&amp;quot; tells you about all restores that you have or are tradeable.&lt;br /&gt;
&lt;br /&gt;
 13576: New ash data type $bounty&lt;br /&gt;
&lt;br /&gt;
 13581: Add ash to_bounty() function&lt;br /&gt;
&lt;br /&gt;
 13617: Add &#039;&#039;&#039;bounty&#039;&#039;&#039; CLI command. &lt;br /&gt;
 bounty - lists bounty progress and untaken bounties&lt;br /&gt;
 bounty easy|hard|special - accepts a bounty&lt;br /&gt;
&lt;br /&gt;
 13618: Add faxbot ash( $monster ) command. Note that chat must be open for this to successfully work, just as for other mafia fax interfaces.&lt;br /&gt;
&lt;br /&gt;
 13638: Add &amp;quot;bjornify&amp;quot; gCLI command, bjornify_familiar( familiar ), and my_bjorned_familiar().&lt;br /&gt;
&lt;br /&gt;
 13704: Add &amp;quot;grim&amp;quot; gCLI command to get a Grim Brother effect&lt;br /&gt;
&lt;br /&gt;
 13725: Track Audience (only works with character pane at present, request to add to api has been made). Appears on mafia side panel, also available with ash command my_audience().&lt;br /&gt;
&lt;br /&gt;
== Needs Major Work ==&lt;br /&gt;
&lt;br /&gt;
[[Proxy Records]] is only slightly better than a placeholder.&lt;br /&gt;
&lt;br /&gt;
 In r10047, the adventure tab interface was altered. Fix SinginSally&#039;s guide on pages...&lt;br /&gt;
 &lt;br /&gt;
 http://wiki.kolmafia.us/index.php?title=KoLmafia_Guide:_Attack_Script&lt;br /&gt;
 http://wiki.kolmafia.us/index.php?title=KoLmafia_Guide:_Custom_Combat_Script&lt;br /&gt;
 http://wiki.kolmafia.us/index.php?title=KoLmafia_Guide:_Goal-Oriented_Adventuring&lt;br /&gt;
&lt;br /&gt;
 Information on moods calling other moods: http://kolmafia.us/showthread.php?8852-Composable-Moods&amp;amp;p=66468&amp;amp;viewfull=1#post66468&lt;br /&gt;
&lt;br /&gt;
 r10025: Added &#039;&#039;&#039;choice&#039;&#039;&#039; CLI command, to resolve manual or unsupported choiceadventures &lt;br /&gt;
 Added &amp;quot;choice&amp;quot; CLI command, to resolve manual or unsupported choice&lt;br /&gt;
 adventures without having to visit the relay browser - which might be&lt;br /&gt;
 inconvenient if you&#039;re already in the CLI, and don&#039;t need to see the full&lt;br /&gt;
 adventure text to decide which option you want. With no parameter, &amp;quot;choice&amp;quot;&lt;br /&gt;
 just lists the options. With a numeric parameter, it picks that option. &lt;br /&gt;
 With any other parameter, it picks the first option containing that text (in&lt;br /&gt;
 either the actual button text, or mafia&#039;s spoiler text).&lt;br /&gt;
&lt;br /&gt;
== Needs Code Samples ==&lt;br /&gt;
&lt;br /&gt;
There is a list of all pages that require code samples: [[:Category:Needs_Code_Sample|Category:Needs Code Sample]]&lt;br /&gt;
&lt;br /&gt;
Information on how to create a code sample: [[Template:CodeSample]]&lt;/div&gt;</summary>
		<author><name>Gnocchi masala</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Take_shop&amp;diff=7856</id>
		<title>Take shop</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Take_shop&amp;diff=7856"/>
		<updated>2014-03-30T04:35:47Z</updated>

		<summary type="html">&lt;p&gt;Gnocchi masala: Veracity&amp;#039;s revision 12905 implementing changed shop funcionality.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|take_shop}}{{&lt;br /&gt;
#vardefine:return_type|boolean}}{{&lt;br /&gt;
&lt;br /&gt;
FunctionPage|&lt;br /&gt;
name={{#var:name}}|&lt;br /&gt;
&lt;br /&gt;
function1={{Function|&lt;br /&gt;
name={{#var:name}}|&lt;br /&gt;
aggregate={{#var:aggregate}}|&lt;br /&gt;
return_type={{#var:return_type}}|&lt;br /&gt;
return_also={{#var:return_also}}|&lt;br /&gt;
parameter1={{Param|item|it}}|&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
function2={{Function|&lt;br /&gt;
name={{#var:name}}|&lt;br /&gt;
aggregate={{#var:aggregate}}|&lt;br /&gt;
return_type={{#var:return_type}}|&lt;br /&gt;
return_also={{#var:return_also}}|&lt;br /&gt;
parameter1={{Param|int|qty}}|&lt;br /&gt;
parameter2={{Param|item|it}}|&lt;br /&gt;
&lt;br /&gt;
p1desc={{pspan|qty}} an optional parameter for the quantity of items to take from your mall store (defaults to all if not provided)|&lt;br /&gt;
p2desc={{pspan|it}} is the item to take from your mall store|&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
function_description=This command will remove {{pspan|it}} from your mall store. The 1-parameter version will remove all of the item. If you want to remove less than the maximum amount, then you will need to use the 2-parameter version with the optional first parameter set to the count you wish to remove.|&lt;br /&gt;
&lt;br /&gt;
needscode=yes|&lt;br /&gt;
&lt;br /&gt;
see_also={{SeeAlso|have_shop|put_shop|shop_amount}}|&lt;br /&gt;
cli_equiv=The CLI command &amp;quot;shop take &amp;quot; works similarly.|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Item Management]]&lt;/div&gt;</summary>
		<author><name>Gnocchi masala</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Item_Management&amp;diff=4233</id>
		<title>Item Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Item_Management&amp;diff=4233"/>
		<updated>2014-03-30T04:25:34Z</updated>

		<summary type="html">&lt;p&gt;Gnocchi masala: Veracity&amp;#039;s revision 12905 implementing changed shop funcionality.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
==Informational==&lt;br /&gt;
{{Flink|int|my_meat|desc=Returns the amount of meat you have on hand.}}&lt;br /&gt;
{{Flink|int|my_closet_meat|desc=Returns the amount of meat you have in your Colossal Closet.}}&lt;br /&gt;
{{Flink|int|my_storage_meat|desc=Returns the amount of meat you have in Hagnk&#039;s Ancestral Mini-Storage.}}&lt;br /&gt;
{{Flink|int|pulls_remaining|desc=Returns the number of pulls you can make from storage, or 0 if not applicable.}}&lt;br /&gt;
{{Flink|boolean|have_chef|desc=Returns true if you have a chef-boxen at your campground.}}&lt;br /&gt;
{{Flink|boolean|have_bartender|desc=Returns true if you have a bartender-boxen at your campground.}}&lt;br /&gt;
{{Flink|int [item]|get_campground|desc=Returns a map of your campground items.}}&lt;br /&gt;
{{Flink|item|get_dwelling|desc=Returns the item corresponding with your dwelling.}}&lt;br /&gt;
{{Flink|boolean|have_mushroom_plot|desc=Returns true if and only if you&#039;ve purchased a mushroom plot this run.}}&lt;br /&gt;
{{Flink|int|stills_available|desc=Returns the number of Nash Crosby&#039;s Still uses left for the day (0 if not accessible).}}&lt;br /&gt;
{{Flink|string|item_type|item|desc=Returns the type of item specified.}}&lt;br /&gt;
{{Flink|int|item_amount|item}}&lt;br /&gt;
{{Flink|int|closet_amount|item}}&lt;br /&gt;
{{Flink|int|display_amount|item}}&lt;br /&gt;
{{Flink|int|equipped_amount|item}}&lt;br /&gt;
{{Flink|int|shop_amount|item}}&lt;br /&gt;
{{Flink|int [item]|get_shop|desc=Returns entire contents of shop and quantity of each item}}&lt;br /&gt;
{{Flink|int|stash_amount|item|}}&lt;br /&gt;
{{Flink|int|storage_amount|item|desc=These 7 functions return the total number available of a given item in the respective section of your inventory.}}&lt;br /&gt;
{{Flink|int|available_amount|item|desc=Returns the total number available of a given item in all inventory sections accessible to your character based on current restrictions.}}&lt;br /&gt;
{{Flink|int|creatable_amount|item|desc=Returns the amount of the item that you are capable of creating given your current inventory and skills.}}&lt;br /&gt;
{{Flink|int [item]|get_ingredients|item|desc=Returns a map where each key is one of the required ingredients, with the integer value the number required. If you don&#039;t have the skills needed to make the item, it will return an empty map.}}&lt;br /&gt;
{{Flink|int [item]|get_inventory|desc=Returns a map where each key is an item in your inventory, with the integer value its quantity.}}&lt;br /&gt;
{{Flink|int [item]|get_related|item|string|desc=Returns associated items in a zap or fold group (see page for details).}}&lt;br /&gt;
[[File:Item category.png|frame|You can categorize items in KoL using [[is tradeable|is_tradeable()]], [[is giftable|is_giftable()]], and [[is displayable|is_displayable()]].]]&lt;br /&gt;
{{Flink|boolean|is_tradeable|item|desc=Returns whether the item can be placed in the mall.}}&lt;br /&gt;
{{Flink|boolean|is_giftable|item|desc=Returns whether the item can be traded in a gift package.}}&lt;br /&gt;
{{Flink|boolean|is_displayable|item|desc=Returns whether the item can be put in a display case (true for all but quest items).}}&lt;br /&gt;
{{Flink|boolean|have_shop|desc=Returns whether you have a mall store.}}&lt;br /&gt;
{{Flink|boolean|have_display|desc=Returns whether you have a display case.}}&lt;br /&gt;
{{Flink|boolean|is_npc_item|item|desc=Returns whether the item can be bought from an NPC store.}}&lt;br /&gt;
{{Flink|void|refresh_stash|desc=Takes a new look at the contents of your clan stash, as that section of inventory cannot be internally tracked due to access by others.}}&lt;br /&gt;
{{Flink|int|mall_price|item|desc=Returns the current (lowest) mall price of the given item.}}&lt;br /&gt;
{{Flink|int|npc_price|item|desc=Returns the current price of the given item if it can currently be bought from an NPC store.}}&lt;br /&gt;
{{Flink|int|historical_price|item|desc=Returns the most recently checked price for an item. This will never hit the server, unlike mall_price().}}&lt;br /&gt;
{{Flink|float|historical_age|item|desc=Returns the age of the most recently checked price for an item in days. This allows you to decide if you want to use historical_price() or mall_price().}}&lt;br /&gt;
{{Flink|int|autosell_price|item|desc=Returns the autosell price of the item (0 for items that cannot be autosold).}}&lt;br /&gt;
{{Flink|int|get_power|item|desc=Returns the power of the item (0 for items that don&#039;t have a power).}}&lt;br /&gt;
{{Flink|string|to_plural|item|desc=Returns the plural of an item as a string.}}&lt;br /&gt;
{{Flink|int|meat_drop|{{opt|monster}}|desc=Returns a certain monster&#039;s base meat drop.}}&lt;br /&gt;
{{Flink|int [item]|item_drops|{{opt|monster}}|desc=Returns an array of a certain monster&#039;s base item drops, keying item to drop rate. Has certain limitations detailed on individual page.}}&lt;br /&gt;
{{Flink|record [int]|item_drops_array|{{opt|monster}}|desc=Returns an array of records holding information regarding a certain monster&#039;s base item drops.}}&lt;br /&gt;
&lt;br /&gt;
==Moving Items Around==&lt;br /&gt;
{{Flink|boolean|put_closet|int|{{opt|item}}}}&lt;br /&gt;
{{Flink|boolean|put_display|int|item}}&lt;br /&gt;
{{Flink|boolean|put_stash|int|item}}&lt;br /&gt;
{{Flink|boolean|take_closet|int|{{opt|item}}}}&lt;br /&gt;
{{Flink|boolean|take_display|int|item}}&lt;br /&gt;
{{Flink|boolean|take_stash|int|item}}&lt;br /&gt;
{{Flink|boolean|take_storage|int|item|desc=Attempts to take or put the specified item in the appropriate section of your inventory, and returns its success.&amp;lt;br /&amp;gt;If the item parameter is omitted from put_closet() or take_closet(), meat is transferred instead of an item.}}&lt;br /&gt;
{{Flink|boolean|put_shop|int|int|{{opt|int}}|item}}&lt;br /&gt;
{{Flink|boolean|take_shop|{{opt|int}}|item|desc=Adds or removes items in your store and returns success.}}&lt;br /&gt;
&lt;br /&gt;
==Acquiring &amp;amp; Using Items==&lt;br /&gt;
{{Flink|boolean|autosell|int|item|desc=Attempts to autosell the given items and reports success.}}&lt;br /&gt;
{{Flink|boolean|buy|int|item}}&lt;br /&gt;
{{Flink|boolean|create|int|item|desc=Attempts to create the specified items, following your KoLmafia settings regarding purchases to gather ingredients &amp;amp; require boxen.}}&lt;br /&gt;
{{Flink|boolean|drink|int|item|desc=Attempts to drink items as specified and reports success.}}&lt;br /&gt;
{{Flink|boolean|eat|int|item|desc=Attempts to eat items as specified and reports success.}}&lt;br /&gt;
{{Flink|boolean|eatsilent|int|item|desc=Attempts to eat items as specified.}}&lt;br /&gt;
{{Flink|boolean|hermit|int|item|desc=Trades worthless items (buying and using chewing gum if needed) to the hermit for specified items (see page for details).}}&lt;br /&gt;
{{Flink|boolean|use|int|item|desc=Attempts to use items as specified and reports success.}}&lt;br /&gt;
{{Flink|boolean|overdrink|int|item}}&lt;br /&gt;
{{Flink|boolean|retrieve_item|int|item|desc=Uses KoLmafia internal logic to gather items (see page for details).}}&lt;br /&gt;
{{Flink|int|buy|int|item|int|desc=Tries to purchase the specified items (see page for details).}}&lt;br /&gt;
{{Flink|int|craft|string|int|item|item|desc=Raw crafting that obeys KoLmafia settings (see page for details).}}&lt;br /&gt;
{{Flink|string|last_item_message|desc=Returns message that KoL reports in the event of error.}}&lt;br /&gt;
&lt;br /&gt;
==Coinmaster Control==&lt;br /&gt;
Some items can be bought from or sold to various &amp;quot;coinmasters&amp;quot; which are like shops that deal in a currency other than meat. These coinmasters include the Dimemaster and Quartermaster during the Island War, the Hermit, the Mr. Store and many others. Some relevant information can be found in [[proxy records]] for the item and coinmaster data types. The rest is controlled by the following functions.&lt;br /&gt;
&lt;br /&gt;
===Inquiries===&lt;br /&gt;
{{Flink|coinmaster|to_coinmaster|string|desc=Converts a string to a valid coinmaster.}}&lt;br /&gt;
{{Flink|boolean|is_coinmaster_item|item|desc=Is a given item acquirable from a coinmster.}}&lt;br /&gt;
{{Flink|boolean|buys_item|coinmaster|item|desc=Is a specific item acquirable from the named coinmster.}}&lt;br /&gt;
{{Flink|int|buy_price|coinmaster|item|desc=What is the coinmaster&#039;s purchase price for an item.}}&lt;br /&gt;
{{Flink|boolean|sells_item|coinmaster|item|desc=Is a specific item sellable to the named coinmster.}}&lt;br /&gt;
{{Flink|int|sell_price|coinmaster|item|desc=What is the coinmaster&#039;s selling price for an item.}}&lt;br /&gt;
&lt;br /&gt;
===Coinmaster transactions===&lt;br /&gt;
{{Flink|boolean|is_accessible|coinmaster|desc=Is a given coinmaster currently accessible.}}&lt;br /&gt;
{{Flink|string|inaccessible_reason|coinmaster|desc=The reason a given coinmaster is currently inaccessible.}}&lt;br /&gt;
{{Flink|boolean|visit|coinmaster|desc=Refreshes information at a coinmaster.}}&lt;br /&gt;
{{Flink|boolean|buy|coinmaster|int|item|desc=Buys an item from a coinmaster.}}&lt;br /&gt;
{{Flink|boolean|sell|coinmaster|int|item|desc=Sells an item to a coinmaster.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting]]&lt;/div&gt;</summary>
		<author><name>Gnocchi masala</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Sell&amp;diff=7504</id>
		<title>Sell</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Sell&amp;diff=7504"/>
		<updated>2012-03-18T05:54:57Z</updated>

		<summary type="html">&lt;p&gt;Gnocchi masala: Fix obsolete syntax&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|sell}}{{&lt;br /&gt;
#vardefine:return_type|boolean}}{{&lt;br /&gt;
&lt;br /&gt;
FunctionPage|&lt;br /&gt;
name={{#var:name}}|&lt;br /&gt;
&lt;br /&gt;
function1={{Function|&lt;br /&gt;
name={{#var:name}}|&lt;br /&gt;
aggregate={{#var:aggregate}}|&lt;br /&gt;
return_type=boolean|&lt;br /&gt;
return_also={{#var:return_also}}|&lt;br /&gt;
parameter1={{Param|coinmaster|master}}|&lt;br /&gt;
parameter2={{Param|int|qty}}|&lt;br /&gt;
parameter3={{Param|item|it}}|&lt;br /&gt;
p1desc={{pspan|master}} is the coinmaster to purchase from|&lt;br /&gt;
p2desc={{pspan|qty}} is the number to purchase|&lt;br /&gt;
p3desc={{pspan|it}} is the item to purchase|&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
function_description=Attempts to purchase {{pspan|qty}} amount of item {{pspan|it}} from {{pspan|master}}. If {{pspan|qty}} is less than 1, the function will return true without purchasing anything. Otherwise it returns true if the purchase succeeded and false if it did not.|&lt;br /&gt;
&lt;br /&gt;
code1={{CodeSample|&lt;br /&gt;
title=Code Sample|&lt;br /&gt;
description=This expands upon selling to a coinmaster to show many related functions.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
boolean sell_coinmaster(int qty, item it) {&lt;br /&gt;
   coinmaster master = it.buyer;&lt;br /&gt;
   if(master == $coinmaster[none]) {&lt;br /&gt;
      print(&amp;quot;No coinmaster will purchase that&amp;quot;, &amp;quot;red&amp;quot;);&lt;br /&gt;
      return false;&lt;br /&gt;
   }&lt;br /&gt;
   if(!is_accessible(master)) {&lt;br /&gt;
      print(inaccessible_reason(master), &amp;quot;red&amp;quot;);&lt;br /&gt;
      return false;&lt;br /&gt;
   }&lt;br /&gt;
   int coins = master.available_tokens;&lt;br /&gt;
   int price = sell_price(master, it);&lt;br /&gt;
   print(&amp;quot;Selling &amp;quot;+it+&amp;quot; to &amp;quot;+master+&amp;quot; for &amp;quot;+price+&amp;quot; &amp;quot;+coins+(qty &amp;gt; 1? &amp;quot; each.&amp;quot;: &amp;quot;.&amp;quot;));&lt;br /&gt;
   return sell(master, qty, it);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
see_also={{SeeAlso|buy|sell_price}}|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Item Management]]&lt;/div&gt;</summary>
		<author><name>Gnocchi masala</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Buy&amp;diff=4168</id>
		<title>Buy</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Buy&amp;diff=4168"/>
		<updated>2012-03-18T05:52:30Z</updated>

		<summary type="html">&lt;p&gt;Gnocchi masala: Fix obsolete syntax&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|buy}}{{&lt;br /&gt;
#vardefine:return_type|boolean}}{{&lt;br /&gt;
&lt;br /&gt;
FunctionPage|&lt;br /&gt;
name={{#var:name}}|&lt;br /&gt;
&lt;br /&gt;
function1={{Function|&lt;br /&gt;
name={{#var:name}}|&lt;br /&gt;
aggregate={{#var:aggregate}}|&lt;br /&gt;
return_type={{#var:return_type}}|&lt;br /&gt;
return_also={{#var:return_also}}|&lt;br /&gt;
parameter1={{Param|int|qty}}|&lt;br /&gt;
parameter2={{Param|item|it}}|&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
function2={{Function|&lt;br /&gt;
name={{#var:name}}|&lt;br /&gt;
aggregate={{#var:aggregate}}|&lt;br /&gt;
return_type=boolean|&lt;br /&gt;
return_also={{#var:return_also}}|&lt;br /&gt;
parameter1={{Param|coinmaster|master}}|&lt;br /&gt;
parameter2={{Param|int|qty}}|&lt;br /&gt;
parameter3={{Param|item|it}}|&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
function3={{Function|&lt;br /&gt;
name={{#var:name}}|&lt;br /&gt;
aggregate={{#var:aggregate}}|&lt;br /&gt;
return_type=int|&lt;br /&gt;
return_also={{#var:return_also}}|&lt;br /&gt;
parameter1={{Param|int|qty}}|&lt;br /&gt;
parameter2={{Param|item|it}}|&lt;br /&gt;
parameter3={{Param|int|price}}|&lt;br /&gt;
p1desc={{pspan|qty}} is the number to purchase|&lt;br /&gt;
p2desc={{pspan|it}} is the item to purchase|&lt;br /&gt;
p3desc={{pspan|price}} is the (optional) maximum price to spend per item|&lt;br /&gt;
p4desc={{pspan|master}} is the coinmaster to purchase from|&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
function_description=Attempts to purchase {{pspan|qty}} amount of item {{pspan|it}}. If {{pspan|qty}} is less than 1, the function will return true without purchasing anything. If the optional maximum {{pspan|price}} is specified, it returns the integer amount of items purchased; otherwise it returns true if the purchase succeeded and false if it did not. Without the optional {{pspan|price}} parameter, first preference is given to NPC stores when attempting purchases, after which it will attempt to use the mall.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The versions that return a boolean value determine success depending on whether your inventory of the desired item went up by the amount you tried to buy. If you have clover protection active, that will always fail when you buy ten-leaf clovers - either from the hermit or from the mall.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If a {{pspan|coinmaster}} is listed, it will attempt to purchase from the coinmaster using the correct alternate currency. Otherwise it will be purchased from an NPC store or mall using meat.|&lt;br /&gt;
&lt;br /&gt;
code1={{CodeSample|&lt;br /&gt;
title=Code Sample|&lt;br /&gt;
description=Buy a broken skull.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
buy(1 , $item[broken skull]);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{CodeSample|&lt;br /&gt;
description=This expands upon purchasing from a coinmaster to show many related functions.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
boolean buy_coinmaster(int qty, item it) {&lt;br /&gt;
   coinmaster master = it.seller;&lt;br /&gt;
   if(master == $coinmaster[none]) {&lt;br /&gt;
      print(&amp;quot;You do not need a coinmaster to purchase that&amp;quot;, &amp;quot;red&amp;quot;);&lt;br /&gt;
      return false;&lt;br /&gt;
   }&lt;br /&gt;
   if(!is_accessible(master)) {&lt;br /&gt;
      print(inaccessible_reason(master), &amp;quot;red&amp;quot;);&lt;br /&gt;
      return false;&lt;br /&gt;
   }&lt;br /&gt;
   int coins = master.available_tokens;&lt;br /&gt;
   int price = buy_price(master, it);&lt;br /&gt;
   if(price &amp;gt; coins) {&lt;br /&gt;
      print(&amp;quot;You only have &amp;quot;+coins+&amp;quot; &amp;quot;+master.token+&amp;quot;, but it costs &amp;quot;+price+&amp;quot; &amp;quot;+master.token, &amp;quot;red&amp;quot;);&lt;br /&gt;
      return false;&lt;br /&gt;
   }&lt;br /&gt;
   return buy(master, qty, it);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
see_also={{SeeAlso|sell|buy_price}}|&lt;br /&gt;
cli_equiv=The CLI commands &amp;quot;buy&amp;quot; and &amp;quot;acquire&amp;quot; work similarly.|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Item Management]]&lt;/div&gt;</summary>
		<author><name>Gnocchi masala</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Sell_price&amp;diff=7525</id>
		<title>Sell price</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Sell_price&amp;diff=7525"/>
		<updated>2012-03-18T05:45:41Z</updated>

		<summary type="html">&lt;p&gt;Gnocchi masala: Fix obsolete syntax&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|sell_price}}{{&lt;br /&gt;
#vardefine:return_type|int}}{{&lt;br /&gt;
&lt;br /&gt;
FunctionPage|&lt;br /&gt;
name={{#var:name}}|&lt;br /&gt;
&lt;br /&gt;
function1={{Function|&lt;br /&gt;
name={{#var:name}}|&lt;br /&gt;
aggregate={{#var:aggregate}}|&lt;br /&gt;
return_type=boolean|&lt;br /&gt;
return_also={{#var:return_also}}|&lt;br /&gt;
parameter1={{Param|coinmaster|master}}|&lt;br /&gt;
parameter2={{Param|item|it}}|&lt;br /&gt;
p1desc={{pspan|master}} is the coinmaster to query|&lt;br /&gt;
p2desc={{pspan|it}} is the item to check|&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
function_description=Returns the number of tokens that {{pspan|master}} will charge you if you want him to sell {{pspan|it}} to you.|&lt;br /&gt;
&lt;br /&gt;
code1={{CodeSample|&lt;br /&gt;
title=Code Sample|&lt;br /&gt;
description=This prints the price for which you can buy an item from a coinmaster.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
void print_price(item it) {&lt;br /&gt;
   if(is_coinmaster_item(it)) {&lt;br /&gt;
      coinmaster master = it.buyer;&lt;br /&gt;
      string token = master.token;&lt;br /&gt;
      int price = buy_price(master, it);&lt;br /&gt;
      if(price &amp;gt; 1) token += &amp;quot;s&amp;quot;;&lt;br /&gt;
      print(&amp;quot;You can buy that for &amp;quot;+ price + &amp;quot; &amp;quot;+token +&amp;quot;.&amp;quot;);&lt;br /&gt;
   } else if(is_tradeable(it))&lt;br /&gt;
      print(&amp;quot;You can buy that from the mall for &amp;quot;+mall_price(it)+ &amp;quot; meat.&amp;quot;);&lt;br /&gt;
   else print(&amp;quot;You cannot buy that!&amp;quot;, &amp;quot;red&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
see_also={{SeeAlso|sell|buy_price}}|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Item Management]]&lt;/div&gt;</summary>
		<author><name>Gnocchi masala</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Buy_price&amp;diff=7522</id>
		<title>Buy price</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Buy_price&amp;diff=7522"/>
		<updated>2012-03-18T05:44:21Z</updated>

		<summary type="html">&lt;p&gt;Gnocchi masala: Fix obsolete syntax&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|buy_price}}{{&lt;br /&gt;
#vardefine:return_type|int}}{{&lt;br /&gt;
&lt;br /&gt;
FunctionPage|&lt;br /&gt;
name={{#var:name}}|&lt;br /&gt;
&lt;br /&gt;
function1={{Function|&lt;br /&gt;
name={{#var:name}}|&lt;br /&gt;
aggregate={{#var:aggregate}}|&lt;br /&gt;
return_type=boolean|&lt;br /&gt;
return_also={{#var:return_also}}|&lt;br /&gt;
parameter1={{Param|coinmaster|master}}|&lt;br /&gt;
parameter2={{Param|item|it}}|&lt;br /&gt;
p1desc={{pspan|master}} is the coinmaster to query|&lt;br /&gt;
p2desc={{pspan|it}} is the item to check|&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
function_description=Returns the number of tokens that {{pspan|master}} will trade you if you sell {{pspan|it}} to him.|&lt;br /&gt;
&lt;br /&gt;
code1={{CodeSample|&lt;br /&gt;
title=Code Sample|&lt;br /&gt;
description=This prints the price for which you can sell an item to a coinmaster.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
void print_price(item it) {&lt;br /&gt;
   if(is_coinmaster_item(it)) {&lt;br /&gt;
      coinmaster master = it.seller;&lt;br /&gt;
      string token = master.token;&lt;br /&gt;
      int price = buy_price(master, it);&lt;br /&gt;
      if(price &amp;gt; 1) token += &amp;quot;s&amp;quot;;&lt;br /&gt;
      print(&amp;quot;You can sell that for &amp;quot;+ price + &amp;quot; &amp;quot;+token +&amp;quot;.&amp;quot;);&lt;br /&gt;
   } else if(is_tradeable(it))&lt;br /&gt;
      print(&amp;quot;You can sell that in the mall for &amp;quot;+mall_price(it)+ &amp;quot; meat.&amp;quot;);&lt;br /&gt;
   else if(autosell_price(it) &amp;gt; 0)&lt;br /&gt;
      print(&amp;quot;You can autosell that for &amp;quot;+autosell_price(it)+ &amp;quot; meat.&amp;quot;);&lt;br /&gt;
   else print(&amp;quot;You cannot sell that!&amp;quot;, &amp;quot;red&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
see_also={{SeeAlso|buy|sell_price}}|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Item Management]]&lt;/div&gt;</summary>
		<author><name>Gnocchi masala</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Is_coinmaster_item&amp;diff=7516</id>
		<title>Is coinmaster item</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Is_coinmaster_item&amp;diff=7516"/>
		<updated>2012-03-18T05:42:53Z</updated>

		<summary type="html">&lt;p&gt;Gnocchi masala: fix obsolete syntax&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|is_coinmaster_item}}{{&lt;br /&gt;
#vardefine:return_type|boolean}}{{&lt;br /&gt;
&lt;br /&gt;
FunctionPage|&lt;br /&gt;
name={{#var:name}}|&lt;br /&gt;
&lt;br /&gt;
function1={{Function|&lt;br /&gt;
name={{#var:name}}|&lt;br /&gt;
aggregate={{#var:aggregate}}|&lt;br /&gt;
return_type=boolean|&lt;br /&gt;
return_also={{#var:return_also}}|&lt;br /&gt;
parameter1={{Param|item|it}}|&lt;br /&gt;
p1desc={{pspan|it}} is the item to check|&lt;br /&gt;
&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
function_description=Returns true if {{pspan|it}} can be &#039;&#039;&#039;purchased&#039;&#039;&#039; from a coinmaster. You&#039;ll need to discover which coinmaster by checking the seller proxy record.|&lt;br /&gt;
&lt;br /&gt;
code1={{CodeSample|&lt;br /&gt;
title=Code Sample|&lt;br /&gt;
description=Purchases an item from a coinmaster if possible. Otherwise purchased from the mall.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
boolean buyit(int qty, item it) {&lt;br /&gt;
   if(is_coinmaster_item(it)) {&lt;br /&gt;
      coinmaster seller = it.seller;&lt;br /&gt;
      int price = sell_price(seller, it);&lt;br /&gt;
      if(!is_accessible(seller) || seller.available_tokens &amp;lt; price) {&lt;br /&gt;
         print(&amp;quot;You cannot afford to purchase that from the &amp;quot;+ seller+ &amp;quot;.&amp;quot;, &amp;quot;red&amp;quot;);&lt;br /&gt;
      } else if(seller.available_tokens &amp;lt; price * qty) {&lt;br /&gt;
         print(&amp;quot;You don&#039;t have enough &amp;quot;+ seller.token+ &amp;quot;s to purchase that many. &amp;quot;&lt;br /&gt;
            +&amp;quot; Buying as many from the coinmaster as you can afford.&amp;quot;);&lt;br /&gt;
         buy(seller, floor(qty / price), it);&lt;br /&gt;
      } else return buy(seller, qty, it);&lt;br /&gt;
   }&lt;br /&gt;
   return buy(qty, it);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
see_also={{SeeAlso|sells_item|sell_price|is_accessible}}|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Item Management]]&lt;/div&gt;</summary>
		<author><name>Gnocchi masala</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Item_Management&amp;diff=4228</id>
		<title>Item Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Item_Management&amp;diff=4228"/>
		<updated>2012-03-18T05:37:53Z</updated>

		<summary type="html">&lt;p&gt;Gnocchi masala: Signature of to_coinmaster is string only.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
==Informational==&lt;br /&gt;
{{Flink|int|my_meat|desc=Returns the amount of meat you have on hand.}}&lt;br /&gt;
{{Flink|int|my_closet_meat|desc=Returns the amount of meat you have in your Colossal Closet.}}&lt;br /&gt;
{{Flink|int|pulls_remaining|desc=Returns the number of pulls you can make from storage, or 0 if not applicable.}}&lt;br /&gt;
{{Flink|boolean|have_chef|desc=Returns true if you have a chef-boxen at your campground.}}&lt;br /&gt;
{{Flink|boolean|have_bartender|desc=Returns true if you have a bartender-boxen at your campground.}}&lt;br /&gt;
{{Flink|int [item]|get_campground|desc=Returns a map of your campground items.}}&lt;br /&gt;
{{Flink|item|get_dwelling|desc=Returns the item corresponding with your dwelling.}}&lt;br /&gt;
{{Flink|boolean|have_mushroom_plot|desc=Returns true if and only if you&#039;ve purchased a mushroom plot this run.}}&lt;br /&gt;
{{Flink|int|stills_available|desc=Returns the number of Nash Crosby&#039;s Still uses left for the day (0 if not accessible).}}&lt;br /&gt;
{{Flink|string|item_type|item|desc=Returns the type of item specified.}}&lt;br /&gt;
{{Flink|int|item_amount|item}}&lt;br /&gt;
{{Flink|int|closet_amount|item}}&lt;br /&gt;
{{Flink|int|display_amount|item}}&lt;br /&gt;
{{Flink|int|equipped_amount|item}}&lt;br /&gt;
{{Flink|int|shop_amount|item}}&lt;br /&gt;
{{Flink|int|stash_amount|item|}}&lt;br /&gt;
{{Flink|int|storage_amount|item|desc=These 7 functions return the total number available of a given item in the respective section of your inventory.}}&lt;br /&gt;
{{Flink|int|available_amount|item|desc=Returns the total number available of a given item in all inventory sections accessible to your character based on current restrictions.}}&lt;br /&gt;
{{Flink|int|creatable_amount|item|desc=Returns the amount of the item that you are capable of creating given your current inventory and skills.}}&lt;br /&gt;
{{Flink|int [item]|get_ingredients|item|desc=Returns a map where each key is one of the required ingredients, with the integer value the number required. If you don&#039;t have the skills needed to make the item, it will return an empty map.}}&lt;br /&gt;
{{Flink|int [item]|get_inventory|desc=Returns a map where each key is an item in your inventory, with the integer value its quantity.}}&lt;br /&gt;
{{Flink|int [item]|get_related|item|string|desc=Returns associated items in a zap or fold group (see page for details).}}&lt;br /&gt;
[[File:Item category.png|frame|You can categorize items in KoL using [[is tradeable|is_tradeable()]], [[is giftable|is_giftable()]], and [[is displayable|is_displayable()]].]]&lt;br /&gt;
{{Flink|boolean|is_tradeable|item|desc=Returns whether the item can be placed in the mall.}}&lt;br /&gt;
{{Flink|boolean|is_giftable|item|desc=Returns whether the item can be traded in a gift package.}}&lt;br /&gt;
{{Flink|boolean|is_displayable|item|desc=Returns whether the item can be put in a display case (true for all but quest items).}}&lt;br /&gt;
{{Flink|boolean|have_shop|desc=Returns whether you have a mall store.}}&lt;br /&gt;
{{Flink|boolean|have_display|desc=Returns whether you have a display case.}}&lt;br /&gt;
{{Flink|boolean|is_npc_item|item|desc=Returns whether the item can be bought from an NPC store.}}&lt;br /&gt;
{{Flink|void|refresh_stash|desc=Takes a new look at the contents of your clan stash, as that section of inventory cannot be internally tracked due to access by others.}}&lt;br /&gt;
{{Flink|int|mall_price|item|desc=Returns the current (lowest) mall price of the given item.}}&lt;br /&gt;
{{Flink|int|npc_price|item|desc=Returns the current price of the given item if it can currently be bought from an NPC store.}}&lt;br /&gt;
{{Flink|int|historical_price|item|desc=Returns the most recently checked price for an item. This will never hit the server, unlike mall_price().}}&lt;br /&gt;
{{Flink|float|historical_age|item|desc=Returns the age of the most recently checked price for an item in days. This allows you to decide if you want to use historical_price() or mall_price().}}&lt;br /&gt;
{{Flink|int|autosell_price|item|desc=Returns the autosell price of the item (0 for items that cannot be autosold).}}&lt;br /&gt;
{{Flink|int|get_power|item|desc=Returns the power of the item (0 for items that don&#039;t have a power).}}&lt;br /&gt;
{{Flink|string|to_plural|item|desc=Returns the plural of an item as a string.}}&lt;br /&gt;
{{Flink|int|meat_drop|{{opt|monster}}|desc=Returns a certain monster&#039;s base meat drop.}}&lt;br /&gt;
{{Flink|int [item]|item_drops|{{opt|monster}}|desc=Returns an array of a certain monster&#039;s base item drops, keying item to drop rate. Has certain limitations detailed on individual page.}}&lt;br /&gt;
{{Flink|record [int]|item_drops_array|{{opt|monster}}|desc=Returns an array of records holding information regarding a certain monster&#039;s base item drops.}}&lt;br /&gt;
&lt;br /&gt;
==Moving Items Around==&lt;br /&gt;
{{Flink|boolean|put_closet|int|{{opt|item}}}}&lt;br /&gt;
{{Flink|boolean|put_display|int|item}}&lt;br /&gt;
{{Flink|boolean|put_stash|int|item}}&lt;br /&gt;
{{Flink|boolean|take_closet|int|{{opt|item}}}}&lt;br /&gt;
{{Flink|boolean|take_display|int|item}}&lt;br /&gt;
{{Flink|boolean|take_stash|int|item}}&lt;br /&gt;
{{Flink|boolean|take_storage|int|item|desc=Attempts to take or put the specified item in the appropriate section of your inventory, and returns its success.&amp;lt;br /&amp;gt;If the item parameter is omitted from put_closet() or take_closet(), meat is transferred instead of an item.}}&lt;br /&gt;
{{Flink|boolean|put_shop|int|int|{{opt|int}}|item}}&lt;br /&gt;
{{Flink|boolean|take_shop|item|{{opt|boolean}}|desc=Adds or removes items in your store and returns success.}}&lt;br /&gt;
&lt;br /&gt;
==Acquiring &amp;amp; Using Items==&lt;br /&gt;
{{Flink|boolean|retrieve_item|int|item|desc=Uses KoLmafia internal logic to gather items (see page for details).}}&lt;br /&gt;
{{Flink|boolean|hermit|int|item|desc=Trades worthless items (buying and using chewing gum if needed) to the hermit for specified items (see page for details).}}&lt;br /&gt;
{{Flink|boolean|use|int|item|desc=Attempts to use items as specified and reports success.}}&lt;br /&gt;
{{Flink|string|last_item_message|desc=Returns message that KoL reports in the event of error.}}&lt;br /&gt;
{{Flink|boolean|eatsilent|int|item}}&lt;br /&gt;
{{Flink|boolean|eat|int|item|desc=Attempts to eat items as specified and reports success.}}&lt;br /&gt;
{{Flink|boolean|overdrink|int|item}}&lt;br /&gt;
{{Flink|boolean|drink|int|item|desc=Attempts to drink items as specified and reports success.}}&lt;br /&gt;
{{Flink|boolean|create|int|item|desc=Attempts to create the specified items, following your KoLmafia settings regarding purchases to gather ingredients &amp;amp; require boxen.}}&lt;br /&gt;
{{Flink|boolean|buy|int|item}}&lt;br /&gt;
{{Flink|int|buy|int|item|int|desc=Tries to purchase the specified items (see page for details).}}&lt;br /&gt;
{{Flink|boolean|autosell|int|item|desc=Attempts to autosell the given items and reports success.}}&lt;br /&gt;
{{Flink|int|craft|string|int|item|item|desc=Raw crafting that obeys KoLmafia settings (see page for details).}}&lt;br /&gt;
&lt;br /&gt;
==Coinmaster Control==&lt;br /&gt;
Some items can be bought from or sold to various &amp;quot;coinmasters&amp;quot; which are like shops that deal in a currency other than meat. These coinmasters include the Dimemaster and Quartermaster during the Island War, the Hermit, the Mr. Store and many others. Some relevant information can be found in [[proxy records]] for the item and coinmaster data types. The rest is controlled by the following functions.&lt;br /&gt;
&lt;br /&gt;
===Inquiries===&lt;br /&gt;
{{Flink|coinmaster|to_coinmaster|string|desc=Converts a string to a valid coinmaster.}}&lt;br /&gt;
{{Flink|boolean|is_coinmaster_item|item|desc=Is a given item acquirable from a coinmster.}}&lt;br /&gt;
{{Flink|boolean|buys_item|coinmaster|item|desc=Is a specific item acquirable from the named coinmster.}}&lt;br /&gt;
{{Flink|int|buy_price|coinmaster|item|desc=What is the coinmaster&#039;s purchase price for an item.}}&lt;br /&gt;
{{Flink|boolean|sells_item|coinmaster|item|desc=Is a specific item sellable to the named coinmster.}}&lt;br /&gt;
{{Flink|int|sell_price|coinmaster|item|desc=What is the coinmaster&#039;s selling price for an item.}}&lt;br /&gt;
&lt;br /&gt;
===Coinmaster transactions===&lt;br /&gt;
{{Flink|boolean|is_accessible|coinmaster|desc=Is a given coinmaster currently accessible.}}&lt;br /&gt;
{{Flink|string|inaccessible_reason|coinmaster|desc=The reason a given coinmaster is currently inaccessible.}}&lt;br /&gt;
{{Flink|boolean|visit|coinmaster|desc=Refreshes information at a coinmaster.}}&lt;br /&gt;
{{Flink|boolean|buy|coinmaster|int|item|desc=Buys an item from a coinmaster.}}&lt;br /&gt;
{{Flink|boolean|sell|coinmaster|int|item|desc=Sells an item to a coinmaster.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting]]&lt;/div&gt;</summary>
		<author><name>Gnocchi masala</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=To_coinmaster&amp;diff=7513</id>
		<title>To coinmaster</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=To_coinmaster&amp;diff=7513"/>
		<updated>2012-03-18T05:32:08Z</updated>

		<summary type="html">&lt;p&gt;Gnocchi masala: Make it a meaningful use of to_coinmaster again.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|to_coinmaster}}{{&lt;br /&gt;
#vardefine:return_type|coinmaster}}{{&lt;br /&gt;
&lt;br /&gt;
FunctionPage|&lt;br /&gt;
name={{#var:name}}|&lt;br /&gt;
&lt;br /&gt;
function1={{Function|&lt;br /&gt;
name={{#var:name}}|&lt;br /&gt;
aggregate={{#var:aggregate}}|&lt;br /&gt;
return_type=boolean|&lt;br /&gt;
return_also={{#var:return_also}}|&lt;br /&gt;
parameter1={{Param|string|store}}|&lt;br /&gt;
p1desc={{pspan|store}} is hopefully the name of a coinmaster|&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
code1={{CodeSample|&lt;br /&gt;
title=Code Sample|&lt;br /&gt;
description=This sells off all the Island War vendor Frat boy trash to the hippy coinmaster for dimes.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
foreach trash in $items[red class ring, blue class ring, white class ring, PADL Phone]&lt;br /&gt;
   if(item_amount(trash) &amp;gt; 0)&lt;br /&gt;
      sell(to_coinmaster(&amp;quot;Dimemaster&amp;quot;), item_amount(trash), trash);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
see_also={{SeeAlso|visit|is_accessible|buys_item|sells_item}}|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Item Management]]&lt;/div&gt;</summary>
		<author><name>Gnocchi masala</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Miscellaneous_ASH_Features&amp;diff=6095</id>
		<title>Miscellaneous ASH Features</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Miscellaneous_ASH_Features&amp;diff=6095"/>
		<updated>2012-03-18T01:01:45Z</updated>

		<summary type="html">&lt;p&gt;Gnocchi masala: added the new After Adventure Script option and mentioned that both AAS &amp;amp; BBS can be turned on for the relay browser.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
==Special Features of ASH Scripting==&lt;br /&gt;
These features are not exactly ASH commands, but they are used to improve script usage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Special Syntax Functions===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[notify]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Used to send a simple kmail to the script&#039;s author, letting them know you use their script.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[import]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Used to load an external script into your current one.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[call]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Enables the script writer to invoke a function whose name is known at runtime.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[new]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Constructor function used to populate a record.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Comments===&lt;br /&gt;
&lt;br /&gt;
Adding &#039;&#039;&#039;[[Comments]]&#039;&#039;&#039; to your code can make it much easier to maintain, and helps other users understand what&#039;s going on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Errors==&lt;br /&gt;
&lt;br /&gt;
There are a wide variety of error messages. For help when things go wrong, please see the page on [[ASH Errors]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Relay Override Scripts==&lt;br /&gt;
A relay override script is a script that modifies a web page in the relay browser. It is only in the relay browser that the effects of this scripts can be seen. The purpose of this is to alter a KoL page to improve functionality or appearance.&lt;br /&gt;
&lt;br /&gt;
Detailed information is at [[Relay_Override_Scripting#Relay_Script|Relay Override Script]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==User Interface Script==&lt;br /&gt;
A User Interface script is a script that creates a web page viewable in the relay browser. It is only in the relay browser that this special page can be seen. The purpose of this is to extend KoLmafia abilities or present information to the user.&lt;br /&gt;
&lt;br /&gt;
Detailed information is at [[Relay_Override_Scripting#User_Interface_Script|User Interface Script]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Consult Scripts==&lt;br /&gt;
Consult scripts are used to script combat. They can be used in automated adventuring or in the relay browser.&lt;br /&gt;
&lt;br /&gt;
Detailed information is at [[Custom_Combat_Script#Consult_Scripts|Consult Scripts]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Additional Script Uses==&lt;br /&gt;
&lt;br /&gt;
In addition to regular scripts, override scripts, UI scripts, and consult scripts, mafia has a few other hooks for adding event-driven scripts.  These situations are listed below, along with the preference that you can set a script name to (in parentheses).&lt;br /&gt;
&lt;br /&gt;
==== After Adventure (afterAdventureScript) ====&lt;br /&gt;
&lt;br /&gt;
*Executed just after mafia has finished an adventure. &lt;br /&gt;
*The afterAdventureScript setting is executed like a CLI command. If it is the name of an ASH script, that script does not require any special main() declaration.&lt;br /&gt;
*By default this only works for automated adventuring. If you wish it to fire when you&#039;re using the relay browser then turn it on in General -&amp;gt; Preferences -&amp;gt; - Relay Browser or set the property relayRunsAfterAdventureScript to true.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Between Battle (betweenBattleScript) ====&lt;br /&gt;
&lt;br /&gt;
*Executed whenever mafia is about to enter a combat. That means before every adventure if auto-adventuring, or before using an item that could lead to combat such as black pudding or drum machine.&lt;br /&gt;
*The betweenBattleScript setting is executed like a CLI command. If it is the name of an ASH script, that script does not require any special main() declaration.&lt;br /&gt;
*By default this only works for automated adventuring. If you wish it to fire when you&#039;re using the relay browser then turn it on in General -&amp;gt; Preferences -&amp;gt; - Relay Browser or set the property relayRunsBeforeBattleScript to true.&lt;br /&gt;
*Example: Zarqon&#039;s [http://kolmafia.us/showthread.php?t=1240 Best Between Battle]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Buy (buyScript) ====&lt;br /&gt;
&lt;br /&gt;
*Will execute whenever mafia needs to determine if it is to purchase or create an item.&lt;br /&gt;
*Requires a special main declaration boolean main(item itm, int qty, int ingredientLevel, boolean defaultBuy). These values will be supplied by mafia when the script is automatically called. A return value of true will instruct mafia to purchase the item and false will cause it to create the item possibly leading to other buy/create decisions.&lt;br /&gt;
**&#039;&#039;itm&#039;&#039; and &#039;&#039;qty&#039;&#039; specify the item under consideration.&lt;br /&gt;
**&#039;&#039;ingredientLevel&#039;&#039; indicates what&#039;s already available: &lt;br /&gt;
***0 = none of the ingredients&lt;br /&gt;
***1 = some of them&lt;br /&gt;
***2 = enough to create at least one of the requested item&lt;br /&gt;
**defaultBuy indicates what KoLmafia would have done otherwise; returning this value is the safest thing your script could do. It will normally be true if ingredientLevel is 0, false if 2. The default at level 1 depends on the item, and is subject to change - normally, anything made with star charts, pixels, the Malus, or multi-use are bought, anything else is created.&lt;br /&gt;
*Example: Bale&#039;s [http://kolmafia.us/showthread.php?p=18313#post18313 potionBuy].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Chatbot (chatbotScript) ====&lt;br /&gt;
&lt;br /&gt;
*Will execute whenever a private message is received&lt;br /&gt;
*Requires a special main declaration which can have an optional third parameter: &lt;br /&gt;
*:void main(string sender, string message)&lt;br /&gt;
*:void main(string sender, string message, string channel)&lt;br /&gt;
**&#039;sender&#039; is the name of the player who sent the message&lt;br /&gt;
**&#039;message&#039; is the message that was sent&lt;br /&gt;
**&#039;channel&#039; is &amp;quot;/clan&amp;quot; for clan messages and the empty string for private messages&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Counters (counterScript) ====&lt;br /&gt;
&lt;br /&gt;
*Will execute whenever a counter will expire as a result of an intended use of adventures.&lt;br /&gt;
*Requires a special main declaration: boolean main(string name, int remain).  These values will be supplied by mafia when the script is automatically called and the return value will determine whether mafia continues operation (true) or aborts (false).  &lt;br /&gt;
**&#039;&#039;name&#039;&#039; will be the name of the counter that is about to expire.&lt;br /&gt;
**&#039;&#039;remain&#039;&#039; is the number of turns remaining before the counter expires.  Remain will usually be 0, but may be higher if you are about to multi-create items, adventure underwater, or take a vacation.   It may be negative if the counter was informational (one that doesn&#039;t abort adventuring), and it actually expired in the middle of an action that used multiple turns at once.&lt;br /&gt;
*Example: Bale&#039;s [http://kolmafia.us/showthread.php?t=2519 CounterChecker].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Login (loginScript) ====&lt;br /&gt;
&lt;br /&gt;
:This script is immediately executed once your character is logged in. The loginScript setting is executed like a CLI command. If it is the name of an ASH script, that script does not require any special main() declaration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Logout (logoutScript) ====&lt;br /&gt;
&lt;br /&gt;
:Same as the loginScript, but runs on logout.  Note that an [[abort|abort()]] in the script won&#039;t stop a logout unless the logout was called in (specific ways, please list).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Planting (plantingScript) ====&lt;br /&gt;
&lt;br /&gt;
*This script can be used to manage the mushroom fields, which are available when under a muscle zodiac sign. It runs after logging in, if you have a mushroom field. Main function takes no arguments. Generally should take into account current [[moon phase]] so that it can be started in the middle of a cycle.&lt;br /&gt;
*The plantingScript has to be the name of an ASH file without the extension (if the plantingScript setting is &amp;quot;plant&amp;quot;, KoLMafia will call &amp;quot;plant.ash&amp;quot;).&lt;br /&gt;
*Example: [http://kolmafia.us/showthread.php?563-Modified-mushroom-script-to-produce-3rd-4th-gen-crop&amp;amp;p=7507&amp;amp;viewfull=1#post7507 Sandiman&#039;s mushroom planting script].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Post-Ascension (postAscensionScript) ====&lt;br /&gt;
&lt;br /&gt;
:Executed at once when your character starts a new ascension. (Example: Bales&#039;s [http://kolmafia.us/showthread.php?t=2769 newLife]). The postAscensionScript setting is executed like a CLI command. If it is the name of an ASH script, that script does not require any special main() declaration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Pre-Ascension (preAscensionScript) ====&lt;br /&gt;
&lt;br /&gt;
:Same as the Post-Ascension, but executed right before entering Valhalla.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Recovery (recoveryScript) ====&lt;br /&gt;
&lt;br /&gt;
*Executed whenever mafia would recover your HP / MP.  &lt;br /&gt;
*Requires a special main() declaration: boolean main(string type, int amount).  These values will be supplied when mafia automatically calls the script, and the return value will instruct mafia if it should attempt to use mafia&#039;s default healing after the script concludes. &lt;br /&gt;
**&#039;&#039;type&#039;&#039; is either &amp;quot;HP&amp;quot; or &amp;quot;MP&amp;quot;.&lt;br /&gt;
**&#039;&#039;amount&#039;&#039; is the desired amount of restoration needed or 0 to use mafia&#039;s default recovery level and target.&lt;br /&gt;
*Example: Bale&#039;s [http://kolmafia.us/showthread.php?t=1780 Universal Recovery]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==A little CLI help==&lt;br /&gt;
&lt;br /&gt;
Three CLI commands are of great use to ASH scripters:&lt;br /&gt;
* [[ashref]] allows one to get a list of ASH functions&lt;br /&gt;
* [[ash (CLI)|ash]] or [[ash (CLI)|ashq]] allows one to run ASH directly on the CLI.&lt;br /&gt;
* [[ashwiki]] allows you to search this wiki by launching a web browser.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Useful forum threads==&lt;br /&gt;
[http://kolmafia.us/showthread.php?523-Did-you-know...-It-s-a-secret-feature.&amp;amp;p=2968&amp;amp;viewfull=1#post2968 This thread], started by holatuwol, is a tidy compilation of various undocumented features in KoLmafia.&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting]]&lt;/div&gt;</summary>
		<author><name>Gnocchi masala</name></author>
	</entry>
</feed>