<?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=AlbinoRhino</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=AlbinoRhino"/>
	<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Special:Contributions/AlbinoRhino"/>
	<updated>2026-04-30T18:29:14Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Hidden_Features&amp;diff=9249</id>
		<title>Hidden Features</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Hidden_Features&amp;diff=9249"/>
		<updated>2025-02-20T01:35:53Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: update commit link to one that works&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
Mafia has several features that aren&#039;t listed in the preferences. In order to enable these features you have to change properties with a CLI command. To issue a CLI command simply type the listed command in the text entry box at the bottom of the &amp;quot;Graphical CLI&amp;quot; window. Capitalization counts, so copy/paste is recommended.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Beep on Private Message ===&lt;br /&gt;
You can instruct chat to beep if you receive a private message. If this is enabled it will affect all characters. To enable this, issue the CLI command:&lt;br /&gt;
&lt;br /&gt;
 set chatBeep = true&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Chat Broadcast &amp;amp; System Messages ===&lt;br /&gt;
By default KoLmafia&#039;s chat GUI will show KoL&#039;s broadcast messages and system messages on all open chat channels at the same time. You can change that behavior to show them only in the Events tab by setting it to false.&lt;br /&gt;
&lt;br /&gt;
 set broadcastEvents = false&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Disable Image Caching ===&lt;br /&gt;
Normally all images are cached locally to save on bandwidth and server usage. This can be disabled although doing so will cause almost anyone to experience slower load times. Not recommended unless you&#039;ve got a very good reason.&lt;br /&gt;
&lt;br /&gt;
 set useImageCache = false&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Maximizer Price Checking ===&lt;br /&gt;
Normally, the maximizer will only search the mall for prices that are over 7 days old. For prices that were checked within the last week, it will use those historical prices without bothering to check the price in the mall at this moment. This saves a lot of time since prices on potions are rarely that volatile. If you want to change that behavior to always check prices once for each session, that can be changed with the following command.&lt;br /&gt;
&lt;br /&gt;
 set maximizerCurrentMallPrices = true&lt;br /&gt;
&lt;br /&gt;
Set it back to false if you want to restore the default behavior.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Most Recently Used Modifier Maximizer Expression ===&lt;br /&gt;
At the top of the Modifier Maximizer drop-down it shows the most recently evaluated expressions. The number of most recently evaluated expressions can be changed by altering maximizerMRUSize. When enabled, the drop down will contain (at most) maximizerMRUSize entries with the most frequently used expression at the top. By default this number is five, but it can be changed to other values or disabled by changing it to zero. This is enabled on a per character basis. &lt;br /&gt;
&lt;br /&gt;
 set maximizerMRUSize = 20&lt;br /&gt;
&lt;br /&gt;
will enable the feature and set the length of the menu to 20.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Most Recently Used Script Menu ===&lt;br /&gt;
You can alter your script menu to only show the most recently used scripts. This is enabled by setting scriptMRULength to a value greater than zero.  When enabled the Script menu will contain (at most) scriptMRULength entries with the most frequently used script at the top.  This list is automatically refreshed or can be manually refreshed by using the Refresh menu option.  Scripts that are not on the list can be run by using the Load script option.  This is enabled on a per character basis. &lt;br /&gt;
&lt;br /&gt;
 set scriptMRULength  = 10&lt;br /&gt;
&lt;br /&gt;
will enable the feature and set the length of the menu to 10.  Although it is not enforced by the code, it is suggested that values greater than 45 or thereabouts be avoided.  Note that the list is case sensitive.  If your operating system allows you to invoke the file Ascend.ash by typing ascend then it is possible that both &amp;quot;Ascend&amp;quot; and &amp;quot;ascend&amp;quot; will appear on the list.  Note also that the definition of &amp;quot;used&amp;quot; includes run from the Scripts menu, run from the gCLI or called from a running script using the &amp;quot;call&amp;quot; command.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Number of Custom Combat Buttons ===&lt;br /&gt;
In the Browser section of Preferences, we can mark the checkbox for &amp;quot;Add custom buttons to the top of fight pages.&amp;quot; The number of buttons on the right side, that vary according to which skills have been used, is set to 5 by default. CLI command to change this is:&lt;br /&gt;
&lt;br /&gt;
 set relaySkillButtonCount=x&lt;br /&gt;
&lt;br /&gt;
Where x is the number of variable buttons desired. Unusual values for x here might cause unexpected results. It should be a non-zero, whole number. This is a global setting, meaning it will not change according to which account is logged in.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Outfit Names Can Execute Some Commands===&lt;br /&gt;
Custom outfits can trigger actions when equipped, by including one (or more) of the following strings in their name:&lt;br /&gt;
&lt;br /&gt;
 F= - change familiar&lt;br /&gt;
 E= - equip familiar item&lt;br /&gt;
 M= - change mood&lt;br /&gt;
 C= - arbitrary CLI command&lt;br /&gt;
 &lt;br /&gt;
 Example outfit name: Sea Adventuring f=hound e=Das Boot m=SeaBuff&lt;br /&gt;
 Usage: &amp;quot;outfit Sea Adventuring&amp;quot; or &amp;quot;outfit Sea Adventuring f=hound e=Das Boot m=SeaBuff&amp;quot;, in the cli, will both accomplish the changes. You can also select and change the outfit as normal in the relay browser.&lt;br /&gt;
Note that the commands are executed BEFORE the actual outfit change. [https://github.com/kolmafia/kolmafia/commit/a4e73d255139bbc3aebafcdedd9b03faa05f1f46 See r6876]&lt;br /&gt;
&lt;br /&gt;
=== Prompt About Crafting===&lt;br /&gt;
By default mafia will issue a prompt when you are going to spend an adventure crafting, until mafia is told it&#039;s okay. Once you say it is okay you will not receive a prompt the next time. This behavior can be modified by using the alwaysPromptAboutCrafting property.&lt;br /&gt;
&lt;br /&gt;
 set promptAboutCrafting = 1 (default)&lt;br /&gt;
 set promptAboutCrafting = 2 (always prompt)&lt;br /&gt;
 set promptAboutCrafting = 0 (never prompt)&lt;br /&gt;
&lt;br /&gt;
Issue the command without the part in parenthesis. I only added that to advise you on its meaning.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Quests: Doc Galaktik&#039;s Quest===&lt;br /&gt;
By default Doc Galaktik&#039;s quest to find medicinal herbs will be accepted by KoLmafia when you ascend. If you want to turn this off...&lt;br /&gt;
&lt;br /&gt;
 set autostartGalaktikQuest = false&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Resting in Chateau/Getaway Campsite vs Campground===&lt;br /&gt;
If you have access to Chateau Mantegna, KoLmafia will rest there by default before the Campground or Your Campsite Away From Your Campsite. If you do not want to rest at your Chateau by default, you can tell mafia not to do that with this command:&lt;br /&gt;
&lt;br /&gt;
 set restUsingChateau = false&lt;br /&gt;
&lt;br /&gt;
If you have access to Your Campsite Away From Your Campsite, KoLmafia will rest there by default before the Campground. If you would rather rest at the campground by default, you can tell mafia to not rest at your Campsite Away From Your Campsite with this command:&lt;br /&gt;
&lt;br /&gt;
 set restUsingCampAwayTent = false&lt;br /&gt;
&lt;br /&gt;
===Save window size ===&lt;br /&gt;
You can save the size of the KoLmafia window. This is especially useful for people with smaller monitors. This preference is character specific so you will need to use the following CLI command for each character.&lt;br /&gt;
&lt;br /&gt;
 set rememberDesktopSize = true&lt;br /&gt;
&lt;br /&gt;
When it is not set, KoLmafia will determine the size of windows at startup.  In the case of variable sized windows (such as the panel containing Daily Deeds) the computed size is too big for small displays.  Setting this to true will remember the last size of the main window and use it instead of a computed size.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Shadow Noodles===&lt;br /&gt;
Stationary buttons and automatic combat entangling will not normally use Shadow Noodles since it is so expensive. If you want Shadow Noodles to be used you need to enable it in preferences.&lt;br /&gt;
&lt;br /&gt;
 set considerShadowNoodles = true&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Use Huggler Channel===&lt;br /&gt;
Normally all messages on Huggler Radio are displayed in the /pvp channel. If you want Mafia to split out the Huggler Radio into it&#039;s own channel, you can enable that with:&lt;br /&gt;
&lt;br /&gt;
 set useHugglerChannel = true&lt;/div&gt;</summary>
		<author><name>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Hidden_Features&amp;diff=9041</id>
		<title>Hidden Features</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Hidden_Features&amp;diff=9041"/>
		<updated>2021-06-03T09:42:43Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: /* Outfit Names Can Execute Some Commands */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
Mafia has several features that aren&#039;t listed in the preferences. In order to enable these features you have to change properties with a CLI command. To issue a CLI command simply type the listed command in the text entry box at the bottom of the &amp;quot;Graphical CLI&amp;quot; window. Capitalization counts, so copy/paste is recommended.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Beep on Private Message ===&lt;br /&gt;
You can instruct chat to beep if you receive a private message. If this is enabled it will affect all characters. To enable this, issue the CLI command:&lt;br /&gt;
&lt;br /&gt;
 set chatBeep = true&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Chat Broadcast &amp;amp; System Messages ===&lt;br /&gt;
By default KoLmafia&#039;s chat GUI will show KoL&#039;s broadcast messages and system messages on all open chat channels at the same time. You can change that behavior to show them only in the Events tab by setting it to false.&lt;br /&gt;
&lt;br /&gt;
 set broadcastEvents = false&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Disable Image Caching ===&lt;br /&gt;
Normally all images are cached locally to save on bandwidth and server usage. This can be disabled although doing so will cause almost anyone to experience slower load times. Not recommended unless you&#039;ve got a very good reason.&lt;br /&gt;
&lt;br /&gt;
 set useImageCache = false&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Maximizer Price Checking ===&lt;br /&gt;
Normally, the maximizer will only search the mall for prices that are over 7 days old. For prices that were checked within the last week, it will use those historical prices without bothering to check the price in the mall at this moment. This saves a lot of time since prices on potions are rarely that volatile. If you want to change that behavior to always check prices once for each session, that can be changed with the following command.&lt;br /&gt;
&lt;br /&gt;
 set maximizerCurrentMallPrices = true&lt;br /&gt;
&lt;br /&gt;
Set it back to false if you want to restore the default behavior.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Most Recently Used Modifier Maximizer Expression ===&lt;br /&gt;
At the top of the Modifier Maximizer drop-down it shows the most recently evaluated expressions. The number of most recently evaluated expressions can be changed by altering maximizerMRUSize. When enabled, the drop down will contain (at most) maximizerMRUSize entries with the most frequently used expression at the top. By default this number is five, but it can be changed to other values or disabled by changing it to zero. This is enabled on a per character basis. &lt;br /&gt;
&lt;br /&gt;
 set maximizerMRUSize = 20&lt;br /&gt;
&lt;br /&gt;
will enable the feature and set the length of the menu to 20.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Most Recently Used Script Menu ===&lt;br /&gt;
You can alter your script menu to only show the most recently used scripts. This is enabled by setting scriptMRULength to a value greater than zero.  When enabled the Script menu will contain (at most) scriptMRULength entries with the most frequently used script at the top.  This list is automatically refreshed or can be manually refreshed by using the Refresh menu option.  Scripts that are not on the list can be run by using the Load script option.  This is enabled on a per character basis. &lt;br /&gt;
&lt;br /&gt;
 set scriptMRULength  = 10&lt;br /&gt;
&lt;br /&gt;
will enable the feature and set the length of the menu to 10.  Although it is not enforced by the code, it is suggested that values greater than 45 or thereabouts be avoided.  Note that the list is case sensitive.  If your operating system allows you to invoke the file Ascend.ash by typing ascend then it is possible that both &amp;quot;Ascend&amp;quot; and &amp;quot;ascend&amp;quot; will appear on the list.  Note also that the definition of &amp;quot;used&amp;quot; includes run from the Scripts menu, run from the gCLI or called from a running script using the &amp;quot;call&amp;quot; command.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Number of Custom Combat Buttons ===&lt;br /&gt;
In the Browser section of Preferences, we can mark the checkbox for &amp;quot;Add custom buttons to the top of fight pages.&amp;quot; The number of buttons on the right side, that vary according to which skills have been used, is set to 5 by default. CLI command to change this is:&lt;br /&gt;
&lt;br /&gt;
 set relaySkillButtonCount=x&lt;br /&gt;
&lt;br /&gt;
Where x is the number of variable buttons desired. Unusual values for x here might cause unexpected results. It should be a non-zero, whole number. This is a global setting, meaning it will not change according to which account is logged in.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Outfit Names Can Execute Some Commands===&lt;br /&gt;
Custom outfits can trigger actions when equipped, by including one (or more) of the following strings in their name:&lt;br /&gt;
&lt;br /&gt;
 F= - change familiar&lt;br /&gt;
 E= - equip familiar item&lt;br /&gt;
 M= - change mood&lt;br /&gt;
 C= - arbitrary CLI command&lt;br /&gt;
 &lt;br /&gt;
 Example outfit name: Sea Adventuring f=hound e=Das Boot m=SeaBuff&lt;br /&gt;
 Usage: &amp;quot;outfit Sea Adventuring&amp;quot; or &amp;quot;outfit Sea Adventuring f=hound e=Das Boot m=SeaBuff&amp;quot;, in the cli, will both accomplish the changes. You can also select and change the outfit as normal in the relay browser.&lt;br /&gt;
Note that the commands are executed BEFORE the actual outfit change. [https://kol.msurl.net/?q=revision%3D6876 See r6876]&lt;br /&gt;
&lt;br /&gt;
=== Prompt About Crafting===&lt;br /&gt;
By default mafia will issue a prompt when you are going to spend an adventure crafting, until mafia is told it&#039;s okay. Once you say it is okay you will not receive a prompt the next time. This behavior can be modified by using the alwaysPromptAboutCrafting property.&lt;br /&gt;
&lt;br /&gt;
 set promptAboutCrafting = 1 (default)&lt;br /&gt;
 set promptAboutCrafting = 2 (always prompt)&lt;br /&gt;
 set promptAboutCrafting = 0 (never prompt)&lt;br /&gt;
&lt;br /&gt;
Issue the command without the part in parenthesis. I only added that to advise you on its meaning.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Quests: Doc Galaktik&#039;s Quest===&lt;br /&gt;
By default Doc Galaktik&#039;s quest to find medicinal herbs will be accepted by KoLmafia when you ascend. If you want to turn this off...&lt;br /&gt;
&lt;br /&gt;
 set autostartGalaktikQuest = false&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Resting in Chateau vs Campground===&lt;br /&gt;
If you have access to Chateau Mantegna, KoLmafia will rest there by default instead of the campground. If you want to rest only at the campground (maybe you have really nice housing) you can tell mafia to do that with this command:&lt;br /&gt;
&lt;br /&gt;
 set restUsingChateau = false&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Save window size ===&lt;br /&gt;
You can save the size of the KoLmafia window. This is especially useful for people with smaller monitors. This preference is character specific so you will need to use the following CLI command for each character.&lt;br /&gt;
&lt;br /&gt;
 set rememberDesktopSize = true&lt;br /&gt;
&lt;br /&gt;
When it is not set, KoLmafia will determine the size of windows at startup.  In the case of variable sized windows (such as the panel containing Daily Deeds) the computed size is too big for small displays.  Setting this to true will remember the last size of the main window and use it instead of a computed size.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Shadow Noodles===&lt;br /&gt;
Stationary buttons and automatic combat entangling will not normally use Shadow Noodles since it is so expensive. If you want Shadow Noodles to be used you need to enable it in preferences.&lt;br /&gt;
&lt;br /&gt;
 set considerShadowNoodles = true&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Use Huggler Channel===&lt;br /&gt;
Normally all messages on Huggler Radio are displayed in the /pvp channel. If you want Mafia to split out the Huggler Radio into it&#039;s own channel, you can enable that with:&lt;br /&gt;
&lt;br /&gt;
 set useHugglerChannel = true&lt;/div&gt;</summary>
		<author><name>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Hidden_Features&amp;diff=9040</id>
		<title>Hidden Features</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Hidden_Features&amp;diff=9040"/>
		<updated>2021-06-03T09:31:06Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: /* Outfit Names Can Execute Some Commands */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
Mafia has several features that aren&#039;t listed in the preferences. In order to enable these features you have to change properties with a CLI command. To issue a CLI command simply type the listed command in the text entry box at the bottom of the &amp;quot;Graphical CLI&amp;quot; window. Capitalization counts, so copy/paste is recommended.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Beep on Private Message ===&lt;br /&gt;
You can instruct chat to beep if you receive a private message. If this is enabled it will affect all characters. To enable this, issue the CLI command:&lt;br /&gt;
&lt;br /&gt;
 set chatBeep = true&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Chat Broadcast &amp;amp; System Messages ===&lt;br /&gt;
By default KoLmafia&#039;s chat GUI will show KoL&#039;s broadcast messages and system messages on all open chat channels at the same time. You can change that behavior to show them only in the Events tab by setting it to false.&lt;br /&gt;
&lt;br /&gt;
 set broadcastEvents = false&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Disable Image Caching ===&lt;br /&gt;
Normally all images are cached locally to save on bandwidth and server usage. This can be disabled although doing so will cause almost anyone to experience slower load times. Not recommended unless you&#039;ve got a very good reason.&lt;br /&gt;
&lt;br /&gt;
 set useImageCache = false&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Maximizer Price Checking ===&lt;br /&gt;
Normally, the maximizer will only search the mall for prices that are over 7 days old. For prices that were checked within the last week, it will use those historical prices without bothering to check the price in the mall at this moment. This saves a lot of time since prices on potions are rarely that volatile. If you want to change that behavior to always check prices once for each session, that can be changed with the following command.&lt;br /&gt;
&lt;br /&gt;
 set maximizerCurrentMallPrices = true&lt;br /&gt;
&lt;br /&gt;
Set it back to false if you want to restore the default behavior.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Most Recently Used Modifier Maximizer Expression ===&lt;br /&gt;
At the top of the Modifier Maximizer drop-down it shows the most recently evaluated expressions. The number of most recently evaluated expressions can be changed by altering maximizerMRUSize. When enabled, the drop down will contain (at most) maximizerMRUSize entries with the most frequently used expression at the top. By default this number is five, but it can be changed to other values or disabled by changing it to zero. This is enabled on a per character basis. &lt;br /&gt;
&lt;br /&gt;
 set maximizerMRUSize = 20&lt;br /&gt;
&lt;br /&gt;
will enable the feature and set the length of the menu to 20.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Most Recently Used Script Menu ===&lt;br /&gt;
You can alter your script menu to only show the most recently used scripts. This is enabled by setting scriptMRULength to a value greater than zero.  When enabled the Script menu will contain (at most) scriptMRULength entries with the most frequently used script at the top.  This list is automatically refreshed or can be manually refreshed by using the Refresh menu option.  Scripts that are not on the list can be run by using the Load script option.  This is enabled on a per character basis. &lt;br /&gt;
&lt;br /&gt;
 set scriptMRULength  = 10&lt;br /&gt;
&lt;br /&gt;
will enable the feature and set the length of the menu to 10.  Although it is not enforced by the code, it is suggested that values greater than 45 or thereabouts be avoided.  Note that the list is case sensitive.  If your operating system allows you to invoke the file Ascend.ash by typing ascend then it is possible that both &amp;quot;Ascend&amp;quot; and &amp;quot;ascend&amp;quot; will appear on the list.  Note also that the definition of &amp;quot;used&amp;quot; includes run from the Scripts menu, run from the gCLI or called from a running script using the &amp;quot;call&amp;quot; command.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Number of Custom Combat Buttons ===&lt;br /&gt;
In the Browser section of Preferences, we can mark the checkbox for &amp;quot;Add custom buttons to the top of fight pages.&amp;quot; The number of buttons on the right side, that vary according to which skills have been used, is set to 5 by default. CLI command to change this is:&lt;br /&gt;
&lt;br /&gt;
 set relaySkillButtonCount=x&lt;br /&gt;
&lt;br /&gt;
Where x is the number of variable buttons desired. Unusual values for x here might cause unexpected results. It should be a non-zero, whole number. This is a global setting, meaning it will not change according to which account is logged in.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Outfit Names Can Execute Some Commands===&lt;br /&gt;
Custom outfits can trigger actions when equipped, by including one (or more) of the following strings in their name:&lt;br /&gt;
&lt;br /&gt;
 F= - change familiar&lt;br /&gt;
 E= - equip familiar item&lt;br /&gt;
 M= - change mood&lt;br /&gt;
 C= - arbitrary CLI command&lt;br /&gt;
 &lt;br /&gt;
 Example outfit name: Sea Adventuring f=hound e=Das Boot m=SeaBuff&lt;br /&gt;
Note that the commands are executed BEFORE the actual outfit change. [https://kol.msurl.net/?q=revision%3D6876 See r6876]&lt;br /&gt;
&lt;br /&gt;
=== Prompt About Crafting===&lt;br /&gt;
By default mafia will issue a prompt when you are going to spend an adventure crafting, until mafia is told it&#039;s okay. Once you say it is okay you will not receive a prompt the next time. This behavior can be modified by using the alwaysPromptAboutCrafting property.&lt;br /&gt;
&lt;br /&gt;
 set promptAboutCrafting = 1 (default)&lt;br /&gt;
 set promptAboutCrafting = 2 (always prompt)&lt;br /&gt;
 set promptAboutCrafting = 0 (never prompt)&lt;br /&gt;
&lt;br /&gt;
Issue the command without the part in parenthesis. I only added that to advise you on its meaning.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Quests: Doc Galaktik&#039;s Quest===&lt;br /&gt;
By default Doc Galaktik&#039;s quest to find medicinal herbs will be accepted by KoLmafia when you ascend. If you want to turn this off...&lt;br /&gt;
&lt;br /&gt;
 set autostartGalaktikQuest = false&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Resting in Chateau vs Campground===&lt;br /&gt;
If you have access to Chateau Mantegna, KoLmafia will rest there by default instead of the campground. If you want to rest only at the campground (maybe you have really nice housing) you can tell mafia to do that with this command:&lt;br /&gt;
&lt;br /&gt;
 set restUsingChateau = false&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Save window size ===&lt;br /&gt;
You can save the size of the KoLmafia window. This is especially useful for people with smaller monitors. This preference is character specific so you will need to use the following CLI command for each character.&lt;br /&gt;
&lt;br /&gt;
 set rememberDesktopSize = true&lt;br /&gt;
&lt;br /&gt;
When it is not set, KoLmafia will determine the size of windows at startup.  In the case of variable sized windows (such as the panel containing Daily Deeds) the computed size is too big for small displays.  Setting this to true will remember the last size of the main window and use it instead of a computed size.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Shadow Noodles===&lt;br /&gt;
Stationary buttons and automatic combat entangling will not normally use Shadow Noodles since it is so expensive. If you want Shadow Noodles to be used you need to enable it in preferences.&lt;br /&gt;
&lt;br /&gt;
 set considerShadowNoodles = true&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Use Huggler Channel===&lt;br /&gt;
Normally all messages on Huggler Radio are displayed in the /pvp channel. If you want Mafia to split out the Huggler Radio into it&#039;s own channel, you can enable that with:&lt;br /&gt;
&lt;br /&gt;
 set useHugglerChannel = true&lt;/div&gt;</summary>
		<author><name>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Hidden_Features&amp;diff=9039</id>
		<title>Hidden Features</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Hidden_Features&amp;diff=9039"/>
		<updated>2021-06-03T09:27:30Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
Mafia has several features that aren&#039;t listed in the preferences. In order to enable these features you have to change properties with a CLI command. To issue a CLI command simply type the listed command in the text entry box at the bottom of the &amp;quot;Graphical CLI&amp;quot; window. Capitalization counts, so copy/paste is recommended.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Beep on Private Message ===&lt;br /&gt;
You can instruct chat to beep if you receive a private message. If this is enabled it will affect all characters. To enable this, issue the CLI command:&lt;br /&gt;
&lt;br /&gt;
 set chatBeep = true&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Chat Broadcast &amp;amp; System Messages ===&lt;br /&gt;
By default KoLmafia&#039;s chat GUI will show KoL&#039;s broadcast messages and system messages on all open chat channels at the same time. You can change that behavior to show them only in the Events tab by setting it to false.&lt;br /&gt;
&lt;br /&gt;
 set broadcastEvents = false&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Disable Image Caching ===&lt;br /&gt;
Normally all images are cached locally to save on bandwidth and server usage. This can be disabled although doing so will cause almost anyone to experience slower load times. Not recommended unless you&#039;ve got a very good reason.&lt;br /&gt;
&lt;br /&gt;
 set useImageCache = false&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Maximizer Price Checking ===&lt;br /&gt;
Normally, the maximizer will only search the mall for prices that are over 7 days old. For prices that were checked within the last week, it will use those historical prices without bothering to check the price in the mall at this moment. This saves a lot of time since prices on potions are rarely that volatile. If you want to change that behavior to always check prices once for each session, that can be changed with the following command.&lt;br /&gt;
&lt;br /&gt;
 set maximizerCurrentMallPrices = true&lt;br /&gt;
&lt;br /&gt;
Set it back to false if you want to restore the default behavior.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Most Recently Used Modifier Maximizer Expression ===&lt;br /&gt;
At the top of the Modifier Maximizer drop-down it shows the most recently evaluated expressions. The number of most recently evaluated expressions can be changed by altering maximizerMRUSize. When enabled, the drop down will contain (at most) maximizerMRUSize entries with the most frequently used expression at the top. By default this number is five, but it can be changed to other values or disabled by changing it to zero. This is enabled on a per character basis. &lt;br /&gt;
&lt;br /&gt;
 set maximizerMRUSize = 20&lt;br /&gt;
&lt;br /&gt;
will enable the feature and set the length of the menu to 20.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Most Recently Used Script Menu ===&lt;br /&gt;
You can alter your script menu to only show the most recently used scripts. This is enabled by setting scriptMRULength to a value greater than zero.  When enabled the Script menu will contain (at most) scriptMRULength entries with the most frequently used script at the top.  This list is automatically refreshed or can be manually refreshed by using the Refresh menu option.  Scripts that are not on the list can be run by using the Load script option.  This is enabled on a per character basis. &lt;br /&gt;
&lt;br /&gt;
 set scriptMRULength  = 10&lt;br /&gt;
&lt;br /&gt;
will enable the feature and set the length of the menu to 10.  Although it is not enforced by the code, it is suggested that values greater than 45 or thereabouts be avoided.  Note that the list is case sensitive.  If your operating system allows you to invoke the file Ascend.ash by typing ascend then it is possible that both &amp;quot;Ascend&amp;quot; and &amp;quot;ascend&amp;quot; will appear on the list.  Note also that the definition of &amp;quot;used&amp;quot; includes run from the Scripts menu, run from the gCLI or called from a running script using the &amp;quot;call&amp;quot; command.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Number of Custom Combat Buttons ===&lt;br /&gt;
In the Browser section of Preferences, we can mark the checkbox for &amp;quot;Add custom buttons to the top of fight pages.&amp;quot; The number of buttons on the right side, that vary according to which skills have been used, is set to 5 by default. CLI command to change this is:&lt;br /&gt;
&lt;br /&gt;
 set relaySkillButtonCount=x&lt;br /&gt;
&lt;br /&gt;
Where x is the number of variable buttons desired. Unusual values for x here might cause unexpected results. It should be a non-zero, whole number. This is a global setting, meaning it will not change according to which account is logged in.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Outfit Names Can Execute Some Commands===&lt;br /&gt;
Custom outfits can trigger actions when equipped, by including one (or more) of the following strings in their name:&lt;br /&gt;
&lt;br /&gt;
 F= - change familiar&lt;br /&gt;
 E= - equip familiar item&lt;br /&gt;
 M= - change mood&lt;br /&gt;
 C= - arbitrary CLI command&lt;br /&gt;
Note that the commands are executed BEFORE the actual outfit change. [https://kol.msurl.net/?q=revision%3D6876 See r6876]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Prompt About Crafting===&lt;br /&gt;
By default mafia will issue a prompt when you are going to spend an adventure crafting, until mafia is told it&#039;s okay. Once you say it is okay you will not receive a prompt the next time. This behavior can be modified by using the alwaysPromptAboutCrafting property.&lt;br /&gt;
&lt;br /&gt;
 set promptAboutCrafting = 1 (default)&lt;br /&gt;
 set promptAboutCrafting = 2 (always prompt)&lt;br /&gt;
 set promptAboutCrafting = 0 (never prompt)&lt;br /&gt;
&lt;br /&gt;
Issue the command without the part in parenthesis. I only added that to advise you on its meaning.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Quests: Doc Galaktik&#039;s Quest===&lt;br /&gt;
By default Doc Galaktik&#039;s quest to find medicinal herbs will be accepted by KoLmafia when you ascend. If you want to turn this off...&lt;br /&gt;
&lt;br /&gt;
 set autostartGalaktikQuest = false&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Resting in Chateau vs Campground===&lt;br /&gt;
If you have access to Chateau Mantegna, KoLmafia will rest there by default instead of the campground. If you want to rest only at the campground (maybe you have really nice housing) you can tell mafia to do that with this command:&lt;br /&gt;
&lt;br /&gt;
 set restUsingChateau = false&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Save window size ===&lt;br /&gt;
You can save the size of the KoLmafia window. This is especially useful for people with smaller monitors. This preference is character specific so you will need to use the following CLI command for each character.&lt;br /&gt;
&lt;br /&gt;
 set rememberDesktopSize = true&lt;br /&gt;
&lt;br /&gt;
When it is not set, KoLmafia will determine the size of windows at startup.  In the case of variable sized windows (such as the panel containing Daily Deeds) the computed size is too big for small displays.  Setting this to true will remember the last size of the main window and use it instead of a computed size.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Shadow Noodles===&lt;br /&gt;
Stationary buttons and automatic combat entangling will not normally use Shadow Noodles since it is so expensive. If you want Shadow Noodles to be used you need to enable it in preferences.&lt;br /&gt;
&lt;br /&gt;
 set considerShadowNoodles = true&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Use Huggler Channel===&lt;br /&gt;
Normally all messages on Huggler Radio are displayed in the /pvp channel. If you want Mafia to split out the Huggler Radio into it&#039;s own channel, you can enable that with:&lt;br /&gt;
&lt;br /&gt;
 set useHugglerChannel = true&lt;/div&gt;</summary>
		<author><name>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Hidden_Features&amp;diff=9038</id>
		<title>Hidden Features</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Hidden_Features&amp;diff=9038"/>
		<updated>2021-06-03T09:26:50Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: Outfit Names Can Execute Some Commands&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
Mafia has several features that aren&#039;t listed in the preferences. In order to enable these features you have to change properties with a CLI command. To issue a CLI command simply type the listed command in the text entry box at the bottom of the &amp;quot;Graphical CLI&amp;quot; window. Capitalization counts, so copy/paste is recommended.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Beep on Private Message ===&lt;br /&gt;
You can instruct chat to beep if you receive a private message. If this is enabled it will affect all characters. To enable this, issue the CLI command:&lt;br /&gt;
&lt;br /&gt;
 set chatBeep = true&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Chat Broadcast &amp;amp; System Messages ===&lt;br /&gt;
By default KoLmafia&#039;s chat GUI will show KoL&#039;s broadcast messages and system messages on all open chat channels at the same time. You can change that behavior to show them only in the Events tab by setting it to false.&lt;br /&gt;
&lt;br /&gt;
 set broadcastEvents = false&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Disable Image Caching ===&lt;br /&gt;
Normally all images are cached locally to save on bandwidth and server usage. This can be disabled although doing so will cause almost anyone to experience slower load times. Not recommended unless you&#039;ve got a very good reason.&lt;br /&gt;
&lt;br /&gt;
 set useImageCache = false&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Maximizer Price Checking ===&lt;br /&gt;
Normally, the maximizer will only search the mall for prices that are over 7 days old. For prices that were checked within the last week, it will use those historical prices without bothering to check the price in the mall at this moment. This saves a lot of time since prices on potions are rarely that volatile. If you want to change that behavior to always check prices once for each session, that can be changed with the following command.&lt;br /&gt;
&lt;br /&gt;
 set maximizerCurrentMallPrices = true&lt;br /&gt;
&lt;br /&gt;
Set it back to false if you want to restore the default behavior.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Most Recently Used Modifier Maximizer Expression ===&lt;br /&gt;
At the top of the Modifier Maximizer drop-down it shows the most recently evaluated expressions. The number of most recently evaluated expressions can be changed by altering maximizerMRUSize. When enabled, the drop down will contain (at most) maximizerMRUSize entries with the most frequently used expression at the top. By default this number is five, but it can be changed to other values or disabled by changing it to zero. This is enabled on a per character basis. &lt;br /&gt;
&lt;br /&gt;
 set maximizerMRUSize = 20&lt;br /&gt;
&lt;br /&gt;
will enable the feature and set the length of the menu to 20.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Most Recently Used Script Menu ===&lt;br /&gt;
You can alter your script menu to only show the most recently used scripts. This is enabled by setting scriptMRULength to a value greater than zero.  When enabled the Script menu will contain (at most) scriptMRULength entries with the most frequently used script at the top.  This list is automatically refreshed or can be manually refreshed by using the Refresh menu option.  Scripts that are not on the list can be run by using the Load script option.  This is enabled on a per character basis. &lt;br /&gt;
&lt;br /&gt;
 set scriptMRULength  = 10&lt;br /&gt;
&lt;br /&gt;
will enable the feature and set the length of the menu to 10.  Although it is not enforced by the code, it is suggested that values greater than 45 or thereabouts be avoided.  Note that the list is case sensitive.  If your operating system allows you to invoke the file Ascend.ash by typing ascend then it is possible that both &amp;quot;Ascend&amp;quot; and &amp;quot;ascend&amp;quot; will appear on the list.  Note also that the definition of &amp;quot;used&amp;quot; includes run from the Scripts menu, run from the gCLI or called from a running script using the &amp;quot;call&amp;quot; command.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Number of Custom Combat Buttons ===&lt;br /&gt;
In the Browser section of Preferences, we can mark the checkbox for &amp;quot;Add custom buttons to the top of fight pages.&amp;quot; The number of buttons on the right side, that vary according to which skills have been used, is set to 5 by default. CLI command to change this is:&lt;br /&gt;
&lt;br /&gt;
 set relaySkillButtonCount=x&lt;br /&gt;
&lt;br /&gt;
Where x is the number of variable buttons desired. Unusual values for x here might cause unexpected results. It should be a non-zero, whole number. This is a global setting, meaning it will not change according to which account is logged in.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Outfit Names Can Execute Some Commands===&lt;br /&gt;
Custom outfits can trigger actions when equipped, by including one of the following strings in their name:&lt;br /&gt;
&lt;br /&gt;
 F= - change familiar&lt;br /&gt;
 E= - equip familiar item&lt;br /&gt;
 M= - change mood&lt;br /&gt;
 C= - arbitrary CLI command&lt;br /&gt;
Note that the commands are executed BEFORE the actual outfit change. [https://kol.msurl.net/?q=revision%3D6876 See r6876]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Prompt About Crafting===&lt;br /&gt;
By default mafia will issue a prompt when you are going to spend an adventure crafting, until mafia is told it&#039;s okay. Once you say it is okay you will not receive a prompt the next time. This behavior can be modified by using the alwaysPromptAboutCrafting property.&lt;br /&gt;
&lt;br /&gt;
 set promptAboutCrafting = 1 (default)&lt;br /&gt;
 set promptAboutCrafting = 2 (always prompt)&lt;br /&gt;
 set promptAboutCrafting = 0 (never prompt)&lt;br /&gt;
&lt;br /&gt;
Issue the command without the part in parenthesis. I only added that to advise you on its meaning.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Quests: Doc Galaktik&#039;s Quest===&lt;br /&gt;
By default Doc Galaktik&#039;s quest to find medicinal herbs will be accepted by KoLmafia when you ascend. If you want to turn this off...&lt;br /&gt;
&lt;br /&gt;
 set autostartGalaktikQuest = false&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Resting in Chateau vs Campground===&lt;br /&gt;
If you have access to Chateau Mantegna, KoLmafia will rest there by default instead of the campground. If you want to rest only at the campground (maybe you have really nice housing) you can tell mafia to do that with this command:&lt;br /&gt;
&lt;br /&gt;
 set restUsingChateau = false&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Save window size ===&lt;br /&gt;
You can save the size of the KoLmafia window. This is especially useful for people with smaller monitors. This preference is character specific so you will need to use the following CLI command for each character.&lt;br /&gt;
&lt;br /&gt;
 set rememberDesktopSize = true&lt;br /&gt;
&lt;br /&gt;
When it is not set, KoLmafia will determine the size of windows at startup.  In the case of variable sized windows (such as the panel containing Daily Deeds) the computed size is too big for small displays.  Setting this to true will remember the last size of the main window and use it instead of a computed size.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Shadow Noodles===&lt;br /&gt;
Stationary buttons and automatic combat entangling will not normally use Shadow Noodles since it is so expensive. If you want Shadow Noodles to be used you need to enable it in preferences.&lt;br /&gt;
&lt;br /&gt;
 set considerShadowNoodles = true&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Use Huggler Channel===&lt;br /&gt;
Normally all messages on Huggler Radio are displayed in the /pvp channel. If you want Mafia to split out the Huggler Radio into it&#039;s own channel, you can enable that with:&lt;br /&gt;
&lt;br /&gt;
 set useHugglerChannel = true&lt;/div&gt;</summary>
		<author><name>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Ends_with&amp;diff=8956</id>
		<title>Ends with</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Ends_with&amp;diff=8956"/>
		<updated>2021-01-11T12:42:47Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;{{{{{format|Function2}}}&lt;br /&gt;
|name=ends_with&lt;br /&gt;
|function1.return_type=boolean&lt;br /&gt;
|function1.description=Checks whether a string ends with a suffix string. (case-sensitive)&lt;br /&gt;
|function1.param1=value&lt;br /&gt;
|function1.param1.type=string&lt;br /&gt;
|function1.param1.description=String to check&lt;br /&gt;
|function1.param2=suffix&lt;br /&gt;
|function1.param2.type=string&lt;br /&gt;
|function1.param2.description=Suffix to search for&lt;br /&gt;
|description=This function was added in [https://kolmafia.us/threads/17911-add-ash-convenience-functions-boolean-starts_with-string-value-string-prefi.21624/ r17911].&lt;br /&gt;
|code1={{CodeSample&lt;br /&gt;
  |title=Code Samples&lt;br /&gt;
  |description=The following function call will return &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;:&lt;br /&gt;
  |code=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;d&amp;quot;&amp;gt;&lt;br /&gt;
ends_with( &amp;quot;The quick brown fox jumps over the lazy dog&amp;quot;, &amp;quot;lazy dog&amp;quot; );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
  |moreinfo=&lt;br /&gt;
}}&lt;br /&gt;
|see_also={{SeeAlso/Substring Search}}&lt;br /&gt;
|cli_equiv=&lt;br /&gt;
|more_info=&lt;br /&gt;
|special=&lt;br /&gt;
|{{{1|}}}&lt;br /&gt;
}}&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
[[Category:String Handling Routines]]&lt;/div&gt;</summary>
		<author><name>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Run_turn&amp;diff=8512</id>
		<title>Run turn</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Run_turn&amp;diff=8512"/>
		<updated>2019-10-28T05:43:57Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|run_turn}}{{&lt;br /&gt;
#vardefine:return_type|buffer}}{{&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;
return_type={{#var:return_type}}|&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function_description=Will work as [[run_combat|run_combat()]] or [[run_choice|run_choice(-1)]] depending on whether you are in combat or in a choice. Proceeds to run a choice or combat, using your current KoLmafia settings. This function returns the HTML from the page (not just what is displayed, but all markup).  Most commonly used to finish up adventures started via [[visit_url|visit_url()]].&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Typing &amp;quot;ashq run_turn()&amp;quot; into the CLI will finish up the adventure for you using your KoLMafia settings.  Note that &amp;quot;ashq&amp;quot; is necessary rather than &amp;quot;ash&amp;quot; to avoid spewing the entire results page into the CLI.|&lt;br /&gt;
&lt;br /&gt;
code1={{CodeSample|&lt;br /&gt;
title=Code Sample|&lt;br /&gt;
description=This code converts your current location to its url and initiates a turn there. Whether a choice or combat, it will complete the adventure and capture the page text.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
void run_adv(location place)&lt;br /&gt;
{&lt;br /&gt;
   string page_text = to_url(place).visit_url();&lt;br /&gt;
   page_text = run_turn();&lt;br /&gt;
}&lt;br /&gt;
run_adv(my_location());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
see_also={{SeeAlso|adventure|adv1|visit_url|run_combat|run_choice|my_location}}|&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Adventuring]]&lt;/div&gt;</summary>
		<author><name>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Get_shop_log&amp;diff=8533</id>
		<title>Get shop log</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Get_shop_log&amp;diff=8533"/>
		<updated>2017-12-27T07:12:11Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|get_shop_log}}{{&lt;br /&gt;
#vardefine:return_type|string [int]}}{{&lt;br /&gt;
#vardefine:aggregate|yes}}{{&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=Returns a map of transactions in your store, keyed by the line number each is found on in your store log|&lt;br /&gt;
&lt;br /&gt;
code1={{CodeSample|&lt;br /&gt;
title=Code Sample|&lt;br /&gt;
description=The following will print all lines in the shop log where the transaction amount was larger than 500,000 meat|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
void write_big_sales(int limit) {&lt;br /&gt;
    string[int] shopLog = get_shop_log();&lt;br /&gt;
    matcher meat_gain;&lt;br /&gt;
    string pattern = &amp;quot;for (\\d+) Meat&amp;quot;;&lt;br /&gt;
    int meat;&lt;br /&gt;
    &lt;br /&gt;
    foreach i in shopLog {&lt;br /&gt;
        meat_gain = create_matcher(pattern, shopLog[i]);&lt;br /&gt;
        if (find(meat_gain)) {&lt;br /&gt;
            meat = to_int(group(meat_gain, 1));&lt;br /&gt;
            if (meat &amp;gt;= limit) {&lt;br /&gt;
                print_html(&amp;quot;&amp;lt;font color=0000FF&amp;gt;&amp;quot; +  i + &amp;quot; - &amp;quot; + shopLog[i] + &amp;quot;&amp;lt;/font&amp;gt;&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void main() {&lt;br /&gt;
    write_big_sales(500000);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}|&lt;br /&gt;
&lt;br /&gt;
see_also={{SeeAlso|get_shop|create_matcher|group}}|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Item Management]]&lt;/div&gt;</summary>
		<author><name>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Get_shop_log&amp;diff=8532</id>
		<title>Get shop log</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Get_shop_log&amp;diff=8532"/>
		<updated>2017-12-27T07:06:28Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|get_shop_log}}{{&lt;br /&gt;
#vardefine:return_type|string [int]}}{{&lt;br /&gt;
#vardefine:aggregate|yes}}{{&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=Returns a map of transactions in your store, keyed by the line number each is found on in your store log|&lt;br /&gt;
&lt;br /&gt;
code1={{CodeSample|&lt;br /&gt;
title=Code Sample|&lt;br /&gt;
description=The following will print all lines in the shop log where the transaction amount was larger than 500,000 meat|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
void write_big_sales(int limit) {&lt;br /&gt;
    string[int] shopLog = get_shop_log();&lt;br /&gt;
    matcher meat_gain;&lt;br /&gt;
    string pattern = &amp;quot;for (\\d+) Meat&amp;quot;;&lt;br /&gt;
    int meat;&lt;br /&gt;
    &lt;br /&gt;
    foreach i in shopLog {&lt;br /&gt;
        meat_gain = create_matcher(pattern, shopLog[i]);&lt;br /&gt;
        if (find(meat_gain)) {&lt;br /&gt;
            meat = to_int(group(meat_gain, 1));&lt;br /&gt;
            if (meat &amp;gt;= limit) {&lt;br /&gt;
                print_html(&amp;quot;&amp;lt;font color=0000FF&amp;gt;&amp;quot; +  i + &amp;quot; - &amp;quot; + shopLog[i] + &amp;quot;&amp;lt;/font&amp;gt;&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void main() {&lt;br /&gt;
    write_big_sales(500000);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}|&lt;br /&gt;
&lt;br /&gt;
see_also={{SeeAlso|get_shop|create_matcher|group}}|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:]]&lt;/div&gt;</summary>
		<author><name>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Current_hit_stat&amp;diff=2371</id>
		<title>Current hit stat</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Current_hit_stat&amp;diff=2371"/>
		<updated>2017-12-27T06:57:54Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|current_hit_stat}}{{&lt;br /&gt;
#vardefine:return_type|stat}}{{&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=Returns the stat (muscle, mysticality or moxie) that is currently being used to calculate hit percentages. This is most likely to be useful in consult ccs scripts, or scripts designed to optimise equipment usage.|&lt;br /&gt;
&lt;br /&gt;
code1={{CodeSample|&lt;br /&gt;
title=Code Samples|&lt;br /&gt;
description=Checks to ensure your mainstat and hit stat are the same - to make sure you have the right type of weapon equipped. This only applies to muscle and moxie classes, so it checks to make sure you are not a mysticality class first.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
if(my_primestat() != $stat[mysticality]) {&lt;br /&gt;
   if(current_hit_stat() != my_primestat()) {&lt;br /&gt;
      print(&amp;quot;You could probably select a more effective weapon!&amp;quot;);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
see_also={{SeeAlso|my_primestat|buffed_hit_stat}}|&lt;br /&gt;
special=When not logged in, this function returns $stat[muscle].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Your Character]]&lt;/div&gt;</summary>
		<author><name>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Buffed_hit_stat&amp;diff=2383</id>
		<title>Buffed hit stat</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Buffed_hit_stat&amp;diff=2383"/>
		<updated>2017-12-27T06:57:16Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|buffed_hit_stat}}{{&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;
}}|&lt;br /&gt;
&lt;br /&gt;
function_description=Returns the buffed value of the stat that is currently used to calculate hit percentages. Note, ranged weapons use moxie to calculate hit percentage, melee weapons use muscle.|&lt;br /&gt;
&lt;br /&gt;
code1={{CodeSample|&lt;br /&gt;
title=Code Samples|&lt;br /&gt;
description=This code will check your hit percentage against every monster in a specified location to make sure it is 50% or over for every monster.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
boolean safe_to_attack() {&lt;br /&gt;
   int x = buffed_hit_stat();&lt;br /&gt;
   monster [int] monster_list = get_monsters($location[Fantasy Airship]);&lt;br /&gt;
   foreach int in monster_list {&lt;br /&gt;
      float fumble = 1/22;&lt;br /&gt;
      float hit_percentage = (((6 + (x - monster_defense(monster_list[int]))) / 10.5) * (100 - fumble));&lt;br /&gt;
      if(hit_percentage &amp;lt; 50) {&lt;br /&gt;
         return false;&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
   return true;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
see_also={{SeeAlso|get_monsters|monster_defense|current_hit_stat}}|&lt;br /&gt;
more_info=http://kol.coldfront.net/thekolwiki/index.php/Hit_Chance|&lt;br /&gt;
special=This function returns 0 when not logged in.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Your Character]]&lt;/div&gt;</summary>
		<author><name>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Modifier_Functions&amp;diff=5853</id>
		<title>Modifier Functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Modifier_Functions&amp;diff=5853"/>
		<updated>2017-12-17T22:27:04Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;These functions allow access to the raw modifiers known to KoLmafia.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;For more information on what modifiers exist, please see [[Modifiers]].&amp;lt;/p&amp;gt;&lt;br /&gt;
{{flink|boolean|boolean_modifier|string|string}}&lt;br /&gt;
{{flink|boolean|boolean_modifier|item|string|desc=Access to boolean modifiers.}}&lt;br /&gt;
{{flink|class|class_modifier|string|string}}&lt;br /&gt;
{{flink|class|class_modifier|item|string|desc=Access to modifiers that return one of the six classes (e.g. &amp;quot;Class&amp;quot;).}}&lt;br /&gt;
{{flink|effect|effect_modifier|string|string}}&lt;br /&gt;
{{flink|effect|effect_modifier|item|string|desc=Access to modifiers that return an effect(e.g. &amp;quot;Intrinsic Effect&amp;quot; or, introduced more recently, &amp;quot;Effect&amp;quot;).}}&lt;br /&gt;
{{flink|float|numeric_modifier|string|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|modifier_eval|string}}&lt;br /&gt;
{{flink|float|numeric_modifier|familiar|string|int|item|desc=Access to numeric modifiers.}}&lt;br /&gt;
{{flink|stat|stat_modifier|effect|string|desc=Access to modifiers that return one of the stats (e.g. &amp;quot;Equalize&amp;quot;).}}&lt;br /&gt;
{{flink|string|string_modifier|string}}&lt;br /&gt;
{{flink|string|string_modifier|string|string|desc=Access to string modifiers.}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting]]&lt;/div&gt;</summary>
		<author><name>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=User_confirm&amp;diff=2815</id>
		<title>User confirm</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=User_confirm&amp;diff=2815"/>
		<updated>2017-11-19T12:40:28Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|user_confirm}}{{&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|string|message}}|&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|string|message}}|&lt;br /&gt;
parameter2={{Param|int|timeOutMillis}}|&lt;br /&gt;
parameter3={{Param|boolean|defaultValue}}|&lt;br /&gt;
p1desc={{pspan|message}} is the text to display in the confirmation pop-up|&lt;br /&gt;
p2desc={{pspan|timeOutMillis}} the length of time to display the dialog, in milliseconds|&lt;br /&gt;
p3desc={{pspan|defaultValue}} the value to return if the user does not choose an input before &amp;lt;b&amp;gt;timeOutMillis&amp;lt;/b&amp;gt; ms|&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
function_description=Presents the user with a pop-up dialog box with the text in {{pspan|message}} (can use escaped characters, such as &amp;quot;&amp;lt;nowiki&amp;gt;\n&amp;lt;/nowiki&amp;gt;&amp;quot; for a newline); returns true if the user selects &amp;quot;Yes&amp;quot; and false if the user selects &amp;quot;No.&amp;quot;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If you wish for the dialog to &amp;quot;time out&amp;quot; and return a default value if the user does not select an option, use the three-parameter version.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Please use these sparingly, as it can defeat the purpose of scripting if the user must constantly provide information during execution.|&lt;br /&gt;
&lt;br /&gt;
code1={{CodeSample|&lt;br /&gt;
title=Code Sample|&lt;br /&gt;
description=A check to see if the user truly wants to execute a script.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
if (!user_confirm(&amp;quot;Are you sure you want to proceed with executing this script?&amp;quot;) )&lt;br /&gt;
{&lt;br /&gt;
   abort(&amp;quot;Script execution canceled by user.&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}|&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Miscellaneous Functions]]&lt;/div&gt;</summary>
		<author><name>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Svn_info&amp;diff=8420</id>
		<title>Svn info</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Svn_info&amp;diff=8420"/>
		<updated>2017-10-17T06:36:04Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|svn_info}}{{&lt;br /&gt;
#vardefine:return_type|record}}{{&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|string|projectname}}|&lt;br /&gt;
p1desc={{Pspan|projectname}} is the name of a project which may exist on an SVN repo|&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
function_description=Provides information about a given project. {{Pspan|projectname}} will match any unique substring of any project in the /svn folder, but it is case sensitive. It returns a record with five fields:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
record {&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 last_changed_author; // The author who committed the last change&lt;br /&gt;
   int last_changed_rev;       // The revision that most recently modified this working copy (note, not necessarily the same as revision field)&lt;br /&gt;
   string last_changed_date;   // The date/time when lastChangedRevision happened&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;|&lt;br /&gt;
&lt;br /&gt;
code1={{CodeSample|&lt;br /&gt;
title=Code Sample|&lt;br /&gt;
description=Checks svn repo for a project|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
print( &amp;quot;To install ChIT, copy/paste the following line into your CLI and hit enter.&amp;quot; );&lt;br /&gt;
print( &amp;quot;svn checkout &amp;quot; + svn_info( &amp;quot;mafiachit&amp;quot; ).url, &amp;quot;blue&amp;quot; );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}|&lt;br /&gt;
cli_equiv=The CLI command &amp;quot;svn list&amp;quot; provides a list of all installed scripts.|&lt;br /&gt;
see_also={{SeeAlso|svn_exists|svn_at_head}}|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Miscellaneous Functions]]&lt;/div&gt;</summary>
		<author><name>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=User_talk:Aventuristo&amp;diff=8516</id>
		<title>User talk:Aventuristo</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=User_talk:Aventuristo&amp;diff=8516"/>
		<updated>2017-09-28T04:43:37Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi!  I signed up for this wiki because I wanted to make some nontrivial changes to the way the ASH function documentation is arranged.  I basically want to make a page for each data type, combining the basic description from the Data Types page, a list of related functions, and (if applicable) a list of proxy record fields.  I&#039;ve put an example of what I want to do at [[Talk:Item]].  Check it out and let me know what you think!&lt;br /&gt;
&lt;br /&gt;
--[[User:Aventuristo|Aventuristo]] ([[User talk:Aventuristo|talk]]) 21:59, 27 September 2017 (EDT)&lt;br /&gt;
&lt;br /&gt;
Personally, I don&#039;t see why not.  It seems it would be an improvement, which one would assume is a good thing. I doubt such changes would be reverted by anyone, if that is why you are asking before doing it.  This wiki seems somewhat abandoned lately.  The people who could give a definitive answer seem to be MIA.&lt;br /&gt;
&lt;br /&gt;
Looking at your proposed template, my only thought was that it might be nice to add some boilerplate to each type briefly explaining what proxy records are and how to use them.  But maybe that&#039;s just me.&lt;br /&gt;
&lt;br /&gt;
--[[User:AlbinoRhino|AlbinoRhino]] ([[User talk:AlbinoRhino|talk]]) 00:43, 28 September 2017 (EDT)&lt;/div&gt;</summary>
		<author><name>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Sell_price&amp;diff=7527</id>
		<title>Sell price</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Sell_price&amp;diff=7527"/>
		<updated>2017-07-09T22:44:38Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: update code sample&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=int|&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.seller;&lt;br /&gt;
      string token = master.token;&lt;br /&gt;
      int price = sell_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>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Sell_price&amp;diff=7526</id>
		<title>Sell price</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Sell_price&amp;diff=7526"/>
		<updated>2017-07-09T22:42:54Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: correct return type&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=int|&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>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Buy_price&amp;diff=7523</id>
		<title>Buy price</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Buy_price&amp;diff=7523"/>
		<updated>2017-07-09T22:42:31Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: correct return type&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=int|&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>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Help:To_Do_List&amp;diff=7840</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=7840"/>
		<updated>2017-05-25T01:16:21Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: &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;
&lt;br /&gt;
 &#039;&#039;&#039;test CLI commands:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 r14764: add &amp;quot;test xpath&amp;quot; to, well, test xpath expressions&lt;br /&gt;
 r14767: Expose an xpath function that relay scripts can use after they&#039;ve invoked visit_url().&lt;br /&gt;
 http://kolmafia.us/showthread.php?16722-the-DOM-regex-scalability-and-other-jargony-words&lt;br /&gt;
 http://kolmafia.us/showthread.php?16764-xpath-primer&lt;br /&gt;
 &lt;br /&gt;
 r14967: Add &amp;quot;test mchat&amp;quot; command which can be used after &amp;quot;test load JSONFILE&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 This is how test newitem is used!&lt;br /&gt;
 http://kolmafia.us/showthread.php?17365-When-detecting-new-items-detect-new-outfits-too&amp;amp;p=119368&amp;amp;viewfull=1#post119368&lt;br /&gt;
  r15741, Now &amp;quot;test newitem descId&amp;quot; no longer requires itemId.&lt;br /&gt;
 &lt;br /&gt;
 r15176: Add &amp;quot;test adventure URL&amp;quot; CLI command to see how we translate the given URL&lt;br /&gt;
 &lt;br /&gt;
 r15239: Add &amp;quot;test dump_disabled_skills&amp;quot; to the gCLI to aid upcoming debugging&lt;br /&gt;
 &lt;br /&gt;
 r15606: Add &amp;quot;test encounter URL&amp;quot; command.&lt;br /&gt;
 &lt;br /&gt;
 r15874: Add &amp;quot;test leet NAME&amp;quot; command to check if KoL monster names get translated successfully from their 1337 versions.&lt;br /&gt;
 &lt;br /&gt;
 r15883: &amp;quot;test load HTMLFILE&amp;quot; followed by &amp;quot;test aagain&amp;quot; will print the Adventure Again URL from that page.&lt;br /&gt;
 &lt;br /&gt;
 r16275: &amp;quot;test visit-choice&amp;quot; now prints the various choice options available on the loaded HTML text.&lt;br /&gt;
 &lt;br /&gt;
 r16309: Add &amp;quot;test manuel&amp;quot; command which will process a loaded HTML file as if it were the response to a visit to Monster Manuel.&lt;br /&gt;
 http://kolmafia.us/showthread.php?19094-shrine-to-the-Barrel-god-(Sept-2015-IotM)&amp;amp;p=128256&amp;amp;viewfull=1#post128256&lt;br /&gt;
 &lt;br /&gt;
 r15928: Add &amp;quot;test monster&amp;quot; command to parse the monster out of the saved HTML and save&lt;br /&gt;
 it where ASH&#039;s last_monster() function will fetch it.&lt;br /&gt;
 &lt;br /&gt;
 r16496: Add &amp;quot;test spleen X&amp;quot; to set your current spleen use to X (as far as KoLmafia knows; obviously it does not actually change KoL&#039;s value).&lt;br /&gt;
 &lt;br /&gt;
 r16508: Add &amp;quot;test numberology adventureDelta spleenDelta&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 r16519: Add &amp;quot;test stats X&amp;quot; to set all three stat values to X substats (if X &amp;gt; 0).&lt;br /&gt;
 &lt;br /&gt;
 r17296: Add &amp;quot;test cookies&amp;quot; command to see values of the &amp;quot;special&amp;quot; cookies we track.&lt;br /&gt;
 &lt;br /&gt;
 r17446: Soup up &amp;quot;test crop&amp;quot; command to allow specifying current crop and test crop.&lt;br /&gt;
 Fix crop &amp;quot;is better than&amp;quot; test to only include count when comparing identical crop type&lt;br /&gt;
 &lt;br /&gt;
 r17507: Experimental: ItemDatabase keeps a set of all item ids for each item name.&lt;br /&gt;
 &amp;gt; test itemids seal tooth&lt;br /&gt;
 seal tooth has 1 itemid: 2&lt;br /&gt;
 &amp;gt; test itemids Staff of Ed&lt;br /&gt;
 Staff of Ed has 2 itemids: 2325, 7961&lt;br /&gt;
 &amp;gt; test itemids ancient amulet&lt;br /&gt;
 ancient amulet has 2 itemids: 2180, 7963&lt;br /&gt;
 &lt;br /&gt;
 r17520 does the same for effects:&lt;br /&gt;
 &amp;gt; test effectids Got Milk&lt;br /&gt;
 Got Milk has 1 effectid: 211&lt;br /&gt;
 &amp;gt; test effectids A Little Bit Evil&lt;br /&gt;
 A Little Bit Evil has 6 effectids: 597, 598, 599, 600, 601, 602&lt;br /&gt;
&lt;br /&gt;
 r15148: Track Xiblaxian holo-wrist-puter drops in &#039;&#039;&#039;_holoWristDrops&#039;&#039;&#039;, and progress toward the next drop in &#039;&#039;&#039;_holoWristProgress&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 r15177: Track which keys have been used on the Sorceress Tower door in a setting: &#039;&#039;&#039;nsTowerDoorKeysUsed&#039;&#039;&#039;&lt;br /&gt;
 It is a comma separated list.&lt;br /&gt;
&lt;br /&gt;
 r15238: Provide &#039;&#039;&#039;limit_mode()&#039;&#039;&#039; function that returns (currently) null or spelunky.&lt;br /&gt;
&lt;br /&gt;
 r15354: Move &amp;quot;equip all familiars&amp;quot; function from the FamiliarTrainingFrame to a new&lt;br /&gt;
 module: FamiliarManager. Let ASH use it via boolean &#039;&#039;&#039;equip_all_familiars()&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 r15440: Add &amp;quot;&#039;&#039;&#039;servants&#039;&#039;&#039;&amp;quot; command to list Ed&#039;s servants, &amp;quot;&#039;&#039;&#039;servant&#039;&#039;&#039;&amp;quot; to list status of your current servant, &lt;br /&gt;
 and &amp;quot;&#039;&#039;&#039;servant TYPE&#039;&#039;&#039;&amp;quot; to switch to the servant of the specified type.&lt;br /&gt;
&lt;br /&gt;
 r15441 adds the $servant data type to ASH and the following functions to manipulate them:&lt;br /&gt;
 &lt;br /&gt;
 int &#039;&#039;&#039;to_servant&#039;&#039;&#039;( servant )&lt;br /&gt;
 servant to_servant( int )&lt;br /&gt;
 servant to_servant( string )&lt;br /&gt;
 servant &#039;&#039;&#039;my_servant&#039;&#039;&#039;()&lt;br /&gt;
 boolean &#039;&#039;&#039;have_servant&#039;&#039;&#039;( servant )&lt;br /&gt;
 boolean &#039;&#039;&#039;use_servant&#039;&#039;&#039;( servant )&lt;br /&gt;
 &lt;br /&gt;
 Additionally, it has the following proxy fields:&lt;br /&gt;
 int id&lt;br /&gt;
 string name&lt;br /&gt;
 int level&lt;br /&gt;
 int experience&lt;br /&gt;
 string image,&lt;br /&gt;
 string level1_ability&lt;br /&gt;
 string level7_ability&lt;br /&gt;
 string level14_ability&lt;br /&gt;
 string level21_ability&lt;br /&gt;
&lt;br /&gt;
 r15466: Add &#039;&#039;&#039;chew&#039;&#039;&#039;(INT,ITEM) to ASH for cnsuming spleen toxins&lt;br /&gt;
&lt;br /&gt;
 equip [2268] will equip an item by number.&lt;br /&gt;
&lt;br /&gt;
 r15475: Add &#039;&#039;&#039;prefref&#039;&#039;&#039; as a built-in gCLI command&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 r15676: Make built-in Sorceress Tower scripts available to scripts.&lt;br /&gt;
&lt;br /&gt;
 CLI: &#039;&#039;&#039;maze&#039;&#039;&#039; [arg]&lt;br /&gt;
 CLI: &#039;&#039;&#039;door&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;hedge_maze( string )&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;tower_door()&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 The string argument for the maze can be one of:&lt;br /&gt;
 traps - 4 turns, all traps&lt;br /&gt;
 gopher or duck - 7 turns gopher and duck&lt;br /&gt;
 chihuahua or kiwi - 7 turns chihuahua and kiwi&lt;br /&gt;
 nugglets - 10 turns, all nugglets&lt;br /&gt;
&lt;br /&gt;
 r15791: The &amp;quot;pvp&amp;quot; command with no arguments will list available stances and their&lt;br /&gt;
 associated option number. You now can now specify a stance by either name or&lt;br /&gt;
 number. The &amp;quot;pvp&amp;quot; command now requires you to choose a stance, since it can&lt;br /&gt;
 no longer choose a reaosnable default based on your stats.&lt;br /&gt;
&lt;br /&gt;
 r15796: Add ASH function: &#039;&#039;&#039;int [string] current_pvp_stances()&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 r15840: Provide  ASH &#039;&#039;&#039;string leetify( string )&#039;&#039;&#039; function to garble strings.&lt;br /&gt;
&lt;br /&gt;
 r15847: Add &amp;quot;Random Monster Attributes&amp;quot; modifier as provided by dice items and the&lt;br /&gt;
 Curse of Randomness status effect. Add random_attributes proxy field to ASH&lt;br /&gt;
 $monster type. Munge random attributes from monster names is the Random Monster&lt;br /&gt;
 Attribute modifier is &amp;gt; 0, not only if current path is One Crazy Random Summer.&lt;br /&gt;
&lt;br /&gt;
 r15922: Add Familiar Script. This script will run after changing familiars, before &lt;br /&gt;
 automatically changing familiar equipment. The script should have a boolean main() function. &lt;br /&gt;
 Returning true will cause normal familiar equipiment switching to be skipped,&lt;br /&gt;
 while false will lead to it running after the script returns.&lt;br /&gt;
&lt;br /&gt;
 r15937: Add mayosoak command&lt;br /&gt;
&lt;br /&gt;
 r15959: Add knowledge of familiar drop counters to FamiliarData, &lt;br /&gt;
 New ASH proxy fields for $familiar data type:&lt;br /&gt;
 drop_name = short name of the thing that drops&lt;br /&gt;
 drop_item = if it is a single item, the $item. Otherwise, $item[none]&lt;br /&gt;
 drops_today = how many things this familiar has dropped so far today&lt;br /&gt;
 drops_limit = the maximum number of available drops from this familiar today&lt;br /&gt;
&lt;br /&gt;
 CLI: wumpus status - Display status of last wumpus cave.&lt;br /&gt;
 r16014: Add &amp;quot;wumpus replay FILE&amp;quot; command to process the session log of a wumpus exploration and make deductions, etc.&lt;br /&gt;
 r16015: Add &amp;quot;wumpus reset&amp;quot; CLI command to clear in-memory Wumpus cave state&lt;br /&gt;
&lt;br /&gt;
 r16044:The &amp;quot;cheat&amp;quot; command is a synonym for the &amp;quot;play&amp;quot; command. options:&lt;br /&gt;
 play random - play a random card (1 draw)&lt;br /&gt;
 cheat phylum PHYLUM - cheat (5 draws) a fight with specified phylum&lt;br /&gt;
 cheat stat STAT - cheat (5 draws) 500 substats of specified stat&lt;br /&gt;
 cheat buff BUFF - cheat (5 draws) 20 turns of the specified buff, either by name&lt;br /&gt;
   or by effect: muscle, mysticality, moxie, item drop (or items), initiative&lt;br /&gt;
 cheat CARD - cheat (5 draws) the specified card name.&lt;br /&gt;
 PHYLUM, STAT, BUFF, and CARD all use fuzzy matching.&lt;br /&gt;
&lt;br /&gt;
 r16047: Track Armorer quest (Madness Bakery) as questM25Armorer.&lt;br /&gt;
&lt;br /&gt;
 r16060: Make fixed list of modifier maximizer strings configurable&lt;br /&gt;
 set maximizerList. Default value is:&lt;br /&gt;
 mainstat | mus | mys | mox | familiar weight | HP | MP | ML | DA | DR | +combat -tie | -combat -tie | initiative | exp | meat drop | item drop | 2.0 meat, 1.0 item | item, sea | weapon dmg | ranged dmg | elemental dmg | spell dmg | adv | pvp fights | hot res | cold res | spooky res | stench res | sleaze res | all res | mp regen | ML, 0.001 slime res | 4 clownosity, -tie | 7 raveosity, -tie | surgeonosity | +four songs&lt;br /&gt;
&lt;br /&gt;
 r16163: For all monsters where our name differs from Manuel&#039;s, add a new attribute: Manuel: &amp;quot;MANUEL NAME&amp;quot;&lt;br /&gt;
 Add .manuelName proxy field for ASH $monster data type&lt;br /&gt;
 &lt;br /&gt;
 Add &amp;quot;&#039;&#039;&#039;checkmanuel&#039;&#039;&#039;&amp;quot; command which will look up all of you&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;int monster_factoids_available( monster )&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 returns number of factoids currently retained in memory. Note that this&lt;br /&gt;
 can be more than the currently logged in character knows, since we don&#039;t&lt;br /&gt;
 flush the factoids from a previous login if you know all three factoids.&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;string monster_manuel_text( monster )&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 returns the full HTML of the monster manuel entry for the given&lt;br /&gt;
 monster. As above, this could have been retained from the previous&lt;br /&gt;
 character; otherwise, it will fetch and cache the text.&lt;br /&gt;
&lt;br /&gt;
 r16166: Add ASH function: &#039;&#039;&#039;boolean [monster] all_monsters_with_id()&#039;&#039;&#039; &lt;br /&gt;
 &lt;br /&gt;
 returns a map of all monsters that have a non-zero monster ID. It builds this&lt;br /&gt;
 afresh every time you call it, since new monsters can be (temporarily) added&lt;br /&gt;
&lt;br /&gt;
 r16169: Add MonsterManuelManager.flushCache()and expose it to ASH via flush_&#039;&#039;&#039;monster_manuel_cache()&#039;&#039;&#039; function.&lt;br /&gt;
 Add a second parameter to MonsterManuelManager.getFactoidsAvailable: boolean&lt;br /&gt;
 cachedOnly says &amp;quot;don&#039;t look on the page if the monster is not in the cache,&lt;br /&gt;
 because we have already looked at the page and the monster wasn&#039;t there.&amp;quot;&lt;br /&gt;
 Expose this to ASH by changing &#039;&#039;&#039;monster_factoids_available()&#039;&#039;&#039; parameters: monster, boolean&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 r16171: Add ASH function: &#039;&#039;&#039;boolean[monster] get_location_monsters(location)&#039;&#039;&#039; &lt;br /&gt;
 This has the same info as get_monsters, but returns a (perhaps) more useful aggregate value&lt;br /&gt;
&lt;br /&gt;
 r16200: &#039;&#039;&#039;Mayominder&#039;&#039;&#039; CLi command. Sets (buying if needed) Mayo Minder to a particular Mayo.&lt;br /&gt;
 Can specify Mayo name or use a description (adv, stat, food, drunk or bmc).&lt;br /&gt;
&lt;br /&gt;
 r16218: Add ASH function &#039;&#039;&#039;get_stash()&#039;&#039;&#039; to retrieve cached view of clan stash&lt;br /&gt;
&lt;br /&gt;
 r16391: Add ASH &#039;&#039;&#039;skill_modifier&#039;&#039;&#039;(object, modifiername) (currently only useful for &amp;quot;Skill&amp;quot;)&lt;br /&gt;
 to interpret the specified modifier of an item as a skill object.&lt;br /&gt;
&lt;br /&gt;
 r16396, r16398 &amp;amp; r16399 : &#039;&#039;&#039;Numberology&#039;&#039;&#039; command:&lt;br /&gt;
 numberology - lists all the currently possible seeds and what they give you&lt;br /&gt;
 numberology? N - N is the desired (numeric) result you want. Tell you if it is currently available.&lt;br /&gt;
 numberology N - Attempts to get the desired result.&lt;br /&gt;
 For both of these, if it is not currently available, tells you in how many turns it will be available.&lt;br /&gt;
&lt;br /&gt;
 16481: Add $vykea type to ASH&lt;br /&gt;
 vykea my_vykea_companion( )&lt;br /&gt;
 int to_int( vykea )&lt;br /&gt;
 vykea to_vykea( strict_string )&lt;br /&gt;
&lt;br /&gt;
 r16790: Add ASH function int [int] reverse_numberology([int adv_delta, int spleen_delta]).&lt;br /&gt;
 The return value is a map from result IDs to input seeds that generate said results.&lt;br /&gt;
 adv_delta and spleen_delta, which both default to 0, allow one to obtain forecasts on upcoming options.&lt;br /&gt;
 http://kolmafia.us/showthread.php?19664-ASH-command(s)-for-Numberology&amp;amp;p=133467&amp;amp;viewfull=1#post133467&lt;br /&gt;
&lt;br /&gt;
 r17909: Add ASH function: string numberology_prize( number )&lt;br /&gt;
&lt;br /&gt;
 r16800: Add multi-line string support to ASH. In order to specify a multi-line string, &lt;br /&gt;
 you must explicitly escape the end-of-line by placing a backslash (\) at the end of the line.&lt;br /&gt;
 &lt;br /&gt;
 Note that as a consequence of how the parser is written, it will trim all&lt;br /&gt;
 leading and trailing whitespace for each of these lines via Java&#039;s&lt;br /&gt;
 String.trim() method. Previously, this was irrelevant in the context of ASH&lt;br /&gt;
 strings, but now that ASH strings can span multiple lines, it is worth&lt;br /&gt;
 mentioning. If you want to have whitespace at the beginning of the line,&lt;br /&gt;
 just escape the first character of the line.&lt;br /&gt;
&lt;br /&gt;
 r16866: Add aggregate literals to ASH.&lt;br /&gt;
 http://kolmafia.us/showthread.php?20103-16866-Add-aggregate-literals-to-ASH-The-main-use-of-these-is-likely-for-initializa&lt;br /&gt;
 http://kolmafia.us/showthread.php?10685-Map-literals-in-ASH-(potential-feature)&amp;amp;p=134150#post134150&lt;br /&gt;
 &lt;br /&gt;
 r17658: http://kolmafia.us/showthread.php?10685-Map-literals-in-ASH-(potential-feature)&amp;amp;p=140128#post140128&lt;br /&gt;
&lt;br /&gt;
 r16886: Add &#039;&#039;&#039;witchess&#039;&#039;&#039; command to get Puzzle Champ. This only works if you have solved all puzzles.&lt;br /&gt;
&lt;br /&gt;
 r17023: Add terminal gCLI command&lt;br /&gt;
&lt;br /&gt;
 r17136: Track furniture in the Clan Rumpus Room, accessible with &#039;&#039;&#039;get_clan_rumpus()&#039;&#039;&#039;. Extra Adventures and PvP Fights from furniture are tracked.&lt;br /&gt;
 If your clan has a ball pit, the last entry in get_clan_rumpus() will indicate how many balls are in it.&lt;br /&gt;
 &lt;br /&gt;
 r17471: get_clan_rumpus() now returns int [string] map of furniture names.&lt;br /&gt;
 http://kolmafia.us/showthread.php?21006-Improve-return-value-of-get_clan_rumpus()&lt;br /&gt;
&lt;br /&gt;
 r17151: Add ASH and CLI support for stocking mall stores from Hagnk&#039;s.&lt;br /&gt;
 boolean &#039;&#039;&#039;put_shop_using_storage(int price, int limit, item it)&#039;&#039;&#039;&lt;br /&gt;
 boolean &#039;&#039;&#039;put_shop_using_storage(int price, int limit, int qty, item it)&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 and extends the CLI commands mallsell and shop.&lt;br /&gt;
 put_shop() works by batching requests for &amp;quot;shop put&amp;quot;. Similarly, buy_using_storage() puts together requests via &amp;quot;buy using storage&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 r17283: Add &amp;quot;timespinner&amp;quot; command courtesy of lost. &lt;br /&gt;
 Add &amp;quot;timespinner&amp;quot; command courtesy of lost.&lt;br /&gt;
 timespinner list food -&amp;gt; list available foods&lt;br /&gt;
 timespinner eat FOOD -&amp;gt; Spin and Munch on the specified food&lt;br /&gt;
 &lt;br /&gt;
 r17284: Allow pranking with timespinner&lt;br /&gt;
 &lt;br /&gt;
 r17286: Add &amp;quot;timespinner list monsters [filter]&amp;quot;. This will show all monsters that should be available in the Time-Spinner, optionally filtered (case-insensitive).&lt;br /&gt;
&lt;br /&gt;
 r17290: Add traceprint( string) ASH function&lt;br /&gt;
&lt;br /&gt;
 r17454: Experimental ASH feature: allow X++, X--, ++X, and --X with their normal meanings: post-increment, post-decrement, pre-increment, and pre-decrement.&lt;br /&gt;
&lt;br /&gt;
 r17460: Add Java-style &amp;quot;for&amp;quot; loop:&lt;br /&gt;
 for (INIT [, INIT]* ; CONDITION ; ITERATE [, ITERATE]* ) BODY&lt;br /&gt;
 You can have 0 or more INIT statements, which can be of the form&lt;br /&gt;
 X = EXP (where X is declared already) or&lt;br /&gt;
 TYPE X = EXP (whre X of type TYPE will be declared for use in the BODY scope).&lt;br /&gt;
 &lt;br /&gt;
 You can have 0 or more ITERATE statements, which can be of the form&lt;br /&gt;
 X++ or X--&lt;br /&gt;
 ++X or -- X&lt;br /&gt;
 X OPER EXP (where OPER can be =, +=, -=, etc.&lt;br /&gt;
 &lt;br /&gt;
 BODY can be a single statement ending with a ; or a block enclosed in {}, with no ; at the end, just like and other loop.&lt;br /&gt;
 &lt;br /&gt;
 break, continue, return, or exit are allowed within BODY, just like any loop.&lt;br /&gt;
&lt;br /&gt;
 r17477: Add boolean &#039;&#039;&#039;can_still_steal()&#039;&#039;&#039; function to ASH, which calls the same function &lt;br /&gt;
 that Stationary Buttons use do decide whether to enable or disable the &amp;quot;steal&amp;quot; button&lt;br /&gt;
&lt;br /&gt;
 r17612: ASH has a function to return all the candy in a given tier:&lt;br /&gt;
 item [int] &#039;&#039;&#039;candy_for_tier&#039;&#039;&#039;( int tier )&lt;br /&gt;
 The &amp;quot;&#039;&#039;&#039;checkcandy&#039;&#039;&#039;&amp;quot; command will list all unspaded candy or will tell you the candy type of each of its arguments.&lt;br /&gt;
&lt;br /&gt;
 r17613: More Sweet Synthesis stuff: ASH functions:&lt;br /&gt;
 boolean &#039;&#039;&#039;sweet_synthesis&#039;&#039;&#039;( item candy1, item candy2 )&lt;br /&gt;
 effect &#039;&#039;&#039;sweet_synthesis_result&#039;&#039;&#039;( item candy1, item candy2 )&lt;br /&gt;
 item [int] &#039;&#039;&#039;sweet_synthesis_pairings&#039;&#039;&#039;( effect result, item candy1 )&lt;br /&gt;
&lt;br /&gt;
 r17629: Add candy_for_tier() and sweet_synthesis_pairing() ASH functions that have a &amp;quot;flags&amp;quot; argument, &lt;br /&gt;
 in which you can specify filtering. 0 = no filtering, 1 = available, 2 = allowed, 3 = available and allowed.&lt;br /&gt;
&lt;br /&gt;
 r17637: Add &amp;quot;synthesize&amp;quot; command: synthesize CANDY1, CANDY2 - combines candies to get an effect&lt;br /&gt;
 synthesize? CANDY1, CANDY2 - tells you about the candies and the effect&lt;br /&gt;
&lt;br /&gt;
 r17644: To automatically select pairs of candy, add some ASH functions:&lt;br /&gt;
 item [int] sweet_synthesis_pair( effect )&lt;br /&gt;
 item [int] sweet_synthesis_pair( effect, flags )&lt;br /&gt;
 &lt;br /&gt;
 For the desired effect, pick a suitable pair of candies.&lt;br /&gt;
 If you are in-run, it will use only &amp;quot;available&amp;quot; candy and will prefer candies that you have more of.&lt;br /&gt;
 If you are post-run, it will consider all candies and will choose the pair with the lowest total mall price.&lt;br /&gt;
 If you want to force &amp;quot;available&amp;quot; candies post-run, use flags = 1.&lt;br /&gt;
 &lt;br /&gt;
 boolean sweet_synthesis( effect )&lt;br /&gt;
 boolean sweet_synthesis( effect, flags )&lt;br /&gt;
 &lt;br /&gt;
 The same, but it will actually perform Sweet Synthesis to get the effect.&lt;br /&gt;
 &lt;br /&gt;
 http://kolmafia.us/showthread.php?21144-Rethinking-Candy&amp;amp;p=139996&amp;amp;viewfull=1#post139996&lt;br /&gt;
&lt;br /&gt;
 r17645: Add CLI commands: &lt;br /&gt;
 synthesize EFFECT&lt;br /&gt;
 synthesize? EFFECT&lt;br /&gt;
&lt;br /&gt;
 r17673: Add &amp;quot;shop reprice&amp;quot; command and reprice_shop() ash function&lt;br /&gt;
&lt;br /&gt;
 r17677: edpiece? command tells you the effects of the various decorations, as well as telling you which one is currently equipped.&lt;br /&gt;
&lt;br /&gt;
 r17817: Added CLI command &amp;quot;absorb&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 r17819: Add ASH function to interface to KoL&#039;s /count chat command:&lt;br /&gt;
 int slash_count( item it )&lt;br /&gt;
&lt;br /&gt;
 r17845: Add my_absorbs() ash function&lt;br /&gt;
&lt;br /&gt;
 r17892: Add a bunch of ASH support for doing interesting things with properties:&lt;br /&gt;
 http://kolmafia.us/showthread.php?21570-Properties&amp;amp;p=141625&amp;amp;viewfull=1#post141625 &lt;br /&gt;
 http://kolmafia.us/showthread.php?21570-Properties&amp;amp;p=141629&amp;amp;viewfull=1#post141629&lt;br /&gt;
 &lt;br /&gt;
 boolean [string] get_all_properties( string filter, boolean global )&lt;br /&gt;
 boolean property_exists( string name )&lt;br /&gt;
 boolean property_exists( string name, boolean global )&lt;br /&gt;
 boolean property_has_default( string name )&lt;br /&gt;
 string property_default_value( string name )&lt;br /&gt;
 string get_property( string name, boolean global )&lt;br /&gt;
 string remove_property( string name )&lt;br /&gt;
 string remove_property( string name, boolean global )&lt;br /&gt;
 boolean rename_property( string old_name, string new_name )&lt;br /&gt;
&lt;br /&gt;
 r17911: Add ASH convenience functions: &lt;br /&gt;
 boolean starts_with( string value, string prefix );&lt;br /&gt;
 boolean ends_with( string value, string suffix );&lt;br /&gt;
&lt;br /&gt;
 r17912: Add ASH function to get the full unambiguous card name from the Deck of Every Card:&lt;br /&gt;
 string every_card_name( string name )&lt;br /&gt;
&lt;br /&gt;
 r17921: Add ASH get_closet() and get_storage() commands:&lt;br /&gt;
 int [item] get_closet();&lt;br /&gt;
 int [item] get_storage();&lt;br /&gt;
&lt;br /&gt;
 r17936: Add ASH function: void mood_execute( int multiplicity )&lt;br /&gt;
 multiplicity determines the minimum number of casts (or items) a given trigger will use; if&lt;br /&gt;
 the mood trigger is &amp;quot;cast 1 SKILL&amp;quot;, multiplicty 3 will treat it as &amp;quot;cast 3 SKILL&amp;quot;.&lt;br /&gt;
 multiplicity = -1 is what KoLmafia uses internally for between battle checks.&lt;br /&gt;
 multiplicity = 0 is what the CLI command &amp;quot;mood execute&amp;quot; uses.&lt;br /&gt;
&lt;br /&gt;
 r17937-8: Add ASH function: string [int] available_choice_options( boolean spoilers )&lt;br /&gt;
 If the argument is &amp;quot;true&amp;quot;, the Relay Browser choice spoilers will be appended to KoL&#039;s choice choice text (in parentheses).&lt;br /&gt;
&lt;br /&gt;
 r17969/17970 adds the &amp;quot;spacegate&amp;quot; command.&lt;br /&gt;
 spacegate vaccine X&lt;br /&gt;
 (where X is 1, 2, or 3) will visit the Spacegate Vaccinator to get the appropriate vaccine.&lt;br /&gt;
&lt;br /&gt;
 r18000: Add ASH function: int my_session_meat() which tracks how much meat the character has gained&lt;br /&gt;
 or lost since login via character actions; mall sales and incoming kmail containing meat&lt;br /&gt;
 will increment my_meat(), but not this value.&lt;br /&gt;
&lt;br /&gt;
 r18040: When you define a map with value as a zero-length array, file_to_map can&lt;br /&gt;
 now populate it. The values will be variable-length array literals that&lt;br /&gt;
 consume all the data values from the line of your file. Thus: keyVALUE(VALUE)*&lt;br /&gt;
 &lt;br /&gt;
 You can now use foreach to iterate over an aggregate literal.&lt;br /&gt;
 &lt;br /&gt;
 http://kolmafia.us/showthread.php?21742-Best-way-to-load-questslog-txt&amp;amp;p=143001&amp;amp;viewfull=1#post143001&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;
== 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;br /&gt;
[[Category:Contributing]]&lt;/div&gt;</summary>
		<author><name>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Run_turn&amp;diff=8511</id>
		<title>Run turn</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Run_turn&amp;diff=8511"/>
		<updated>2017-05-25T01:14:50Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: Created page with &amp;quot;{{ #vardefine:name|run_turn}}{{ #vardefine:return_type|buffer}}{{  FunctionPage| name={{#var:name}}|  function1={{Function| name={{#var:name}}| return_type={{#var:return_type}...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|run_turn}}{{&lt;br /&gt;
#vardefine:return_type|buffer}}{{&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;
return_type={{#var:return_type}}|&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function_description=Will work as [[run_combat|run_combat()]] or [[run_choice|run_choice(-1)]] depending on whether you are in combat or in a choice. Proceeds to run a choice or combat, using your current KoLmafia settings. This function returns the HTML from the page (not just what is displayed, but all markup).  Most commonly used to finish up adventures started via [[visit_url|visit_url()]].&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Typing &amp;quot;ashq run_turn()&amp;quot; into the CLI will finish up the adventure for you using your KoLMafia settings.  Note that &amp;quot;ashq&amp;quot; is necessary rather than &amp;quot;ash&amp;quot; to avoid spewing the entire choice results page into the CLI.|&lt;br /&gt;
&lt;br /&gt;
code1={{CodeSample|&lt;br /&gt;
title=Code Sample|&lt;br /&gt;
description=This code converts your current location to its url and initiates a turn there. Whether a choice or combat, it will complete the adventure and capture the page text.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
void run_adv(location place)&lt;br /&gt;
{&lt;br /&gt;
   string page_text = to_url(place).visit_url();&lt;br /&gt;
   page_text = run_turn();&lt;br /&gt;
}&lt;br /&gt;
run_adv(my_location());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
see_also={{SeeAlso|adventure|adv1|visit_url|run_combat|run_choice|my_location}}|&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Adventuring]]&lt;/div&gt;</summary>
		<author><name>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Run_choice&amp;diff=8509</id>
		<title>Run choice</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Run_choice&amp;diff=8509"/>
		<updated>2017-05-25T00:45:54Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|run_choice}}{{&lt;br /&gt;
#vardefine:return_type|buffer}}{{&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|choice}}|&lt;br /&gt;
p1desc={{Pspan|choice}} is the number of the choice option you wish to take. Use &amp;quot;-1&amp;quot; to automate the rest of the choice using existing choice adventure settings.|&lt;br /&gt;
&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function_description=Proceeds to run a choice, selecting the provided choice number (or, if the provided choice number = -1, using your current KoLmafia settings). This function returns the HTML from the choice page (not just what is displayed, but all markup).  Most commonly used to finish up choices started via [[visit_url|visit_url()]].&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another handy use for this function is to finish up choices that were started in the relay browser, or were interrupted (i.e. mafia aborted for you to manually make a choice selection).  Typing &amp;quot;ashq run_choice(choice)&amp;quot; into the CLI will finish up the choice for you using your selected choice.  Note that &amp;quot;ashq&amp;quot; is necessary rather than &amp;quot;ash&amp;quot; to avoid spewing the entire choice results page into the CLI.|&lt;br /&gt;
&lt;br /&gt;
code1={{CodeSample|&lt;br /&gt;
title=Code Sample|&lt;br /&gt;
description=This is a personalized version of [[adv1|adv1()]] that is capable of returning information about which adventure is encountered so that you can look for a specific choice adventure. If a choice is encountered it selects the appropriate choice per your settings for that choice adventure and assigns the results to the page_text variable. (Effectively the same as using run_choice(-1)). If a combat is encountered instead of a choice adventure, [[run_combat|run_combat()]] is used.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
int run_adv(location place) {&lt;br /&gt;
   string page_text = to_url(place).visit_url();&lt;br /&gt;
   string choiceAdventure = &amp;quot;-1&amp;quot;;&lt;br /&gt;
   matcher m_choice = create_matcher(&amp;quot;whichchoice value=(\\d+)&amp;quot;, page_text);&lt;br /&gt;
   while(page_text.contains_text(&amp;quot;choice.php&amp;quot;)) {&lt;br /&gt;
      m_choice.reset(page_text);&lt;br /&gt;
      m_choice.find();&lt;br /&gt;
      choiceAdventure = m_choice.group(1);&lt;br /&gt;
      string choice_num = get_property(&amp;quot;choiceAdventure&amp;quot;+ choiceAdventure);&lt;br /&gt;
      &lt;br /&gt;
      if(choice_num == &amp;quot;0&amp;quot;) abort(&amp;quot;Manual Control for &amp;quot;+ choiceAdventure);&lt;br /&gt;
      if(choice_num == &amp;quot;&amp;quot;) abort(&amp;quot;Unsupported Choice Adventure!&amp;quot;);&lt;br /&gt;
      &lt;br /&gt;
      &lt;br /&gt;
      page_text = run_choice(choice_num);&lt;br /&gt;
   }&lt;br /&gt;
   if(page_text.contains_text(&amp;quot;Combat&amp;quot;))&lt;br /&gt;
      run_combat();&lt;br /&gt;
   return choiceAdventure.to_int();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
see_also={{SeeAlso|adventure|adv1|visit_url|run_combat|run_turn}}|&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Adventuring]]&lt;/div&gt;</summary>
		<author><name>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Run_choice&amp;diff=8508</id>
		<title>Run choice</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Run_choice&amp;diff=8508"/>
		<updated>2017-05-25T00:41:28Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|run_choice}}{{&lt;br /&gt;
#vardefine:return_type|buffer}}{{&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|choice}}|&lt;br /&gt;
p1desc={{Pspan|choice}} is the number of the choice option you wish to take. Use &amp;quot;-1&amp;quot; to automate the rest of the choice using existing choice adventure settings.|&lt;br /&gt;
&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function_description=Proceeds to run a choice, selecting the provided choice number (or, if the provided choice number = -1, using your current KoLmafia settings). This function returns the HTML from the choice page (not just what is displayed, but all markup).  Most commonly used to finish up choices started via [[visit_url|visit_url()]].&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another handy use for this function is to finish up choices that were started in the relay browser, or were interrupted (i.e. mafia aborted for you to manually make a choice selection).  Typing &amp;quot;ashq run_choice(choice)&amp;quot; into the CLI will finish up the choice for you using your selected choice.  Note that &amp;quot;ashq&amp;quot; is necessary rather than &amp;quot;ash&amp;quot; to avoid spewing the entire choice results page into the CLI.|&lt;br /&gt;
&lt;br /&gt;
code1={{CodeSample|&lt;br /&gt;
title=Code Sample|&lt;br /&gt;
description=This is a personalized version of [[adv1|adv1()]] that is capable of returning information about which adventure is encountered so that you can look for a specific choice adventure. If a combat is encountered instead of a choice adventure, [[run_combat|run_combat()]] is used.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
int run_adv(location place) {&lt;br /&gt;
   string page_text = to_url(place).visit_url();&lt;br /&gt;
   string choiceAdventure = &amp;quot;-1&amp;quot;;&lt;br /&gt;
   matcher m_choice = create_matcher(&amp;quot;whichchoice value=(\\d+)&amp;quot;, page_text);&lt;br /&gt;
   while(page_text.contains_text(&amp;quot;choice.php&amp;quot;)) {&lt;br /&gt;
      m_choice.reset(page_text);&lt;br /&gt;
      m_choice.find();&lt;br /&gt;
      choiceAdventure = m_choice.group(1);&lt;br /&gt;
      string choice_num = get_property(&amp;quot;choiceAdventure&amp;quot;+ choiceAdventure);&lt;br /&gt;
      &lt;br /&gt;
      if(choice_num == &amp;quot;0&amp;quot;) abort(&amp;quot;Manual Control for &amp;quot;+ choiceAdventure);&lt;br /&gt;
      if(choice_num == &amp;quot;&amp;quot;) abort(&amp;quot;Unsupported Choice Adventure!&amp;quot;);&lt;br /&gt;
      &lt;br /&gt;
      &lt;br /&gt;
      page_text = run_choice(choice_num);&lt;br /&gt;
   }&lt;br /&gt;
   if(page_text.contains_text(&amp;quot;Combat&amp;quot;))&lt;br /&gt;
      run_combat();&lt;br /&gt;
   return choiceAdventure.to_int();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
see_also={{SeeAlso|adventure|adv1|visit_url|run_combat|run_turn}}|&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Adventuring]]&lt;/div&gt;</summary>
		<author><name>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Run_choice&amp;diff=8507</id>
		<title>Run choice</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Run_choice&amp;diff=8507"/>
		<updated>2017-05-25T00:37:41Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|run_choice}}{{&lt;br /&gt;
#vardefine:return_type|buffer}}{{&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|choice}}|&lt;br /&gt;
p1desc={{Pspan|choice}} is the number of the choice option you wish to take. Use &amp;quot;-1&amp;quot; to automate the rest of the choice using existing choice adventure settings.|&lt;br /&gt;
&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function_description=Proceeds to run a choice using your current KoLmafia settings. This function returns the HTML from the choice page (not just what is displayed, but all markup).  Most commonly used to finish up choices started via [[visit_url|visit_url()]].&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another handy use for this function is to finish up choices that were started in the relay browser, or were interrupted (i.e. mafia aborted for you to manually make a choice selection).  Typing &amp;quot;ashq run_choice(choice)&amp;quot; into the CLI will finish up the choice for you using your selected choice.  Note that &amp;quot;ashq&amp;quot; is necessary rather than &amp;quot;ash&amp;quot; to avoid spewing the entire choice results page into the CLI.|&lt;br /&gt;
&lt;br /&gt;
code1={{CodeSample|&lt;br /&gt;
title=Code Sample|&lt;br /&gt;
description=This is a personalized version of [[adv1|adv1()]] that is capable of returning information about which adventure is encountered so that you can look for a specific choice adventure. If a combat is encountered instead of a choice adventure, [[run_combat|run_combat()]] is used.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
int run_adv(location place) {&lt;br /&gt;
   string page_text = to_url(place).visit_url();&lt;br /&gt;
   string choiceAdventure = &amp;quot;-1&amp;quot;;&lt;br /&gt;
   matcher m_choice = create_matcher(&amp;quot;whichchoice value=(\\d+)&amp;quot;, page_text);&lt;br /&gt;
   while(page_text.contains_text(&amp;quot;choice.php&amp;quot;)) {&lt;br /&gt;
      m_choice.reset(page_text);&lt;br /&gt;
      m_choice.find();&lt;br /&gt;
      choiceAdventure = m_choice.group(1);&lt;br /&gt;
      string choice_num = get_property(&amp;quot;choiceAdventure&amp;quot;+ choiceAdventure);&lt;br /&gt;
      &lt;br /&gt;
      if(choice_num == &amp;quot;0&amp;quot;) abort(&amp;quot;Manual Control for &amp;quot;+ choiceAdventure);&lt;br /&gt;
      if(choice_num == &amp;quot;&amp;quot;) abort(&amp;quot;Unsupported Choice Adventure!&amp;quot;);&lt;br /&gt;
      &lt;br /&gt;
      &lt;br /&gt;
      page_text = run_choice(choice_num);&lt;br /&gt;
   }&lt;br /&gt;
   if(page_text.contains_text(&amp;quot;Combat&amp;quot;))&lt;br /&gt;
      run_combat();&lt;br /&gt;
   return choiceAdventure.to_int();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
see_also={{SeeAlso|adventure|adv1|visit_url|run_combat|run_turn}}|&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Adventuring]]&lt;/div&gt;</summary>
		<author><name>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Item_drops&amp;diff=5057</id>
		<title>Item drops</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Item_drops&amp;diff=5057"/>
		<updated>2017-05-24T22:39:27Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|item_drops}}{{&lt;br /&gt;
#vardefine:return_type|int [item]}}{{&lt;br /&gt;
#vardefine:aggregate|yes}}{{&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;
function2={{Function|&lt;br /&gt;
name={{#var:name}}|&lt;br /&gt;
aggregate={{#var:aggregate}}|&lt;br /&gt;
parameter1={{Param|monster|m}}|&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=Returns a map of the monster&#039;s drop rates, indexed by item names.|&lt;br /&gt;
&lt;br /&gt;
code1={{CodeSample|&lt;br /&gt;
title=Code Samples|&lt;br /&gt;
description=Prints the drops of a certain monster.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
void drops(monster mob){&lt;br /&gt;
   int[item] drops = item_drops(mob);&lt;br /&gt;
   print(&amp;quot;Monster: &amp;quot; + mob);&lt;br /&gt;
   foreach i in drops {&lt;br /&gt;
      print(&amp;quot;Drop rate of &amp;quot; + i + &amp;quot; is &amp;quot; + drops[i]*(1+item_drop_modifier()/100) + &amp;quot;%&amp;quot;);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
see_also={{SeeAlso|meat_drop|item_drop_modifier|item_drops_array}}|&lt;br /&gt;
special=This function has a known limitation: if a monster drops the same item more than once, the map only returns the last rate in that monster&#039;s entry in monsters.txt, however [[item_drops_array|item_drops_array()]] can be used to bypass this limitation.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Item Management]]&lt;/div&gt;</summary>
		<author><name>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Item_drops&amp;diff=5056</id>
		<title>Item drops</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Item_drops&amp;diff=5056"/>
		<updated>2017-05-24T22:39:02Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|item_drops}}{{&lt;br /&gt;
#vardefine:return_type|int [item]}}{{&lt;br /&gt;
#vardefine:aggregate|yes}}{{&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;
function2={{Function|&lt;br /&gt;
name={{#var:name}}|&lt;br /&gt;
aggregate={{#var:aggregate}}|&lt;br /&gt;
parameter1={{Param|monster|m}}|&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=Returns a map of the monster&#039;s drop rates, indexed by item names.|&lt;br /&gt;
&lt;br /&gt;
code1={{CodeSample|&lt;br /&gt;
title=Code Samples|&lt;br /&gt;
description=Prints the drops of a certain monster.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
void drops(monster mob){&lt;br /&gt;
   int[item] drops = item_drops(mob);&lt;br /&gt;
   print(&amp;quot;Monster: &amp;quot; + mob);&lt;br /&gt;
   foreach i in drops {&lt;br /&gt;
      print(&amp;quot;Drop rate of &amp;quot; + i + &amp;quot; is &amp;quot; + drops[i]*(1+item_drop_modifier()/100) + &amp;quot;%&amp;quot;);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
see_also={{SeeAlso|meat_drop|item_drop_modifier_item_drops_array}}|&lt;br /&gt;
special=This function has a known limitation: if a monster drops the same item more than once, the map only returns the last rate in that monster&#039;s entry in monsters.txt, however [[item_drops_array|item_drops_array()]] can be used to bypass this limitation.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Item Management]]&lt;/div&gt;</summary>
		<author><name>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Run_combat&amp;diff=5370</id>
		<title>Run combat</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Run_combat&amp;diff=5370"/>
		<updated>2017-05-24T22:35:56Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|run_combat}}{{&lt;br /&gt;
#vardefine:return_type|buffer}}{{&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;
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|string|filter}}|&lt;br /&gt;
p1desc={{Pspan|filter}} is a macro or the name of a combat filter function defined elsewhere in your script, with the same behavior as in the 3-paramater version of adventure(). An empty string can be passed to use your battle action or CCS as normal. Essentially, this allows the scripter to put a CCS or macro into a script.|&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function_description=Proceeds to run a combat using your current KoLmafia settings. This function returns the HTML from the final round of combat (not just what is displayed, but all markup).  Most commonly used to finish up combats started via [[visit_url|visit_url()]].&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another handy use for this function is to finish up combats that were started in the relay browser, or were interrupted (causing mafia to pop up the minibrowser).  Typing &amp;quot;ashq run_combat()&amp;quot; into the CLI will finish up the combat for you using your current CCS/battle action.  Note that &amp;quot;ashq&amp;quot; is necessary rather than &amp;quot;ash&amp;quot; to avoid spewing the entire combat results page into the CLI.|&lt;br /&gt;
&lt;br /&gt;
code1={{CodeSample|&lt;br /&gt;
title=Code Sample|&lt;br /&gt;
description=This is a personalized version of adv1() that is capable of returning information about which adventure is encountered so that you can look for a specific choice adventure. If a combat is encountered instead of a choice adventure, run_combat() is used.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
int run_adv(location place) {&lt;br /&gt;
   string page_text = to_url(place).visit_url();&lt;br /&gt;
   string choiceAdventure = &amp;quot;-1&amp;quot;;&lt;br /&gt;
   matcher m_choice = create_matcher(&amp;quot;whichchoice value=(\\d+)&amp;quot;, page_text);&lt;br /&gt;
   while(page_text.contains_text(&amp;quot;choice.php&amp;quot;)) {&lt;br /&gt;
      m_choice.reset(page_text);&lt;br /&gt;
      m_choice.find();&lt;br /&gt;
      choiceAdventure = m_choice.group(1);&lt;br /&gt;
      string choice_num = get_property(&amp;quot;choiceAdventure&amp;quot;+ choiceAdventure);&lt;br /&gt;
      &lt;br /&gt;
      if(choice_num == &amp;quot;0&amp;quot;) abort(&amp;quot;Manual Control for &amp;quot;+ choiceAdventure);&lt;br /&gt;
      if(choice_num == &amp;quot;&amp;quot;) abort(&amp;quot;Unsupported Choice Adventure!&amp;quot;);&lt;br /&gt;
      &lt;br /&gt;
      page_text = visit_url(&amp;quot;choice.php?pwd&amp;amp;whichchoice=&amp;quot;+ choiceAdventure +&amp;quot;&amp;amp;option=&amp;quot;+ choice_num);&lt;br /&gt;
   }&lt;br /&gt;
   if(page_text.contains_text(&amp;quot;Combat&amp;quot;))&lt;br /&gt;
      run_combat();&lt;br /&gt;
   return choiceAdventure.to_int();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
see_also={{SeeAlso|adventure|adv1|visit_url|run_choice|run_turn}}|&lt;br /&gt;
&lt;br /&gt;
special=Will return the text of the last combat encounter when called independently of a fight page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Using run_combat() to execute fights will not do the normal post-fight processing that mafia normally performs with [[adv1]] or [[adventure]].&lt;br /&gt;
*it will not cause your afterAdventureScript to run&lt;br /&gt;
*it will not trigger post-combat restoration&lt;br /&gt;
*it will not check if adventuring goals have been met&lt;br /&gt;
*it does not obey counter aborts (e.g. fortune cookie)&lt;br /&gt;
*it does not update mafia&#039;s custom quest progress properties (e.g. palindomeDudesDefeated)&lt;br /&gt;
|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Adventuring]]&lt;/div&gt;</summary>
		<author><name>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Help:To_Do_List&amp;diff=7839</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=7839"/>
		<updated>2017-05-24T22:32:41Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: &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;
&lt;br /&gt;
 &#039;&#039;&#039;test CLI commands:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 r14764: add &amp;quot;test xpath&amp;quot; to, well, test xpath expressions&lt;br /&gt;
 r14767: Expose an xpath function that relay scripts can use after they&#039;ve invoked visit_url().&lt;br /&gt;
 http://kolmafia.us/showthread.php?16722-the-DOM-regex-scalability-and-other-jargony-words&lt;br /&gt;
 http://kolmafia.us/showthread.php?16764-xpath-primer&lt;br /&gt;
 &lt;br /&gt;
 r14967: Add &amp;quot;test mchat&amp;quot; command which can be used after &amp;quot;test load JSONFILE&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 This is how test newitem is used!&lt;br /&gt;
 http://kolmafia.us/showthread.php?17365-When-detecting-new-items-detect-new-outfits-too&amp;amp;p=119368&amp;amp;viewfull=1#post119368&lt;br /&gt;
  r15741, Now &amp;quot;test newitem descId&amp;quot; no longer requires itemId.&lt;br /&gt;
 &lt;br /&gt;
 r15176: Add &amp;quot;test adventure URL&amp;quot; CLI command to see how we translate the given URL&lt;br /&gt;
 &lt;br /&gt;
 r15239: Add &amp;quot;test dump_disabled_skills&amp;quot; to the gCLI to aid upcoming debugging&lt;br /&gt;
 &lt;br /&gt;
 r15606: Add &amp;quot;test encounter URL&amp;quot; command.&lt;br /&gt;
 &lt;br /&gt;
 r15874: Add &amp;quot;test leet NAME&amp;quot; command to check if KoL monster names get translated successfully from their 1337 versions.&lt;br /&gt;
 &lt;br /&gt;
 r15883: &amp;quot;test load HTMLFILE&amp;quot; followed by &amp;quot;test aagain&amp;quot; will print the Adventure Again URL from that page.&lt;br /&gt;
 &lt;br /&gt;
 r16275: &amp;quot;test visit-choice&amp;quot; now prints the various choice options available on the loaded HTML text.&lt;br /&gt;
 &lt;br /&gt;
 r16309: Add &amp;quot;test manuel&amp;quot; command which will process a loaded HTML file as if it were the response to a visit to Monster Manuel.&lt;br /&gt;
 http://kolmafia.us/showthread.php?19094-shrine-to-the-Barrel-god-(Sept-2015-IotM)&amp;amp;p=128256&amp;amp;viewfull=1#post128256&lt;br /&gt;
 &lt;br /&gt;
 r15928: Add &amp;quot;test monster&amp;quot; command to parse the monster out of the saved HTML and save&lt;br /&gt;
 it where ASH&#039;s last_monster() function will fetch it.&lt;br /&gt;
 &lt;br /&gt;
 r16496: Add &amp;quot;test spleen X&amp;quot; to set your current spleen use to X (as far as KoLmafia knows; obviously it does not actually change KoL&#039;s value).&lt;br /&gt;
 &lt;br /&gt;
 r16508: Add &amp;quot;test numberology adventureDelta spleenDelta&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 r16519: Add &amp;quot;test stats X&amp;quot; to set all three stat values to X substats (if X &amp;gt; 0).&lt;br /&gt;
 &lt;br /&gt;
 r17296: Add &amp;quot;test cookies&amp;quot; command to see values of the &amp;quot;special&amp;quot; cookies we track.&lt;br /&gt;
 &lt;br /&gt;
 r17446: Soup up &amp;quot;test crop&amp;quot; command to allow specifying current crop and test crop.&lt;br /&gt;
 Fix crop &amp;quot;is better than&amp;quot; test to only include count when comparing identical crop type&lt;br /&gt;
 &lt;br /&gt;
 r17507: Experimental: ItemDatabase keeps a set of all item ids for each item name.&lt;br /&gt;
 &amp;gt; test itemids seal tooth&lt;br /&gt;
 seal tooth has 1 itemid: 2&lt;br /&gt;
 &amp;gt; test itemids Staff of Ed&lt;br /&gt;
 Staff of Ed has 2 itemids: 2325, 7961&lt;br /&gt;
 &amp;gt; test itemids ancient amulet&lt;br /&gt;
 ancient amulet has 2 itemids: 2180, 7963&lt;br /&gt;
 &lt;br /&gt;
 r17520 does the same for effects:&lt;br /&gt;
 &amp;gt; test effectids Got Milk&lt;br /&gt;
 Got Milk has 1 effectid: 211&lt;br /&gt;
 &amp;gt; test effectids A Little Bit Evil&lt;br /&gt;
 A Little Bit Evil has 6 effectids: 597, 598, 599, 600, 601, 602&lt;br /&gt;
&lt;br /&gt;
 r15148: Track Xiblaxian holo-wrist-puter drops in &#039;&#039;&#039;_holoWristDrops&#039;&#039;&#039;, and progress toward the next drop in &#039;&#039;&#039;_holoWristProgress&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 r15177: Track which keys have been used on the Sorceress Tower door in a setting: &#039;&#039;&#039;nsTowerDoorKeysUsed&#039;&#039;&#039;&lt;br /&gt;
 It is a comma separated list.&lt;br /&gt;
&lt;br /&gt;
 r15235: Add &#039;&#039;&#039;run_turn()&#039;&#039;&#039;, which will work as run_combat() or run_choice( -1 ) depending on whether you are in combat or in a choice.&lt;br /&gt;
&lt;br /&gt;
 r15238: Provide &#039;&#039;&#039;limit_mode()&#039;&#039;&#039; function that returns (currently) null or spelunky.&lt;br /&gt;
&lt;br /&gt;
 r15354: Move &amp;quot;equip all familiars&amp;quot; function from the FamiliarTrainingFrame to a new&lt;br /&gt;
 module: FamiliarManager. Let ASH use it via boolean &#039;&#039;&#039;equip_all_familiars()&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 r15440: Add &amp;quot;&#039;&#039;&#039;servants&#039;&#039;&#039;&amp;quot; command to list Ed&#039;s servants, &amp;quot;&#039;&#039;&#039;servant&#039;&#039;&#039;&amp;quot; to list status of your current servant, &lt;br /&gt;
 and &amp;quot;&#039;&#039;&#039;servant TYPE&#039;&#039;&#039;&amp;quot; to switch to the servant of the specified type.&lt;br /&gt;
&lt;br /&gt;
 r15441 adds the $servant data type to ASH and the following functions to manipulate them:&lt;br /&gt;
 &lt;br /&gt;
 int &#039;&#039;&#039;to_servant&#039;&#039;&#039;( servant )&lt;br /&gt;
 servant to_servant( int )&lt;br /&gt;
 servant to_servant( string )&lt;br /&gt;
 servant &#039;&#039;&#039;my_servant&#039;&#039;&#039;()&lt;br /&gt;
 boolean &#039;&#039;&#039;have_servant&#039;&#039;&#039;( servant )&lt;br /&gt;
 boolean &#039;&#039;&#039;use_servant&#039;&#039;&#039;( servant )&lt;br /&gt;
 &lt;br /&gt;
 Additionally, it has the following proxy fields:&lt;br /&gt;
 int id&lt;br /&gt;
 string name&lt;br /&gt;
 int level&lt;br /&gt;
 int experience&lt;br /&gt;
 string image,&lt;br /&gt;
 string level1_ability&lt;br /&gt;
 string level7_ability&lt;br /&gt;
 string level14_ability&lt;br /&gt;
 string level21_ability&lt;br /&gt;
&lt;br /&gt;
 r15466: Add &#039;&#039;&#039;chew&#039;&#039;&#039;(INT,ITEM) to ASH for cnsuming spleen toxins&lt;br /&gt;
&lt;br /&gt;
 equip [2268] will equip an item by number.&lt;br /&gt;
&lt;br /&gt;
 r15475: Add &#039;&#039;&#039;prefref&#039;&#039;&#039; as a built-in gCLI command&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 r15676: Make built-in Sorceress Tower scripts available to scripts.&lt;br /&gt;
&lt;br /&gt;
 CLI: &#039;&#039;&#039;maze&#039;&#039;&#039; [arg]&lt;br /&gt;
 CLI: &#039;&#039;&#039;door&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;hedge_maze( string )&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;tower_door()&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 The string argument for the maze can be one of:&lt;br /&gt;
 traps - 4 turns, all traps&lt;br /&gt;
 gopher or duck - 7 turns gopher and duck&lt;br /&gt;
 chihuahua or kiwi - 7 turns chihuahua and kiwi&lt;br /&gt;
 nugglets - 10 turns, all nugglets&lt;br /&gt;
&lt;br /&gt;
 r15791: The &amp;quot;pvp&amp;quot; command with no arguments will list available stances and their&lt;br /&gt;
 associated option number. You now can now specify a stance by either name or&lt;br /&gt;
 number. The &amp;quot;pvp&amp;quot; command now requires you to choose a stance, since it can&lt;br /&gt;
 no longer choose a reaosnable default based on your stats.&lt;br /&gt;
&lt;br /&gt;
 r15796: Add ASH function: &#039;&#039;&#039;int [string] current_pvp_stances()&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 r15840: Provide  ASH &#039;&#039;&#039;string leetify( string )&#039;&#039;&#039; function to garble strings.&lt;br /&gt;
&lt;br /&gt;
 r15847: Add &amp;quot;Random Monster Attributes&amp;quot; modifier as provided by dice items and the&lt;br /&gt;
 Curse of Randomness status effect. Add random_attributes proxy field to ASH&lt;br /&gt;
 $monster type. Munge random attributes from monster names is the Random Monster&lt;br /&gt;
 Attribute modifier is &amp;gt; 0, not only if current path is One Crazy Random Summer.&lt;br /&gt;
&lt;br /&gt;
 r15922: Add Familiar Script. This script will run after changing familiars, before &lt;br /&gt;
 automatically changing familiar equipment. The script should have a boolean main() function. &lt;br /&gt;
 Returning true will cause normal familiar equipiment switching to be skipped,&lt;br /&gt;
 while false will lead to it running after the script returns.&lt;br /&gt;
&lt;br /&gt;
 r15937: Add mayosoak command&lt;br /&gt;
&lt;br /&gt;
 r15959: Add knowledge of familiar drop counters to FamiliarData, &lt;br /&gt;
 New ASH proxy fields for $familiar data type:&lt;br /&gt;
 drop_name = short name of the thing that drops&lt;br /&gt;
 drop_item = if it is a single item, the $item. Otherwise, $item[none]&lt;br /&gt;
 drops_today = how many things this familiar has dropped so far today&lt;br /&gt;
 drops_limit = the maximum number of available drops from this familiar today&lt;br /&gt;
&lt;br /&gt;
 CLI: wumpus status - Display status of last wumpus cave.&lt;br /&gt;
 r16014: Add &amp;quot;wumpus replay FILE&amp;quot; command to process the session log of a wumpus exploration and make deductions, etc.&lt;br /&gt;
 r16015: Add &amp;quot;wumpus reset&amp;quot; CLI command to clear in-memory Wumpus cave state&lt;br /&gt;
&lt;br /&gt;
 r16044:The &amp;quot;cheat&amp;quot; command is a synonym for the &amp;quot;play&amp;quot; command. options:&lt;br /&gt;
 play random - play a random card (1 draw)&lt;br /&gt;
 cheat phylum PHYLUM - cheat (5 draws) a fight with specified phylum&lt;br /&gt;
 cheat stat STAT - cheat (5 draws) 500 substats of specified stat&lt;br /&gt;
 cheat buff BUFF - cheat (5 draws) 20 turns of the specified buff, either by name&lt;br /&gt;
   or by effect: muscle, mysticality, moxie, item drop (or items), initiative&lt;br /&gt;
 cheat CARD - cheat (5 draws) the specified card name.&lt;br /&gt;
 PHYLUM, STAT, BUFF, and CARD all use fuzzy matching.&lt;br /&gt;
&lt;br /&gt;
 r16047: Track Armorer quest (Madness Bakery) as questM25Armorer.&lt;br /&gt;
&lt;br /&gt;
 r16060: Make fixed list of modifier maximizer strings configurable&lt;br /&gt;
 set maximizerList. Default value is:&lt;br /&gt;
 mainstat | mus | mys | mox | familiar weight | HP | MP | ML | DA | DR | +combat -tie | -combat -tie | initiative | exp | meat drop | item drop | 2.0 meat, 1.0 item | item, sea | weapon dmg | ranged dmg | elemental dmg | spell dmg | adv | pvp fights | hot res | cold res | spooky res | stench res | sleaze res | all res | mp regen | ML, 0.001 slime res | 4 clownosity, -tie | 7 raveosity, -tie | surgeonosity | +four songs&lt;br /&gt;
&lt;br /&gt;
 r16163: For all monsters where our name differs from Manuel&#039;s, add a new attribute: Manuel: &amp;quot;MANUEL NAME&amp;quot;&lt;br /&gt;
 Add .manuelName proxy field for ASH $monster data type&lt;br /&gt;
 &lt;br /&gt;
 Add &amp;quot;&#039;&#039;&#039;checkmanuel&#039;&#039;&#039;&amp;quot; command which will look up all of you&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;int monster_factoids_available( monster )&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 returns number of factoids currently retained in memory. Note that this&lt;br /&gt;
 can be more than the currently logged in character knows, since we don&#039;t&lt;br /&gt;
 flush the factoids from a previous login if you know all three factoids.&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;string monster_manuel_text( monster )&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 returns the full HTML of the monster manuel entry for the given&lt;br /&gt;
 monster. As above, this could have been retained from the previous&lt;br /&gt;
 character; otherwise, it will fetch and cache the text.&lt;br /&gt;
&lt;br /&gt;
 r16166: Add ASH function: &#039;&#039;&#039;boolean [monster] all_monsters_with_id()&#039;&#039;&#039; &lt;br /&gt;
 &lt;br /&gt;
 returns a map of all monsters that have a non-zero monster ID. It builds this&lt;br /&gt;
 afresh every time you call it, since new monsters can be (temporarily) added&lt;br /&gt;
&lt;br /&gt;
 r16169: Add MonsterManuelManager.flushCache()and expose it to ASH via flush_&#039;&#039;&#039;monster_manuel_cache()&#039;&#039;&#039; function.&lt;br /&gt;
 Add a second parameter to MonsterManuelManager.getFactoidsAvailable: boolean&lt;br /&gt;
 cachedOnly says &amp;quot;don&#039;t look on the page if the monster is not in the cache,&lt;br /&gt;
 because we have already looked at the page and the monster wasn&#039;t there.&amp;quot;&lt;br /&gt;
 Expose this to ASH by changing &#039;&#039;&#039;monster_factoids_available()&#039;&#039;&#039; parameters: monster, boolean&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 r16171: Add ASH function: &#039;&#039;&#039;boolean[monster] get_location_monsters(location)&#039;&#039;&#039; &lt;br /&gt;
 This has the same info as get_monsters, but returns a (perhaps) more useful aggregate value&lt;br /&gt;
&lt;br /&gt;
 r16200: &#039;&#039;&#039;Mayominder&#039;&#039;&#039; CLi command. Sets (buying if needed) Mayo Minder to a particular Mayo.&lt;br /&gt;
 Can specify Mayo name or use a description (adv, stat, food, drunk or bmc).&lt;br /&gt;
&lt;br /&gt;
 r16218: Add ASH function &#039;&#039;&#039;get_stash()&#039;&#039;&#039; to retrieve cached view of clan stash&lt;br /&gt;
&lt;br /&gt;
 r16391: Add ASH &#039;&#039;&#039;skill_modifier&#039;&#039;&#039;(object, modifiername) (currently only useful for &amp;quot;Skill&amp;quot;)&lt;br /&gt;
 to interpret the specified modifier of an item as a skill object.&lt;br /&gt;
&lt;br /&gt;
 r16396, r16398 &amp;amp; r16399 : &#039;&#039;&#039;Numberology&#039;&#039;&#039; command:&lt;br /&gt;
 numberology - lists all the currently possible seeds and what they give you&lt;br /&gt;
 numberology? N - N is the desired (numeric) result you want. Tell you if it is currently available.&lt;br /&gt;
 numberology N - Attempts to get the desired result.&lt;br /&gt;
 For both of these, if it is not currently available, tells you in how many turns it will be available.&lt;br /&gt;
&lt;br /&gt;
 16481: Add $vykea type to ASH&lt;br /&gt;
 vykea my_vykea_companion( )&lt;br /&gt;
 int to_int( vykea )&lt;br /&gt;
 vykea to_vykea( strict_string )&lt;br /&gt;
&lt;br /&gt;
 r16790: Add ASH function int [int] reverse_numberology([int adv_delta, int spleen_delta]).&lt;br /&gt;
 The return value is a map from result IDs to input seeds that generate said results.&lt;br /&gt;
 adv_delta and spleen_delta, which both default to 0, allow one to obtain forecasts on upcoming options.&lt;br /&gt;
 http://kolmafia.us/showthread.php?19664-ASH-command(s)-for-Numberology&amp;amp;p=133467&amp;amp;viewfull=1#post133467&lt;br /&gt;
&lt;br /&gt;
 r17909: Add ASH function: string numberology_prize( number )&lt;br /&gt;
&lt;br /&gt;
 r16800: Add multi-line string support to ASH. In order to specify a multi-line string, &lt;br /&gt;
 you must explicitly escape the end-of-line by placing a backslash (\) at the end of the line.&lt;br /&gt;
 &lt;br /&gt;
 Note that as a consequence of how the parser is written, it will trim all&lt;br /&gt;
 leading and trailing whitespace for each of these lines via Java&#039;s&lt;br /&gt;
 String.trim() method. Previously, this was irrelevant in the context of ASH&lt;br /&gt;
 strings, but now that ASH strings can span multiple lines, it is worth&lt;br /&gt;
 mentioning. If you want to have whitespace at the beginning of the line,&lt;br /&gt;
 just escape the first character of the line.&lt;br /&gt;
&lt;br /&gt;
 r16866: Add aggregate literals to ASH.&lt;br /&gt;
 http://kolmafia.us/showthread.php?20103-16866-Add-aggregate-literals-to-ASH-The-main-use-of-these-is-likely-for-initializa&lt;br /&gt;
 http://kolmafia.us/showthread.php?10685-Map-literals-in-ASH-(potential-feature)&amp;amp;p=134150#post134150&lt;br /&gt;
 &lt;br /&gt;
 r17658: http://kolmafia.us/showthread.php?10685-Map-literals-in-ASH-(potential-feature)&amp;amp;p=140128#post140128&lt;br /&gt;
&lt;br /&gt;
 r16886: Add &#039;&#039;&#039;witchess&#039;&#039;&#039; command to get Puzzle Champ. This only works if you have solved all puzzles.&lt;br /&gt;
&lt;br /&gt;
 r17023: Add terminal gCLI command&lt;br /&gt;
&lt;br /&gt;
 r17136: Track furniture in the Clan Rumpus Room, accessible with &#039;&#039;&#039;get_clan_rumpus()&#039;&#039;&#039;. Extra Adventures and PvP Fights from furniture are tracked.&lt;br /&gt;
 If your clan has a ball pit, the last entry in get_clan_rumpus() will indicate how many balls are in it.&lt;br /&gt;
 &lt;br /&gt;
 r17471: get_clan_rumpus() now returns int [string] map of furniture names.&lt;br /&gt;
 http://kolmafia.us/showthread.php?21006-Improve-return-value-of-get_clan_rumpus()&lt;br /&gt;
&lt;br /&gt;
 r17151: Add ASH and CLI support for stocking mall stores from Hagnk&#039;s.&lt;br /&gt;
 boolean &#039;&#039;&#039;put_shop_using_storage(int price, int limit, item it)&#039;&#039;&#039;&lt;br /&gt;
 boolean &#039;&#039;&#039;put_shop_using_storage(int price, int limit, int qty, item it)&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 and extends the CLI commands mallsell and shop.&lt;br /&gt;
 put_shop() works by batching requests for &amp;quot;shop put&amp;quot;. Similarly, buy_using_storage() puts together requests via &amp;quot;buy using storage&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 r17283: Add &amp;quot;timespinner&amp;quot; command courtesy of lost. &lt;br /&gt;
 Add &amp;quot;timespinner&amp;quot; command courtesy of lost.&lt;br /&gt;
 timespinner list food -&amp;gt; list available foods&lt;br /&gt;
 timespinner eat FOOD -&amp;gt; Spin and Munch on the specified food&lt;br /&gt;
 &lt;br /&gt;
 r17284: Allow pranking with timespinner&lt;br /&gt;
 &lt;br /&gt;
 r17286: Add &amp;quot;timespinner list monsters [filter]&amp;quot;. This will show all monsters that should be available in the Time-Spinner, optionally filtered (case-insensitive).&lt;br /&gt;
&lt;br /&gt;
 r17290: Add traceprint( string) ASH function&lt;br /&gt;
&lt;br /&gt;
 r17454: Experimental ASH feature: allow X++, X--, ++X, and --X with their normal meanings: post-increment, post-decrement, pre-increment, and pre-decrement.&lt;br /&gt;
&lt;br /&gt;
 r17460: Add Java-style &amp;quot;for&amp;quot; loop:&lt;br /&gt;
 for (INIT [, INIT]* ; CONDITION ; ITERATE [, ITERATE]* ) BODY&lt;br /&gt;
 You can have 0 or more INIT statements, which can be of the form&lt;br /&gt;
 X = EXP (where X is declared already) or&lt;br /&gt;
 TYPE X = EXP (whre X of type TYPE will be declared for use in the BODY scope).&lt;br /&gt;
 &lt;br /&gt;
 You can have 0 or more ITERATE statements, which can be of the form&lt;br /&gt;
 X++ or X--&lt;br /&gt;
 ++X or -- X&lt;br /&gt;
 X OPER EXP (where OPER can be =, +=, -=, etc.&lt;br /&gt;
 &lt;br /&gt;
 BODY can be a single statement ending with a ; or a block enclosed in {}, with no ; at the end, just like and other loop.&lt;br /&gt;
 &lt;br /&gt;
 break, continue, return, or exit are allowed within BODY, just like any loop.&lt;br /&gt;
&lt;br /&gt;
 r17477: Add boolean &#039;&#039;&#039;can_still_steal()&#039;&#039;&#039; function to ASH, which calls the same function &lt;br /&gt;
 that Stationary Buttons use do decide whether to enable or disable the &amp;quot;steal&amp;quot; button&lt;br /&gt;
&lt;br /&gt;
 r17612: ASH has a function to return all the candy in a given tier:&lt;br /&gt;
 item [int] &#039;&#039;&#039;candy_for_tier&#039;&#039;&#039;( int tier )&lt;br /&gt;
 The &amp;quot;&#039;&#039;&#039;checkcandy&#039;&#039;&#039;&amp;quot; command will list all unspaded candy or will tell you the candy type of each of its arguments.&lt;br /&gt;
&lt;br /&gt;
 r17613: More Sweet Synthesis stuff: ASH functions:&lt;br /&gt;
 boolean &#039;&#039;&#039;sweet_synthesis&#039;&#039;&#039;( item candy1, item candy2 )&lt;br /&gt;
 effect &#039;&#039;&#039;sweet_synthesis_result&#039;&#039;&#039;( item candy1, item candy2 )&lt;br /&gt;
 item [int] &#039;&#039;&#039;sweet_synthesis_pairings&#039;&#039;&#039;( effect result, item candy1 )&lt;br /&gt;
&lt;br /&gt;
 r17629: Add candy_for_tier() and sweet_synthesis_pairing() ASH functions that have a &amp;quot;flags&amp;quot; argument, &lt;br /&gt;
 in which you can specify filtering. 0 = no filtering, 1 = available, 2 = allowed, 3 = available and allowed.&lt;br /&gt;
&lt;br /&gt;
 r17637: Add &amp;quot;synthesize&amp;quot; command: synthesize CANDY1, CANDY2 - combines candies to get an effect&lt;br /&gt;
 synthesize? CANDY1, CANDY2 - tells you about the candies and the effect&lt;br /&gt;
&lt;br /&gt;
 r17644: To automatically select pairs of candy, add some ASH functions:&lt;br /&gt;
 item [int] sweet_synthesis_pair( effect )&lt;br /&gt;
 item [int] sweet_synthesis_pair( effect, flags )&lt;br /&gt;
 &lt;br /&gt;
 For the desired effect, pick a suitable pair of candies.&lt;br /&gt;
 If you are in-run, it will use only &amp;quot;available&amp;quot; candy and will prefer candies that you have more of.&lt;br /&gt;
 If you are post-run, it will consider all candies and will choose the pair with the lowest total mall price.&lt;br /&gt;
 If you want to force &amp;quot;available&amp;quot; candies post-run, use flags = 1.&lt;br /&gt;
 &lt;br /&gt;
 boolean sweet_synthesis( effect )&lt;br /&gt;
 boolean sweet_synthesis( effect, flags )&lt;br /&gt;
 &lt;br /&gt;
 The same, but it will actually perform Sweet Synthesis to get the effect.&lt;br /&gt;
 &lt;br /&gt;
 http://kolmafia.us/showthread.php?21144-Rethinking-Candy&amp;amp;p=139996&amp;amp;viewfull=1#post139996&lt;br /&gt;
&lt;br /&gt;
 r17645: Add CLI commands: &lt;br /&gt;
 synthesize EFFECT&lt;br /&gt;
 synthesize? EFFECT&lt;br /&gt;
&lt;br /&gt;
 r17673: Add &amp;quot;shop reprice&amp;quot; command and reprice_shop() ash function&lt;br /&gt;
&lt;br /&gt;
 r17677: edpiece? command tells you the effects of the various decorations, as well as telling you which one is currently equipped.&lt;br /&gt;
&lt;br /&gt;
 r17817: Added CLI command &amp;quot;absorb&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 r17819: Add ASH function to interface to KoL&#039;s /count chat command:&lt;br /&gt;
 int slash_count( item it )&lt;br /&gt;
&lt;br /&gt;
 r17845: Add my_absorbs() ash function&lt;br /&gt;
&lt;br /&gt;
 r17892: Add a bunch of ASH support for doing interesting things with properties:&lt;br /&gt;
 http://kolmafia.us/showthread.php?21570-Properties&amp;amp;p=141625&amp;amp;viewfull=1#post141625 &lt;br /&gt;
 http://kolmafia.us/showthread.php?21570-Properties&amp;amp;p=141629&amp;amp;viewfull=1#post141629&lt;br /&gt;
 &lt;br /&gt;
 boolean [string] get_all_properties( string filter, boolean global )&lt;br /&gt;
 boolean property_exists( string name )&lt;br /&gt;
 boolean property_exists( string name, boolean global )&lt;br /&gt;
 boolean property_has_default( string name )&lt;br /&gt;
 string property_default_value( string name )&lt;br /&gt;
 string get_property( string name, boolean global )&lt;br /&gt;
 string remove_property( string name )&lt;br /&gt;
 string remove_property( string name, boolean global )&lt;br /&gt;
 boolean rename_property( string old_name, string new_name )&lt;br /&gt;
&lt;br /&gt;
 r17911: Add ASH convenience functions: &lt;br /&gt;
 boolean starts_with( string value, string prefix );&lt;br /&gt;
 boolean ends_with( string value, string suffix );&lt;br /&gt;
&lt;br /&gt;
 r17912: Add ASH function to get the full unambiguous card name from the Deck of Every Card:&lt;br /&gt;
 string every_card_name( string name )&lt;br /&gt;
&lt;br /&gt;
 r17921: Add ASH get_closet() and get_storage() commands:&lt;br /&gt;
 int [item] get_closet();&lt;br /&gt;
 int [item] get_storage();&lt;br /&gt;
&lt;br /&gt;
 r17936: Add ASH function: void mood_execute( int multiplicity )&lt;br /&gt;
 multiplicity determines the minimum number of casts (or items) a given trigger will use; if&lt;br /&gt;
 the mood trigger is &amp;quot;cast 1 SKILL&amp;quot;, multiplicty 3 will treat it as &amp;quot;cast 3 SKILL&amp;quot;.&lt;br /&gt;
 multiplicity = -1 is what KoLmafia uses internally for between battle checks.&lt;br /&gt;
 multiplicity = 0 is what the CLI command &amp;quot;mood execute&amp;quot; uses.&lt;br /&gt;
&lt;br /&gt;
 r17937-8: Add ASH function: string [int] available_choice_options( boolean spoilers )&lt;br /&gt;
 If the argument is &amp;quot;true&amp;quot;, the Relay Browser choice spoilers will be appended to KoL&#039;s choice choice text (in parentheses).&lt;br /&gt;
&lt;br /&gt;
 r17969/17970 adds the &amp;quot;spacegate&amp;quot; command.&lt;br /&gt;
 spacegate vaccine X&lt;br /&gt;
 (where X is 1, 2, or 3) will visit the Spacegate Vaccinator to get the appropriate vaccine.&lt;br /&gt;
&lt;br /&gt;
 r18000: Add ASH function: int my_session_meat() which tracks how much meat the character has gained&lt;br /&gt;
 or lost since login via character actions; mall sales and incoming kmail containing meat&lt;br /&gt;
 will increment my_meat(), but not this value.&lt;br /&gt;
&lt;br /&gt;
 r18040: When you define a map with value as a zero-length array, file_to_map can&lt;br /&gt;
 now populate it. The values will be variable-length array literals that&lt;br /&gt;
 consume all the data values from the line of your file. Thus: keyVALUE(VALUE)*&lt;br /&gt;
 &lt;br /&gt;
 You can now use foreach to iterate over an aggregate literal.&lt;br /&gt;
 &lt;br /&gt;
 http://kolmafia.us/showthread.php?21742-Best-way-to-load-questslog-txt&amp;amp;p=143001&amp;amp;viewfull=1#post143001&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;
== 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;br /&gt;
[[Category:Contributing]]&lt;/div&gt;</summary>
		<author><name>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Help:To_Do_List&amp;diff=7838</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=7838"/>
		<updated>2017-05-24T22:25:38Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: &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;
&lt;br /&gt;
 &#039;&#039;&#039;test CLI commands:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 r14764: add &amp;quot;test xpath&amp;quot; to, well, test xpath expressions&lt;br /&gt;
 r14767: Expose an xpath function that relay scripts can use after they&#039;ve invoked visit_url().&lt;br /&gt;
 http://kolmafia.us/showthread.php?16722-the-DOM-regex-scalability-and-other-jargony-words&lt;br /&gt;
 http://kolmafia.us/showthread.php?16764-xpath-primer&lt;br /&gt;
 &lt;br /&gt;
 r14967: Add &amp;quot;test mchat&amp;quot; command which can be used after &amp;quot;test load JSONFILE&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 This is how test newitem is used!&lt;br /&gt;
 http://kolmafia.us/showthread.php?17365-When-detecting-new-items-detect-new-outfits-too&amp;amp;p=119368&amp;amp;viewfull=1#post119368&lt;br /&gt;
  r15741, Now &amp;quot;test newitem descId&amp;quot; no longer requires itemId.&lt;br /&gt;
 &lt;br /&gt;
 r15176: Add &amp;quot;test adventure URL&amp;quot; CLI command to see how we translate the given URL&lt;br /&gt;
 &lt;br /&gt;
 r15239: Add &amp;quot;test dump_disabled_skills&amp;quot; to the gCLI to aid upcoming debugging&lt;br /&gt;
 &lt;br /&gt;
 r15606: Add &amp;quot;test encounter URL&amp;quot; command.&lt;br /&gt;
 &lt;br /&gt;
 r15874: Add &amp;quot;test leet NAME&amp;quot; command to check if KoL monster names get translated successfully from their 1337 versions.&lt;br /&gt;
 &lt;br /&gt;
 r15883: &amp;quot;test load HTMLFILE&amp;quot; followed by &amp;quot;test aagain&amp;quot; will print the Adventure Again URL from that page.&lt;br /&gt;
 &lt;br /&gt;
 r16275: &amp;quot;test visit-choice&amp;quot; now prints the various choice options available on the loaded HTML text.&lt;br /&gt;
 &lt;br /&gt;
 r16309: Add &amp;quot;test manuel&amp;quot; command which will process a loaded HTML file as if it were the response to a visit to Monster Manuel.&lt;br /&gt;
 http://kolmafia.us/showthread.php?19094-shrine-to-the-Barrel-god-(Sept-2015-IotM)&amp;amp;p=128256&amp;amp;viewfull=1#post128256&lt;br /&gt;
 &lt;br /&gt;
 r15928: Add &amp;quot;test monster&amp;quot; command to parse the monster out of the saved HTML and save&lt;br /&gt;
 it where ASH&#039;s last_monster() function will fetch it.&lt;br /&gt;
 &lt;br /&gt;
 r16496: Add &amp;quot;test spleen X&amp;quot; to set your current spleen use to X (as far as KoLmafia knows; obviously it does not actually change KoL&#039;s value).&lt;br /&gt;
 &lt;br /&gt;
 r16508: Add &amp;quot;test numberology adventureDelta spleenDelta&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 r16519: Add &amp;quot;test stats X&amp;quot; to set all three stat values to X substats (if X &amp;gt; 0).&lt;br /&gt;
 &lt;br /&gt;
 r17296: Add &amp;quot;test cookies&amp;quot; command to see values of the &amp;quot;special&amp;quot; cookies we track.&lt;br /&gt;
 &lt;br /&gt;
 r17446: Soup up &amp;quot;test crop&amp;quot; command to allow specifying current crop and test crop.&lt;br /&gt;
 Fix crop &amp;quot;is better than&amp;quot; test to only include count when comparing identical crop type&lt;br /&gt;
 &lt;br /&gt;
 r17507: Experimental: ItemDatabase keeps a set of all item ids for each item name.&lt;br /&gt;
 &amp;gt; test itemids seal tooth&lt;br /&gt;
 seal tooth has 1 itemid: 2&lt;br /&gt;
 &amp;gt; test itemids Staff of Ed&lt;br /&gt;
 Staff of Ed has 2 itemids: 2325, 7961&lt;br /&gt;
 &amp;gt; test itemids ancient amulet&lt;br /&gt;
 ancient amulet has 2 itemids: 2180, 7963&lt;br /&gt;
 &lt;br /&gt;
 r17520 does the same for effects:&lt;br /&gt;
 &amp;gt; test effectids Got Milk&lt;br /&gt;
 Got Milk has 1 effectid: 211&lt;br /&gt;
 &amp;gt; test effectids A Little Bit Evil&lt;br /&gt;
 A Little Bit Evil has 6 effectids: 597, 598, 599, 600, 601, 602&lt;br /&gt;
&lt;br /&gt;
 r15148: Track Xiblaxian holo-wrist-puter drops in &#039;&#039;&#039;_holoWristDrops&#039;&#039;&#039;, and progress toward the next drop in &#039;&#039;&#039;_holoWristProgress&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 r15177: Track which keys have been used on the Sorceress Tower door in a setting: &#039;&#039;&#039;nsTowerDoorKeysUsed&#039;&#039;&#039;&lt;br /&gt;
 It is a comma separated list.&lt;br /&gt;
&lt;br /&gt;
 r15235: Add &#039;&#039;&#039;run_turn()&#039;&#039;&#039;, which will work as run_combat() or run_choice( -1 ) depending on whether you are in combat or in a choice.&lt;br /&gt;
&lt;br /&gt;
 r15238: Provide &#039;&#039;&#039;limit_mode()&#039;&#039;&#039; function that returns (currently) null or spelunky.&lt;br /&gt;
&lt;br /&gt;
 r15354: Move &amp;quot;equip all familiars&amp;quot; function from the FamiliarTrainingFrame to a new&lt;br /&gt;
 module: FamiliarManager. Let ASH use it via boolean &#039;&#039;&#039;equip_all_familiars()&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 r15440: Add &amp;quot;&#039;&#039;&#039;servants&#039;&#039;&#039;&amp;quot; command to list Ed&#039;s servants, &amp;quot;&#039;&#039;&#039;servant&#039;&#039;&#039;&amp;quot; to list status of your current servant, &lt;br /&gt;
 and &amp;quot;&#039;&#039;&#039;servant TYPE&#039;&#039;&#039;&amp;quot; to switch to the servant of the specified type.&lt;br /&gt;
&lt;br /&gt;
 r15441 adds the $servant data type to ASH and the following functions to manipulate them:&lt;br /&gt;
 &lt;br /&gt;
 int &#039;&#039;&#039;to_servant&#039;&#039;&#039;( servant )&lt;br /&gt;
 servant to_servant( int )&lt;br /&gt;
 servant to_servant( string )&lt;br /&gt;
 servant &#039;&#039;&#039;my_servant&#039;&#039;&#039;()&lt;br /&gt;
 boolean &#039;&#039;&#039;have_servant&#039;&#039;&#039;( servant )&lt;br /&gt;
 boolean &#039;&#039;&#039;use_servant&#039;&#039;&#039;( servant )&lt;br /&gt;
 &lt;br /&gt;
 Additionally, it has the following proxy fields:&lt;br /&gt;
 int id&lt;br /&gt;
 string name&lt;br /&gt;
 int level&lt;br /&gt;
 int experience&lt;br /&gt;
 string image,&lt;br /&gt;
 string level1_ability&lt;br /&gt;
 string level7_ability&lt;br /&gt;
 string level14_ability&lt;br /&gt;
 string level21_ability&lt;br /&gt;
&lt;br /&gt;
 r15466: Add &#039;&#039;&#039;chew&#039;&#039;&#039;(INT,ITEM) to ASH for cnsuming spleen toxins&lt;br /&gt;
&lt;br /&gt;
 equip [2268] will equip an item by number.&lt;br /&gt;
&lt;br /&gt;
 r15475: Add &#039;&#039;&#039;prefref&#039;&#039;&#039; as a built-in gCLI command&lt;br /&gt;
&lt;br /&gt;
 r15590: &#039;&#039;&#039;Add run_combat( string filter )&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 r15676: Make built-in Sorceress Tower scripts available to scripts.&lt;br /&gt;
&lt;br /&gt;
 CLI: &#039;&#039;&#039;maze&#039;&#039;&#039; [arg]&lt;br /&gt;
 CLI: &#039;&#039;&#039;door&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;hedge_maze( string )&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;tower_door()&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 The string argument for the maze can be one of:&lt;br /&gt;
 traps - 4 turns, all traps&lt;br /&gt;
 gopher or duck - 7 turns gopher and duck&lt;br /&gt;
 chihuahua or kiwi - 7 turns chihuahua and kiwi&lt;br /&gt;
 nugglets - 10 turns, all nugglets&lt;br /&gt;
&lt;br /&gt;
 r15791: The &amp;quot;pvp&amp;quot; command with no arguments will list available stances and their&lt;br /&gt;
 associated option number. You now can now specify a stance by either name or&lt;br /&gt;
 number. The &amp;quot;pvp&amp;quot; command now requires you to choose a stance, since it can&lt;br /&gt;
 no longer choose a reaosnable default based on your stats.&lt;br /&gt;
&lt;br /&gt;
 r15796: Add ASH function: &#039;&#039;&#039;int [string] current_pvp_stances()&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 r15840: Provide  ASH &#039;&#039;&#039;string leetify( string )&#039;&#039;&#039; function to garble strings.&lt;br /&gt;
&lt;br /&gt;
 r15847: Add &amp;quot;Random Monster Attributes&amp;quot; modifier as provided by dice items and the&lt;br /&gt;
 Curse of Randomness status effect. Add random_attributes proxy field to ASH&lt;br /&gt;
 $monster type. Munge random attributes from monster names is the Random Monster&lt;br /&gt;
 Attribute modifier is &amp;gt; 0, not only if current path is One Crazy Random Summer.&lt;br /&gt;
&lt;br /&gt;
 r15922: Add Familiar Script. This script will run after changing familiars, before &lt;br /&gt;
 automatically changing familiar equipment. The script should have a boolean main() function. &lt;br /&gt;
 Returning true will cause normal familiar equipiment switching to be skipped,&lt;br /&gt;
 while false will lead to it running after the script returns.&lt;br /&gt;
&lt;br /&gt;
 r15937: Add mayosoak command&lt;br /&gt;
&lt;br /&gt;
 r15959: Add knowledge of familiar drop counters to FamiliarData, &lt;br /&gt;
 New ASH proxy fields for $familiar data type:&lt;br /&gt;
 drop_name = short name of the thing that drops&lt;br /&gt;
 drop_item = if it is a single item, the $item. Otherwise, $item[none]&lt;br /&gt;
 drops_today = how many things this familiar has dropped so far today&lt;br /&gt;
 drops_limit = the maximum number of available drops from this familiar today&lt;br /&gt;
&lt;br /&gt;
 CLI: wumpus status - Display status of last wumpus cave.&lt;br /&gt;
 r16014: Add &amp;quot;wumpus replay FILE&amp;quot; command to process the session log of a wumpus exploration and make deductions, etc.&lt;br /&gt;
 r16015: Add &amp;quot;wumpus reset&amp;quot; CLI command to clear in-memory Wumpus cave state&lt;br /&gt;
&lt;br /&gt;
 r16044:The &amp;quot;cheat&amp;quot; command is a synonym for the &amp;quot;play&amp;quot; command. options:&lt;br /&gt;
 play random - play a random card (1 draw)&lt;br /&gt;
 cheat phylum PHYLUM - cheat (5 draws) a fight with specified phylum&lt;br /&gt;
 cheat stat STAT - cheat (5 draws) 500 substats of specified stat&lt;br /&gt;
 cheat buff BUFF - cheat (5 draws) 20 turns of the specified buff, either by name&lt;br /&gt;
   or by effect: muscle, mysticality, moxie, item drop (or items), initiative&lt;br /&gt;
 cheat CARD - cheat (5 draws) the specified card name.&lt;br /&gt;
 PHYLUM, STAT, BUFF, and CARD all use fuzzy matching.&lt;br /&gt;
&lt;br /&gt;
 r16047: Track Armorer quest (Madness Bakery) as questM25Armorer.&lt;br /&gt;
&lt;br /&gt;
 r16060: Make fixed list of modifier maximizer strings configurable&lt;br /&gt;
 set maximizerList. Default value is:&lt;br /&gt;
 mainstat | mus | mys | mox | familiar weight | HP | MP | ML | DA | DR | +combat -tie | -combat -tie | initiative | exp | meat drop | item drop | 2.0 meat, 1.0 item | item, sea | weapon dmg | ranged dmg | elemental dmg | spell dmg | adv | pvp fights | hot res | cold res | spooky res | stench res | sleaze res | all res | mp regen | ML, 0.001 slime res | 4 clownosity, -tie | 7 raveosity, -tie | surgeonosity | +four songs&lt;br /&gt;
&lt;br /&gt;
 r16163: For all monsters where our name differs from Manuel&#039;s, add a new attribute: Manuel: &amp;quot;MANUEL NAME&amp;quot;&lt;br /&gt;
 Add .manuelName proxy field for ASH $monster data type&lt;br /&gt;
 &lt;br /&gt;
 Add &amp;quot;&#039;&#039;&#039;checkmanuel&#039;&#039;&#039;&amp;quot; command which will look up all of you&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;int monster_factoids_available( monster )&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 returns number of factoids currently retained in memory. Note that this&lt;br /&gt;
 can be more than the currently logged in character knows, since we don&#039;t&lt;br /&gt;
 flush the factoids from a previous login if you know all three factoids.&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;string monster_manuel_text( monster )&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 returns the full HTML of the monster manuel entry for the given&lt;br /&gt;
 monster. As above, this could have been retained from the previous&lt;br /&gt;
 character; otherwise, it will fetch and cache the text.&lt;br /&gt;
&lt;br /&gt;
 r16166: Add ASH function: &#039;&#039;&#039;boolean [monster] all_monsters_with_id()&#039;&#039;&#039; &lt;br /&gt;
 &lt;br /&gt;
 returns a map of all monsters that have a non-zero monster ID. It builds this&lt;br /&gt;
 afresh every time you call it, since new monsters can be (temporarily) added&lt;br /&gt;
&lt;br /&gt;
 r16169: Add MonsterManuelManager.flushCache()and expose it to ASH via flush_&#039;&#039;&#039;monster_manuel_cache()&#039;&#039;&#039; function.&lt;br /&gt;
 Add a second parameter to MonsterManuelManager.getFactoidsAvailable: boolean&lt;br /&gt;
 cachedOnly says &amp;quot;don&#039;t look on the page if the monster is not in the cache,&lt;br /&gt;
 because we have already looked at the page and the monster wasn&#039;t there.&amp;quot;&lt;br /&gt;
 Expose this to ASH by changing &#039;&#039;&#039;monster_factoids_available()&#039;&#039;&#039; parameters: monster, boolean&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 r16171: Add ASH function: &#039;&#039;&#039;boolean[monster] get_location_monsters(location)&#039;&#039;&#039; &lt;br /&gt;
 This has the same info as get_monsters, but returns a (perhaps) more useful aggregate value&lt;br /&gt;
&lt;br /&gt;
 r16200: &#039;&#039;&#039;Mayominder&#039;&#039;&#039; CLi command. Sets (buying if needed) Mayo Minder to a particular Mayo.&lt;br /&gt;
 Can specify Mayo name or use a description (adv, stat, food, drunk or bmc).&lt;br /&gt;
&lt;br /&gt;
 r16218: Add ASH function &#039;&#039;&#039;get_stash()&#039;&#039;&#039; to retrieve cached view of clan stash&lt;br /&gt;
&lt;br /&gt;
 r16391: Add ASH &#039;&#039;&#039;skill_modifier&#039;&#039;&#039;(object, modifiername) (currently only useful for &amp;quot;Skill&amp;quot;)&lt;br /&gt;
 to interpret the specified modifier of an item as a skill object.&lt;br /&gt;
&lt;br /&gt;
 r16396, r16398 &amp;amp; r16399 : &#039;&#039;&#039;Numberology&#039;&#039;&#039; command:&lt;br /&gt;
 numberology - lists all the currently possible seeds and what they give you&lt;br /&gt;
 numberology? N - N is the desired (numeric) result you want. Tell you if it is currently available.&lt;br /&gt;
 numberology N - Attempts to get the desired result.&lt;br /&gt;
 For both of these, if it is not currently available, tells you in how many turns it will be available.&lt;br /&gt;
&lt;br /&gt;
 16481: Add $vykea type to ASH&lt;br /&gt;
 vykea my_vykea_companion( )&lt;br /&gt;
 int to_int( vykea )&lt;br /&gt;
 vykea to_vykea( strict_string )&lt;br /&gt;
&lt;br /&gt;
 r16790: Add ASH function int [int] reverse_numberology([int adv_delta, int spleen_delta]).&lt;br /&gt;
 The return value is a map from result IDs to input seeds that generate said results.&lt;br /&gt;
 adv_delta and spleen_delta, which both default to 0, allow one to obtain forecasts on upcoming options.&lt;br /&gt;
 http://kolmafia.us/showthread.php?19664-ASH-command(s)-for-Numberology&amp;amp;p=133467&amp;amp;viewfull=1#post133467&lt;br /&gt;
&lt;br /&gt;
 r17909: Add ASH function: string numberology_prize( number )&lt;br /&gt;
&lt;br /&gt;
 r16800: Add multi-line string support to ASH. In order to specify a multi-line string, &lt;br /&gt;
 you must explicitly escape the end-of-line by placing a backslash (\) at the end of the line.&lt;br /&gt;
 &lt;br /&gt;
 Note that as a consequence of how the parser is written, it will trim all&lt;br /&gt;
 leading and trailing whitespace for each of these lines via Java&#039;s&lt;br /&gt;
 String.trim() method. Previously, this was irrelevant in the context of ASH&lt;br /&gt;
 strings, but now that ASH strings can span multiple lines, it is worth&lt;br /&gt;
 mentioning. If you want to have whitespace at the beginning of the line,&lt;br /&gt;
 just escape the first character of the line.&lt;br /&gt;
&lt;br /&gt;
 r16866: Add aggregate literals to ASH.&lt;br /&gt;
 http://kolmafia.us/showthread.php?20103-16866-Add-aggregate-literals-to-ASH-The-main-use-of-these-is-likely-for-initializa&lt;br /&gt;
 http://kolmafia.us/showthread.php?10685-Map-literals-in-ASH-(potential-feature)&amp;amp;p=134150#post134150&lt;br /&gt;
 &lt;br /&gt;
 r17658: http://kolmafia.us/showthread.php?10685-Map-literals-in-ASH-(potential-feature)&amp;amp;p=140128#post140128&lt;br /&gt;
&lt;br /&gt;
 r16886: Add &#039;&#039;&#039;witchess&#039;&#039;&#039; command to get Puzzle Champ. This only works if you have solved all puzzles.&lt;br /&gt;
&lt;br /&gt;
 r17023: Add terminal gCLI command&lt;br /&gt;
&lt;br /&gt;
 r17136: Track furniture in the Clan Rumpus Room, accessible with &#039;&#039;&#039;get_clan_rumpus()&#039;&#039;&#039;. Extra Adventures and PvP Fights from furniture are tracked.&lt;br /&gt;
 If your clan has a ball pit, the last entry in get_clan_rumpus() will indicate how many balls are in it.&lt;br /&gt;
 &lt;br /&gt;
 r17471: get_clan_rumpus() now returns int [string] map of furniture names.&lt;br /&gt;
 http://kolmafia.us/showthread.php?21006-Improve-return-value-of-get_clan_rumpus()&lt;br /&gt;
&lt;br /&gt;
 r17151: Add ASH and CLI support for stocking mall stores from Hagnk&#039;s.&lt;br /&gt;
 boolean &#039;&#039;&#039;put_shop_using_storage(int price, int limit, item it)&#039;&#039;&#039;&lt;br /&gt;
 boolean &#039;&#039;&#039;put_shop_using_storage(int price, int limit, int qty, item it)&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 and extends the CLI commands mallsell and shop.&lt;br /&gt;
 put_shop() works by batching requests for &amp;quot;shop put&amp;quot;. Similarly, buy_using_storage() puts together requests via &amp;quot;buy using storage&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 r17283: Add &amp;quot;timespinner&amp;quot; command courtesy of lost. &lt;br /&gt;
 Add &amp;quot;timespinner&amp;quot; command courtesy of lost.&lt;br /&gt;
 timespinner list food -&amp;gt; list available foods&lt;br /&gt;
 timespinner eat FOOD -&amp;gt; Spin and Munch on the specified food&lt;br /&gt;
 &lt;br /&gt;
 r17284: Allow pranking with timespinner&lt;br /&gt;
 &lt;br /&gt;
 r17286: Add &amp;quot;timespinner list monsters [filter]&amp;quot;. This will show all monsters that should be available in the Time-Spinner, optionally filtered (case-insensitive).&lt;br /&gt;
&lt;br /&gt;
 r17290: Add traceprint( string) ASH function&lt;br /&gt;
&lt;br /&gt;
 r17454: Experimental ASH feature: allow X++, X--, ++X, and --X with their normal meanings: post-increment, post-decrement, pre-increment, and pre-decrement.&lt;br /&gt;
&lt;br /&gt;
 r17460: Add Java-style &amp;quot;for&amp;quot; loop:&lt;br /&gt;
 for (INIT [, INIT]* ; CONDITION ; ITERATE [, ITERATE]* ) BODY&lt;br /&gt;
 You can have 0 or more INIT statements, which can be of the form&lt;br /&gt;
 X = EXP (where X is declared already) or&lt;br /&gt;
 TYPE X = EXP (whre X of type TYPE will be declared for use in the BODY scope).&lt;br /&gt;
 &lt;br /&gt;
 You can have 0 or more ITERATE statements, which can be of the form&lt;br /&gt;
 X++ or X--&lt;br /&gt;
 ++X or -- X&lt;br /&gt;
 X OPER EXP (where OPER can be =, +=, -=, etc.&lt;br /&gt;
 &lt;br /&gt;
 BODY can be a single statement ending with a ; or a block enclosed in {}, with no ; at the end, just like and other loop.&lt;br /&gt;
 &lt;br /&gt;
 break, continue, return, or exit are allowed within BODY, just like any loop.&lt;br /&gt;
&lt;br /&gt;
 r17477: Add boolean &#039;&#039;&#039;can_still_steal()&#039;&#039;&#039; function to ASH, which calls the same function &lt;br /&gt;
 that Stationary Buttons use do decide whether to enable or disable the &amp;quot;steal&amp;quot; button&lt;br /&gt;
&lt;br /&gt;
 r17612: ASH has a function to return all the candy in a given tier:&lt;br /&gt;
 item [int] &#039;&#039;&#039;candy_for_tier&#039;&#039;&#039;( int tier )&lt;br /&gt;
 The &amp;quot;&#039;&#039;&#039;checkcandy&#039;&#039;&#039;&amp;quot; command will list all unspaded candy or will tell you the candy type of each of its arguments.&lt;br /&gt;
&lt;br /&gt;
 r17613: More Sweet Synthesis stuff: ASH functions:&lt;br /&gt;
 boolean &#039;&#039;&#039;sweet_synthesis&#039;&#039;&#039;( item candy1, item candy2 )&lt;br /&gt;
 effect &#039;&#039;&#039;sweet_synthesis_result&#039;&#039;&#039;( item candy1, item candy2 )&lt;br /&gt;
 item [int] &#039;&#039;&#039;sweet_synthesis_pairings&#039;&#039;&#039;( effect result, item candy1 )&lt;br /&gt;
&lt;br /&gt;
 r17629: Add candy_for_tier() and sweet_synthesis_pairing() ASH functions that have a &amp;quot;flags&amp;quot; argument, &lt;br /&gt;
 in which you can specify filtering. 0 = no filtering, 1 = available, 2 = allowed, 3 = available and allowed.&lt;br /&gt;
&lt;br /&gt;
 r17637: Add &amp;quot;synthesize&amp;quot; command: synthesize CANDY1, CANDY2 - combines candies to get an effect&lt;br /&gt;
 synthesize? CANDY1, CANDY2 - tells you about the candies and the effect&lt;br /&gt;
&lt;br /&gt;
 r17644: To automatically select pairs of candy, add some ASH functions:&lt;br /&gt;
 item [int] sweet_synthesis_pair( effect )&lt;br /&gt;
 item [int] sweet_synthesis_pair( effect, flags )&lt;br /&gt;
 &lt;br /&gt;
 For the desired effect, pick a suitable pair of candies.&lt;br /&gt;
 If you are in-run, it will use only &amp;quot;available&amp;quot; candy and will prefer candies that you have more of.&lt;br /&gt;
 If you are post-run, it will consider all candies and will choose the pair with the lowest total mall price.&lt;br /&gt;
 If you want to force &amp;quot;available&amp;quot; candies post-run, use flags = 1.&lt;br /&gt;
 &lt;br /&gt;
 boolean sweet_synthesis( effect )&lt;br /&gt;
 boolean sweet_synthesis( effect, flags )&lt;br /&gt;
 &lt;br /&gt;
 The same, but it will actually perform Sweet Synthesis to get the effect.&lt;br /&gt;
 &lt;br /&gt;
 http://kolmafia.us/showthread.php?21144-Rethinking-Candy&amp;amp;p=139996&amp;amp;viewfull=1#post139996&lt;br /&gt;
&lt;br /&gt;
 r17645: Add CLI commands: &lt;br /&gt;
 synthesize EFFECT&lt;br /&gt;
 synthesize? EFFECT&lt;br /&gt;
&lt;br /&gt;
 r17673: Add &amp;quot;shop reprice&amp;quot; command and reprice_shop() ash function&lt;br /&gt;
&lt;br /&gt;
 r17677: edpiece? command tells you the effects of the various decorations, as well as telling you which one is currently equipped.&lt;br /&gt;
&lt;br /&gt;
 r17817: Added CLI command &amp;quot;absorb&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 r17819: Add ASH function to interface to KoL&#039;s /count chat command:&lt;br /&gt;
 int slash_count( item it )&lt;br /&gt;
&lt;br /&gt;
 r17845: Add my_absorbs() ash function&lt;br /&gt;
&lt;br /&gt;
 r17892: Add a bunch of ASH support for doing interesting things with properties:&lt;br /&gt;
 http://kolmafia.us/showthread.php?21570-Properties&amp;amp;p=141625&amp;amp;viewfull=1#post141625 &lt;br /&gt;
 http://kolmafia.us/showthread.php?21570-Properties&amp;amp;p=141629&amp;amp;viewfull=1#post141629&lt;br /&gt;
 &lt;br /&gt;
 boolean [string] get_all_properties( string filter, boolean global )&lt;br /&gt;
 boolean property_exists( string name )&lt;br /&gt;
 boolean property_exists( string name, boolean global )&lt;br /&gt;
 boolean property_has_default( string name )&lt;br /&gt;
 string property_default_value( string name )&lt;br /&gt;
 string get_property( string name, boolean global )&lt;br /&gt;
 string remove_property( string name )&lt;br /&gt;
 string remove_property( string name, boolean global )&lt;br /&gt;
 boolean rename_property( string old_name, string new_name )&lt;br /&gt;
&lt;br /&gt;
 r17911: Add ASH convenience functions: &lt;br /&gt;
 boolean starts_with( string value, string prefix );&lt;br /&gt;
 boolean ends_with( string value, string suffix );&lt;br /&gt;
&lt;br /&gt;
 r17912: Add ASH function to get the full unambiguous card name from the Deck of Every Card:&lt;br /&gt;
 string every_card_name( string name )&lt;br /&gt;
&lt;br /&gt;
 r17921: Add ASH get_closet() and get_storage() commands:&lt;br /&gt;
 int [item] get_closet();&lt;br /&gt;
 int [item] get_storage();&lt;br /&gt;
&lt;br /&gt;
 r17936: Add ASH function: void mood_execute( int multiplicity )&lt;br /&gt;
 multiplicity determines the minimum number of casts (or items) a given trigger will use; if&lt;br /&gt;
 the mood trigger is &amp;quot;cast 1 SKILL&amp;quot;, multiplicty 3 will treat it as &amp;quot;cast 3 SKILL&amp;quot;.&lt;br /&gt;
 multiplicity = -1 is what KoLmafia uses internally for between battle checks.&lt;br /&gt;
 multiplicity = 0 is what the CLI command &amp;quot;mood execute&amp;quot; uses.&lt;br /&gt;
&lt;br /&gt;
 r17937-8: Add ASH function: string [int] available_choice_options( boolean spoilers )&lt;br /&gt;
 If the argument is &amp;quot;true&amp;quot;, the Relay Browser choice spoilers will be appended to KoL&#039;s choice choice text (in parentheses).&lt;br /&gt;
&lt;br /&gt;
 r17969/17970 adds the &amp;quot;spacegate&amp;quot; command.&lt;br /&gt;
 spacegate vaccine X&lt;br /&gt;
 (where X is 1, 2, or 3) will visit the Spacegate Vaccinator to get the appropriate vaccine.&lt;br /&gt;
&lt;br /&gt;
 r18000: Add ASH function: int my_session_meat() which tracks how much meat the character has gained&lt;br /&gt;
 or lost since login via character actions; mall sales and incoming kmail containing meat&lt;br /&gt;
 will increment my_meat(), but not this value.&lt;br /&gt;
&lt;br /&gt;
 r18040: When you define a map with value as a zero-length array, file_to_map can&lt;br /&gt;
 now populate it. The values will be variable-length array literals that&lt;br /&gt;
 consume all the data values from the line of your file. Thus: keyVALUE(VALUE)*&lt;br /&gt;
 &lt;br /&gt;
 You can now use foreach to iterate over an aggregate literal.&lt;br /&gt;
 &lt;br /&gt;
 http://kolmafia.us/showthread.php?21742-Best-way-to-load-questslog-txt&amp;amp;p=143001&amp;amp;viewfull=1#post143001&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;
== 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;br /&gt;
[[Category:Contributing]]&lt;/div&gt;</summary>
		<author><name>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Run_choice&amp;diff=8506</id>
		<title>Run choice</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Run_choice&amp;diff=8506"/>
		<updated>2017-05-24T22:24:47Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: Created page with &amp;quot;{{ #vardefine:name|run_choice}}{{ #vardefine:return_type|buffer}}{{  FunctionPage| name={{#var:name}}|  function1={{Function| name={{#var:name}}| aggregate={{#var:aggregate}}|...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|run_choice}}{{&lt;br /&gt;
#vardefine:return_type|buffer}}{{&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|choice}}|&lt;br /&gt;
p1desc={{Pspan|choice}} is the number of the choice option you wish to take. Use &amp;quot;-1&amp;quot; to automate the rest of the choice using existing choice adventure settings.|&lt;br /&gt;
&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function_description=Proceeds to run a choice using your current KoLmafia settings. This function returns the HTML from the choice page (not just what is displayed, but all markup).  Most commonly used to finish up choices started via [[visit_url|visit_url()]].&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another handy use for this function is to finish up choices that were started in the relay browser, or were interrupted (i.e. mafia aborted for you to manually make a choice selection).  Typing &amp;quot;ashq run_choice(choice)&amp;quot; into the CLI will finish up the choice for you using your selected choice.  Note that &amp;quot;ashq&amp;quot; is necessary rather than &amp;quot;ash&amp;quot; to avoid spewing the entire choice results page into the CLI.|&lt;br /&gt;
&lt;br /&gt;
code1={{CodeSample|&lt;br /&gt;
title=Code Sample|&lt;br /&gt;
description=This is a personalized version of adv1() that is capable of returning information about which adventure is encountered so that you can look for a specific choice adventure. If a combat is encountered instead of a choice adventure, run_combat() is used.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
int run_adv(location place) {&lt;br /&gt;
   string page_text = to_url(place).visit_url();&lt;br /&gt;
   string choiceAdventure = &amp;quot;-1&amp;quot;;&lt;br /&gt;
   matcher m_choice = create_matcher(&amp;quot;whichchoice value=(\\d+)&amp;quot;, page_text);&lt;br /&gt;
   while(page_text.contains_text(&amp;quot;choice.php&amp;quot;)) {&lt;br /&gt;
      m_choice.reset(page_text);&lt;br /&gt;
      m_choice.find();&lt;br /&gt;
      choiceAdventure = m_choice.group(1);&lt;br /&gt;
      string choice_num = get_property(&amp;quot;choiceAdventure&amp;quot;+ choiceAdventure);&lt;br /&gt;
      &lt;br /&gt;
      if(choice_num == &amp;quot;0&amp;quot;) abort(&amp;quot;Manual Control for &amp;quot;+ choiceAdventure);&lt;br /&gt;
      if(choice_num == &amp;quot;&amp;quot;) abort(&amp;quot;Unsupported Choice Adventure!&amp;quot;);&lt;br /&gt;
      &lt;br /&gt;
      &lt;br /&gt;
      page_text = run_choice(choice_num);&lt;br /&gt;
   }&lt;br /&gt;
   if(page_text.contains_text(&amp;quot;Combat&amp;quot;))&lt;br /&gt;
      run_combat();&lt;br /&gt;
   return choiceAdventure.to_int();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
see_also={{SeeAlso|adventure|adv1|visit_url|run_combat|run_turn}}|&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Adventuring]]&lt;/div&gt;</summary>
		<author><name>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Run_combat&amp;diff=5369</id>
		<title>Run combat</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Run_combat&amp;diff=5369"/>
		<updated>2017-05-24T22:06:04Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|run_combat}}{{&lt;br /&gt;
#vardefine:return_type|buffer}}{{&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;
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|string|filter}}|&lt;br /&gt;
p1desc={{Pspan|filter}} is a macro or the name of a combat filter function defined elsewhere in your script, with the same behavior as in the 3-paramater version of adventure(). An empty string can be passed to use your battle action or CCS as normal. Essentially, this allows the scripter to put a CCS or macro into a script.|&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function_description=Proceeds to run a combat using your current KoLmafia settings. This function returns the HTML from the final round of combat (not just what is displayed, but all markup).  Most commonly used to finish up combats started via [[visit_url|visit_url()]].&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another handy use for this function is to finish up combats that were started in the relay browser, or were interrupted (causing mafia to pop up the minibrowser).  Typing &amp;quot;ashq run_combat()&amp;quot; into the CLI will finish up the combat for you using your current CCS/battle action.  Note that &amp;quot;ashq&amp;quot; is necessary rather than &amp;quot;ash&amp;quot; to avoid spewing the entire combat results page into the CLI.|&lt;br /&gt;
&lt;br /&gt;
code1={{CodeSample|&lt;br /&gt;
title=Code Sample|&lt;br /&gt;
description=This is a personalized version of adv1() that is capable of returning information about which adventure is encountered so that you can look for a specific choice adventure. If a combat is encountered instead of a choice adventure, run_combat() is used.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
int run_adv(location place) {&lt;br /&gt;
   string page_text = to_url(place).visit_url();&lt;br /&gt;
   string choiceAdventure = &amp;quot;-1&amp;quot;;&lt;br /&gt;
   matcher m_choice = create_matcher(&amp;quot;whichchoice value=(\\d+)&amp;quot;, page_text);&lt;br /&gt;
   while(page_text.contains_text(&amp;quot;choice.php&amp;quot;)) {&lt;br /&gt;
      m_choice.reset(page_text);&lt;br /&gt;
      m_choice.find();&lt;br /&gt;
      choiceAdventure = m_choice.group(1);&lt;br /&gt;
      string choice_num = get_property(&amp;quot;choiceAdventure&amp;quot;+ choiceAdventure);&lt;br /&gt;
      &lt;br /&gt;
      if(choice_num == &amp;quot;0&amp;quot;) abort(&amp;quot;Manual Control for &amp;quot;+ choiceAdventure);&lt;br /&gt;
      if(choice_num == &amp;quot;&amp;quot;) abort(&amp;quot;Unsupported Choice Adventure!&amp;quot;);&lt;br /&gt;
      &lt;br /&gt;
      page_text = visit_url(&amp;quot;choice.php?pwd&amp;amp;whichchoice=&amp;quot;+ choiceAdventure +&amp;quot;&amp;amp;option=&amp;quot;+ choice_num);&lt;br /&gt;
   }&lt;br /&gt;
   if(page_text.contains_text(&amp;quot;Combat&amp;quot;))&lt;br /&gt;
      run_combat();&lt;br /&gt;
   return choiceAdventure.to_int();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
see_also={{SeeAlso|adventure|adv1|visit_url|run_choice|run_turn}}|&lt;br /&gt;
&lt;br /&gt;
special=Will return the text of the last combat encounter when called independently of a fight page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Using run_combat() to execute fights will not do the normal post-fight processing that mafia normally performs with [[adv1]] or [[adventure]].&lt;br /&gt;
*run_combat() will not cause your afterAdventureScript to run&lt;br /&gt;
*run combat() will not trigger post-combat restoration&lt;br /&gt;
*run combat() will not check if adventuring goals have been met&lt;br /&gt;
*run combat() does not obey counter aborts (e.g. fortune cookie)&lt;br /&gt;
*run combat() does not update mafia&#039;s custom quest progress properties (e.g. palindomeDudesDefeated)&lt;br /&gt;
|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Adventuring]]&lt;/div&gt;</summary>
		<author><name>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Run_combat&amp;diff=5368</id>
		<title>Run combat</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Run_combat&amp;diff=5368"/>
		<updated>2017-05-24T21:59:47Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|run_combat}}{{&lt;br /&gt;
#vardefine:return_type|buffer}}{{&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;
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|string|filter}}|&lt;br /&gt;
p1desc={{Pspan|filter}} is a macro or the name of a combat filter function defined elsewhere in your script, with the same behavior as in the 3-paramater version of adventure(). An empty string can be passed to use your battle action or CCS as normal. Essentially, this allows the scripter to put a CCS or macro into a script.|&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function_description=Proceeds to run a combat using your current KoLmafia settings. This function returns the HTML from the final round of combat (not just what is displayed, but all markup).  Most commonly used to finish up combats started via [[visit_url|visit_url()]].&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another handy use for this function is to finish up combats that were started in the relay browser, or were interrupted (causing mafia to pop up the minibrowser).  Typing &amp;quot;ashq run_combat()&amp;quot; into the CLI will finish up the combat for you using your current CCS/battle action.  Note that &amp;quot;ashq&amp;quot; is necessary rather than &amp;quot;ash&amp;quot; to avoid spewing the entire combat results page into the CLI.|&lt;br /&gt;
&lt;br /&gt;
code1={{CodeSample|&lt;br /&gt;
title=Code Sample|&lt;br /&gt;
description=This is a personalized version of adv1() that is capable of returning information about which adventure is encountered so that you can look for a specific choice adventure. If a combat is encountered instead of a choice adventure, run_combat() is used.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
int run_adv(location place) {&lt;br /&gt;
   string page_text = to_url(place).visit_url();&lt;br /&gt;
   string choiceAdventure = &amp;quot;-1&amp;quot;;&lt;br /&gt;
   matcher m_choice = create_matcher(&amp;quot;whichchoice value=(\\d+)&amp;quot;, page_text);&lt;br /&gt;
   while(page_text.contains_text(&amp;quot;choice.php&amp;quot;)) {&lt;br /&gt;
      m_choice.reset(page_text);&lt;br /&gt;
      m_choice.find();&lt;br /&gt;
      choiceAdventure = m_choice.group(1);&lt;br /&gt;
      string choice_num = get_property(&amp;quot;choiceAdventure&amp;quot;+ choiceAdventure);&lt;br /&gt;
      &lt;br /&gt;
      if(choice_num == &amp;quot;0&amp;quot;) abort(&amp;quot;Manual Control for &amp;quot;+ choiceAdventure);&lt;br /&gt;
      if(choice_num == &amp;quot;&amp;quot;) abort(&amp;quot;Unsupported Choice Adventure!&amp;quot;);&lt;br /&gt;
      &lt;br /&gt;
      page_text = visit_url(&amp;quot;choice.php?pwd&amp;amp;whichchoice=&amp;quot;+ choiceAdventure +&amp;quot;&amp;amp;option=&amp;quot;+ choice_num);&lt;br /&gt;
   }&lt;br /&gt;
   if(page_text.contains_text(&amp;quot;Combat&amp;quot;))&lt;br /&gt;
      run_combat();&lt;br /&gt;
   return choiceAdventure.to_int();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
see_also={{SeeAlso|adventure|adv1|visit_url}}|&lt;br /&gt;
&lt;br /&gt;
special=Will return the text of the last combat encounter when called independently of a fight page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Using run_combat() to execute fights will not do the normal post-fight processing that mafia normally performs with [[adv1]] or [[adventure]].&lt;br /&gt;
*run_combat() will not cause your afterAdventureScript to run&lt;br /&gt;
*run combat() will not trigger post-combat restoration&lt;br /&gt;
*run combat() will not check if adventuring goals have been met&lt;br /&gt;
*run combat() does not obey counter aborts (e.g. fortune cookie)&lt;br /&gt;
*run combat() does not update mafia&#039;s custom quest progress properties (e.g. palindomeDudesDefeated)&lt;br /&gt;
|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Adventuring]]&lt;/div&gt;</summary>
		<author><name>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Eudora&amp;diff=8505</id>
		<title>Eudora</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Eudora&amp;diff=8505"/>
		<updated>2017-05-24T21:51:03Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|eudora}}{{&lt;br /&gt;
#vardefine:return_type|boolean}}{{&lt;br /&gt;
#vardefine:return_also|string}}{{&lt;br /&gt;
&lt;br /&gt;
FunctionPage|&lt;br /&gt;
&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;
parameter1={{Param|string|correspondent}}|&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
function2={{Function|&lt;br /&gt;
name={{#var:name}}|&lt;br /&gt;
return_type=string|&lt;br /&gt;
p1desc={{pspan|correspondent}} which eudora correspondent to switch to. (Penpal, Game Magazine, Xi?, New-You Club) |&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
function_description=Similar to the CLI &amp;quot;eudora&amp;quot; commmand.  The boolean version switches between correspondents.  It returns true if the switch was successful.  The string version returns the current correspondent. (see KoLMafia r16978)|&lt;br /&gt;
&lt;br /&gt;
code1={{CodeSample|&lt;br /&gt;
title=Code Sample|&lt;br /&gt;
description=Check if your current correspondent is the New-You Club, and if not, switch to it.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
if (eudora() != &amp;quot;New-You Club&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   eudora(&amp;quot;New-You Club&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
cli_equiv=eudora (penpal, game, xi, newyou) - switch to the specified correspondent.  If no parameter is provided, the command will report your current correspondent.|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Your Character]]&lt;/div&gt;</summary>
		<author><name>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Help:To_Do_List&amp;diff=7837</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=7837"/>
		<updated>2017-05-24T07:03:17Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: &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;
&lt;br /&gt;
 &#039;&#039;&#039;test CLI commands:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 r14764: add &amp;quot;test xpath&amp;quot; to, well, test xpath expressions&lt;br /&gt;
 r14767: Expose an xpath function that relay scripts can use after they&#039;ve invoked visit_url().&lt;br /&gt;
 http://kolmafia.us/showthread.php?16722-the-DOM-regex-scalability-and-other-jargony-words&lt;br /&gt;
 http://kolmafia.us/showthread.php?16764-xpath-primer&lt;br /&gt;
 &lt;br /&gt;
 r14967: Add &amp;quot;test mchat&amp;quot; command which can be used after &amp;quot;test load JSONFILE&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 This is how test newitem is used!&lt;br /&gt;
 http://kolmafia.us/showthread.php?17365-When-detecting-new-items-detect-new-outfits-too&amp;amp;p=119368&amp;amp;viewfull=1#post119368&lt;br /&gt;
  r15741, Now &amp;quot;test newitem descId&amp;quot; no longer requires itemId.&lt;br /&gt;
 &lt;br /&gt;
 r15176: Add &amp;quot;test adventure URL&amp;quot; CLI command to see how we translate the given URL&lt;br /&gt;
 &lt;br /&gt;
 r15239: Add &amp;quot;test dump_disabled_skills&amp;quot; to the gCLI to aid upcoming debugging&lt;br /&gt;
 &lt;br /&gt;
 r15606: Add &amp;quot;test encounter URL&amp;quot; command.&lt;br /&gt;
 &lt;br /&gt;
 r15874: Add &amp;quot;test leet NAME&amp;quot; command to check if KoL monster names get translated successfully from their 1337 versions.&lt;br /&gt;
 &lt;br /&gt;
 r15883: &amp;quot;test load HTMLFILE&amp;quot; followed by &amp;quot;test aagain&amp;quot; will print the Adventure Again URL from that page.&lt;br /&gt;
 &lt;br /&gt;
 r16275: &amp;quot;test visit-choice&amp;quot; now prints the various choice options available on the loaded HTML text.&lt;br /&gt;
 &lt;br /&gt;
 r16309: Add &amp;quot;test manuel&amp;quot; command which will process a loaded HTML file as if it were the response to a visit to Monster Manuel.&lt;br /&gt;
 http://kolmafia.us/showthread.php?19094-shrine-to-the-Barrel-god-(Sept-2015-IotM)&amp;amp;p=128256&amp;amp;viewfull=1#post128256&lt;br /&gt;
 &lt;br /&gt;
 r15928: Add &amp;quot;test monster&amp;quot; command to parse the monster out of the saved HTML and save&lt;br /&gt;
 it where ASH&#039;s last_monster() function will fetch it.&lt;br /&gt;
 &lt;br /&gt;
 r16496: Add &amp;quot;test spleen X&amp;quot; to set your current spleen use to X (as far as KoLmafia knows; obviously it does not actually change KoL&#039;s value).&lt;br /&gt;
 &lt;br /&gt;
 r16508: Add &amp;quot;test numberology adventureDelta spleenDelta&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 r16519: Add &amp;quot;test stats X&amp;quot; to set all three stat values to X substats (if X &amp;gt; 0).&lt;br /&gt;
 &lt;br /&gt;
 r17296: Add &amp;quot;test cookies&amp;quot; command to see values of the &amp;quot;special&amp;quot; cookies we track.&lt;br /&gt;
 &lt;br /&gt;
 r17446: Soup up &amp;quot;test crop&amp;quot; command to allow specifying current crop and test crop.&lt;br /&gt;
 Fix crop &amp;quot;is better than&amp;quot; test to only include count when comparing identical crop type&lt;br /&gt;
 &lt;br /&gt;
 r17507: Experimental: ItemDatabase keeps a set of all item ids for each item name.&lt;br /&gt;
 &amp;gt; test itemids seal tooth&lt;br /&gt;
 seal tooth has 1 itemid: 2&lt;br /&gt;
 &amp;gt; test itemids Staff of Ed&lt;br /&gt;
 Staff of Ed has 2 itemids: 2325, 7961&lt;br /&gt;
 &amp;gt; test itemids ancient amulet&lt;br /&gt;
 ancient amulet has 2 itemids: 2180, 7963&lt;br /&gt;
 &lt;br /&gt;
 r17520 does the same for effects:&lt;br /&gt;
 &amp;gt; test effectids Got Milk&lt;br /&gt;
 Got Milk has 1 effectid: 211&lt;br /&gt;
 &amp;gt; test effectids A Little Bit Evil&lt;br /&gt;
 A Little Bit Evil has 6 effectids: 597, 598, 599, 600, 601, 602&lt;br /&gt;
&lt;br /&gt;
 r15148: Track Xiblaxian holo-wrist-puter drops in &#039;&#039;&#039;_holoWristDrops&#039;&#039;&#039;, and progress toward the next drop in &#039;&#039;&#039;_holoWristProgress&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 r15177: Track which keys have been used on the Sorceress Tower door in a setting: &#039;&#039;&#039;nsTowerDoorKeysUsed&#039;&#039;&#039;&lt;br /&gt;
 It is a comma separated list.&lt;br /&gt;
&lt;br /&gt;
 r15235: Add buffer &#039;&#039;&#039;run_choice( int )&#039;&#039;&#039; command. When in a choice adventure, use this to submit the selected option.&lt;br /&gt;
 With -1 as imput, it will automate the rest of the choice using existing settings.&lt;br /&gt;
 &lt;br /&gt;
 Also add &#039;&#039;&#039;run_turn()&#039;&#039;&#039;, which will work as run_combat() or run_choice( -1 ) depending on whether you are in combat or in a choice.&lt;br /&gt;
&lt;br /&gt;
 r15238: Provide &#039;&#039;&#039;limit_mode()&#039;&#039;&#039; function that returns (currently) null or spelunky.&lt;br /&gt;
&lt;br /&gt;
 r15354: Move &amp;quot;equip all familiars&amp;quot; function from the FamiliarTrainingFrame to a new&lt;br /&gt;
 module: FamiliarManager. Let ASH use it via boolean &#039;&#039;&#039;equip_all_familiars()&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 r15440: Add &amp;quot;&#039;&#039;&#039;servants&#039;&#039;&#039;&amp;quot; command to list Ed&#039;s servants, &amp;quot;&#039;&#039;&#039;servant&#039;&#039;&#039;&amp;quot; to list status of your current servant, &lt;br /&gt;
 and &amp;quot;&#039;&#039;&#039;servant TYPE&#039;&#039;&#039;&amp;quot; to switch to the servant of the specified type.&lt;br /&gt;
&lt;br /&gt;
 r15441 adds the $servant data type to ASH and the following functions to manipulate them:&lt;br /&gt;
 &lt;br /&gt;
 int &#039;&#039;&#039;to_servant&#039;&#039;&#039;( servant )&lt;br /&gt;
 servant to_servant( int )&lt;br /&gt;
 servant to_servant( string )&lt;br /&gt;
 servant &#039;&#039;&#039;my_servant&#039;&#039;&#039;()&lt;br /&gt;
 boolean &#039;&#039;&#039;have_servant&#039;&#039;&#039;( servant )&lt;br /&gt;
 boolean &#039;&#039;&#039;use_servant&#039;&#039;&#039;( servant )&lt;br /&gt;
 &lt;br /&gt;
 Additionally, it has the following proxy fields:&lt;br /&gt;
 int id&lt;br /&gt;
 string name&lt;br /&gt;
 int level&lt;br /&gt;
 int experience&lt;br /&gt;
 string image,&lt;br /&gt;
 string level1_ability&lt;br /&gt;
 string level7_ability&lt;br /&gt;
 string level14_ability&lt;br /&gt;
 string level21_ability&lt;br /&gt;
&lt;br /&gt;
 r15466: Add &#039;&#039;&#039;chew&#039;&#039;&#039;(INT,ITEM) to ASH for cnsuming spleen toxins&lt;br /&gt;
&lt;br /&gt;
 equip [2268] will equip an item by number.&lt;br /&gt;
&lt;br /&gt;
 r15475: Add &#039;&#039;&#039;prefref&#039;&#039;&#039; as a built-in gCLI command&lt;br /&gt;
&lt;br /&gt;
 r15590: &#039;&#039;&#039;Add run_combat( string filter )&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 r15676: Make built-in Sorceress Tower scripts available to scripts.&lt;br /&gt;
&lt;br /&gt;
 CLI: &#039;&#039;&#039;maze&#039;&#039;&#039; [arg]&lt;br /&gt;
 CLI: &#039;&#039;&#039;door&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;hedge_maze( string )&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;tower_door()&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 The string argument for the maze can be one of:&lt;br /&gt;
 traps - 4 turns, all traps&lt;br /&gt;
 gopher or duck - 7 turns gopher and duck&lt;br /&gt;
 chihuahua or kiwi - 7 turns chihuahua and kiwi&lt;br /&gt;
 nugglets - 10 turns, all nugglets&lt;br /&gt;
&lt;br /&gt;
 r15791: The &amp;quot;pvp&amp;quot; command with no arguments will list available stances and their&lt;br /&gt;
 associated option number. You now can now specify a stance by either name or&lt;br /&gt;
 number. The &amp;quot;pvp&amp;quot; command now requires you to choose a stance, since it can&lt;br /&gt;
 no longer choose a reaosnable default based on your stats.&lt;br /&gt;
&lt;br /&gt;
 r15796: Add ASH function: &#039;&#039;&#039;int [string] current_pvp_stances()&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 r15840: Provide  ASH &#039;&#039;&#039;string leetify( string )&#039;&#039;&#039; function to garble strings.&lt;br /&gt;
&lt;br /&gt;
 r15847: Add &amp;quot;Random Monster Attributes&amp;quot; modifier as provided by dice items and the&lt;br /&gt;
 Curse of Randomness status effect. Add random_attributes proxy field to ASH&lt;br /&gt;
 $monster type. Munge random attributes from monster names is the Random Monster&lt;br /&gt;
 Attribute modifier is &amp;gt; 0, not only if current path is One Crazy Random Summer.&lt;br /&gt;
&lt;br /&gt;
 r15922: Add Familiar Script. This script will run after changing familiars, before &lt;br /&gt;
 automatically changing familiar equipment. The script should have a boolean main() function. &lt;br /&gt;
 Returning true will cause normal familiar equipiment switching to be skipped,&lt;br /&gt;
 while false will lead to it running after the script returns.&lt;br /&gt;
&lt;br /&gt;
 r15937: Add mayosoak command&lt;br /&gt;
&lt;br /&gt;
 r15959: Add knowledge of familiar drop counters to FamiliarData, &lt;br /&gt;
 New ASH proxy fields for $familiar data type:&lt;br /&gt;
 drop_name = short name of the thing that drops&lt;br /&gt;
 drop_item = if it is a single item, the $item. Otherwise, $item[none]&lt;br /&gt;
 drops_today = how many things this familiar has dropped so far today&lt;br /&gt;
 drops_limit = the maximum number of available drops from this familiar today&lt;br /&gt;
&lt;br /&gt;
 CLI: wumpus status - Display status of last wumpus cave.&lt;br /&gt;
 r16014: Add &amp;quot;wumpus replay FILE&amp;quot; command to process the session log of a wumpus exploration and make deductions, etc.&lt;br /&gt;
 r16015: Add &amp;quot;wumpus reset&amp;quot; CLI command to clear in-memory Wumpus cave state&lt;br /&gt;
&lt;br /&gt;
 r16044:The &amp;quot;cheat&amp;quot; command is a synonym for the &amp;quot;play&amp;quot; command. options:&lt;br /&gt;
 play random - play a random card (1 draw)&lt;br /&gt;
 cheat phylum PHYLUM - cheat (5 draws) a fight with specified phylum&lt;br /&gt;
 cheat stat STAT - cheat (5 draws) 500 substats of specified stat&lt;br /&gt;
 cheat buff BUFF - cheat (5 draws) 20 turns of the specified buff, either by name&lt;br /&gt;
   or by effect: muscle, mysticality, moxie, item drop (or items), initiative&lt;br /&gt;
 cheat CARD - cheat (5 draws) the specified card name.&lt;br /&gt;
 PHYLUM, STAT, BUFF, and CARD all use fuzzy matching.&lt;br /&gt;
&lt;br /&gt;
 r16047: Track Armorer quest (Madness Bakery) as questM25Armorer.&lt;br /&gt;
&lt;br /&gt;
 r16060: Make fixed list of modifier maximizer strings configurable&lt;br /&gt;
 set maximizerList. Default value is:&lt;br /&gt;
 mainstat | mus | mys | mox | familiar weight | HP | MP | ML | DA | DR | +combat -tie | -combat -tie | initiative | exp | meat drop | item drop | 2.0 meat, 1.0 item | item, sea | weapon dmg | ranged dmg | elemental dmg | spell dmg | adv | pvp fights | hot res | cold res | spooky res | stench res | sleaze res | all res | mp regen | ML, 0.001 slime res | 4 clownosity, -tie | 7 raveosity, -tie | surgeonosity | +four songs&lt;br /&gt;
&lt;br /&gt;
 r16163: For all monsters where our name differs from Manuel&#039;s, add a new attribute: Manuel: &amp;quot;MANUEL NAME&amp;quot;&lt;br /&gt;
 Add .manuelName proxy field for ASH $monster data type&lt;br /&gt;
 &lt;br /&gt;
 Add &amp;quot;&#039;&#039;&#039;checkmanuel&#039;&#039;&#039;&amp;quot; command which will look up all of you&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;int monster_factoids_available( monster )&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 returns number of factoids currently retained in memory. Note that this&lt;br /&gt;
 can be more than the currently logged in character knows, since we don&#039;t&lt;br /&gt;
 flush the factoids from a previous login if you know all three factoids.&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;string monster_manuel_text( monster )&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 returns the full HTML of the monster manuel entry for the given&lt;br /&gt;
 monster. As above, this could have been retained from the previous&lt;br /&gt;
 character; otherwise, it will fetch and cache the text.&lt;br /&gt;
&lt;br /&gt;
 r16166: Add ASH function: &#039;&#039;&#039;boolean [monster] all_monsters_with_id()&#039;&#039;&#039; &lt;br /&gt;
 &lt;br /&gt;
 returns a map of all monsters that have a non-zero monster ID. It builds this&lt;br /&gt;
 afresh every time you call it, since new monsters can be (temporarily) added&lt;br /&gt;
&lt;br /&gt;
 r16169: Add MonsterManuelManager.flushCache()and expose it to ASH via flush_&#039;&#039;&#039;monster_manuel_cache()&#039;&#039;&#039; function.&lt;br /&gt;
 Add a second parameter to MonsterManuelManager.getFactoidsAvailable: boolean&lt;br /&gt;
 cachedOnly says &amp;quot;don&#039;t look on the page if the monster is not in the cache,&lt;br /&gt;
 because we have already looked at the page and the monster wasn&#039;t there.&amp;quot;&lt;br /&gt;
 Expose this to ASH by changing &#039;&#039;&#039;monster_factoids_available()&#039;&#039;&#039; parameters: monster, boolean&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 r16171: Add ASH function: &#039;&#039;&#039;boolean[monster] get_location_monsters(location)&#039;&#039;&#039; &lt;br /&gt;
 This has the same info as get_monsters, but returns a (perhaps) more useful aggregate value&lt;br /&gt;
&lt;br /&gt;
 r16200: &#039;&#039;&#039;Mayominder&#039;&#039;&#039; CLi command. Sets (buying if needed) Mayo Minder to a particular Mayo.&lt;br /&gt;
 Can specify Mayo name or use a description (adv, stat, food, drunk or bmc).&lt;br /&gt;
&lt;br /&gt;
 r16218: Add ASH function &#039;&#039;&#039;get_stash()&#039;&#039;&#039; to retrieve cached view of clan stash&lt;br /&gt;
&lt;br /&gt;
 r16391: Add ASH &#039;&#039;&#039;skill_modifier&#039;&#039;&#039;(object, modifiername) (currently only useful for &amp;quot;Skill&amp;quot;)&lt;br /&gt;
 to interpret the specified modifier of an item as a skill object.&lt;br /&gt;
&lt;br /&gt;
 r16396, r16398 &amp;amp; r16399 : &#039;&#039;&#039;Numberology&#039;&#039;&#039; command:&lt;br /&gt;
 numberology - lists all the currently possible seeds and what they give you&lt;br /&gt;
 numberology? N - N is the desired (numeric) result you want. Tell you if it is currently available.&lt;br /&gt;
 numberology N - Attempts to get the desired result.&lt;br /&gt;
 For both of these, if it is not currently available, tells you in how many turns it will be available.&lt;br /&gt;
&lt;br /&gt;
 16481: Add $vykea type to ASH&lt;br /&gt;
 vykea my_vykea_companion( )&lt;br /&gt;
 int to_int( vykea )&lt;br /&gt;
 vykea to_vykea( strict_string )&lt;br /&gt;
&lt;br /&gt;
 r16790: Add ASH function int [int] reverse_numberology([int adv_delta, int spleen_delta]).&lt;br /&gt;
 The return value is a map from result IDs to input seeds that generate said results.&lt;br /&gt;
 adv_delta and spleen_delta, which both default to 0, allow one to obtain forecasts on upcoming options.&lt;br /&gt;
 http://kolmafia.us/showthread.php?19664-ASH-command(s)-for-Numberology&amp;amp;p=133467&amp;amp;viewfull=1#post133467&lt;br /&gt;
&lt;br /&gt;
 r17909: Add ASH function: string numberology_prize( number )&lt;br /&gt;
&lt;br /&gt;
 r16800: Add multi-line string support to ASH. In order to specify a multi-line string, &lt;br /&gt;
 you must explicitly escape the end-of-line by placing a backslash (\) at the end of the line.&lt;br /&gt;
 &lt;br /&gt;
 Note that as a consequence of how the parser is written, it will trim all&lt;br /&gt;
 leading and trailing whitespace for each of these lines via Java&#039;s&lt;br /&gt;
 String.trim() method. Previously, this was irrelevant in the context of ASH&lt;br /&gt;
 strings, but now that ASH strings can span multiple lines, it is worth&lt;br /&gt;
 mentioning. If you want to have whitespace at the beginning of the line,&lt;br /&gt;
 just escape the first character of the line.&lt;br /&gt;
&lt;br /&gt;
 r16866: Add aggregate literals to ASH.&lt;br /&gt;
 http://kolmafia.us/showthread.php?20103-16866-Add-aggregate-literals-to-ASH-The-main-use-of-these-is-likely-for-initializa&lt;br /&gt;
 http://kolmafia.us/showthread.php?10685-Map-literals-in-ASH-(potential-feature)&amp;amp;p=134150#post134150&lt;br /&gt;
 &lt;br /&gt;
 r17658: http://kolmafia.us/showthread.php?10685-Map-literals-in-ASH-(potential-feature)&amp;amp;p=140128#post140128&lt;br /&gt;
&lt;br /&gt;
 r16886: Add &#039;&#039;&#039;witchess&#039;&#039;&#039; command to get Puzzle Champ. This only works if you have solved all puzzles.&lt;br /&gt;
&lt;br /&gt;
 r17023: Add terminal gCLI command&lt;br /&gt;
&lt;br /&gt;
 r17136: Track furniture in the Clan Rumpus Room, accessible with &#039;&#039;&#039;get_clan_rumpus()&#039;&#039;&#039;. Extra Adventures and PvP Fights from furniture are tracked.&lt;br /&gt;
 If your clan has a ball pit, the last entry in get_clan_rumpus() will indicate how many balls are in it.&lt;br /&gt;
 &lt;br /&gt;
 r17471: get_clan_rumpus() now returns int [string] map of furniture names.&lt;br /&gt;
 http://kolmafia.us/showthread.php?21006-Improve-return-value-of-get_clan_rumpus()&lt;br /&gt;
&lt;br /&gt;
 r17151: Add ASH and CLI support for stocking mall stores from Hagnk&#039;s.&lt;br /&gt;
 boolean &#039;&#039;&#039;put_shop_using_storage(int price, int limit, item it)&#039;&#039;&#039;&lt;br /&gt;
 boolean &#039;&#039;&#039;put_shop_using_storage(int price, int limit, int qty, item it)&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 and extends the CLI commands mallsell and shop.&lt;br /&gt;
 put_shop() works by batching requests for &amp;quot;shop put&amp;quot;. Similarly, buy_using_storage() puts together requests via &amp;quot;buy using storage&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 r17283: Add &amp;quot;timespinner&amp;quot; command courtesy of lost. &lt;br /&gt;
 Add &amp;quot;timespinner&amp;quot; command courtesy of lost.&lt;br /&gt;
 timespinner list food -&amp;gt; list available foods&lt;br /&gt;
 timespinner eat FOOD -&amp;gt; Spin and Munch on the specified food&lt;br /&gt;
 &lt;br /&gt;
 r17284: Allow pranking with timespinner&lt;br /&gt;
 &lt;br /&gt;
 r17286: Add &amp;quot;timespinner list monsters [filter]&amp;quot;. This will show all monsters that should be available in the Time-Spinner, optionally filtered (case-insensitive).&lt;br /&gt;
&lt;br /&gt;
 r17290: Add traceprint( string) ASH function&lt;br /&gt;
&lt;br /&gt;
 r17454: Experimental ASH feature: allow X++, X--, ++X, and --X with their normal meanings: post-increment, post-decrement, pre-increment, and pre-decrement.&lt;br /&gt;
&lt;br /&gt;
 r17460: Add Java-style &amp;quot;for&amp;quot; loop:&lt;br /&gt;
 for (INIT [, INIT]* ; CONDITION ; ITERATE [, ITERATE]* ) BODY&lt;br /&gt;
 You can have 0 or more INIT statements, which can be of the form&lt;br /&gt;
 X = EXP (where X is declared already) or&lt;br /&gt;
 TYPE X = EXP (whre X of type TYPE will be declared for use in the BODY scope).&lt;br /&gt;
 &lt;br /&gt;
 You can have 0 or more ITERATE statements, which can be of the form&lt;br /&gt;
 X++ or X--&lt;br /&gt;
 ++X or -- X&lt;br /&gt;
 X OPER EXP (where OPER can be =, +=, -=, etc.&lt;br /&gt;
 &lt;br /&gt;
 BODY can be a single statement ending with a ; or a block enclosed in {}, with no ; at the end, just like and other loop.&lt;br /&gt;
 &lt;br /&gt;
 break, continue, return, or exit are allowed within BODY, just like any loop.&lt;br /&gt;
&lt;br /&gt;
 r17477: Add boolean &#039;&#039;&#039;can_still_steal()&#039;&#039;&#039; function to ASH, which calls the same function &lt;br /&gt;
 that Stationary Buttons use do decide whether to enable or disable the &amp;quot;steal&amp;quot; button&lt;br /&gt;
&lt;br /&gt;
 r17612: ASH has a function to return all the candy in a given tier:&lt;br /&gt;
 item [int] &#039;&#039;&#039;candy_for_tier&#039;&#039;&#039;( int tier )&lt;br /&gt;
 The &amp;quot;&#039;&#039;&#039;checkcandy&#039;&#039;&#039;&amp;quot; command will list all unspaded candy or will tell you the candy type of each of its arguments.&lt;br /&gt;
&lt;br /&gt;
 r17613: More Sweet Synthesis stuff: ASH functions:&lt;br /&gt;
 boolean &#039;&#039;&#039;sweet_synthesis&#039;&#039;&#039;( item candy1, item candy2 )&lt;br /&gt;
 effect &#039;&#039;&#039;sweet_synthesis_result&#039;&#039;&#039;( item candy1, item candy2 )&lt;br /&gt;
 item [int] &#039;&#039;&#039;sweet_synthesis_pairings&#039;&#039;&#039;( effect result, item candy1 )&lt;br /&gt;
&lt;br /&gt;
 r17629: Add candy_for_tier() and sweet_synthesis_pairing() ASH functions that have a &amp;quot;flags&amp;quot; argument, &lt;br /&gt;
 in which you can specify filtering. 0 = no filtering, 1 = available, 2 = allowed, 3 = available and allowed.&lt;br /&gt;
&lt;br /&gt;
 r17637: Add &amp;quot;synthesize&amp;quot; command: synthesize CANDY1, CANDY2 - combines candies to get an effect&lt;br /&gt;
 synthesize? CANDY1, CANDY2 - tells you about the candies and the effect&lt;br /&gt;
&lt;br /&gt;
 r17644: To automatically select pairs of candy, add some ASH functions:&lt;br /&gt;
 item [int] sweet_synthesis_pair( effect )&lt;br /&gt;
 item [int] sweet_synthesis_pair( effect, flags )&lt;br /&gt;
 &lt;br /&gt;
 For the desired effect, pick a suitable pair of candies.&lt;br /&gt;
 If you are in-run, it will use only &amp;quot;available&amp;quot; candy and will prefer candies that you have more of.&lt;br /&gt;
 If you are post-run, it will consider all candies and will choose the pair with the lowest total mall price.&lt;br /&gt;
 If you want to force &amp;quot;available&amp;quot; candies post-run, use flags = 1.&lt;br /&gt;
 &lt;br /&gt;
 boolean sweet_synthesis( effect )&lt;br /&gt;
 boolean sweet_synthesis( effect, flags )&lt;br /&gt;
 &lt;br /&gt;
 The same, but it will actually perform Sweet Synthesis to get the effect.&lt;br /&gt;
 &lt;br /&gt;
 http://kolmafia.us/showthread.php?21144-Rethinking-Candy&amp;amp;p=139996&amp;amp;viewfull=1#post139996&lt;br /&gt;
&lt;br /&gt;
 r17645: Add CLI commands: &lt;br /&gt;
 synthesize EFFECT&lt;br /&gt;
 synthesize? EFFECT&lt;br /&gt;
&lt;br /&gt;
 r17673: Add &amp;quot;shop reprice&amp;quot; command and reprice_shop() ash function&lt;br /&gt;
&lt;br /&gt;
 r17677: edpiece? command tells you the effects of the various decorations, as well as telling you which one is currently equipped.&lt;br /&gt;
&lt;br /&gt;
 r17817: Added CLI command &amp;quot;absorb&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 r17819: Add ASH function to interface to KoL&#039;s /count chat command:&lt;br /&gt;
 int slash_count( item it )&lt;br /&gt;
&lt;br /&gt;
 r17845: Add my_absorbs() ash function&lt;br /&gt;
&lt;br /&gt;
 r17892: Add a bunch of ASH support for doing interesting things with properties:&lt;br /&gt;
 http://kolmafia.us/showthread.php?21570-Properties&amp;amp;p=141625&amp;amp;viewfull=1#post141625 &lt;br /&gt;
 http://kolmafia.us/showthread.php?21570-Properties&amp;amp;p=141629&amp;amp;viewfull=1#post141629&lt;br /&gt;
 &lt;br /&gt;
 boolean [string] get_all_properties( string filter, boolean global )&lt;br /&gt;
 boolean property_exists( string name )&lt;br /&gt;
 boolean property_exists( string name, boolean global )&lt;br /&gt;
 boolean property_has_default( string name )&lt;br /&gt;
 string property_default_value( string name )&lt;br /&gt;
 string get_property( string name, boolean global )&lt;br /&gt;
 string remove_property( string name )&lt;br /&gt;
 string remove_property( string name, boolean global )&lt;br /&gt;
 boolean rename_property( string old_name, string new_name )&lt;br /&gt;
&lt;br /&gt;
 r17911: Add ASH convenience functions: &lt;br /&gt;
 boolean starts_with( string value, string prefix );&lt;br /&gt;
 boolean ends_with( string value, string suffix );&lt;br /&gt;
&lt;br /&gt;
 r17912: Add ASH function to get the full unambiguous card name from the Deck of Every Card:&lt;br /&gt;
 string every_card_name( string name )&lt;br /&gt;
&lt;br /&gt;
 r17921: Add ASH get_closet() and get_storage() commands:&lt;br /&gt;
 int [item] get_closet();&lt;br /&gt;
 int [item] get_storage();&lt;br /&gt;
&lt;br /&gt;
 r17936: Add ASH function: void mood_execute( int multiplicity )&lt;br /&gt;
 multiplicity determines the minimum number of casts (or items) a given trigger will use; if&lt;br /&gt;
 the mood trigger is &amp;quot;cast 1 SKILL&amp;quot;, multiplicty 3 will treat it as &amp;quot;cast 3 SKILL&amp;quot;.&lt;br /&gt;
 multiplicity = -1 is what KoLmafia uses internally for between battle checks.&lt;br /&gt;
 multiplicity = 0 is what the CLI command &amp;quot;mood execute&amp;quot; uses.&lt;br /&gt;
&lt;br /&gt;
 r17937-8: Add ASH function: string [int] available_choice_options( boolean spoilers )&lt;br /&gt;
 If the argument is &amp;quot;true&amp;quot;, the Relay Browser choice spoilers will be appended to KoL&#039;s choice choice text (in parentheses).&lt;br /&gt;
&lt;br /&gt;
 r17969/17970 adds the &amp;quot;spacegate&amp;quot; command.&lt;br /&gt;
 spacegate vaccine X&lt;br /&gt;
 (where X is 1, 2, or 3) will visit the Spacegate Vaccinator to get the appropriate vaccine.&lt;br /&gt;
&lt;br /&gt;
 r18000: Add ASH function: int my_session_meat() which tracks how much meat the character has gained&lt;br /&gt;
 or lost since login via character actions; mall sales and incoming kmail containing meat&lt;br /&gt;
 will increment my_meat(), but not this value.&lt;br /&gt;
&lt;br /&gt;
 r18040: When you define a map with value as a zero-length array, file_to_map can&lt;br /&gt;
 now populate it. The values will be variable-length array literals that&lt;br /&gt;
 consume all the data values from the line of your file. Thus: keyVALUE(VALUE)*&lt;br /&gt;
 &lt;br /&gt;
 You can now use foreach to iterate over an aggregate literal.&lt;br /&gt;
 &lt;br /&gt;
 http://kolmafia.us/showthread.php?21742-Best-way-to-load-questslog-txt&amp;amp;p=143001&amp;amp;viewfull=1#post143001&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;
== 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;br /&gt;
[[Category:Contributing]]&lt;/div&gt;</summary>
		<author><name>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Eudora&amp;diff=8504</id>
		<title>Eudora</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Eudora&amp;diff=8504"/>
		<updated>2017-05-08T22:15:24Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: more cli info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|eudora}}{{&lt;br /&gt;
#vardefine:return_type|boolean}}{{&lt;br /&gt;
#vardefine:return_also|string}}{{&lt;br /&gt;
&lt;br /&gt;
FunctionPage|&lt;br /&gt;
&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;
parameter1={{Param|string|correspondent}}|&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
function2={{Function|&lt;br /&gt;
name={{#var:name}}|&lt;br /&gt;
return_type=string|&lt;br /&gt;
p1desc={{pspan|correspondent}} which eudora correspondent to switch to. (Penpal, Game Magazine, Xi?, New-You Club) |&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
function_description=Similar to the CLI &amp;quot;eudora&amp;quot; commmand.  The boolean version switches between correspondents.  It returns true if the switch was successful.  The string version returns the current correspondent. (see KoLMafia r16978)|&lt;br /&gt;
&lt;br /&gt;
code1={{CodeSample|&lt;br /&gt;
title=Code Sample|&lt;br /&gt;
description=Check if your current correspondent is the New-You Club, and if not, switch to it.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
   if (eudora() != &amp;quot;New-You Club&amp;quot;)&lt;br /&gt;
   {&lt;br /&gt;
      eudora(&amp;quot;New-You Club&amp;quot;);&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
cli_equiv=eudora (penpal, game, xi, newyou) - switch to the specified correspondent.  If no parameter is provided, the command will report your current correspondent.|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Your Character]]&lt;/div&gt;</summary>
		<author><name>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Your_Character&amp;diff=2019</id>
		<title>Your Character</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Your_Character&amp;diff=2019"/>
		<updated>2017-05-08T22:08:08Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: /* Misc. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
==Viewable Info==&lt;br /&gt;
{{flink|string|my_name|desc=Returns your character&#039;s name in lowercase.}}&lt;br /&gt;
{{flink|string|my_id|desc=Returns your character ID.}}&lt;br /&gt;
{{flink|int|get_clan_id|desc=Returns the ID number of the character&#039;s current clan.}}&lt;br /&gt;
{{flink|string|get_clan_name|desc=Returns the name of the character&#039;s current clan.}}&lt;br /&gt;
{{Flink|int|my_ascensions|desc=Returns the number of times your character has ascended.}}&lt;br /&gt;
{{flink|class|my_class|desc=Returns your class.}}&lt;br /&gt;
{{flink|int|my_level|desc=Returns your level.}}&lt;br /&gt;
{{flink|int|my_adventures|desc=Returns the number of adventures you have remaining.}}&lt;br /&gt;
{{flink|int|total_turns_played|desc=Returns total turns played since the character was created.}}&lt;br /&gt;
{{flink|int|turns_played}}&lt;br /&gt;
{{flink|int|my_turncount|desc=Both functions return the number of adventures used this ascension.}}&lt;br /&gt;
{{flink|int|my_daycount|desc=Return the number of days used this ascension.}}&lt;br /&gt;
{{flink|stat|my_primestat|desc=Returns the main stat of your current class.}}&lt;br /&gt;
{{flink|int|my_basestat|stat|desc=Returns your base value in the given stat (or substat).}}&lt;br /&gt;
{{flink|int|my_buffedstat|stat|desc=Returns your buffed value in the given stat (or substat).}}&lt;br /&gt;
{{flink|boolean|hippy_stone_broken|desc=Reports if your Hippy Stone is currently broken.}}&lt;br /&gt;
{{flink|int|pvp_attacks_left|desc=Returns number of PvP attacks remaining.}}&lt;br /&gt;
{{flink|int|total_free_rests|desc=Returns the total number of free rests available to your character.}}&lt;br /&gt;
{{flink|thrall|my_thrall|desc=Returns your current pasta thrall.}}&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
{{flink|int|my_hp|desc=Returns your current HP.}}&lt;br /&gt;
{{flink|int|my_mp|desc=Returns your current MP.}}&lt;br /&gt;
{{flink|int|my_maxhp|desc=Returns your current maximum HP.}}&lt;br /&gt;
{{flink|int|my_maxmp|desc=Returns your current maximum MP.}}&lt;br /&gt;
{{flink|int|my_soulsauce|desc=Returns your current Soulsauce.}}&lt;br /&gt;
{{flink|int|my_audience|desc=Returns your current Audience.}}&lt;br /&gt;
{{flink|int|my_thunder|desc=Returns your current Thunder.}}&lt;br /&gt;
{{flink|int|my_rain|desc=Returns your current Rain.}}&lt;br /&gt;
{{flink|int|my_lightning|desc=Returns your current Lightning.}}&lt;br /&gt;
&lt;br /&gt;
==Familiars and Substitutes==&lt;br /&gt;
{{flink|familiar|my_familiar|desc=Returns your current familiar.}}&lt;br /&gt;
{{flink|int|familiar_weight|familiar|desc=Returns the base weight of the specified familiar.}}&lt;br /&gt;
{{flink|boolean|is_familiar_equipment_locked|desc=Returns lock status of familiar equipment.}}&lt;br /&gt;
{{flink|void|lock_familiar_equipment|boolean|desc=Locks or Unlocks familiar equipment.}}&lt;br /&gt;
{{flink|int|minstrel_level|desc=Reports Clancy&#039;s level.}}&lt;br /&gt;
{{flink|item|minstrel_instrument|desc=Reports Clancy&#039;s equipped item.}}&lt;br /&gt;
{{flink|boolean|minstrel_quest|desc=Reports if Clancy has a new quest for you.}}&lt;br /&gt;
{{flink|string|my_companion|desc=Returns your current companion.}}&lt;br /&gt;
&lt;br /&gt;
==Hidden Info==&lt;br /&gt;
{{flink|string|my_hash|desc=Returns the password hash for your current session.}}&lt;br /&gt;
{{flink|stat|current_hit_stat|desc=Returns the stat currently used to calculate to-hit percentage.}}&lt;br /&gt;
{{flink|int|buffed_hit_stat|desc=Returns the buffed value of your currently used to-hit stat.}}&lt;br /&gt;
{{flink|int|raw_damage_absorption|desc=Returns your current DA total.}}&lt;br /&gt;
{{flink|float|damage_absorption_percent|desc=Returns the percentage of damage mitigated by your DA.}}&lt;br /&gt;
{{flink|int|damage_reduction|desc=Returns the amount of damage reduction your character currently has.}}&lt;br /&gt;
{{flink|float|elemental_resistance|element|desc=Returns the percentage of damage reduction to the given element based on your current resistance to that element.}}&lt;br /&gt;
{{flink|float|combat_rate_modifier|desc=Returns the percentage adjustment to your combat rate.}}&lt;br /&gt;
{{flink|float|initiative_modifier|desc=Returns the percentage adjustment to your chance of gaining initiative.}}&lt;br /&gt;
{{flink|float|experience_bonus|desc=Returns the amount of bonus experience your receive after combat.}}&lt;br /&gt;
{{flink|float|meat_drop_modifier|desc=Returns the percentage adjustment to meat drops after combat.}}&lt;br /&gt;
{{flink|float|item_drop_modifier|desc=Returns the percentage adjustment to item drops after combat.}}&lt;br /&gt;
{{flink|int|monster_level_adjustment|desc=Returns the total +ML you have active, including your sign-specific device.}}&lt;br /&gt;
{{flink|stat|stat_bonus_today}}&lt;br /&gt;
{{flink|stat|stat_bonus_tomorrow|desc=These two functions report on what stat has a stat-day bonus or $stat[none] if it isn&#039;t a stat day.}}&lt;br /&gt;
{{flink|int|current_mcd|desc=Returns the current setting of your sign-specific +ML device.}}&lt;br /&gt;
{{flink|int|weight_adjustment|desc=Returns the cumulative total of all familiar weight adjustments from all sources.}}&lt;br /&gt;
{{flink|boolean|get_ignore_zone_warnings|desc=Returns the value of the KoL option to disable &amp;quot;This area might be too tough for you&amp;quot; warnings.}}&lt;br /&gt;
{{flink|string [location] [int]|get_florist_plants|desc=Returns the a map of all plants currently planted in every location.}}&lt;br /&gt;
&lt;br /&gt;
==Sign &amp;amp; Path==&lt;br /&gt;
{{flink|boolean|can_eat|desc=Reports on whether your characters path allows food consumption.}}&lt;br /&gt;
{{flink|boolean|can_drink|desc=Reports on whether your characters path allows booze consumption}}&lt;br /&gt;
{{flink|boolean|can_interact|desc=Reports on whether your character can access the mall, gift packages, etc.}}&lt;br /&gt;
{{flink|boolean|in_hardcore|desc=Reports on whether your character is under Hardcore restrictions.}}&lt;br /&gt;
{{flink|item|daily_special|desc=Returns the daily special at your sign eatery.}}&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|boolean|in_bad_moon|desc=These four functions report on the stat gains granted by your character&#039;s ascension moon sign.}}&lt;br /&gt;
{{flink|string|my_path|desc=The ascension path your character chose.}}&lt;br /&gt;
{{flink|string|my_sign|desc=The moon sign your character ascended under.}}&lt;br /&gt;
&lt;br /&gt;
==Consumption==&lt;br /&gt;
{{flink|int|my_fullness|desc=Returns how full you are.}}&lt;br /&gt;
{{flink|int|fullness_limit|desc=Returns your maximum fullness.}}&lt;br /&gt;
{{flink|int|my_inebriety|desc=Returns your current drunkenness.}}&lt;br /&gt;
{{flink|int|inebriety_limit|desc=Returns your maximum safe drunk (before overdrinking).}}&lt;br /&gt;
{{flink|int|my_spleen_use|desc=Returns your current spleen use.}}&lt;br /&gt;
{{flink|int|spleen_limit|desc=Returns your spleen limit.}}&lt;br /&gt;
&lt;br /&gt;
==Location Availability==&lt;br /&gt;
{{flink|boolean|black_market_available|desc=Returns the availability of the Black Market.}}&lt;br /&gt;
{{flink|boolean|canadia_available|desc=Returns the availability of Little Canadia.}}&lt;br /&gt;
{{flink|boolean|dispensary_available|desc=Returns the availability of the Knob Dispensary.}}&lt;br /&gt;
{{flink|boolean|florist_available|desc=Returns the availability of The Florist Friar&#039;s Cottage.}}&lt;br /&gt;
{{flink|boolean|gnomads_available|desc=Returns the availability of the Gnomish Gnomad Camp.}}&lt;br /&gt;
{{flink|boolean|guild_store_available|desc=Returns the availability of your guild store.}}&lt;br /&gt;
{{flink|boolean|hidden_temple_unlocked|desc=Returns the availability of the Hidden Temple.}}&lt;br /&gt;
{{flink|boolean|hippy_store_available|desc=Returns the availability of the Hippy Store.}}&lt;br /&gt;
{{flink|boolean|knoll_available|desc=Returns the availability of the Degrassi Knoll.}}&lt;br /&gt;
{{flink|boolean|white_citadel_available|desc=Returns the availability of White Citadel.}}&lt;br /&gt;
&lt;br /&gt;
==Misc.==&lt;br /&gt;
{{Flink|string|eudora|desc=Returns your current Eudora correspondent.}}&lt;br /&gt;
{{Flink|boolean|galaktik_cures_discounted|desc=Returns whether Doc&#039;s offers you a discount for quest completion.}}&lt;br /&gt;
{{Flink|int|is_unrestricted|desc=Checks whether a given game resource is available.}}&lt;br /&gt;
{{Flink|int|moon_light|desc=Returns the total lit moon segments.}}&lt;br /&gt;
{{Flink|int|moon_phase|desc=Returns the phase (0-15) of the main moons.}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting]]&lt;/div&gt;</summary>
		<author><name>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Ash_Functions&amp;diff=2629</id>
		<title>Ash Functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Ash_Functions&amp;diff=2629"/>
		<updated>2017-05-08T22:04:41Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: add eudora 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|int|adv_cost|skill}}&lt;br /&gt;
{{Flink|boolean|adventure|int|location|{{opt|string}}}}&lt;br /&gt;
{{Flink|string [int]|all_normal_outfits}}&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;
{{Flink|string [int]|available_choice_options|{{opt|boolean}}}}&lt;br /&gt;
&lt;br /&gt;
===b===&lt;br /&gt;
{{Flink|boolean|batch_close}}&lt;br /&gt;
{{Flink|void|batch_open}}&lt;br /&gt;
{{Flink|boolean|bjornify_familiar|familiar}}&lt;br /&gt;
{{Flink|boolean|black_market_available}}&lt;br /&gt;
{{Flink|boolean|boolean_modifier|{{opt|string}}|string}}&lt;br /&gt;
{{Flink|boolean|boolean_modifier|item|string}}&lt;br /&gt;
{{Flink|int|buffed_hit_stat}}&lt;br /&gt;
{{Flink|boolean|buy|{{opt|coinmaster}}|int|item}}&lt;br /&gt;
{{Flink|int|buy|int|item|int}}&lt;br /&gt;
{{Flink|int|buy_price|coinmaster|item}}&lt;br /&gt;
{{Flink|boolean|buy_using_storage|int|item}}&lt;br /&gt;
{{Flink|int|buy_using_storage|int|item|int}}&lt;br /&gt;
{{Flink|boolean|buys_item|coinmaster|item}}&lt;br /&gt;
&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_faxbot|monster}}&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|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|boolean|chew|int|item}}&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|string|craft_type|item}}&lt;br /&gt;
{{Flink|int|creatable_amount|item}}&lt;br /&gt;
{{Flink|int|creatable_turns|{{opt|item}}|{{opt|int}}|{{opt|boolean}}}}&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|equip|{{opt|slot}}|item}}&lt;br /&gt;
{{Flink|boolean|equip_all_familiars}}&lt;br /&gt;
{{Flink|int|equipped_amount|item}}&lt;br /&gt;
{{Flink|item|equipped_item|slot}}&lt;br /&gt;
{{Flink|string|eudora}}&lt;br /&gt;
{{Flink|boolean|eudora|string}}&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 [familiar]|favorite_familiars|}}&lt;br /&gt;
{{Flink|boolean|faxbot|monster}}&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|boolean|florist_available}}&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|boolean [string] |get_all_properties|string|boolean}}&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 [item]|get_chateau}}&lt;br /&gt;
{{Flink|int|get_clan_id}}&lt;br /&gt;
{{Flink|int [item]|get_clan_lounge}}&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 [location, 3]|get_florist_plants}}&lt;br /&gt;
{{Flink|string [int]|get_goals}}&lt;br /&gt;
{{Flink|boolean|get_ignore_zone_warnings}}&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|{{opt|boolean}}}}&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|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_servant|servant}}&lt;br /&gt;
{{Flink|boolean|have_shop}}&lt;br /&gt;
{{Flink|boolean|have_skill|skill}}&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;
{{Flink|string|holiday}}&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_banished|monster}}&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_familiar_equipment_locked}}&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|item/familiar/skill/string}}&lt;br /&gt;
{{Flink|boolean|is_unrestricted|item/familiar/skill/string}}&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;
&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;
&lt;br /&gt;
===l===&lt;br /&gt;
{{Flink|int|last_choice}}&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|int|lightning_cost}}&lt;br /&gt;
{{Flink|string|limit_mode}}&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;
&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|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_initiative|{{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_audience}}&lt;br /&gt;
{{Flink|int|my_basestat|stat}}&lt;br /&gt;
{{Flink|familiar|my_bjorned_familiar}}&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|int|my_lightning}}&lt;br /&gt;
{{Flink|location|my_location}}&lt;br /&gt;
{{Flink|int|my_maxfury}}&lt;br /&gt;
{{Flink|int|my_maxhp}}&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|int|my_rain}}&lt;br /&gt;
{{Flink|servant|my_servant|servant}}&lt;br /&gt;
{{flink|string|my_sign}}&lt;br /&gt;
{{flink|int|my_soulsauce}}&lt;br /&gt;
{{Flink|int|my_spleen_use}}&lt;br /&gt;
{{Flink|int|my_storage_meat}}&lt;br /&gt;
{{flink|thrall|my_thrall}}&lt;br /&gt;
{{flink|int|my_thunder}}&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|{{opt|string}}|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|string|outfit_tattoo|{{opt|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|string|property_default_value|string}}&lt;br /&gt;
{{Flink|boolean|property_exists|string|{{opt|boolean}}}}&lt;br /&gt;
{{Flink|boolean|property_has_default|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;
&lt;br /&gt;
===r===&lt;br /&gt;
{{Flink|int|rain_cost|skill}}&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|void|remove_property|string|{{opt|boolean}}}}&lt;br /&gt;
{{Flink|boolean|rename_property|string|string}}&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_choice|int}}&lt;br /&gt;
{{Flink|buffer|run_combat|{{opt|string}}}}&lt;br /&gt;
{{Flink|buffer|run_turn}}&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|soulsauce_cost|skill}}&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|{{opt|string}}|string}}&lt;br /&gt;
{{Flink|skill|stun_skill}}&lt;br /&gt;
{{Flink|string|substring|string|int|{{opt|int}}}}&lt;br /&gt;
{{Flink|boolean|svn_at_head|string}}&lt;br /&gt;
{{Flink|boolean|svn_exists|string}}&lt;br /&gt;
{{Flink|record|svn_info|string}}&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|int|thunder_cost|skill}}&lt;br /&gt;
{{Flink|buffer|time_to_string}}&lt;br /&gt;
{{Flink|boolean|to_boolean|any}}&lt;br /&gt;
{{Flink|bounty|to_bounty|strict_string}}&lt;br /&gt;
{{Flink|class|to_class|strict_string/int}}&lt;br /&gt;
{{Flink|coinmaster|to_coinmaster|strict_string}}&lt;br /&gt;
{{Flink|effect|to_effect|int}}&lt;br /&gt;
{{Flink|effect|to_effect|strict_string}}&lt;br /&gt;
{{Flink|effect|to_effect|skill}}&lt;br /&gt;
{{Flink|element|to_element|strict_string}}&lt;br /&gt;
{{Flink|familiar|to_familiar|int}}&lt;br /&gt;
{{Flink|familiar|to_familiar|strict_string}}&lt;br /&gt;
{{Flink|float|to_float|any}}&lt;br /&gt;
{{Flink|int|to_int|any}}&lt;br /&gt;
{{Flink|item|to_item|strict_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|aggregate}}&lt;br /&gt;
{{Flink|location|to_location|strict_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|strict_string}}&lt;br /&gt;
{{Flink|phylum|to_phylum|string}}&lt;br /&gt;
{{Flink|string|to_plural|item}}&lt;br /&gt;
{{Flink|servant|to_servant|int}}&lt;br /&gt;
{{Flink|servant|to_servant|strict_string}}&lt;br /&gt;
{{Flink|skill|to_skill|effect}}&lt;br /&gt;
{{Flink|skill|to_skill|int}}&lt;br /&gt;
{{Flink|skill|to_skill|strict_string}}&lt;br /&gt;
{{Flink|slot|to_slot|item}}&lt;br /&gt;
{{Flink|skill|to_slot|strict_string}}&lt;br /&gt;
{{Flink|stat|to_stat|string}}&lt;br /&gt;
{{Flink|string|to_string|any}}&lt;br /&gt;
{{Flink|thrall|to_thrall|{{opt|string}}|{{opt|int}}}}&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|total_free_rests}}&lt;br /&gt;
{{flink|int|total_turns_played}}&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_servant|servant}}&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|{{opt|string}}|{{opt|boolean}}|{{opt|boolean}}}}&lt;br /&gt;
&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|{{opt|string}}}}&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;br /&gt;
&lt;br /&gt;
===x===&lt;br /&gt;
{{Flink|string[int]|xpath|string|string}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting]]&lt;/div&gt;</summary>
		<author><name>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Eudora&amp;diff=8503</id>
		<title>Eudora</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Eudora&amp;diff=8503"/>
		<updated>2017-05-08T21:58:48Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|eudora}}{{&lt;br /&gt;
#vardefine:return_type|boolean}}{{&lt;br /&gt;
#vardefine:return_also|string}}{{&lt;br /&gt;
&lt;br /&gt;
FunctionPage|&lt;br /&gt;
&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;
parameter1={{Param|string|correspondent}}|&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
function2={{Function|&lt;br /&gt;
name={{#var:name}}|&lt;br /&gt;
return_type=string|&lt;br /&gt;
p1desc={{pspan|correspondent}} which eudora correspondent to switch to. (Penpal, Game Magazine, Xi?, New-You Club) |&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
function_description=Similar to the CLI &amp;quot;eudora&amp;quot; commmand.  The boolean version switches between correspondents.  It returns true if the switch was successful.  The string version returns the current correspondent. (see KoLMafia r16978)|&lt;br /&gt;
&lt;br /&gt;
code1={{CodeSample|&lt;br /&gt;
title=Code Sample|&lt;br /&gt;
description=Check if your current correspondent is the New-You Club, and if not, switch to it.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
   if (eudora() != &amp;quot;New-You Club&amp;quot;)&lt;br /&gt;
   {&lt;br /&gt;
      eudora(&amp;quot;New-You Club&amp;quot;);&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
cli_equiv=eudora (penpal, game, xi, newyou) - switch to the specified correspondent|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Your Character]]&lt;/div&gt;</summary>
		<author><name>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Eudora&amp;diff=8502</id>
		<title>Eudora</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Eudora&amp;diff=8502"/>
		<updated>2017-05-08T21:52:14Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: Initial page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|eudora}}{{&lt;br /&gt;
#vardefine:return_type|boolean}}{{&lt;br /&gt;
#vardefine:return_also|string}}{{&lt;br /&gt;
&lt;br /&gt;
FunctionPage|&lt;br /&gt;
&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;
parameter1={{Param|string|correspondent}}|&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
function2={{Function|&lt;br /&gt;
name={{#var:name}}|&lt;br /&gt;
return_type=string|&lt;br /&gt;
p1desc={{pspan|correspondent}} which eudora correspondent to switch to. (Penpal, Game Magazine, Xi?, New-You Club) |&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
function_description=Similar to the CLI &amp;quot;eudora&amp;quot; commmand.  The boolean version switches between correspondents.  It returns true if the switch was successful.  The string version returns the current correspondent. (see KoLMafia r16978)|&lt;br /&gt;
&lt;br /&gt;
code1={{CodeSample|&lt;br /&gt;
title=Code Sample|&lt;br /&gt;
description=Check if your current correspondent is the New-You Club, and if not, switch to it.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
   if (eudora() != &amp;quot;New-You Club&amp;quot;)&lt;br /&gt;
   {&lt;br /&gt;
      eudora(&amp;quot;New-You Club&amp;quot;);&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
cli_equiv=eudora (penpal, game, xi, newyou) - switch to the specified correspondent|&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>AlbinoRhino</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Put_shop&amp;diff=4140</id>
		<title>Put shop</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Put_shop&amp;diff=4140"/>
		<updated>2017-04-05T10:32:17Z</updated>

		<summary type="html">&lt;p&gt;AlbinoRhino: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|put_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|int|price}}|&lt;br /&gt;
parameter2={{Param|int|limit}}|&lt;br /&gt;
parameter3={{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|price}}|&lt;br /&gt;
parameter2={{Param|int|limit}}|&lt;br /&gt;
parameter3={{Param|int|qty}}|&lt;br /&gt;
parameter4={{Param|item|it}}|&lt;br /&gt;
p1desc={{pspan|price}} is the price to set; using 0 will result in the max-price of 999,999,999 if item is not currently in your store|&lt;br /&gt;
p2desc={{pspan|limit}} is the limit per player per day, or no limit if set to 0|&lt;br /&gt;
p3desc={{pspan|qty}} an optional parameter for the quantity of items to put in your shop (defaults to all if not provided)|&lt;br /&gt;
p4desc={{pspan|it}} is the item to put in your mall store.|&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
function_description=Places items in your mall store with settings as described above. Returns true if placement is successful and false if placement fails.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Note that attempting to put an item in your store at less than minimum mall price will automatically reset the price to mall minimum.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Note that attempting to put a negative amount of an item in your store will not do anything, but will still return true.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Note that you cannot specify a quantity of 0 to change prices, but the function will still return true.|&lt;br /&gt;
&lt;br /&gt;
code1={{CodeSample|&lt;br /&gt;
title=Code Sample|&lt;br /&gt;
description=The following example will put all of your broken skulls in your mall store for 500 meat at a limit of 5.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
put_shop(500 , 5 , $item[broken skull]);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}|&lt;br /&gt;
&lt;br /&gt;
see_also={{SeeAlso|have_shop|shop_amount|take_shop}}|&lt;br /&gt;
cli_equiv=The CLI command &amp;quot;mallsell&amp;quot; works similarly.|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Item Management]]&lt;/div&gt;</summary>
		<author><name>AlbinoRhino</name></author>
	</entry>
</feed>