<?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=Gausie</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=Gausie"/>
	<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Special:Contributions/Gausie"/>
	<updated>2026-04-25T01:45:18Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Update_Management&amp;diff=9510</id>
		<title>Update Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Update_Management&amp;diff=9510"/>
		<updated>2026-03-27T10:29:04Z</updated>

		<summary type="html">&lt;p&gt;Gausie: Fixed heading&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;New versions of KoLmafia are posted to the [https://github.com/kolmafia/kolmafia/releases GitHub releases page]. To manage updates, many members of the community have produced &amp;quot;automatic update&amp;quot; scripts.&lt;br /&gt;
&lt;br /&gt;
=== Gausie&#039;s One-Liner ===&lt;br /&gt;
In a Unix shell (Linux, Mac and WSL) as long as you have curl and jq installed this should download and run the latest version.&lt;br /&gt;
 curl -fLsgo kolmafia.jar $(curl -fsg &#039;&amp;lt;nowiki&amp;gt;https://api.github.com/repos/kolmafia/kolmafia/releases/latest&#039;&amp;lt;/nowiki&amp;gt; | jq -r &#039;.assets[] | select(.browser_download_url | contains(&amp;quot;.jar&amp;quot;)).browser_download_url&#039;) &amp;amp;&amp;amp; java -jar kolmafia.jar&lt;br /&gt;
&lt;br /&gt;
=== update-kolmafia ===&lt;br /&gt;
C2Talon has created an application to download and run the latest KoLmafia with binaries for Windows and Unix-like operating systems&lt;br /&gt;
&lt;br /&gt;
https://github.com/C2Talon/update-kolmafia&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Powershell Auto-Update Script by BigVinnie (Windows)&#039;&#039;&#039; ===&lt;br /&gt;
A one-click updater+launcher using Windows Powershell.&lt;br /&gt;
&lt;br /&gt;
https://kolmafia.us/threads/powershell-to-auto-update-kolmafia.29816/&lt;/div&gt;</summary>
		<author><name>Gausie</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Update_Management&amp;diff=9253</id>
		<title>Update Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Update_Management&amp;diff=9253"/>
		<updated>2025-05-21T08:45:52Z</updated>

		<summary type="html">&lt;p&gt;Gausie: Add update-kolmafia&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;New versions of KoLmafia are posted to the [https://github.com/kolmafia/kolmafia/releases GitHub releases page]. To manage updates, many members of the community have produced &amp;quot;automatic update&amp;quot; scripts.&lt;br /&gt;
&lt;br /&gt;
=== Gausie&#039;s One-Liner ===&lt;br /&gt;
In a Unix shell (Linux, Mac and WSL) as long as you have curl and jq installed this should download and run the latest version.&lt;br /&gt;
 curl -fLsgo kolmafia.jar $(curl -fsg &#039;&amp;lt;nowiki&amp;gt;https://api.github.com/repos/kolmafia/kolmafia/releases/latest&#039;&amp;lt;/nowiki&amp;gt; | jq -r &#039;.assets[] | select(.browser_download_url | contains(&amp;quot;.jar&amp;quot;)).browser_download_url&#039;) &amp;amp;&amp;amp; java -jar kolmafia.jar&lt;br /&gt;
&lt;br /&gt;
=== update-kolmafia ===&lt;br /&gt;
C2Talon has created an application to download and run the latest KoLmafia with binaries for Windows and Unix-like operating systems&lt;br /&gt;
&lt;br /&gt;
https://github.com/C2Talon/update-kolmafia&lt;/div&gt;</summary>
		<author><name>Gausie</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Update_Management&amp;diff=9252</id>
		<title>Update Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Update_Management&amp;diff=9252"/>
		<updated>2025-05-21T08:42:52Z</updated>

		<summary type="html">&lt;p&gt;Gausie: Created the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;New versions of KoLmafia are posted to the [https://github.com/kolmafia/kolmafia/releases GitHub releases page]. To manage updates, many members of the community have produced &amp;quot;automatic update&amp;quot; scripts.&lt;br /&gt;
&lt;br /&gt;
=== Gausie&#039;s One-Liner ===&lt;br /&gt;
In a Unix shell (Linux, Mac and WSL) as long as you have curl and jq installed this should download and run the latest version.&lt;br /&gt;
 curl -fLsgo kolmafia.jar $(curl -fsg &#039;&amp;lt;nowiki&amp;gt;https://api.github.com/repos/kolmafia/kolmafia/releases/latest&#039;&amp;lt;/nowiki&amp;gt; | jq -r &#039;.assets[] | select(.browser_download_url | contains(&amp;quot;.jar&amp;quot;)).browser_download_url&#039;) &amp;amp;&amp;amp; java -jar kolmafia.jar&lt;/div&gt;</summary>
		<author><name>Gausie</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Quest_Tracking_Preferences&amp;diff=9155</id>
		<title>Quest Tracking Preferences</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Quest_Tracking_Preferences&amp;diff=9155"/>
		<updated>2022-06-30T19:15:12Z</updated>

		<summary type="html">&lt;p&gt;Gausie: Added new quests to track Suburbs of Dis&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
KoLMafia internally tracks progress for a number of quests. These are stored as preferences in &amp;lt;code&amp;gt;settings\[charactername]_prefs.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Council Quests==&lt;br /&gt;
===questL02Larva===&lt;br /&gt;
questL02Larva tracks the player&#039;s progress in the {{kolwiki|Spooky_Forest_Quest|Spooky Forest quest}}.&lt;br /&gt;
&lt;br /&gt;
*unstarted: quest not yet received&lt;br /&gt;
*started: quest received from the Council&lt;br /&gt;
*step1: mosquito larva acquired&lt;br /&gt;
*finished: mosquito larva returned to the Council&lt;br /&gt;
&lt;br /&gt;
===questL03Rat===&lt;br /&gt;
questL03Rat tracks the player&#039;s progress in the {{kolwiki|Typical_Tavern_Quest|Typical Tavern quest}}.&lt;br /&gt;
&lt;br /&gt;
*unstarted: quest not yet received&lt;br /&gt;
*started: quest received from the Council&lt;br /&gt;
*step1: spoke to Bart Ender in the Typical Tavern&lt;br /&gt;
*step2: turned off the Rat Faucet&lt;br /&gt;
*finished: told Bart about the Faucet&lt;br /&gt;
&lt;br /&gt;
===questL04Bat===&lt;br /&gt;
questL04Bat tracks the player&#039;s progress in the {{kolwiki|Boss_Bat_Quest|Boss Bat quest}}.&lt;br /&gt;
&lt;br /&gt;
*unstarted: quest not yet received&lt;br /&gt;
*started: quest received from the Council&lt;br /&gt;
*step1-step3: demolished 1-3 walls in the Bat Hole&lt;br /&gt;
*step4: Boss Bat defeated&lt;br /&gt;
*finished: returned to the Council to report success&lt;br /&gt;
&lt;br /&gt;
===questL05Goblin===&lt;br /&gt;
questL05Goblin tracks the player&#039;s progress in the {{kolwiki|The_King_of_Cobb&#039;s_Knob_Quest|The King of Cobb&#039;s Knob quest}}.&lt;br /&gt;
&lt;br /&gt;
*unstarted: quest not yet received&lt;br /&gt;
*started: quest received from the Council&lt;br /&gt;
*step1: Cobb&#039;s Knob map decrypted&lt;br /&gt;
*finished: Knob Goblin King defeated&lt;br /&gt;
&lt;br /&gt;
===questL06Friar===&lt;br /&gt;
&lt;br /&gt;
questL06Friar tracks the player&#039;s progress in the {{kolwiki|Deep_Fat_Friars&#039;_Gate_Quest|Friars&#039; quest}}.&lt;br /&gt;
&lt;br /&gt;
*unstarted: quest not yet received&lt;br /&gt;
*started: quest received from the Council&lt;br /&gt;
*step1: details received from the Friars&lt;br /&gt;
*step2: box of birthday candles, dodecagram &amp;amp; eldritch butterknife acquired.&lt;br /&gt;
*finished: cleansed the taint&lt;br /&gt;
&lt;br /&gt;
===questL07Cyrptic===&lt;br /&gt;
questL07Cyrptic tracks the player&#039;s progress in the {{kolwiki|Undefile_the_Cyrpt_Quest|Undefile the Cyrpt quest}}.&lt;br /&gt;
&lt;br /&gt;
*unstarted: quest not yet received&lt;br /&gt;
*started: quest received from the Council&lt;br /&gt;
*finished: Bonerdagon defeated&lt;br /&gt;
&lt;br /&gt;
====Evilness====&lt;br /&gt;
When evilness in each zone is 25 or less the zone boss will be the next encounter.&lt;br /&gt;
When total evilness is 0 and all 4 bosses are defeated, the Haert of the Cyrpt will be accessible.&lt;br /&gt;
* cyrptAlcoveEvilness tracks current evilness in the Alcove&lt;br /&gt;
* cyrptCrannyEvilness tracks current evilness in the Cranny&lt;br /&gt;
* cyrptNicheEvilness tracks current evilness in the Niche&lt;br /&gt;
* cyrptNookEvilness tracks current evilness in the Nook&lt;br /&gt;
* cyrptTotalEvilness tracks the sum of evilness in the Cyrpt&lt;br /&gt;
&lt;br /&gt;
===questL08Trapper===&lt;br /&gt;
&lt;br /&gt;
questL08Trapper tracks the player&#039;s progress in the {{kolwiki|Mt._McLargeHuge_Quest|Mt. McLargeHuge Quest}}.&lt;br /&gt;
&lt;br /&gt;
* unstarted: quest not yet received from the Council&lt;br /&gt;
* started: quest received from the Council&lt;br /&gt;
* step1: cheese and ore requested by the Trapper&lt;br /&gt;
* step2: cheese and ore returned to the Trapper&lt;br /&gt;
* step3: discovered the stairs up to the Mist-Shrouded Peak (via either route)&lt;br /&gt;
* step4: fought at least one yeti&lt;br /&gt;
* step5: defeated the monster at the top of the Peak&lt;br /&gt;
* finished: returned the fur to the Trapper (quest complete)&lt;br /&gt;
&lt;br /&gt;
===questL09Topping===&lt;br /&gt;
questL08Trapper tracks the player&#039;s progress in the {{kolwiki|Orc_Chasm_Quest|Orc Chasm Quest}}.&lt;br /&gt;
&lt;br /&gt;
* unstarted: quest not yet received from the Council&lt;br /&gt;
* started: quest received from the Council&lt;br /&gt;
* step1: bridge built&lt;br /&gt;
* step2: like, totally got the deets from the Highland Lord&lt;br /&gt;
* step3: lit all three signal fires&lt;br /&gt;
* finished: quest complete&lt;br /&gt;
&lt;br /&gt;
====booPeakProgress====&lt;br /&gt;
booPeakProgress tracks the hauntedness level of {{kolwiki|A-boo Peak}}. A value of 18, for instance, indicates that A-boo Peak is 18% haunted.&lt;br /&gt;
&lt;br /&gt;
Possible values: 0 - 100&lt;br /&gt;
&lt;br /&gt;
====chasmBridgeProgress====&lt;br /&gt;
chasmBridgeProgress tracks the player&#039;s progress in building a bridge across the {{kolwiki|Orc Chasm}}. A value of 10, for instance, indicates that the bridge is 10 planks long.&lt;br /&gt;
&lt;br /&gt;
Possible values: 0 - 30&lt;br /&gt;
&lt;br /&gt;
====oilPeakProgress====&lt;br /&gt;
oilPeakProgress tracks the remaining pressure at {{kolwiki|Oil Peak}}. It decreases as the player reduces the pressure in the zone.&lt;br /&gt;
&lt;br /&gt;
Possible values: 0.00 - 310.66&lt;br /&gt;
* 310.66: Pressure not yet reduced&lt;br /&gt;
* 0.00: Subquest completed&lt;br /&gt;
&lt;br /&gt;
====twinPeakProgress====&lt;br /&gt;
twinPeakProgress is a nibble bitmask with least significant bit set for the first choice and the most significant for the fourth. You can parse this with bitwise operators. Here&#039;s some code that demonstrates how to use it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
void comma(buffer b, string s) {&lt;br /&gt;
	if(length(b) &amp;gt; 0)&lt;br /&gt;
		b.append(&amp;quot;, &amp;quot;);&lt;br /&gt;
	b.append(s);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
boolean mysterious(int progress, int c) { &lt;br /&gt;
	return (progress &amp;amp; (1 &amp;lt;&amp;lt; c)) == 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
string twinPeak() {&lt;br /&gt;
	int p = get_property(&amp;quot;twinPeakProgress&amp;quot;).to_int();&lt;br /&gt;
	buffer need;&lt;br /&gt;
	if(mysterious(p, 0)) need.comma(&amp;quot;4 Stench Resistance&amp;quot;);&lt;br /&gt;
	if(mysterious(p, 1)) need.comma(&amp;quot;+50% Item Drop&amp;quot;);&lt;br /&gt;
	if(mysterious(p, 2)) need.comma(&amp;quot;Jar of Oil&amp;quot;);&lt;br /&gt;
	// Only check for final if first three complete&lt;br /&gt;
	if(length(need) == 0) {&lt;br /&gt;
		if(mysterious(p, 3))&lt;br /&gt;
			return &amp;quot;Need +40% Initiative&amp;quot;;&lt;br /&gt;
		return &amp;quot;Twin Peak Completed&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	return &amp;quot;Need &amp;quot; + need;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====booPeakLit====&lt;br /&gt;
booPeakLit is a boolean which tracks if you have lit the fire at A-boo Peak or not&lt;br /&gt;
&lt;br /&gt;
====oilPeakLit====&lt;br /&gt;
oilPeakLit is a boolean which tracks if you have lit the fire at Oil Peak or not&lt;br /&gt;
&lt;br /&gt;
(note, twinPeakLit would be obsolete as it would simply track twinPeakProgress == 15)&lt;br /&gt;
&lt;br /&gt;
===questL10Garbage===&lt;br /&gt;
&lt;br /&gt;
questL10Garbage tracks the player&#039;s progress in {{kolwiki|Giant_Trash_Quest|the Giant Trash Quest}}.&lt;br /&gt;
&lt;br /&gt;
* unstarted: quest not yet received from the Council&lt;br /&gt;
* started: quest received from the Council&lt;br /&gt;
* step1: giant beanstalk grown&lt;br /&gt;
* step2: first visit to the Penultimate Fantasy Airship&lt;br /&gt;
* step3 - step6: four Immateria acquired&lt;br /&gt;
* step7: S.O.C.K. acquired ({{kolwiki|The_Castle_in_the_Clouds_in_the_Sky_(Basement)|Castle Basement}} open)&lt;br /&gt;
* step8: {{kolwiki|The_Castle_in_the_Clouds_in_the_Sky_(Basement)|Castle Ground Floor}} open&lt;br /&gt;
* step9: {{kolwiki|The_Castle_in_the_Clouds_in_the_Sky_(Basement)|Castle Top Floor}} open&lt;br /&gt;
* step10: chore wheel turned&lt;br /&gt;
* finished: returned to the Council&lt;br /&gt;
&lt;br /&gt;
===questL11MacGuffin===&lt;br /&gt;
questL11MacGuffin tracks the player&#039;s progress in the {{kolwiki|Quest_for_the_Holy_MacGuffin|Holy MacGuffin quest}}.&lt;br /&gt;
&lt;br /&gt;
*unstarted:&lt;br /&gt;
*started: quest received from the Council&lt;br /&gt;
*step1: Black Market located (blackForestProgress == 5)&lt;br /&gt;
*step2: retrieved your father&#039;s MacGuffin diary&lt;br /&gt;
*finished: returned the MacGuffin to the Council&lt;br /&gt;
&lt;br /&gt;
====questL11Black====&lt;br /&gt;
questL11Black tracks the player&#039;s progress in the {{kolwiki|Quest_for_the_Holy_MacGuffin|Black Market portion of the Holy MacGuffin quest}}.&lt;br /&gt;
&lt;br /&gt;
*unstarted: quest not yet received&lt;br /&gt;
*started:  quest received from the Council&lt;br /&gt;
*step1: spent at least one turn in the Black Forest&lt;br /&gt;
*step2: Black Market found&lt;br /&gt;
*step3: forged identification documents purchased&lt;br /&gt;
*finished: MacGuffin diary acquired&lt;br /&gt;
&lt;br /&gt;
=====blackForestProgress=====&lt;br /&gt;
blackForestProgress tracks the player&#039;s progress in [http://kolmafia.us/showthread.php?15995 discovering the Black Market].&lt;br /&gt;
&lt;br /&gt;
*0: no progress in exploring the Forest&lt;br /&gt;
*1: blackberry bushes located&lt;br /&gt;
*2: black cottage located&lt;br /&gt;
*3: black mineshaft located&lt;br /&gt;
*4: black church located&lt;br /&gt;
*5: black market located&lt;br /&gt;
&lt;br /&gt;
====questL11Manor====&lt;br /&gt;
questL11Manor tracks the player&#039;s progress in the {{kolwiki|Quest_for_the_Holy_MacGuffin#Spookyraven_quest_.28In_a_Manor_of_Spooking|Spookyraven Manor portion of the Holy Macguffin quest}}.&lt;br /&gt;
&lt;br /&gt;
*unstarted: quest not yet received&lt;br /&gt;
*started: quest received, by reading your father&#039;s MacGuffin diary&lt;br /&gt;
*step1: Spookyraven Manor Cellar opened&lt;br /&gt;
*step2: recipe: mortar-dissolving solution read&lt;br /&gt;
*step3: Suspicious Masonry demolished&lt;br /&gt;
*finished: Lord Spookyraven defeated&lt;br /&gt;
&lt;br /&gt;
=====spookyravenRecipeUsed=====&lt;br /&gt;
spookyravenRecipeUsed tracks whether and how the player has read recipe: mortar-dissolving solution&lt;br /&gt;
&lt;br /&gt;
*none: recipe not yet read&lt;br /&gt;
*with_glasses: recipe read with Lord Spookyraven&#039;s spectacles&lt;br /&gt;
*no_glasses: recipe read without the spectacles&lt;br /&gt;
&lt;br /&gt;
====questL11Desert====&lt;br /&gt;
Explore the Arid, Extra-Dry Desert to find the pyramid mentioned in your father&#039;s journal.&lt;br /&gt;
&lt;br /&gt;
*unstarted:&lt;br /&gt;
*started: quest started by reading your father&#039;s MacGuffin diary&lt;br /&gt;
*finished: discovered the Small Pyramid&lt;br /&gt;
&lt;br /&gt;
=====desertExploration=====&lt;br /&gt;
*0: haven&#039;t yet started exploring the Desert&lt;br /&gt;
*1-99: Desert exploration in progress&lt;br /&gt;
*100: Desert fully explored&lt;br /&gt;
&lt;br /&gt;
====questL11Pyramid====&lt;br /&gt;
questL11Pyramid tracks the player&#039;s progress in the {{kolwiki|Quest_for_the_Holy_MacGuffin#A_Small_Pyramid|Pyramid portion of the Holy Macguffin quest}}.&lt;br /&gt;
&lt;br /&gt;
* unstarted: Ancient Buried Pyramid not yet discovered&lt;br /&gt;
* started: Ancient Buried Pyramid discovered&lt;br /&gt;
* step1: Middle Chamber opened&lt;br /&gt;
* step2: The Lower Chambers opened&lt;br /&gt;
* step3: Control Room opened&lt;br /&gt;
* finished: MacGuffin retrieved (quest complete)&lt;br /&gt;
&lt;br /&gt;
=====gnasirProgress=====&lt;br /&gt;
gnasirProgress is a nibble bitmask with one bit for each possible way you can advance {{kolwiki|Quest_for_the_Holy_MacGuffin|Gnasir&#039;s quest}}. You can parse this with bitwise operators. Here&#039;s some code that demonstrates how to use it.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
int gnasirProgress = get_property(&amp;quot;gnasirProgress&amp;quot;).to_int();&lt;br /&gt;
buffer gnasir;&lt;br /&gt;
if((gnasirProgress &amp;amp; 1) == 0)&lt;br /&gt;
	print(&amp;quot;Gnasir wants a stone rose&amp;quot;);&lt;br /&gt;
if((gnasirProgress &amp;amp; 2) == 0)&lt;br /&gt;
	print(&amp;quot;Gnasir wants a can of black paint&amp;quot;);&lt;br /&gt;
if((gnasirProgress &amp;amp; 4) == 0)&lt;br /&gt;
	print(&amp;quot;Gnasir wants a killing jar&amp;quot;);&lt;br /&gt;
if((gnasirProgress &amp;amp; 8) == 0)&lt;br /&gt;
	print(&amp;quot;Gnasir wants a 15 worm-riding manual page&amp;quot;);&lt;br /&gt;
if((gnasirProgress &amp;amp; 16) == 0)&lt;br /&gt;
	print(&amp;quot;You need to use a drum machine to ride the worm&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====questL11Ron====&lt;br /&gt;
Ron Copperhead&lt;br /&gt;
*unstarted:&lt;br /&gt;
*started: quest received, by reading your father&#039;s MacGuffin diary&lt;br /&gt;
*step1: received the intro adventure at A Mob of Zeppelin Protestors&lt;br /&gt;
*step2: cleared all 80 protestors and opened access to The Red Zeppelin&lt;br /&gt;
*step3: received the intro adventure at The Red Zeppelin&lt;br /&gt;
*step4: Found Ron &amp;quot;The Weasel&amp;quot; Copperhead&lt;br /&gt;
*finished: defeated Ron &amp;quot;The Weasel&amp;quot; Copperhead and received the Copperhead Charm (rampant)&lt;br /&gt;
&lt;br /&gt;
=====zeppelinProtestors=====&lt;br /&gt;
Tracks protesters removed&lt;br /&gt;
&lt;br /&gt;
====questL11Shen====&lt;br /&gt;
Shen Copperhead&lt;br /&gt;
&lt;br /&gt;
*unstarted: quest not yet received from the Council&lt;br /&gt;
*started: quest received, by reading your father&#039;s MacGuffin diary&lt;br /&gt;
*step1: spoke to Shen Copperhead in the Copperhead club and received first item request (and poisoning)&lt;br /&gt;
*step2: acquired first item&lt;br /&gt;
*step3: returned first item, received second item request (and poisoning)&lt;br /&gt;
*step4: acquired second item&lt;br /&gt;
*step5: returned second item, received third item request (and poisoning)&lt;br /&gt;
*step6: acquired third item&lt;br /&gt;
*step7: returned third item&lt;br /&gt;
*finished: received the Copperhead Charm&lt;br /&gt;
&lt;br /&gt;
====questL11Palindome====&lt;br /&gt;
questL11Palindome tracks the player&#039;s progress in the {{kolwiki|Quest_for_the_Holy_MacGuffin#The_Palindome|Palindome portion of the Never Odd or Even quest}}.&lt;br /&gt;
&lt;br /&gt;
* unstarted: quest not yet received from the Council&lt;br /&gt;
* started: have the Talisman o&#039; Namsilat&lt;br /&gt;
* step1: arranged the photos in Dr. Awkward&#039;s office&lt;br /&gt;
* step2: read 2 Love Me, Vol. 2&lt;br /&gt;
* step3: met Mr. Alarm in his office (received the wet stunt nut stew quest)&lt;br /&gt;
* step4: cooked wet stunt nut stew&lt;br /&gt;
* step5: returned the stew to Mr. Alarm&lt;br /&gt;
* finished: defeated Dr. Awkward&lt;br /&gt;
&lt;br /&gt;
====questL11Worship====&lt;br /&gt;
questL11Worship tracks progress through the {{kolwiki|Quest_for_the_Holy_MacGuffin#Hidden_Temple_quest_.28Gotta_Worship_Them_All.29|Hidden Temple portion of the Quest for the Holy MacGuffin}}.&lt;br /&gt;
&lt;br /&gt;
*unstarted: quest not yet received&lt;br /&gt;
*started: quest received, by reading your father&#039;s MacGuffin diary&lt;br /&gt;
*step1: (Hidden Temple opened?)&lt;br /&gt;
*step2: correct button pressed in the Temple&lt;br /&gt;
*step3: Hidden City uncovered&lt;br /&gt;
*step4: four stone spheres acquired&lt;br /&gt;
*finished: ancient amulet acquired from the Protector Spectre&lt;br /&gt;
&lt;br /&gt;
=====questL11Business=====&lt;br /&gt;
*unstarted:&lt;br /&gt;
*started: Hidden Office Building opened&lt;br /&gt;
*finished: crackling stone sphere acquired&lt;br /&gt;
&lt;br /&gt;
======hiddenOfficeProgress======&lt;br /&gt;
hiddenOfficeProgress tracks progress through the {{kolwiki|Hidden Office Building}} during the Quest for the Holy MacGuffin.&lt;br /&gt;
&lt;br /&gt;
Possible values: 0, 1, 6 - 8&lt;br /&gt;
* 0: Haven&#039;t opened the Hidden Office Building&lt;br /&gt;
* 1: Hidden Office Building is open for adventuring&lt;br /&gt;
* 6: Encountered the Protector Spirit&lt;br /&gt;
* 7: Found the stone sphere&lt;br /&gt;
* 8: Placed the stone sphere in the relevant overgrown shrine&lt;br /&gt;
&lt;br /&gt;
=====questL11Curses=====&lt;br /&gt;
*unstarted:&lt;br /&gt;
*started: Hidden Apartment Building opened&lt;br /&gt;
*finished: moss-covered stone sphere acquired&lt;br /&gt;
&lt;br /&gt;
======hiddenApartmentProgress======&lt;br /&gt;
hiddenApartmentProgress tracks progress through the {{kolwiki|Hidden Apartment Building}} during the Quest for the Holy MacGuffin.&lt;br /&gt;
&lt;br /&gt;
Possible values: 0, 1, 6 - 8&lt;br /&gt;
* 0: Haven&#039;t opened the Hidden Apartment Building&lt;br /&gt;
* 1: Hidden Apartment Building is open for adventuring&lt;br /&gt;
* 6: Encountered the Protector Spirit&lt;br /&gt;
* 7: Found the stone sphere&lt;br /&gt;
* 8: Placed the stone sphere in the relevant overgrown shrine&lt;br /&gt;
&lt;br /&gt;
=====questL11Doctor=====&lt;br /&gt;
*unstarted:&lt;br /&gt;
*started: Hidden Hospital opened&lt;br /&gt;
*finished: dripping stone sphere acquired&lt;br /&gt;
&lt;br /&gt;
======hiddenHospitalProgress======&lt;br /&gt;
hiddenHospitalProgress tracks progress through the {{kolwiki|Hidden Hospital}} during the Quest for the Holy MacGuffin.&lt;br /&gt;
&lt;br /&gt;
Possible values: 0 - 8&lt;br /&gt;
* 0: Haven&#039;t opened the Hidden Hospital&lt;br /&gt;
* 1: Hidden Hospital is open for adventuring, but haven&#039;t bowled.&lt;br /&gt;
* 6: Encountered the Protector Spirit&lt;br /&gt;
* 7: Found the stone sphere&lt;br /&gt;
* 8: Placed the stone sphere in the relevant overgrown shrine&lt;br /&gt;
&lt;br /&gt;
=====questL11Spare=====&lt;br /&gt;
*unstarted:&lt;br /&gt;
*started: Hidden Bowling Alley opened&lt;br /&gt;
*finished: scorched stone sphere acquired&lt;br /&gt;
&lt;br /&gt;
======hiddenBowlingAlleyProgress======&lt;br /&gt;
hiddenBowlingAlleyProgress tracks progress through the {{kolwiki|Hidden Bowling Alley}} during the Quest for the Holy MacGuffin.&lt;br /&gt;
&lt;br /&gt;
* 0: Haven&#039;t opened the Hidden Bowling Alley&lt;br /&gt;
* 1: Hidden Bowling Alley is open for adventuring&lt;br /&gt;
* 2-5: Number of times bowled is 1 less than hiddenBowlingAlleyProgress &lt;br /&gt;
* 6: Encountered the Protector Spirit&lt;br /&gt;
* 7: Found the stone sphere&lt;br /&gt;
* 8: Placed the stone sphere in the relevant overgrown shrine&lt;br /&gt;
&lt;br /&gt;
=====hiddenTavernUnlock=====&lt;br /&gt;
hiddenTavernUnlock tracks whether or not you have unlocked the {{kolwiki|Hidden Tavern}} during the Quest for the Holy MacGuffin.&lt;br /&gt;
&lt;br /&gt;
* When the value is equal to your number of ascensions, the Tavern is unlocked&lt;br /&gt;
* When the value is any other number, the Tavern is locked&lt;br /&gt;
&lt;br /&gt;
===questL12War===&lt;br /&gt;
questL12War tracks progress during the {{kolwiki|Mysterious Island Quest}}.&lt;br /&gt;
&lt;br /&gt;
* unstarted: quest not yet received from the Council&lt;br /&gt;
* started: quest received&lt;br /&gt;
* step1: War started&lt;br /&gt;
* finished: War ended; boss defeated (quest complete)&lt;br /&gt;
&lt;br /&gt;
====warProgress====&lt;br /&gt;
Possible values for the progress of the {{kolwiki|Mysterious Island Quest|Isle War}}:&lt;br /&gt;
*unstarted: We can still visit the small version of the Mysterious Island&lt;br /&gt;
*started: The war is in progress&lt;br /&gt;
*finished: The final boss or bosses were defeated&lt;br /&gt;
&lt;br /&gt;
====fratboysDefeated====&lt;br /&gt;
counts how many frat warriors have been killed on the battlefield (starts at 0).&lt;br /&gt;
&lt;br /&gt;
====hippiesDefeated====&lt;br /&gt;
counts how many war hippies have been killed on the battlefield (starts at 0).&lt;br /&gt;
&lt;br /&gt;
====sideDefeated====&lt;br /&gt;
Which side of the {{kolwiki|Mysterious Island Quest|Isle War}} was defeated during the Level 12 quest. &lt;br /&gt;
&lt;br /&gt;
Possible values:&lt;br /&gt;
*neither&lt;br /&gt;
*hippies&lt;br /&gt;
*fratboys&lt;br /&gt;
*both&lt;br /&gt;
&lt;br /&gt;
====sidequestArenaCompleted====&lt;br /&gt;
Tracks the status of {{kolwiki|The Mysterious Island Arena}} sidequest&lt;br /&gt;
&lt;br /&gt;
Possible values:&lt;br /&gt;
*none&lt;br /&gt;
*fratboy&lt;br /&gt;
*hippy&lt;br /&gt;
&lt;br /&gt;
====sidequestFarmCompleted====&lt;br /&gt;
Tracks the status of {{kolwiki|McMillicancuddy&#039;s Farm}} sidequest&lt;br /&gt;
&lt;br /&gt;
Possible values:&lt;br /&gt;
*none&lt;br /&gt;
*fratboy&lt;br /&gt;
*hippy&lt;br /&gt;
&lt;br /&gt;
====sidequestJunkyardCompleted====&lt;br /&gt;
Tracks the status of {{kolwiki|The Junkyard}} sidequest&lt;br /&gt;
&lt;br /&gt;
Possible values:&lt;br /&gt;
*none&lt;br /&gt;
*fratboy&lt;br /&gt;
*hippy&lt;br /&gt;
&lt;br /&gt;
====sidequestLighthouseCompleted====&lt;br /&gt;
Tracks the status of {{kolwiki|The Lighthouse}} sidequest&lt;br /&gt;
&lt;br /&gt;
Possible values:&lt;br /&gt;
*none&lt;br /&gt;
*fratboy&lt;br /&gt;
*hippy&lt;br /&gt;
&lt;br /&gt;
====sidequestNunsCompleted====&lt;br /&gt;
Tracks the status of {{kolwiki|Our Lady of Perpetual Indecision}} sidequest&lt;br /&gt;
&lt;br /&gt;
Possible values:&lt;br /&gt;
*none&lt;br /&gt;
*fratboy&lt;br /&gt;
*hippy&lt;br /&gt;
&lt;br /&gt;
====sidequestOrchardCompleted====&lt;br /&gt;
Tracks the status of {{kolwiki|The Organic Orchard}} sidequest&lt;br /&gt;
&lt;br /&gt;
Possible values:&lt;br /&gt;
*none&lt;br /&gt;
*fratboy&lt;br /&gt;
*hippy&lt;br /&gt;
&lt;br /&gt;
===questL12HippyFrat===&lt;br /&gt;
questL12War tracks progress during the {{kolwiki|Mysterious Island Quest}} in the {{kolwiki|Kingdom of Exploathing}} path&lt;br /&gt;
&lt;br /&gt;
* unstarted: quest not yet received from the Council&lt;br /&gt;
* started: quest received&lt;br /&gt;
* step1: War started&lt;br /&gt;
* finished: War ended; boss defeated (quest complete)&lt;br /&gt;
&lt;br /&gt;
===questL13Final===&lt;br /&gt;
Progress for the {{kolwiki|Naughty Sorceress Quest}}.&lt;br /&gt;
&lt;br /&gt;
*unstarted: quest not yet received from the Council&lt;br /&gt;
*started: quest received; Registration Desk open (???)&lt;br /&gt;
*step1: spent at least one turn fighting competitors&lt;br /&gt;
*step2: competitors defeated&lt;br /&gt;
*step3: sash acquired&lt;br /&gt;
*step4: met Frank&lt;br /&gt;
*step5: Hedge Maze cleared&lt;br /&gt;
*step6: Tower Door locks unlocked&lt;br /&gt;
*step7: wall of skin defeated&lt;br /&gt;
*step8: wall of meat defeated&lt;br /&gt;
*step9: wall of bones defeated&lt;br /&gt;
*step10: antique mirror handled&lt;br /&gt;
*step11: shadow class defeated&lt;br /&gt;
*step12: Naughty Sorceress defeated&lt;br /&gt;
*step13: Council informed&lt;br /&gt;
*finished: prism smashed; King Ralph freed; Astral Gash accessible&lt;br /&gt;
&lt;br /&gt;
===questL13Warehouse===&lt;br /&gt;
the final quest if you ascend as {{kolwiki|Actually Ed the Undying}} where you adventure in {{kolwiki|The Secret Council Warehouse}}.&lt;br /&gt;
*unstarted&lt;br /&gt;
*started&lt;br /&gt;
*finished&lt;br /&gt;
Current progress in the warehouse is tracked in warehouseProgress.&lt;br /&gt;
&lt;br /&gt;
==Guild Quests==&lt;br /&gt;
===questG01Meatcar===&lt;br /&gt;
* unstarted&lt;br /&gt;
* started&lt;br /&gt;
* finished&lt;br /&gt;
&lt;br /&gt;
===questG02Whitecastle===&lt;br /&gt;
* unstarted&lt;br /&gt;
* started&lt;br /&gt;
* finished&lt;br /&gt;
&lt;br /&gt;
===questG03Ego===&lt;br /&gt;
* unstarted&lt;br /&gt;
* started&lt;br /&gt;
* finished&lt;br /&gt;
&lt;br /&gt;
===questG04Nemesis===&lt;br /&gt;
Tracks the player&#039;s progress in the {{kolwiki|Me and My Nemesis|Nemesis quest}}.&lt;br /&gt;
&lt;br /&gt;
*unstarted: Quest not yet received&lt;br /&gt;
*started: Quest received from the guild NPC&lt;br /&gt;
*step1: Tomb of the Unknown [Your Class] Here encountered at The Unquiet Garves&lt;br /&gt;
*step2: Defeated the Unknown [Your Class]&lt;br /&gt;
*step3: Post combat choice encountered after defeating the Unknown [Your Class]&lt;br /&gt;
*step4: Epic Weapon acquired&lt;br /&gt;
*step5: The &amp;quot;Fun&amp;quot; House opened&lt;br /&gt;
*step6: Defeated The Clownlord Beelzebozo&lt;br /&gt;
*step7: Instructed to make your Legendary Epic Weapon by the guild NPC&lt;br /&gt;
*step8: Meatsmithed your Legendary Epic Weapon&lt;br /&gt;
*step9: Presented the Legendary Epic Weapon to the guild NPC&lt;br /&gt;
*step10: Talked to Guild and opened the Dark Cave&lt;br /&gt;
*step11: Encountered the Dark Cave entrance at least once, but haven&#039;t solved the skill puzzle yet&lt;br /&gt;
*step12: Passed the Dark Cave entrance&lt;br /&gt;
*step13: Encountered the Impassable Rubble, but haven&#039;t destroyed it yet&lt;br /&gt;
*step14: 6 fizzing spore pods acquired&lt;br /&gt;
*step15: Impassable rubble cleared and ready for final (?) showdown&lt;br /&gt;
*step16: Defeated Nemesis (1st battle, drops Legendary Regalia Hat)&lt;br /&gt;
*step17: Presented the Legendary Regalia Hat to the guild NPC&lt;br /&gt;
*step18: Lost to 1st assassin - menacing thug (wanderer)&lt;br /&gt;
*step19: Defeated 1st assassin - menacing thug (wanderer)&lt;br /&gt;
*step20: Lost to 2nd assassin - Mob Penguin hitman (wanderer)&lt;br /&gt;
*step21: Defeated 2nd assassin - Mob Penguin hitman (wanderer)&lt;br /&gt;
*step22: Lost to 3rd assassin - class specific (wanderer)&lt;br /&gt;
*step23: Defeated 3rd assassin - class specific (wanderer)&lt;br /&gt;
*step24: Lost to 4th assassin - class specific (wanderer)&lt;br /&gt;
*step25: Defeated 4th assassin - class specific (wanderer) &lt;br /&gt;
*step26: Discovered the Volcano Lair from the O Cap&#039;m, My Cap&#039;m noncombat&amp;lt;br&amp;gt;(&#039;&#039;Note: This is not used since the Nemesis Quest revamp in 2015.&#039;&#039;)&lt;br /&gt;
*step27: Defeated Nemesis (2nd battle, drops Legendary Regalia Pants)&lt;br /&gt;
*step28: Started fight with Nemesis after Volcano maze (3rd battle)&lt;br /&gt;
*step29: Defeated 1st form of Nemesis (3rd battle)&lt;br /&gt;
*finished: Defeated 2nd form of Nemesis (3rd battle, drops Legendary Regalia Accessory)&amp;lt;br&amp;gt;(&#039;&#039;Note: This is set before you talk to the guild NPC and receive the 6,000 meat reward.&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
===questG06Delivery===&lt;br /&gt;
* unstarted&lt;br /&gt;
* started&lt;br /&gt;
* finished&lt;br /&gt;
&lt;br /&gt;
===questG07Myst===&lt;br /&gt;
Tracks the guild entry quest for mysticality classes (i.e. {{kolwiki|The League of Chef-Magi}})&lt;br /&gt;
* unstarted&lt;br /&gt;
* started: Received the quest from the guild leader&lt;br /&gt;
* step1: Obtained the {{kolwiki|exorcised sandwich}}&lt;br /&gt;
* finished: Returned the quest item to the guild leader&lt;br /&gt;
&lt;br /&gt;
===questG08Moxie===&lt;br /&gt;
Tracks the guild entry quest for moxie classes (i.e. {{kolwiki|The Department of Shadowy Arts and Crafts}})&lt;br /&gt;
* unstarted&lt;br /&gt;
* started: Received the quest from the guild leader&lt;br /&gt;
* step1: Encountered the {{kolwiki|Now&#039;s Your Pants! I Mean... Your Chance!}} adventure and stole your own pants&lt;br /&gt;
* finished: Returned to the guild leader&lt;br /&gt;
&lt;br /&gt;
===questG09Muscle===&lt;br /&gt;
Tracks the guild entry quest for muscle classes (i.e. {{kolwiki|The Brotherhood of the Smackdown}})&lt;br /&gt;
* unstarted&lt;br /&gt;
* started: Received the quest from the guild leader&lt;br /&gt;
* step1: Obtained the {{kolwiki|11-inch knob sausage}}&lt;br /&gt;
* finished: Returned the quest item to the guild leader&lt;br /&gt;
&lt;br /&gt;
==Miscellaneous Quests==&lt;br /&gt;
===questM01Untinker===&lt;br /&gt;
Returning the screwdriver to the Untinker.&lt;br /&gt;
* unstarted&lt;br /&gt;
* step1: collected the rusty screwdriver&lt;br /&gt;
* finished: screwdriver returned&lt;br /&gt;
&lt;br /&gt;
===questM02Artist===&lt;br /&gt;
* unstarted&lt;br /&gt;
* started&lt;br /&gt;
* finished&lt;br /&gt;
&lt;br /&gt;
===questM03Bugbear===&lt;br /&gt;
* unstarted&lt;br /&gt;
* started&lt;br /&gt;
* finished&lt;br /&gt;
&lt;br /&gt;
===questM04Galaktic===&lt;br /&gt;
* unstarted&lt;br /&gt;
* started&lt;br /&gt;
* finished&lt;br /&gt;
&lt;br /&gt;
===questM05Toot===&lt;br /&gt;
* unstarted&lt;br /&gt;
* started&lt;br /&gt;
* finished&lt;br /&gt;
&lt;br /&gt;
===questM06Gourd===&lt;br /&gt;
* unstarted&lt;br /&gt;
* started&lt;br /&gt;
* finished&lt;br /&gt;
&lt;br /&gt;
===questM07Hammer===&lt;br /&gt;
* unstarted&lt;br /&gt;
* started&lt;br /&gt;
* finished&lt;br /&gt;
&lt;br /&gt;
===questM08Baker===&lt;br /&gt;
* unstarted&lt;br /&gt;
* started&lt;br /&gt;
* finished&lt;br /&gt;
&lt;br /&gt;
===questM09Rocks===&lt;br /&gt;
* unstarted&lt;br /&gt;
* started&lt;br /&gt;
* finished&lt;br /&gt;
&lt;br /&gt;
===questM10Azazel===&lt;br /&gt;
questM10Azazel tracks the player&#039;s progress in the {{kolwiki|Azazel,_Ma_Belle|Azazel, Ma Belle quest}}.&lt;br /&gt;
*unstarted: quest not yet received&lt;br /&gt;
*started: received the quest, from Azazel or the stranger in Moaning Panda Square&lt;br /&gt;
*finished: returned Azazel&#039;s talismans to him&lt;br /&gt;
&lt;br /&gt;
===questM11Postal===&lt;br /&gt;
* unstarted&lt;br /&gt;
* started&lt;br /&gt;
* finished&lt;br /&gt;
&lt;br /&gt;
===questM12Pirate===&lt;br /&gt;
questM12Pirate tracks the player&#039;s progress in the {{kolwiki|Cap&#039;m Caronch Quest}}.&lt;br /&gt;
*unstarted:&lt;br /&gt;
*started: Cap&#039;m Caronch&#039;s Map found&lt;br /&gt;
*step1: acquired Cap&#039;m Caronch&#039;s nasty booty from the booty crab&lt;br /&gt;
*step2: received the Orcish Frat House blueprints&lt;br /&gt;
*step3: retrieved Cap&#039;m Caronch&#039;s dentures from the Frat House&lt;br /&gt;
*step4: returned the dentures to the Cap&#039;m and accepted the beer pong challenge&lt;br /&gt;
*step5: won a game of beer pong&lt;br /&gt;
*step6: acquired pirate fledges&lt;br /&gt;
*finished: unlocked Belowdecks&lt;br /&gt;
&lt;br /&gt;
===questM13Escape===&lt;br /&gt;
* unstarted&lt;br /&gt;
* started&lt;br /&gt;
* finished&lt;br /&gt;
&lt;br /&gt;
===questM14Bounty===&lt;br /&gt;
* unstarted&lt;br /&gt;
* started&lt;br /&gt;
* finished&lt;br /&gt;
&lt;br /&gt;
===questM15Lol===&lt;br /&gt;
questM15Lol tracks the player&#039;s progress in {{kolwiki|A Quest, LOL}}. (No, but seriously.)&lt;br /&gt;
* unstarted&lt;br /&gt;
* started&lt;br /&gt;
* finished&lt;br /&gt;
&lt;br /&gt;
===questM16Temple===&lt;br /&gt;
The Hidden Legend of the Temple (&amp;quot;Dakota&amp;quot; Fanning)&lt;br /&gt;
* unstarted: quest not yet received&lt;br /&gt;
* started: Spoke to &amp;quot;Dakota&amp;quot; Fanning and accepted the quest.&lt;br /&gt;
* finished: Collected all 3 required items and spoke to &amp;quot;Dakota&amp;quot; Fanning again to unlock the Hidden Temple, or successfully used a {{kolwiki|Spooky Temple Map Quest|Spooky Temple map}}.&lt;br /&gt;
&lt;br /&gt;
===questM17Babies===&lt;br /&gt;
Lady Spookyraven&#039;s Babies&lt;br /&gt;
* unstarted&lt;br /&gt;
* started&lt;br /&gt;
* finished&lt;br /&gt;
&lt;br /&gt;
===questM18Swamp===&lt;br /&gt;
Marty and His Swamp Problems&lt;br /&gt;
* unstarted&lt;br /&gt;
* started&lt;br /&gt;
* finished&lt;br /&gt;
&lt;br /&gt;
===questM19Hippy===&lt;br /&gt;
Give a Hippy a Boat...&lt;br /&gt;
* unstarted: quest not yet received&lt;br /&gt;
* started: Spoke to That Hippy and accepted quest.&lt;br /&gt;
* step1: Acquired Worse Homes and Gardens.&lt;br /&gt;
* step2: Read Worse Homes and Gardens (why?)&lt;br /&gt;
* step3: Crafted the Junk Junk.&lt;br /&gt;
* finished: Spoke to the Hippy with the Junk Junk in inventory.&lt;br /&gt;
&lt;br /&gt;
===questM20Necklace===&lt;br /&gt;
questM20Necklace tracks the player&#039;s progress in {{kolwiki|Spookyraven_Manor_Quest#Lady_Spookyraven.27s_Necklace_.28First_Floor.29|retrieving Lady Spookyraven&#039;s necklace}}.&lt;br /&gt;
&lt;br /&gt;
* unstarted: quest not yet received&lt;br /&gt;
* started: quest received from the telegram&lt;br /&gt;
* step1: billiards room key found&lt;br /&gt;
* step2: Pool Cue acquired&lt;br /&gt;
* step3: library key found&lt;br /&gt;
* step4: necklace found&lt;br /&gt;
* finished: necklace returned to Lady Spookyraven (quest complete)&lt;br /&gt;
&lt;br /&gt;
===questM21Dance===&lt;br /&gt;
questM21Dance tracks the player&#039;s progress in the Second Floor portion of the {{kolwiki|Lady_spookyraven&#039;s_dance|Spookyraven Manor quest}}.&lt;br /&gt;
&lt;br /&gt;
*unstarted:&lt;br /&gt;
*started: quest received, from Lady Spookyraven&#039;s ghostly telegram&lt;br /&gt;
*step1: spoken to Lady Spookyraven on the Second Floor&lt;br /&gt;
*step2: acquired Lady Spookyraven&#039;s dancing things&lt;br /&gt;
*step3: returned Lady Spookyraven&#039;s dancing things to her&lt;br /&gt;
*finished: danced with Lady Spookyraven in the Ballroom&lt;br /&gt;
&lt;br /&gt;
===questM22Shirt===&lt;br /&gt;
The Shirt Off His Lack of Back&lt;br /&gt;
* unstarted&lt;br /&gt;
* started&lt;br /&gt;
* finished&lt;br /&gt;
&lt;br /&gt;
===questM23Meatsmith===&lt;br /&gt;
Helping Make Ends Meat&lt;br /&gt;
* unstarted&lt;br /&gt;
* started&lt;br /&gt;
* step1 - Got a {{kolwiki|check to the Meatsmith}}.&lt;br /&gt;
* finished - Returned {{kolwiki|check to the Meatsmith}} to the Meatsmith.&lt;br /&gt;
&lt;br /&gt;
===questM24Doc===&lt;br /&gt;
What&#039;s Up, Doc?&lt;br /&gt;
* unstarted&lt;br /&gt;
* started&lt;br /&gt;
* step1 - Collected the Herbs and need to return them to Doc Galaktik&lt;br /&gt;
* finished&lt;br /&gt;
&lt;br /&gt;
===questM25Armorer===&lt;br /&gt;
Lending a Hand (and a Foot)&lt;br /&gt;
* unstarted&lt;br /&gt;
* started - accepted the quest from the Armorer and Leggerer&lt;br /&gt;
* step1 - &lt;br /&gt;
* finished&lt;br /&gt;
&lt;br /&gt;
===questM26Oracle===&lt;br /&gt;
The Oracle quest (The Source Path)&lt;br /&gt;
* unstarted&lt;br /&gt;
* started&lt;br /&gt;
* finished&lt;br /&gt;
&lt;br /&gt;
==Sea Quests==&lt;br /&gt;
===questS01OldGuy===&lt;br /&gt;
=finished&lt;br /&gt;
===questS02Monkees===&lt;br /&gt;
Hey Hey, Find The Monkees&lt;br /&gt;
&lt;br /&gt;
* Start	Go see Little Brother in the Sea Monkee Castle.&lt;br /&gt;
* step1	Rescue Big Brother from the Wreck of the Edgar Fitzsimmons.&lt;br /&gt;
* step2	Go see Big Brother in the Sea Monkee Castle.&lt;br /&gt;
* step3	Check in with Little Brother in the Sea Monkee Castle.&lt;br /&gt;
* step4	Find Grandpa in&lt;br /&gt;
* step5	Have a chat with Grandpa in the Sea Monkee Castle.&lt;br /&gt;
* step6	Search for clues to Grandma&#039;s location in the Mer-Kin Outpost.&lt;br /&gt;
* step7	Figure out what to do with Grandma&#039;s note...  Perhaps Grandpa will have some ideas?&lt;br /&gt;
* step8	Rescue Grandma from the Mer-Kin Outpost.&lt;br /&gt;
* step9	Check back in with Little Brother in the Sea Monkee Castle.&lt;br /&gt;
* step10	Go check on Big Brother in the Sea Monkee Castle.&lt;br /&gt;
* step11	Buy the black glass from Big Brother in the Sea Monkee Castle.&lt;br /&gt;
* step12	Use the black glass to explore the Caliginous Abyss.&lt;br /&gt;
* finished	You have rescued the entire family of Sea Monkees. Well, except for Dad, but we shouldn&#039;t talk about that.&lt;br /&gt;
&lt;br /&gt;
====merkinQuestPath====&lt;br /&gt;
merkinQuestPath indicates which path the player has chosen in the {{kolwiki|Mer-Kin Deepcity}}, during the {{kolwiki|Sea Monkees Quest}}.&lt;br /&gt;
&lt;br /&gt;
Possible values:&lt;br /&gt;
* none: Player has not yet chosen a path&lt;br /&gt;
* gladiator: Player will fight Yog-Urt, Elder Goddess of Hatred&lt;br /&gt;
* scholar: Player will fight Shub-Jigguwatt, Elder God of Violence&lt;br /&gt;
* done: Player has completed the Sea Monkees Quest&lt;br /&gt;
&lt;br /&gt;
====skateParkStatus====&lt;br /&gt;
skateParkStatus tracks the player&#039;s progress in the {{kolwiki|war for the Skate Park}}.&lt;br /&gt;
&lt;br /&gt;
*war: the war is ongoing&lt;br /&gt;
*ice: the roller skates have been chased out&lt;br /&gt;
*roller: the ice skates have been chased out&lt;br /&gt;
*peace: both sides have been chased out&lt;br /&gt;
&lt;br /&gt;
==Quests Granted by Items==&lt;br /&gt;
===questI01Scapegoat===&lt;br /&gt;
=unstarted&lt;br /&gt;
===questI02Beat===&lt;br /&gt;
=unstarted&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Quests Granted by Familiars==&lt;br /&gt;
===questF01Primordial===&lt;br /&gt;
=unstarted&lt;br /&gt;
===questF02Hyboria===&lt;br /&gt;
=unstarted&lt;br /&gt;
===questF03Future===&lt;br /&gt;
=unstarted&lt;br /&gt;
===questF04Elves===&lt;br /&gt;
=unstarted&lt;br /&gt;
===questF05Clancy===&lt;br /&gt;
=unstarted&lt;br /&gt;
&lt;br /&gt;
=== questClumsinessGrove ===&lt;br /&gt;
&lt;br /&gt;
* started - Unlocked the first boss NC&lt;br /&gt;
* step1 - Added a boss to the combat selection vector (clumsinessGroveBoss)&lt;br /&gt;
* step2 - Defeated first boss&lt;br /&gt;
* step3 - Added second boss to the combat selection vector (clumsinessGroveBoss)&lt;br /&gt;
* finished - Defeated second boss&lt;br /&gt;
&lt;br /&gt;
=== questGlacierOfJerks ===&lt;br /&gt;
&lt;br /&gt;
* started - Unlocked the first boss NC&lt;br /&gt;
* step1 - Added a boss to the combat selection vector (glacierOfJerksBoss)&lt;br /&gt;
* step2 - Defeated first boss&lt;br /&gt;
* step3 - Added second boss to the combat selection vector (glacierOfJerksBoss)&lt;br /&gt;
* finished - Defeated second boss&lt;br /&gt;
&lt;br /&gt;
=== questMaelstromOfLovers ===&lt;br /&gt;
&lt;br /&gt;
* started - Unlocked the first boss NC&lt;br /&gt;
* step1 - Added a boss to the combat selection vector (maelstromOfLoversBoss)&lt;br /&gt;
* step2 - Defeated first boss&lt;br /&gt;
* step3 - Added second boss to the combat selection vector (maelstromOfLoversBoss)&lt;br /&gt;
* finished - Defeated second boss&lt;br /&gt;
&lt;br /&gt;
==Bug Bear Invasion Properties==&lt;br /&gt;
&lt;br /&gt;
===mothershipProgress===&lt;br /&gt;
mothershipProgress tracks progress of level completion in the {{kolwiki|Bugbear Mothership}}. It goes from 0 to 3 as that level is cleared.&lt;br /&gt;
&lt;br /&gt;
Possible values: 0-3&lt;br /&gt;
&lt;br /&gt;
===statusEngineering===&lt;br /&gt;
===statusGalley===&lt;br /&gt;
===statusMedbay===&lt;br /&gt;
===statusMorgue===&lt;br /&gt;
===statusNavigation===&lt;br /&gt;
===statusScienceLab===&lt;br /&gt;
===statusSonar===&lt;br /&gt;
===statusSpecialOps===&lt;br /&gt;
===statusWasteProcessing===&lt;br /&gt;
All of these work the same way. &lt;br /&gt;
*0-x (integers): insufficient bodata collected)&lt;br /&gt;
*open: all biodata collected and zone accessible&lt;br /&gt;
* unlocked: biodata collected but zone not yet accessible&lt;br /&gt;
* cleared: zone has been cleared&lt;br /&gt;
&lt;br /&gt;
==Quests from the Elemental Planes==&lt;br /&gt;
===Spring Break Beach===&lt;br /&gt;
The Elemental Plane of Sleaze&lt;br /&gt;
=====questESlMushStash=====&lt;br /&gt;
Jimmy&#039;s Quest to collect receipts from the Fun-Guy Mansion.&lt;br /&gt;
=====questESlAudit=====&lt;br /&gt;
Taco Dan&#039;s Quest to collect receipts from the Fun-Guy Mansion.&lt;br /&gt;
=====questESlBacteria=====&lt;br /&gt;
Broden&#039;s Quest to collect bacteria from the Fun-Guy Mansion.&lt;br /&gt;
=====questESlCheeseburger=====&lt;br /&gt;
Jimmy&#039;s Quest to collect ingredients from the Sloppy Seconds Diner.&lt;br /&gt;
=====questESlSprinkles=====&lt;br /&gt;
Taco Dan&#039;s Quest to collect ingredients from the Sloppy Seconds Diner.&lt;br /&gt;
=====questESlCocktail=====&lt;br /&gt;
Broden&#039;s Quest to collect sprinkles from the Sloppy Seconds Diner.&lt;br /&gt;
=====questESlSalt=====&lt;br /&gt;
Jimmy&#039;s Quest to collect salt from the Sunken Yacht.&lt;br /&gt;
=====questESlFish=====&lt;br /&gt;
Taco Dan&#039;s Quest to collect fish meat from the Sunken Yacht.&lt;br /&gt;
=====questESlDebt=====&lt;br /&gt;
Broden&#039;s Quest to collect broupons from the Sunken Yacht.&lt;br /&gt;
&lt;br /&gt;
===Conspiracy Island===&lt;br /&gt;
The Elemental Plane of Spooky&lt;br /&gt;
=====questESpOutOfOrder=====&lt;br /&gt;
Deep Dark Jungle - Out of Order&lt;br /&gt;
=====questESpJunglePun=====&lt;br /&gt;
Deep Dark Jungle - Pungle in the Jungle&lt;br /&gt;
=====questESpSmokes=====&lt;br /&gt;
Deep Dark Jungle - Everyone&#039;s Running Out of Smokes&lt;br /&gt;
=====questESpClipper=====&lt;br /&gt;
Mansion of Dr. Weirdeaux - The Big Clipper&lt;br /&gt;
=====questESpSerum=====&lt;br /&gt;
Mansion of Dr. Weirdeaux - Serum Sortie&lt;br /&gt;
=====questESpEVE=====&lt;br /&gt;
Secret Government Laboratory - Choking on the Rind&lt;br /&gt;
=====questESpFakeMedium=====&lt;br /&gt;
Secret Government Laboratory - Fake Medium at Large&lt;br /&gt;
=====questESpGore=====&lt;br /&gt;
Secret Government Laboratory - Gore Tipper&lt;br /&gt;
&lt;br /&gt;
==Retired Properties==&lt;br /&gt;
These properties correspond to quests that have been removed from the game.&lt;br /&gt;
&lt;br /&gt;
===questG05Dark===&lt;br /&gt;
Formerly tracked {{kolwiki|A Dark and Dank and Sinister Quest}} before it was retired in 2015.&lt;br /&gt;
* unstarted&lt;br /&gt;
* started&lt;br /&gt;
* finished&lt;br /&gt;
&lt;br /&gt;
{{PropertyNav}}&lt;/div&gt;</summary>
		<author><name>Gausie</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Now_to_int&amp;diff=8567</id>
		<title>Now to int</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Now_to_int&amp;diff=8567"/>
		<updated>2020-10-19T12:07:08Z</updated>

		<summary type="html">&lt;p&gt;Gausie: Created page with &amp;quot;{{ #vardefine:name|now_to_int}}{{ #vardefine:return_type|int}}{{  FunctionPage| name={{#var:name}}|  function1={{Function| name={{#var:name}}| aggregate={{#var:aggregate}}| re...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|now_to_int}}{{&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 current time (based on your local computer&#039;s system settings) as a UNIX timestamp (in milliseconds)|&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
{{SeeAlso|gameday_to_string|gameday_to_int|now_to_string|time_to_string|timestamp_to_date|date_to_timestamp}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Miscellaneous Functions]]&lt;/div&gt;</summary>
		<author><name>Gausie</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Timestamp_to_date&amp;diff=8566</id>
		<title>Timestamp to date</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Timestamp_to_date&amp;diff=8566"/>
		<updated>2020-10-19T12:05:53Z</updated>

		<summary type="html">&lt;p&gt;Gausie: Created page with &amp;quot;{{ #vardefine:name|timestamp_to_date}}{{ #vardefine:return_type|string}}{{  FunctionPage| name={{#var:name}}|  function1={{Function| name={{#var:name}}| aggregate={{#var:aggre...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|timestamp_to_date}}{{&lt;br /&gt;
#vardefine:return_type|string}}{{&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;
parameter2={{Param|int|timestamp}}|&lt;br /&gt;
parameter1={{Param|string|outFormat}}|&lt;br /&gt;
p2desc={{pspan|dtg}} is the timestamp to convert.|&lt;br /&gt;
p1desc={{pspan|inFormat}} is how the output string is formatted.|&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
function_description=Converts a UNIX timestamp (in milliseconds) to a date. Full information on [http://docs.oracle.com/javase/1.5.0/docs/api/java/text/SimpleDateFormat.html SimpleDateFormat] here.|&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
{{SeeAlso|gameday_to_string|gameday_to_int|now_to_string|now_to_int|time_to_string|date_to_timestamp}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Miscellaneous Functions]]&lt;/div&gt;</summary>
		<author><name>Gausie</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Date_to_timestamp&amp;diff=8565</id>
		<title>Date to timestamp</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Date_to_timestamp&amp;diff=8565"/>
		<updated>2020-10-19T12:04:34Z</updated>

		<summary type="html">&lt;p&gt;Gausie: Created page with &amp;quot;{{ #vardefine:name|date_to_timestamp}}{{ #vardefine:return_type|int}}{{  FunctionPage| name={{#var:name}}|  function1={{Function| name={{#var:name}}| aggregate={{#var:aggregat...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|date_to_timestamp}}{{&lt;br /&gt;
#vardefine:return_type|int}}{{&lt;br /&gt;
&lt;br /&gt;
FunctionPage|&lt;br /&gt;
name={{#var:name}}|&lt;br /&gt;
&lt;br /&gt;
function1={{Function|&lt;br /&gt;
name={{#var:name}}|&lt;br /&gt;
aggregate={{#var:aggregate}}|&lt;br /&gt;
return_type={{#var:return_type}}|&lt;br /&gt;
return_also={{#var:return_also}}|&lt;br /&gt;
parameter1={{Param|string|inFormat}}|&lt;br /&gt;
parameter2={{Param|string|dtg}}|&lt;br /&gt;
p1desc={{pspan|inFormat}} is how the input string is formatted.|&lt;br /&gt;
p2desc={{pspan|dtg}} is the date string to convert.|&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
function_description=Converts a date to a UNIX timestamp (in milliseconds). Full information on [http://docs.oracle.com/javase/1.5.0/docs/api/java/text/SimpleDateFormat.html SimpleDateFormat] here.|&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
{{SeeAlso|gameday_to_string|gameday_to_int|now_to_string|now_to_int|time_to_string|timestamp_to_date}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Miscellaneous Functions]]&lt;/div&gt;</summary>
		<author><name>Gausie</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Voting_booth_initiatives&amp;diff=8556</id>
		<title>Voting booth initiatives</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Voting_booth_initiatives&amp;diff=8556"/>
		<updated>2020-09-23T16:26:27Z</updated>

		<summary type="html">&lt;p&gt;Gausie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|voting_booth_initiatives}}{{&lt;br /&gt;
#vardefine:return_type|boolean [string]}}{{&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;
parameter1={{Param|class|class}}|&lt;br /&gt;
p1desc={{pspan|class}} is the class for the seed|&lt;br /&gt;
parameter2={{Param|int|path}}|&lt;br /&gt;
p2desc={{pspan|path}} is the path id for the seed|&lt;br /&gt;
parameter3={{Param|int|daycount}}|&lt;br /&gt;
p3desc={{pspan|daycount}} is the daycount for the seed|&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|class}}|&lt;br /&gt;
p1desc={{pspan|class}} is the class id for the seed|&lt;br /&gt;
parameter2={{Param|int|path}}|&lt;br /&gt;
parameter3={{Param|int|daycount}}|&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
function_description=Returns a list of voting initiatives that are available for a given class on a given day of an ascension in a given path|&lt;br /&gt;
&lt;br /&gt;
code1={{CodeSample|&lt;br /&gt;
title=Code Sample|&lt;br /&gt;
description=The following will tell you the initiatives available to you today without you ever having to visit the booth.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
string [string] initiatives = voting_booth_initiative( my_class(), my_path_id(), my_daycount() );&lt;br /&gt;
dump( initiatives );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}|&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Gausie</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Voting_booth_initiatives&amp;diff=8555</id>
		<title>Voting booth initiatives</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Voting_booth_initiatives&amp;diff=8555"/>
		<updated>2020-09-23T16:13:46Z</updated>

		<summary type="html">&lt;p&gt;Gausie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|voting_booth_initiatives}}{{&lt;br /&gt;
#vardefine:return_type|string [string]}}{{&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;
parameter1={{Param|class|class}}|&lt;br /&gt;
p1desc={{pspan|class}} is the class for the seed|&lt;br /&gt;
parameter2={{Param|int|path}}|&lt;br /&gt;
p2desc={{pspan|class}} is the path id for the seed|&lt;br /&gt;
parameter3={{Param|int|daycount}}|&lt;br /&gt;
p3desc={{pspan|daycount}} is the daycount for the seed|&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
function_description=Returns a map of voting initiatives that are available for a given class on a given day of an ascension in a given path|&lt;br /&gt;
&lt;br /&gt;
code1={{CodeSample|&lt;br /&gt;
title=Code Sample|&lt;br /&gt;
description=The following will tell you the initiatives available to you today without you ever having to visit the booth.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
string [string] initiatives = voting_booth_initiative( my_class(), my_path_id(), my_daycount() );&lt;br /&gt;
dump( initiatives );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}|&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Gausie</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Voting_booth_initiatives&amp;diff=8554</id>
		<title>Voting booth initiatives</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Voting_booth_initiatives&amp;diff=8554"/>
		<updated>2020-09-23T16:13:33Z</updated>

		<summary type="html">&lt;p&gt;Gausie: Created page with &amp;quot;{{ #vardefine:name|voting_booth_initiatives}}{{ #vardefine:return_type|string [string]}}{{ #vardefine:aggregate|yes}}{{  FunctionPage| name={{#var:name}}|  function1={{Functio...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|voting_booth_initiatives}}{{&lt;br /&gt;
#vardefine:return_type|string [string]}}{{&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;
parameter1={{Param|class|class}}|&lt;br /&gt;
p1desc={{pspan|class}} is the class for the seed|&lt;br /&gt;
parameter2={{Param|int|path}}|&lt;br /&gt;
p2desc={{pspan|class}} is the path id for the seed|&lt;br /&gt;
parameter3={{Param|int|daycount}}|&lt;br /&gt;
p3desc={{pspan|daycount}} is the daycount for the seed|&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
function_description=Returns a map of voting initiatives that are available for a given class on a given day of an ascension in a given path&lt;br /&gt;
&lt;br /&gt;
code1={{CodeSample|&lt;br /&gt;
title=Code Sample|&lt;br /&gt;
description=The following will tell you the initiatives available to you today without you ever having to visit the booth.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
string [string] initiatives = voting_booth_initiative( my_class(), my_path_id(), my_daycount() );&lt;br /&gt;
dump( initiatives );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}|&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Gausie</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Shop_limit&amp;diff=8550</id>
		<title>Shop limit</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Shop_limit&amp;diff=8550"/>
		<updated>2020-08-24T11:03:48Z</updated>

		<summary type="html">&lt;p&gt;Gausie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|shop_limit}}{{&lt;br /&gt;
#vardefine:return_type|int}}{{&lt;br /&gt;
&lt;br /&gt;
FunctionPage|&lt;br /&gt;
name={{#var:name}}|&lt;br /&gt;
&lt;br /&gt;
function1={{Function|&lt;br /&gt;
name={{#var:name}}|&lt;br /&gt;
aggregate={{#var:aggregate}}|&lt;br /&gt;
return_type={{#var:return_type}}|&lt;br /&gt;
return_also={{#var:return_also}}|&lt;br /&gt;
parameter1={{Param|item|it}}|&lt;br /&gt;
p1desc={{Pspan|it}} is the item to check|&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
function_description=Returns the limit set on a given item that are currently for sale in your mall store.|&lt;br /&gt;
see_also={{SeeAlso|shop_amount|get_shop}}|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Item Management]]&lt;/div&gt;</summary>
		<author><name>Gausie</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Get_shop&amp;diff=7892</id>
		<title>Get shop</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Get_shop&amp;diff=7892"/>
		<updated>2020-08-24T11:03:36Z</updated>

		<summary type="html">&lt;p&gt;Gausie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#vardefine:name|get_shop}}{{&lt;br /&gt;
#vardefine:aggregate|yes}}{{&lt;br /&gt;
#vardefine:return_type|int [item]}}{{&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;
function_description=Returns a map where each key is an item in your Mall store, with the integer value how many you are currently selling.|&lt;br /&gt;
code1={{CodeSample|&lt;br /&gt;
title=Code Samples|&lt;br /&gt;
description=The following example creates a function called &amp;quot;in_shop&amp;quot; which tells you how many of a given item is currently in your shop.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
int[item] shop_items;&lt;br /&gt;
shop_items = get_shop();&lt;br /&gt;
&lt;br /&gt;
void in_shop(string check) {&lt;br /&gt;
   item thing = to_item(check);&lt;br /&gt;
   if (thing == $item[none]) {&lt;br /&gt;
      print(check+&amp;quot; is not a valid item.&amp;quot;, &amp;quot;red&amp;quot;);&lt;br /&gt;
      return;&lt;br /&gt;
   }&lt;br /&gt;
   if (shop_items contains thing)&lt;br /&gt;
      print(&amp;quot;Your shop currently has &amp;quot;+shop_items[thing]+&amp;quot; &amp;quot;+thing+&amp;quot;.&amp;quot;, &amp;quot;blue&amp;quot;);&lt;br /&gt;
   else print(&amp;quot;Your shop currently has 0 of &amp;quot;+thing, &amp;quot;blue&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Check how many Mae Wests&lt;br /&gt;
in_shop(&amp;quot;mae west&amp;quot;);&lt;br /&gt;
//Check all items with greater than 4 fullness&lt;br /&gt;
foreach it in $items[]&lt;br /&gt;
   if (it.fullness &amp;gt; 4)&lt;br /&gt;
      in_shop(to_string(it));&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;|&lt;br /&gt;
&lt;br /&gt;
}}|&lt;br /&gt;
see_also={{SeeAlso|shop_amount|shop_limit}}|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Item Management]]&lt;/div&gt;</summary>
		<author><name>Gausie</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Shop_limit&amp;diff=8549</id>
		<title>Shop limit</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Shop_limit&amp;diff=8549"/>
		<updated>2020-08-24T11:02:55Z</updated>

		<summary type="html">&lt;p&gt;Gausie: Created page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|shop_limit}}{{&lt;br /&gt;
#vardefine:return_type|int}}{{&lt;br /&gt;
&lt;br /&gt;
FunctionPage|&lt;br /&gt;
name={{#var:name}}|&lt;br /&gt;
&lt;br /&gt;
function1={{Function|&lt;br /&gt;
name={{#var:name}}|&lt;br /&gt;
aggregate={{#var:aggregate}}|&lt;br /&gt;
return_type={{#var:return_type}}|&lt;br /&gt;
return_also={{#var:return_also}}|&lt;br /&gt;
parameter1={{Param|item|it}}|&lt;br /&gt;
p1desc={{Pspan|it}} is the item to check|&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
function_description=Returns the limit set on a given item that are currently for sale in your mall store.|&lt;br /&gt;
see_also={{SeeAlso|closet_amount|display_amount|equipped_amount|item_amount|stash_amount|storage_amount}}|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Item Management]]&lt;/div&gt;</summary>
		<author><name>Gausie</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Put_shop&amp;diff=4141</id>
		<title>Put shop</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Put_shop&amp;diff=4141"/>
		<updated>2020-08-24T11:01:55Z</updated>

		<summary type="html">&lt;p&gt;Gausie: &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|shop_limit|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>Gausie</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Log_n&amp;diff=8548</id>
		<title>Log n</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Log_n&amp;diff=8548"/>
		<updated>2020-08-20T10:08:52Z</updated>

		<summary type="html">&lt;p&gt;Gausie: Created page with &amp;quot;{{ #vardefine:name|log_n}}{{ #vardefine:return_type|float}}{{  FunctionPage| name={{#var:name}}|  function1={{Function| name={{#var:name}}| aggregate={{#var:aggregate}}| retur...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|log_n}}{{&lt;br /&gt;
#vardefine:return_type|float}}{{&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|float|number}}|&lt;br /&gt;
p1desc={{Pspan|number}} is the number to natural log|&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|float|number}}|&lt;br /&gt;
parameter2={{Param|float|base}}|&lt;br /&gt;
p1desc={{Pspan|number}} is the number to log|&lt;br /&gt;
p2desc={{Pspan|base}} is logarithmic base to use|&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
function_description=Returns the logarithm of {{pspan|number}}.|&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Math and Numbers]]&lt;/div&gt;</summary>
		<author><name>Gausie</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Math_and_Numbers&amp;diff=5413</id>
		<title>Math and Numbers</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Math_and_Numbers&amp;diff=5413"/>
		<updated>2020-08-20T10:03:59Z</updated>

		<summary type="html">&lt;p&gt;Gausie: Add log_n&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Flink|int|ceil|float|desc=Returns the next highest value of the specified number as an integer.}}&lt;br /&gt;
{{Flink|int|floor|float|desc=Returns the next lowest value of the specified number as an integer.}}&lt;br /&gt;
{{Flink|boolean|is_integer|string|desc=Reports whether a string is an integer.}}&lt;br /&gt;
{{Flink|int|min|int|int}}&lt;br /&gt;
{{Flink|float|min|float|float|desc=Returns the lower of two numbers.}}&lt;br /&gt;
{{Flink|int|max|int|int}}&lt;br /&gt;
{{Flink|float|max|float|float|desc=Returns the higher of two numbers.}}&lt;br /&gt;
{{flink|float|expression_eval|string}}&lt;br /&gt;
{{flink|float|monster_eval|string}}&lt;br /&gt;
{{flink|float|modifier_eval|string|desc=Evaluates a mathematical expression.}}&lt;br /&gt;
{{Flink|int|random|int|desc=Generates a random integer between 0 and 1 less than the specified number, inclusive.}}&lt;br /&gt;
{{Flink|int|round|float|desc=Returns the value of the specified number as rounded to the nearest integer.}}&lt;br /&gt;
{{Flink|float|square_root|float|desc=Returns the square root of the specified value.}}&lt;br /&gt;
{{Flink|int|truncate|float|desc=Returns the decimal-stripped value of the specified number as an integer.}}&lt;br /&gt;
{{Flink|float|log_n|float|{{opt|float}}|desc=Returns the natural log of the first argument, or with the base of the second argument is specified}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting]]&lt;/div&gt;</summary>
		<author><name>Gausie</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Miscellaneous_ASH_Features&amp;diff=6109</id>
		<title>Miscellaneous ASH Features</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Miscellaneous_ASH_Features&amp;diff=6109"/>
		<updated>2020-06-05T08:58:28Z</updated>

		<summary type="html">&lt;p&gt;Gausie: /* Additional Script Uses */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
==Special Features of ASH Scripting==&lt;br /&gt;
These features are not exactly ASH commands, but they are used to improve script usage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Special Syntax Functions===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[script]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Defines a script&#039;s proper name. Mostly for use by a subsequent notify command in case the user saves the script with a custom name.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[notify]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Used to send a simple kmail to the script&#039;s author, letting them know you use their script.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[since]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Used to inform KoLmafia of the minimum build necessary to support the script&#039;s functionality so it can abort execution with a meaningful error message.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[import]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Used to load an external script into your current one.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[call]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Enables the script writer to invoke a function whose name is known at runtime.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[new]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Constructor function used to populate a record.&lt;br /&gt;
&lt;br /&gt;
===Comments===&lt;br /&gt;
&lt;br /&gt;
Adding &#039;&#039;&#039;[[Comments]]&#039;&#039;&#039; to your code can make it much easier to maintain, and helps other users understand what&#039;s going on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Errors==&lt;br /&gt;
&lt;br /&gt;
There are a wide variety of error messages. For help when things go wrong, please see the page on [[ASH Errors]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Relay Override Scripts==&lt;br /&gt;
A relay override script is a script that modifies a web page in the relay browser. It is only in the relay browser that the effects of this scripts can be seen. The purpose of this is to alter a KoL page to improve functionality or appearance.&lt;br /&gt;
&lt;br /&gt;
Detailed information is at [[Relay_Override_Scripting#Relay_Script|Relay Override Script]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==User Interface Script==&lt;br /&gt;
A User Interface script is a script that creates a web page viewable in the relay browser. It is only in the relay browser that this special page can be seen. The purpose of this is to extend KoLmafia abilities or present information to the user.&lt;br /&gt;
&lt;br /&gt;
Detailed information is at [[Relay_Override_Scripting#User_Interface_Script|User Interface Script]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Consult Scripts==&lt;br /&gt;
Consult scripts are used to script combat. They can be used in automated adventuring or in the relay browser.&lt;br /&gt;
&lt;br /&gt;
Detailed information is at [[Custom_Combat_Script#Consult_Scripts|Consult Scripts]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Additional Script Uses==&lt;br /&gt;
&lt;br /&gt;
In addition to regular scripts, override scripts, UI scripts, and consult scripts, mafia has a few other hooks for adding event-driven scripts.  These situations are listed below, along with the preference that you can set a script name to (in parentheses).&lt;br /&gt;
&lt;br /&gt;
=== After Adventure (afterAdventureScript) ===&lt;br /&gt;
&lt;br /&gt;
*Executed just after mafia has finished an adventure. &lt;br /&gt;
*The afterAdventureScript setting is executed like a CLI command. If it is the name of an ASH script, that script does not require any special main() declaration.&lt;br /&gt;
*By default this only works for automated adventuring. If you wish it to fire when you&#039;re using the relay browser then turn it on in General -&amp;gt; Preferences -&amp;gt; - Relay Browser or set the property relayRunsAfterAdventureScript to true.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Before Adventure (betweenBattleScript) ===&lt;br /&gt;
&lt;br /&gt;
*Executed whenever mafia is about to enter a combat. That means before every adventure if auto-adventuring, or before using an item that could lead to combat such as black pudding or drum machine.&lt;br /&gt;
*The betweenBattleScript setting is executed like a CLI command. If it is the name of an ASH script, that script does not require any special main() declaration.&lt;br /&gt;
*By default this only works for automated adventuring. If you wish it to fire when you&#039;re using the relay browser then turn it on in General -&amp;gt; Preferences -&amp;gt; - Relay Browser or set the property relayRunsBeforeBattleScript to true.&lt;br /&gt;
*Example: Zarqon&#039;s [http://kolmafia.us/showthread.php?t=1240 Best Between Battle]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Before PvP Script (beforePVPScript) ===&lt;br /&gt;
* This will be executed before every PvP attack initiated through the relay browser or CLI command.&lt;br /&gt;
* If you want buffs maintained during PvP (and nothing else) you can do that with:&lt;br /&gt;
*: &amp;lt;pre&amp;gt;set beforePVPScript = mood execute&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Breaking the Prism (kingLiberatedScript) ===&lt;br /&gt;
&lt;br /&gt;
: This will be executed after you break the Prism at the top of the Naughty Sorceress&#039; Lair. This trigger is designed so that a character can be automatically prepared for aftercore. The kingLiberatedScript setting is executed like a CLI command. If it is the name of an ASH script, that script does not require any special main() declaration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buy (buyScript) ===&lt;br /&gt;
&lt;br /&gt;
*Will execute whenever mafia needs to determine if it is to purchase or create an item.&lt;br /&gt;
*Requires a special main declaration boolean main(item itm, int qty, int ingredientLevel, boolean defaultBuy). These values will be supplied by mafia when the script is automatically called. A return value of true will instruct mafia to purchase the item and false will cause it to create the item possibly leading to other buy/create decisions.&lt;br /&gt;
**&#039;&#039;itm&#039;&#039; and &#039;&#039;qty&#039;&#039; specify the item under consideration.&lt;br /&gt;
**&#039;&#039;ingredientLevel&#039;&#039; indicates what&#039;s already available: &lt;br /&gt;
***0 = none of the ingredients&lt;br /&gt;
***1 = some of them&lt;br /&gt;
***2 = enough to create at least one of the requested item&lt;br /&gt;
**defaultBuy indicates what KoLmafia would have done otherwise; returning this value is the safest thing your script could do. It will normally be true if ingredientLevel is 0, false if 2. The default at level 1 depends on the item, and is subject to change - normally, anything made with star charts, pixels, the Malus, or multi-use are bought, anything else is created.&lt;br /&gt;
*Example: Bale&#039;s [http://kolmafia.us/showthread.php?p=18313#post18313 potionBuy].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Chatbot (chatbotScript) ===&lt;br /&gt;
&lt;br /&gt;
*Will execute whenever a private message or an event is received&lt;br /&gt;
**When an event is received the message is stripped of HTML, the channel is &amp;quot;Events&amp;quot; and the sender is an empty string.&lt;br /&gt;
*Requires a special main declaration which can have an optional third parameter: &lt;br /&gt;
*:void main(string sender, string message)&lt;br /&gt;
*:void main(string sender, string message, string channel)&lt;br /&gt;
**&#039;sender&#039; is the name of the player who sent the message&lt;br /&gt;
**&#039;message&#039; is the message that was sent&lt;br /&gt;
**&#039;channel&#039; is &amp;quot;/clan&amp;quot; for clan messages, &amp;quot;Events&amp;quot; for chat notifications (e.g. &amp;quot;New message received from Bale.&amp;quot;), and the empty string for private messages&lt;br /&gt;
&lt;br /&gt;
=== Counters (counterScript) ===&lt;br /&gt;
&lt;br /&gt;
*Will execute whenever a counter will expire as a result of an intended use of adventures.&lt;br /&gt;
*Requires a special main declaration: boolean main(string name, int remain).  These values will be supplied by mafia when the script is automatically called and the return value will determine whether mafia continues operation (true) or aborts (false).  &lt;br /&gt;
**&#039;&#039;name&#039;&#039; will be the name of the counter that is about to expire.&lt;br /&gt;
**&#039;&#039;remain&#039;&#039; is the number of turns remaining before the counter expires.  Remain will usually be 0, but may be higher if you are about to multi-create items, adventure underwater, or take a vacation.   It may be negative if the counter was informational (one that doesn&#039;t abort adventuring), and it actually expired in the middle of an action that used multiple turns at once.&lt;br /&gt;
*Example: Bale&#039;s [http://kolmafia.us/showthread.php?t=2519 CounterChecker].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Login (loginScript) ===&lt;br /&gt;
&lt;br /&gt;
:This script is immediately executed once your character is logged in. The loginScript setting is executed like a CLI command. If it is the name of an ASH script, that script does not require any special main() declaration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Logout (logoutScript) ===&lt;br /&gt;
&lt;br /&gt;
:Same as the loginScript, but runs on logout.  Note that an {{f|abort}} in the script won&#039;t stop a logout unless the logout was called in (specific ways, please list).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Planting (plantingScript) ===&lt;br /&gt;
&lt;br /&gt;
*This script can be used to manage the mushroom fields, which are available when under a muscle zodiac sign. It runs after logging in, if you have a mushroom field. Main function takes no arguments. Generally should take into account current [[moon phase]] so that it can be started in the middle of a cycle.&lt;br /&gt;
*The plantingScript has to be the name of an ASH file without the extension (if the plantingScript setting is &amp;quot;plant&amp;quot;, KoLMafia will call &amp;quot;plant.ash&amp;quot;).&lt;br /&gt;
*Example: [http://kolmafia.us/showthread.php?563-Modified-mushroom-script-to-produce-3rd-4th-gen-crop&amp;amp;p=7507&amp;amp;viewfull=1#post7507 Sandiman&#039;s mushroom planting script].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Post-Ascension (postAscensionScript) ===&lt;br /&gt;
&lt;br /&gt;
:Executed at once when your character starts a new ascension. (Example: Bales&#039;s [http://kolmafia.us/showthread.php?t=2769 newLife]). The postAscensionScript setting is executed like a CLI command. If it is the name of an ASH script, that script does not require any special main() declaration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Pre-Ascension (preAscensionScript) ===&lt;br /&gt;
&lt;br /&gt;
:Same as the Post-Ascension, but executed right before entering Valhalla.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Recovery (recoveryScript) ===&lt;br /&gt;
&lt;br /&gt;
*Executed whenever mafia would recover your HP / MP.  &lt;br /&gt;
*Requires a special main() declaration: boolean main(string type, int amount).  These values will be supplied when mafia automatically calls the script, and the return value will instruct mafia if it should attempt to use mafia&#039;s default healing after the script concludes. &lt;br /&gt;
**&#039;&#039;type&#039;&#039; is either &amp;quot;HP&amp;quot; or &amp;quot;MP&amp;quot;.&lt;br /&gt;
**&#039;&#039;amount&#039;&#039; is the desired amount of restoration needed or 0 to use mafia&#039;s default recovery level and target.&lt;br /&gt;
*Example: Bale&#039;s [http://kolmafia.us/showthread.php?t=1780 Universal Recovery]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Familiar (familiarScript) ===&lt;br /&gt;
*Executed after changing familiars but before automatically changing familiar equipment.&lt;br /&gt;
*Requires a special main() declaration: boolean main(). Returning true will cause normal familiar equipment switching to be skipped, while false will lead to it running after the script returns.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Spading (spadingScript) ===&lt;br /&gt;
&lt;br /&gt;
* Executed at various points throughout the game lifecycle.&lt;br /&gt;
* Requires the main() declaration: void main(string event, string meta, string page).&lt;br /&gt;
* Depending on the event type, the meta string will represent a different value, but the page is always the HTML of the page that has been loaded&lt;br /&gt;
* Values for event include&lt;br /&gt;
** &#039;&#039;COMBAT_ROUND&#039;&#039; run after every round of combat. &#039;&#039;meta&#039;&#039; is the monster name&lt;br /&gt;
** &#039;&#039;CONSUME_DRINK&#039;&#039; run after consuming a drink. &#039;&#039;meta&#039;&#039; is the item consumed&lt;br /&gt;
** &#039;&#039;CONSUME_EAT&#039;&#039; run after consuming a food. &#039;&#039;meta&#039;&#039; is the item consumed&lt;br /&gt;
** &#039;&#039;CONSUME_SPLEEN&#039;&#039; run after consuming a spleen item. &#039;&#039;meta&#039;&#039; is the item consumed&lt;br /&gt;
** &#039;&#039;MEAT_DROP&#039;&#039; run after the meat drop from a monster is not what mafia expected. Replaces the output that previously came from the &#039;&#039;meatDropSpading&#039;&#039; property being set to true.&lt;br /&gt;
&lt;br /&gt;
==A little CLI help==&lt;br /&gt;
&lt;br /&gt;
Three CLI commands are of great use to ASH scripters:&lt;br /&gt;
* [[ashref]] allows one to get a list of ASH functions&lt;br /&gt;
* [[ash (CLI)|ash]] or [[ash (CLI)|ashq]] allows one to run ASH directly on the CLI.&lt;br /&gt;
* [[ashwiki]] allows you to search this wiki by launching a web browser.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Useful forum threads==&lt;br /&gt;
[http://kolmafia.us/showthread.php?523-Did-you-know...-It-s-a-secret-feature.&amp;amp;p=2968&amp;amp;viewfull=1#post2968 This thread], started by holatuwol, is a tidy compilation of various undocumented features in KoLmafia.&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting]]&lt;/div&gt;</summary>
		<author><name>Gausie</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Miscellaneous_ASH_Features&amp;diff=6108</id>
		<title>Miscellaneous ASH Features</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Miscellaneous_ASH_Features&amp;diff=6108"/>
		<updated>2020-06-05T08:58:01Z</updated>

		<summary type="html">&lt;p&gt;Gausie: /* Additional Script Uses */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
==Special Features of ASH Scripting==&lt;br /&gt;
These features are not exactly ASH commands, but they are used to improve script usage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Special Syntax Functions===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[script]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Defines a script&#039;s proper name. Mostly for use by a subsequent notify command in case the user saves the script with a custom name.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[notify]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Used to send a simple kmail to the script&#039;s author, letting them know you use their script.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[since]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Used to inform KoLmafia of the minimum build necessary to support the script&#039;s functionality so it can abort execution with a meaningful error message.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[import]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Used to load an external script into your current one.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[call]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Enables the script writer to invoke a function whose name is known at runtime.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[new]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Constructor function used to populate a record.&lt;br /&gt;
&lt;br /&gt;
===Comments===&lt;br /&gt;
&lt;br /&gt;
Adding &#039;&#039;&#039;[[Comments]]&#039;&#039;&#039; to your code can make it much easier to maintain, and helps other users understand what&#039;s going on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Errors==&lt;br /&gt;
&lt;br /&gt;
There are a wide variety of error messages. For help when things go wrong, please see the page on [[ASH Errors]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Relay Override Scripts==&lt;br /&gt;
A relay override script is a script that modifies a web page in the relay browser. It is only in the relay browser that the effects of this scripts can be seen. The purpose of this is to alter a KoL page to improve functionality or appearance.&lt;br /&gt;
&lt;br /&gt;
Detailed information is at [[Relay_Override_Scripting#Relay_Script|Relay Override Script]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==User Interface Script==&lt;br /&gt;
A User Interface script is a script that creates a web page viewable in the relay browser. It is only in the relay browser that this special page can be seen. The purpose of this is to extend KoLmafia abilities or present information to the user.&lt;br /&gt;
&lt;br /&gt;
Detailed information is at [[Relay_Override_Scripting#User_Interface_Script|User Interface Script]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Consult Scripts==&lt;br /&gt;
Consult scripts are used to script combat. They can be used in automated adventuring or in the relay browser.&lt;br /&gt;
&lt;br /&gt;
Detailed information is at [[Custom_Combat_Script#Consult_Scripts|Consult Scripts]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Additional Script Uses==&lt;br /&gt;
&lt;br /&gt;
In addition to regular scripts, override scripts, UI scripts, and consult scripts, mafia has a few other hooks for adding event-driven scripts.  These situations are listed below, along with the preference that you can set a script name to (in parentheses).&lt;br /&gt;
&lt;br /&gt;
=== After Adventure (afterAdventureScript) ===&lt;br /&gt;
&lt;br /&gt;
*Executed just after mafia has finished an adventure. &lt;br /&gt;
*The afterAdventureScript setting is executed like a CLI command. If it is the name of an ASH script, that script does not require any special main() declaration.&lt;br /&gt;
*By default this only works for automated adventuring. If you wish it to fire when you&#039;re using the relay browser then turn it on in General -&amp;gt; Preferences -&amp;gt; - Relay Browser or set the property relayRunsAfterAdventureScript to true.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Before Adventure (betweenBattleScript) ===&lt;br /&gt;
&lt;br /&gt;
*Executed whenever mafia is about to enter a combat. That means before every adventure if auto-adventuring, or before using an item that could lead to combat such as black pudding or drum machine.&lt;br /&gt;
*The betweenBattleScript setting is executed like a CLI command. If it is the name of an ASH script, that script does not require any special main() declaration.&lt;br /&gt;
*By default this only works for automated adventuring. If you wish it to fire when you&#039;re using the relay browser then turn it on in General -&amp;gt; Preferences -&amp;gt; - Relay Browser or set the property relayRunsBeforeBattleScript to true.&lt;br /&gt;
*Example: Zarqon&#039;s [http://kolmafia.us/showthread.php?t=1240 Best Between Battle]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Before PvP Script (beforePVPScript) ===&lt;br /&gt;
* This will be executed before every PvP attack initiated through the relay browser or CLI command.&lt;br /&gt;
* If you want buffs maintained during PvP (and nothing else) you can do that with:&lt;br /&gt;
*: &amp;lt;pre&amp;gt;set beforePVPScript = mood execute&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Breaking the Prism (kingLiberatedScript) ===&lt;br /&gt;
&lt;br /&gt;
: This will be executed after you break the Prism at the top of the Naughty Sorceress&#039; Lair. This trigger is designed so that a character can be automatically prepared for aftercore. The kingLiberatedScript setting is executed like a CLI command. If it is the name of an ASH script, that script does not require any special main() declaration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buy (buyScript) ===&lt;br /&gt;
&lt;br /&gt;
*Will execute whenever mafia needs to determine if it is to purchase or create an item.&lt;br /&gt;
*Requires a special main declaration boolean main(item itm, int qty, int ingredientLevel, boolean defaultBuy). These values will be supplied by mafia when the script is automatically called. A return value of true will instruct mafia to purchase the item and false will cause it to create the item possibly leading to other buy/create decisions.&lt;br /&gt;
**&#039;&#039;itm&#039;&#039; and &#039;&#039;qty&#039;&#039; specify the item under consideration.&lt;br /&gt;
**&#039;&#039;ingredientLevel&#039;&#039; indicates what&#039;s already available: &lt;br /&gt;
***0 = none of the ingredients&lt;br /&gt;
***1 = some of them&lt;br /&gt;
***2 = enough to create at least one of the requested item&lt;br /&gt;
**defaultBuy indicates what KoLmafia would have done otherwise; returning this value is the safest thing your script could do. It will normally be true if ingredientLevel is 0, false if 2. The default at level 1 depends on the item, and is subject to change - normally, anything made with star charts, pixels, the Malus, or multi-use are bought, anything else is created.&lt;br /&gt;
*Example: Bale&#039;s [http://kolmafia.us/showthread.php?p=18313#post18313 potionBuy].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Chatbot (chatbotScript) ===&lt;br /&gt;
&lt;br /&gt;
*Will execute whenever a private message or an event is received&lt;br /&gt;
**When an event is received the message is stripped of HTML, the channel is &amp;quot;Events&amp;quot; and the sender is an empty string.&lt;br /&gt;
*Requires a special main declaration which can have an optional third parameter: &lt;br /&gt;
*:void main(string sender, string message)&lt;br /&gt;
*:void main(string sender, string message, string channel)&lt;br /&gt;
**&#039;sender&#039; is the name of the player who sent the message&lt;br /&gt;
**&#039;message&#039; is the message that was sent&lt;br /&gt;
**&#039;channel&#039; is &amp;quot;/clan&amp;quot; for clan messages, &amp;quot;Events&amp;quot; for chat notifications (e.g. &amp;quot;New message received from Bale.&amp;quot;), and the empty string for private messages&lt;br /&gt;
&lt;br /&gt;
=== Counters (counterScript) ===&lt;br /&gt;
&lt;br /&gt;
*Will execute whenever a counter will expire as a result of an intended use of adventures.&lt;br /&gt;
*Requires a special main declaration: boolean main(string name, int remain).  These values will be supplied by mafia when the script is automatically called and the return value will determine whether mafia continues operation (true) or aborts (false).  &lt;br /&gt;
**&#039;&#039;name&#039;&#039; will be the name of the counter that is about to expire.&lt;br /&gt;
**&#039;&#039;remain&#039;&#039; is the number of turns remaining before the counter expires.  Remain will usually be 0, but may be higher if you are about to multi-create items, adventure underwater, or take a vacation.   It may be negative if the counter was informational (one that doesn&#039;t abort adventuring), and it actually expired in the middle of an action that used multiple turns at once.&lt;br /&gt;
*Example: Bale&#039;s [http://kolmafia.us/showthread.php?t=2519 CounterChecker].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Login (loginScript) ===&lt;br /&gt;
&lt;br /&gt;
:This script is immediately executed once your character is logged in. The loginScript setting is executed like a CLI command. If it is the name of an ASH script, that script does not require any special main() declaration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Logout (logoutScript) ===&lt;br /&gt;
&lt;br /&gt;
:Same as the loginScript, but runs on logout.  Note that an {{f|abort}} in the script won&#039;t stop a logout unless the logout was called in (specific ways, please list).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Planting (plantingScript) ===&lt;br /&gt;
&lt;br /&gt;
*This script can be used to manage the mushroom fields, which are available when under a muscle zodiac sign. It runs after logging in, if you have a mushroom field. Main function takes no arguments. Generally should take into account current [[moon phase]] so that it can be started in the middle of a cycle.&lt;br /&gt;
*The plantingScript has to be the name of an ASH file without the extension (if the plantingScript setting is &amp;quot;plant&amp;quot;, KoLMafia will call &amp;quot;plant.ash&amp;quot;).&lt;br /&gt;
*Example: [http://kolmafia.us/showthread.php?563-Modified-mushroom-script-to-produce-3rd-4th-gen-crop&amp;amp;p=7507&amp;amp;viewfull=1#post7507 Sandiman&#039;s mushroom planting script].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Post-Ascension (postAscensionScript) ===&lt;br /&gt;
&lt;br /&gt;
:Executed at once when your character starts a new ascension. (Example: Bales&#039;s [http://kolmafia.us/showthread.php?t=2769 newLife]). The postAscensionScript setting is executed like a CLI command. If it is the name of an ASH script, that script does not require any special main() declaration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Pre-Ascension (preAscensionScript) ===&lt;br /&gt;
&lt;br /&gt;
:Same as the Post-Ascension, but executed right before entering Valhalla.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Recovery (recoveryScript) ===&lt;br /&gt;
&lt;br /&gt;
*Executed whenever mafia would recover your HP / MP.  &lt;br /&gt;
*Requires a special main() declaration: boolean main(string type, int amount).  These values will be supplied when mafia automatically calls the script, and the return value will instruct mafia if it should attempt to use mafia&#039;s default healing after the script concludes. &lt;br /&gt;
**&#039;&#039;type&#039;&#039; is either &amp;quot;HP&amp;quot; or &amp;quot;MP&amp;quot;.&lt;br /&gt;
**&#039;&#039;amount&#039;&#039; is the desired amount of restoration needed or 0 to use mafia&#039;s default recovery level and target.&lt;br /&gt;
*Example: Bale&#039;s [http://kolmafia.us/showthread.php?t=1780 Universal Recovery]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Familiar (familiarScript) ===&lt;br /&gt;
*Executed after changing familiars but before automatically changing familiar equipment.&lt;br /&gt;
*Requires a special main() declaration: boolean main(). Returning true will cause normal familiar equipment switching to be skipped, while false will lead to it running after the script returns.&lt;br /&gt;
&lt;br /&gt;
=== Spading (spadingScript) ===&lt;br /&gt;
&lt;br /&gt;
* Executed at various points throughout the game lifecycle.&lt;br /&gt;
* Requires the main() declaration: void main(string event, string meta, string page).&lt;br /&gt;
* Depending on the event type, the meta string will represent a different value, but the page is always the HTML of the page that has been loaded&lt;br /&gt;
* Values for event include&lt;br /&gt;
** &#039;&#039;COMBAT_ROUND&#039;&#039; run after every round of combat. &#039;&#039;meta&#039;&#039; is the monster name&lt;br /&gt;
** &#039;&#039;CONSUME_DRINK&#039;&#039; run after consuming a drink. &#039;&#039;meta&#039;&#039; is the item consumed&lt;br /&gt;
** &#039;&#039;CONSUME_EAT&#039;&#039; run after consuming a food. &#039;&#039;meta&#039;&#039; is the item consumed&lt;br /&gt;
** &#039;&#039;CONSUME_SPLEEN&#039;&#039; run after consuming a spleen item. &#039;&#039;meta&#039;&#039; is the item consumed&lt;br /&gt;
** &#039;&#039;MEAT_DROP&#039;&#039; run after the meat drop from a monster is not what mafia expected. Replaces the output that previously came from the &#039;&#039;meatDropSpading&#039;&#039; property being set to true.&lt;br /&gt;
&lt;br /&gt;
==A little CLI help==&lt;br /&gt;
&lt;br /&gt;
Three CLI commands are of great use to ASH scripters:&lt;br /&gt;
* [[ashref]] allows one to get a list of ASH functions&lt;br /&gt;
* [[ash (CLI)|ash]] or [[ash (CLI)|ashq]] allows one to run ASH directly on the CLI.&lt;br /&gt;
* [[ashwiki]] allows you to search this wiki by launching a web browser.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Useful forum threads==&lt;br /&gt;
[http://kolmafia.us/showthread.php?523-Did-you-know...-It-s-a-secret-feature.&amp;amp;p=2968&amp;amp;viewfull=1#post2968 This thread], started by holatuwol, is a tidy compilation of various undocumented features in KoLmafia.&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting]]&lt;/div&gt;</summary>
		<author><name>Gausie</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Data_Types&amp;diff=6826</id>
		<title>Data Types</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Data_Types&amp;diff=6826"/>
		<updated>2020-03-23T17:52:56Z</updated>

		<summary type="html">&lt;p&gt;Gausie: /* string */ Added template strings&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
==Primitive Datatypes==&lt;br /&gt;
&lt;br /&gt;
===void===&lt;br /&gt;
Can be thought of better as the absence of a datatype. No value can be assigned to &#039;&#039;&#039;void&#039;&#039;&#039; nor can a value be returned from a function of datatype &#039;&#039;&#039;void&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===boolean===&lt;br /&gt;
A boolean value is either &#039;&#039;&#039;true&#039;&#039;&#039; or &#039;&#039;&#039;false&#039;&#039;&#039;. By default, a boolean variable is set to false.&lt;br /&gt;
&lt;br /&gt;
===int===&lt;br /&gt;
&lt;br /&gt;
A whole number (short for &amp;quot;integer&amp;quot;), either positive or negative (or 0).  The int used by KoLmafia is a 32-bit signed int, meaning it has a maximum value of 2,147,483,647 and a minimum value of -2,147,483,648. The default value of a integer variable is 0.&lt;br /&gt;
&lt;br /&gt;
Be careful when doing math with integers! As with some other strongly-typed languages, numbers are converted to integers at every step of the operation when only integer types are used. For example:&lt;br /&gt;
{{&lt;br /&gt;
CodeSample|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
int a = 1;&lt;br /&gt;
int b = 2;&lt;br /&gt;
print( a / b * 2 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}&lt;br /&gt;
Will give the output &amp;quot;0,&amp;quot; not &amp;quot;1&amp;quot; as you may expect. Changing either variable to a float type will &amp;quot;correct&amp;quot; this.&lt;br /&gt;
&lt;br /&gt;
===float===&lt;br /&gt;
&lt;br /&gt;
The float data type is a single-precision 32-bit IEEE 754 floating point. Its range of values is beyond the scope of this discussion, but is specified in [http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html#4.2.3 section 4.2.3 of the Java Language Specification], and a tool to help understand / quickly see how/where imprecisions happen can be found [https://www.h-schmidt.net/FloatConverter/IEEE754.html here].&lt;br /&gt;
&lt;br /&gt;
When assigning to a variable of type float, one should be careful to always enter numbers in decimal form, as unwanted behavior can result from supplying a value that KoLmafia may interpret as an int type without the decimal point.&lt;br /&gt;
&lt;br /&gt;
Note that float is not infinitely precise; it intrinsically rounds off after a certain point. This loss of accuracy is for the sake of storage, but beware of the possibility of small errors compounding from multiple float types.&lt;br /&gt;
{{&lt;br /&gt;
CodeSample|&lt;br /&gt;
description=For instance, try the following code as an example of how rather long post-decimal portions are handled:|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
float f;&lt;br /&gt;
f = 4.9999999;&lt;br /&gt;
print( f );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}&lt;br /&gt;
The default value of a &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; variable is 0.0.&lt;br /&gt;
&lt;br /&gt;
===string===&lt;br /&gt;
&lt;br /&gt;
A group of characters including, but not limited to: lowercase letters, uppercase characters, numbers, and various control characters. When assigning a value to a string, enclose the desired value in either single quotes (&amp;lt;code&amp;gt;&#039;&amp;lt;/code&amp;gt;), double quotes (&amp;lt;code&amp;gt;&amp;quot;&amp;lt;/code&amp;gt;) or backticks (&amp;lt;code&amp;gt;`&amp;lt;/code&amp;gt;) (note you must use the same quote type on both ends of the string assignment). If you need to include the same character inside of the string itself, you will need to escape it first with a backslash.&lt;br /&gt;
&lt;br /&gt;
{{&lt;br /&gt;
CodeSample&lt;br /&gt;
|description=For example:&lt;br /&gt;
|code=&amp;lt;syntaxhighlight&amp;gt;string s = &amp;quot;This is my \&amp;quot;friend\&amp;quot; Pete.&amp;quot;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|moreinfo=Will result in the following being stored to s:&amp;lt;pre&amp;gt;This is my &amp;quot;friend&amp;quot; Pete&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The default value of a string is an empty string, or literally &amp;lt;code&amp;gt;&amp;quot;&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When using backticks, you can concatenate expressions into your string using curly braces.&lt;br /&gt;
&lt;br /&gt;
{{&lt;br /&gt;
CodeSample&lt;br /&gt;
|description=For example:&lt;br /&gt;
|code=&amp;lt;syntaxhighlight&amp;gt;string s = `Hello {my_name()}, you have {$item[lime].item_amount()} lime(s)!`;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===buffer===&lt;br /&gt;
&lt;br /&gt;
Similar to a string, but more efficient in certain operations, including concatenation and passing as function arguments. For the most part, you can interchange references to strings and buffers. However, you should test all such actions first, as a few functions require a specific datatype to be supplied as a parameter. (Most notably, those listed under [[String Handling Routines#Regular Expressions|Regular Expressions]].)&lt;br /&gt;
&lt;br /&gt;
==Special Datatypes==&lt;br /&gt;
&lt;br /&gt;
Several datatypes are included in KoLmafia to represent common categories within the KoL universe.&lt;br /&gt;
&lt;br /&gt;
Note that while variables of these types are declared in the same way as for Primitive Datatypes; assigning and referencing them is done differently.&lt;br /&gt;
{{CodeSample|&lt;br /&gt;
description=For example, to declare an item datatype and assign it a value, you would use the following line of code:|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
item it = $item[ broken skull ];&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}&lt;br /&gt;
The default values of any variable of one of the following types is &amp;lt;code&amp;gt;$&#039;&#039;type&#039;&#039;[ none ]&amp;lt;/code&amp;gt;. For example, the default value of a &amp;lt;code&amp;gt;item&amp;lt;/code&amp;gt; variable is &amp;lt;code&amp;gt;$item[ none ]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===bounty===&lt;br /&gt;
&lt;br /&gt;
([[Bounty#Related Functions|Related Functions]])  ([[Bounty#Proxy Record Fields|Proxy Record Fields]])&lt;br /&gt;
&lt;br /&gt;
These are the non-items that the bounty hunter asks you to retrieve from monsters around the kingdom. There are quite a lot of them (42 in total) so I won&#039;t list them all here. You can find more about bounties at the {{kolwiki|The Bounty Hunter Hunter&#039;s Shack}}.&lt;br /&gt;
&lt;br /&gt;
===class===&lt;br /&gt;
&lt;br /&gt;
([[Class#Related Functions|Related Functions]])  ([[Class#Proxy Record Fields|Proxy Record Fields]])&lt;br /&gt;
&lt;br /&gt;
Besides $class[ none ], there are six possible values for this datatype:&lt;br /&gt;
&lt;br /&gt;
* Seal Clubber&lt;br /&gt;
* Turtle Tamer&lt;br /&gt;
* Pastamancer&lt;br /&gt;
* Sauceror&lt;br /&gt;
* Disco Bandit&lt;br /&gt;
* Accordion Thief&lt;br /&gt;
&lt;br /&gt;
===coinmaster===&lt;br /&gt;
&lt;br /&gt;
([[Coinmaster#Related Functions|Related Functions]])  ([[Coinmaster#Proxy Record Fields|Proxy Record Fields]])&lt;br /&gt;
&lt;br /&gt;
All shops that deal with currency other than meat. Known values include:&lt;br /&gt;
&lt;br /&gt;
* {{kolwiki|The Bounty Hunter Hunter&#039;s Shack|Bounty Hunter Hunter}}&lt;br /&gt;
* {{kolwiki|Mr. Store}}&lt;br /&gt;
* {{kolwiki|Hermit}}&lt;br /&gt;
* {{kolwiki|The Shore, Inc. Gift Shop}}&lt;br /&gt;
* {{kolwiki|The Trapper&#039;s Cabin|The Trapper}}&lt;br /&gt;
* {{kolwiki|A Vending Machine|Vending Machine}}&lt;br /&gt;
* {{kolwiki|The Swagger Shop}}&lt;br /&gt;
* {{kolwiki|The Hippy Camp (Wartime)|Dimemaster}}&lt;br /&gt;
* {{kolwiki|The Orcish Frat House|Quartersmaster}}&lt;br /&gt;
* {{kolwiki|BURT|Bugbear Token}}&lt;br /&gt;
* {{kolwiki|Freshwater Fishbonery}}&lt;br /&gt;
* {{kolwiki|Big Brother}}&lt;br /&gt;
* {{kolwiki|The Terrified Eagle Inn}}&lt;br /&gt;
* {{kolwiki|Ticket Redemption Counter|Arcade Ticket Counter}}&lt;br /&gt;
* {{kolwiki|Cashier|Game Shoppe}}&lt;br /&gt;
* {{kolwiki|Cashier|Game Shoppe Snacks}}&lt;br /&gt;
* {{kolwiki|The Isotope Smithery|Isotope Smithery}}&lt;br /&gt;
* {{kolwiki|Dollhawker&#039;s Emporium}}&lt;br /&gt;
* {{kolwiki|The Lunar Lunch-o-Mat|Lunar Lunch-o-Mat}}&lt;br /&gt;
* {{kolwiki|Paul&#039;s Boutique}}&lt;br /&gt;
* {{kolwiki|The Frozen Brogurt Stand}}&lt;br /&gt;
* {{kolwiki|Buff Jimmy&#039;s Souvenir Shop}}&lt;br /&gt;
* {{kolwiki|Taco Dan&#039;s Taco Stand}}&lt;br /&gt;
* {{kolwiki|You&#039;re the Fudge Wizard Now, Dog|Fudge Wand}}&lt;br /&gt;
* {{kolwiki|The Neandermall}}&lt;br /&gt;
* {{kolwiki|Legitimate Shoe Repair, Inc.}}&lt;br /&gt;
* {{kolwiki|warbear black box|Warbear Black Box}}&lt;br /&gt;
* {{kolwiki|The Dinsey Company Store}}&lt;br /&gt;
* {{kolwiki|Internet Meme Shop}}&lt;br /&gt;
&lt;br /&gt;
===effect===&lt;br /&gt;
&lt;br /&gt;
([[Effect#Related Functions|Related Functions]])  ([[Effect#Proxy Record Fields|Proxy Record Fields]])&lt;br /&gt;
&lt;br /&gt;
Any effect you can be under in KoL, whether from items, skills, or what-have-you, is valid for this datatype.&lt;br /&gt;
&lt;br /&gt;
The full range, besides $effect[ none ], is too much to list and keep up with here: please see the Wiki {{kolwiki|Effects}} page for more information.&lt;br /&gt;
&lt;br /&gt;
===element===&lt;br /&gt;
&lt;br /&gt;
([[Element#Related Functions|Related Functions]])  ([[Element#Proxy Record Fields|Proxy Record Fields]])&lt;br /&gt;
&lt;br /&gt;
Besides $element[ none ], there are seven possible values for this datatype. (Note that &amp;quot;Bad Spelling&amp;quot; is not considered a true element.)&lt;br /&gt;
Also note that these names are case-sensitive (referencing $element[ Spooky ] will generate an error).&lt;br /&gt;
&lt;br /&gt;
* cold&lt;br /&gt;
* hot&lt;br /&gt;
* sleaze&lt;br /&gt;
* spooky&lt;br /&gt;
* stench&lt;br /&gt;
* slime&lt;br /&gt;
* supercold&lt;br /&gt;
&lt;br /&gt;
===familiar===&lt;br /&gt;
&lt;br /&gt;
([[Familiar#Related Functions|Related Functions]])  ([[Familiar#Proxy Record Fields|Proxy Record Fields]])&lt;br /&gt;
&lt;br /&gt;
Any familiar available in KoL is valid for this datatype.&lt;br /&gt;
&lt;br /&gt;
The full range, besides $familiar[ none ], is too much to list and keep up with here: please see the Wiki {{kolwiki|Familiars}} page for more information.&lt;br /&gt;
&lt;br /&gt;
===item===&lt;br /&gt;
&lt;br /&gt;
([[Item#Related Functions|Related Functions]])  ([[Item#Proxy Record Fields|Proxy Record Fields]])&lt;br /&gt;
&lt;br /&gt;
Any item in all of KoL is valid for this datatype. Note that unlike most special datatypes, item references can make use of the item ID number.&lt;br /&gt;
{{CodeSample|&lt;br /&gt;
description=For example, you could assign the item plexiglass pants as follows:|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
item it = $item[ 1234 ];&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}&lt;br /&gt;
The full range, besides $item[ none ], is too much to list and keep up with here: please see the Wiki {{kolwiki|Items}} page for more information.&lt;br /&gt;
&lt;br /&gt;
===location===&lt;br /&gt;
&lt;br /&gt;
([[Location#Related Functions|Related Functions]])  ([[Location#Proxy Record Fields|Proxy Record Fields]])&lt;br /&gt;
&lt;br /&gt;
Any location one can adventure at in KoL is valid for this datatype.&lt;br /&gt;
&lt;br /&gt;
The full range, besides $location[ none ], is too much to list and keep up with here: please see the Wiki {{kolwiki|Locations}} page for more information.&lt;br /&gt;
&lt;br /&gt;
===monster===&lt;br /&gt;
&lt;br /&gt;
([[Monster#Related Functions|Related Functions]])  ([[Monster#Proxy Record Fields|Proxy Record Fields]])&lt;br /&gt;
&lt;br /&gt;
Any monster you can encounter in KoL is valid for this datatype.&lt;br /&gt;
&lt;br /&gt;
The full range, besides $monster[ none ], is too much to list and keep up with here: please see the Wiki {{kolwiki|Monster Compendium}} page for more information.&lt;br /&gt;
&lt;br /&gt;
===phylum===&lt;br /&gt;
&lt;br /&gt;
([[Phylum#Related Functions|Related Functions]])  ([[Phylum#Proxy Record Fields|Proxy Record Fields]])&lt;br /&gt;
&lt;br /&gt;
Each monster has a {{kolwiki|Phylum}}. Besides $phylum[none], the possible values for this datatype are:&lt;br /&gt;
&lt;br /&gt;
* beast&lt;br /&gt;
* bug&lt;br /&gt;
* constellation&lt;br /&gt;
* construct&lt;br /&gt;
* demon&lt;br /&gt;
* dude&lt;br /&gt;
* elemental&lt;br /&gt;
* elf&lt;br /&gt;
* fish&lt;br /&gt;
* goblin&lt;br /&gt;
* hippy&lt;br /&gt;
* hobo&lt;br /&gt;
* humanoid&lt;br /&gt;
* horror&lt;br /&gt;
* mer-kin&lt;br /&gt;
* orc&lt;br /&gt;
* penguin&lt;br /&gt;
* pirate&lt;br /&gt;
* plant&lt;br /&gt;
* slime&lt;br /&gt;
* undead&lt;br /&gt;
* weird&lt;br /&gt;
&lt;br /&gt;
===servant===&lt;br /&gt;
&lt;br /&gt;
([[Servant#Related Functions|Related Functions]])  ([[Servant#Proxy Record Fields|Proxy Record Fields]])&lt;br /&gt;
&lt;br /&gt;
Servants are unique to the {{kolwiki|Actually Ed the Undying}} path and located {{kolwiki|The Servants&#039; Quarters}}, replacing familiars.&lt;br /&gt;
&lt;br /&gt;
* Assassin&lt;br /&gt;
* Belly-Dancer&lt;br /&gt;
* Bodyguard&lt;br /&gt;
* Cat&lt;br /&gt;
* Maid&lt;br /&gt;
* Priest&lt;br /&gt;
* Scribe&lt;br /&gt;
&lt;br /&gt;
===skill===&lt;br /&gt;
&lt;br /&gt;
([[Skill#Related Functions|Related Functions]])  ([[Skill#Proxy Record Fields|Proxy Record Fields]])&lt;br /&gt;
&lt;br /&gt;
Any skill you can have in KoL, whether permable or not, granted by items, &#039;&#039;etc&#039;&#039;., is valid for this datatype.&lt;br /&gt;
&lt;br /&gt;
The full range, besides $skill[ none ], is too much to list and keep up with here: please see the Wiki {{kolwiki|Skills}} page for more information.&lt;br /&gt;
&lt;br /&gt;
===slot===&lt;br /&gt;
&lt;br /&gt;
([[Slot#Related Functions|Related Functions]])  (slot has no proxy record fields)&lt;br /&gt;
&lt;br /&gt;
Besides $slot[ none ], there are 16 possible values for this datatype.&lt;br /&gt;
&lt;br /&gt;
* hat&lt;br /&gt;
* back&lt;br /&gt;
* weapon&lt;br /&gt;
* off-hand&lt;br /&gt;
* shirt&lt;br /&gt;
* pants&lt;br /&gt;
* acc1&lt;br /&gt;
* acc2&lt;br /&gt;
* acc3&lt;br /&gt;
* familiar&lt;br /&gt;
* sticker1&lt;br /&gt;
* sticker2&lt;br /&gt;
* sticker3&lt;br /&gt;
* fakehand&lt;br /&gt;
* bootspur&lt;br /&gt;
* bootskin&lt;br /&gt;
&lt;br /&gt;
===stat===&lt;br /&gt;
&lt;br /&gt;
([[Stat#Related Functions|Related Functions]])  (stat has no proxy record fields)&lt;br /&gt;
&lt;br /&gt;
Besides $stat[ none ], there are six possible values for this datatype (the last three are for referencing sub-stats).&lt;br /&gt;
&lt;br /&gt;
* muscle&lt;br /&gt;
* mysticality&lt;br /&gt;
* moxie&lt;br /&gt;
* submuscle&lt;br /&gt;
* submysticality&lt;br /&gt;
* submoxie&lt;br /&gt;
&lt;br /&gt;
===thrall===&lt;br /&gt;
&lt;br /&gt;
([[Thrall#Related Functions|Related Functions]])  ([[Thrall#Proxy Record Fields|Proxy Record Fields]])&lt;br /&gt;
&lt;br /&gt;
Pastamancers have the ability to summon {{kolwiki|Pasta Thralls}}. &lt;br /&gt;
&lt;br /&gt;
* Angel Hair Wisp&lt;br /&gt;
* Elbow Macaroni&lt;br /&gt;
* Lasagmbie&lt;br /&gt;
* Penne Dreadful&lt;br /&gt;
* Spaghetti Elemental&lt;br /&gt;
* Spice Ghost&lt;br /&gt;
* Vampieroghi&lt;br /&gt;
* Vermincelli&lt;br /&gt;
&lt;br /&gt;
==aggregate==&lt;br /&gt;
&lt;br /&gt;
An aggregate is a complex datatype composed of two or more primitive or special datatypes. For more information, see [[Data Structures]].&lt;br /&gt;
&lt;br /&gt;
==record==&lt;br /&gt;
&lt;br /&gt;
Records are user-defined datatypes that hold as many sub-datatypes as desired. For more information, see the page for [[Data Structures]].&lt;br /&gt;
&lt;br /&gt;
==Plural Typed Constants==&lt;br /&gt;
&lt;br /&gt;
(see http://kolmafia.us/showthread.php?p=15592, from which this section is reproduced)&lt;br /&gt;
&lt;br /&gt;
Plural typed constants allow you to easily do something with a list of specified objects, without having to replicate code or laboriously build up an array of the objects so that you can iterate over it. Here&#039;s a quick example:&lt;br /&gt;
{{CodeSample|code=&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
foreach weapon in $items[star sword, star staff, star crossbow] {&lt;br /&gt;
   if (available_amount(weapon) &amp;gt; 0) {&lt;br /&gt;
      equip(weapon);&lt;br /&gt;
      break;&lt;br /&gt;
   }&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;}}&lt;br /&gt;
The syntax is basically the same as the existing typed constant feature, but with an &amp;quot;s&amp;quot; or &amp;quot;es&amp;quot; after the type name. (The &amp;quot;es&amp;quot; case is there so that you can properly pluralize &amp;quot;class&amp;quot;.) The text between the square brackets is interpreted as a comma-separated list of elements, each of which is converted to the specified type as if it were an individual constant. More details:&lt;br /&gt;
* The list can span multiple lines.&lt;br /&gt;
* Whitespace before or after elements is ignored.&lt;br /&gt;
* Completely empty elements are ignored (so that you can leave a comma at the end of the list).&lt;br /&gt;
* You can include a comma or closing square bracket in an element by writing it as &amp;quot;\,&amp;quot; or &amp;quot;\]&amp;quot;.&lt;br /&gt;
* All the other escape sequences allowed in strings are possible, such as &amp;quot;\n&amp;quot; (newline), &amp;quot;\t&amp;quot; (tab), and &amp;quot;\uXXXX&amp;quot; (Unicode character value). To put an actual backslash in an element, you have to write it as &amp;quot;\\&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The value generated by a plural constant is of type boolean[type], with the keys being the specified elements, and the boolean value always being true - although you won&#039;t normally do anything with the boolean, you&#039;d use a foreach loop to iterate over the keys. You can assign a plural constant to a variable declared as that type, but note that the value differs from a normal map in three important respects:&lt;br /&gt;
* Since the expression that generates it is syntactically a constant, the value has to be immutable. If you were allowed to change it in any way, those changes would appear in every future use of the same constant.&lt;br /&gt;
* There can be multiple instances of the same key - $ints[1,1,2,3,5,8] is perfectly valid, and will result in the value 1 appearing twice in a foreach loop.&lt;br /&gt;
* The keys will appear in the order you wrote them, rather than being sorted alphanumerically as maps usually do.&lt;br /&gt;
&lt;br /&gt;
In addition to being used in a foreach loop, plural constants also efficiently support membership testing via the &#039;contains&#039; operator. Here&#039;s another example:&lt;br /&gt;
{{CodeSample|code=&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
for hour from 1 to 12 {&lt;br /&gt;
   print(&amp;quot;It&#039;s &amp;quot; + hour + &amp;quot; o&#039;clock.&amp;quot;);&lt;br /&gt;
   if ($ints[10, 2, 4] contains hour) {&lt;br /&gt;
      print(&amp;quot;Time to drink a Dr Pepper!&amp;quot;);&lt;br /&gt;
   }&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;}}&lt;br /&gt;
(Yes, that example could just as easily have been done with a switch statement.)&lt;br /&gt;
&lt;br /&gt;
Iterating over an empty list is rather pointless, so plural constants with no elements are given a different meaning: they represent every value of the specified type, where this is practical. (The &#039;none&#039; value, if defined for a given type, is omitted.) The biggest benefit here is $items[], which lets you loop over every defined item, more efficiently than you could otherwise write in a script (since the list is generated once per session and then cached), and without having to hard-code a maximum item ID number in your script. Example:&lt;br /&gt;
{{CodeSample|code=&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
foreach it in $items[] {&lt;br /&gt;
   if (autosell_price(it) == 42) print(it);&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;}}&lt;br /&gt;
Enumeration of all possible values works with the following types:&lt;br /&gt;
* $booleans[] - false and true.&lt;br /&gt;
* $items[]&lt;br /&gt;
* $locations[]&lt;br /&gt;
* $classes[]&lt;br /&gt;
* $stats[] - Muscle, Mysticality, Moxie: the substat values are omitted.&lt;br /&gt;
* $skills[]&lt;br /&gt;
* $effects[]&lt;br /&gt;
* $familiars[]&lt;br /&gt;
* $slots[] - includes sticker slots and fake hands, which you might not want to consider as normal slots.&lt;br /&gt;
* $monsters[]&lt;br /&gt;
* $elements[] - includes slime now, and possibly other not-quite-elements like cute in the future.&lt;br /&gt;
&lt;br /&gt;
The remaining types that can be used in plural constants require an explicit list of elements, since there are too many possible values:&lt;br /&gt;
* $ints[] - you don&#039;t have enough RAM to store a list with 4 billion elements.&lt;br /&gt;
* $floats[] - ditto.&lt;br /&gt;
* $strings[] - nobody has that much RAM.&lt;br /&gt;
&lt;br /&gt;
==Custom==&lt;br /&gt;
&lt;br /&gt;
===matcher===&lt;br /&gt;
&lt;br /&gt;
A matcher isn&#039;t really a datatype so much as it&#039;s a class, but it is included here for reference, as it is used much as datatypes are in ASH. It can only be declared through the function {{f|create_matcher}}, using two strings. One is the string to find matches in, the other a regular expression to test against. For more information on using a matcher, see [[Regular Expressions]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting]]&lt;/div&gt;</summary>
		<author><name>Gausie</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Faxbot&amp;diff=8273</id>
		<title>Faxbot</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Faxbot&amp;diff=8273"/>
		<updated>2019-08-19T21:13:51Z</updated>

		<summary type="html">&lt;p&gt;Gausie: Typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|faxbot}}{{&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;
return_type={{#var:return_type}}|&lt;br /&gt;
parameter1={{Param|monster|m}}||&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
function2={{Function|&lt;br /&gt;
name={{#var:name}}|&lt;br /&gt;
return_type={{#var:return_type}}|&lt;br /&gt;
&lt;br /&gt;
parameter1={{Param|monster|m}}||&lt;br /&gt;
parameter2={{Param|bot|n}}||&lt;br /&gt;
p1desc={{Pspan|m}} is the monster of which to request a fax.|&lt;br /&gt;
p2desc={{Pspan|n}} is the name of the supported bot from to request a fax. If not specified, mafia will traverse its list of faxbots and pick the first one that is online and has your monster.|&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
function_description=Requests the specified monster from one of mafia&#039;s known faxbots (as of r19492 this is just EasyFax or CheeseFax).|&lt;br /&gt;
&lt;br /&gt;
code1={{CodeSample|&lt;br /&gt;
title=Code Samples|&lt;br /&gt;
description=This will acquire a copy of a scary pirate if you&#039;re able to get a fax.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
if ((get_property(&amp;quot;_photocopyUsed&amp;quot;)==&amp;quot;false&amp;quot;)&amp;amp;&amp;amp;(item_amount($item[photocopied monster])==0)) {&lt;br /&gt;
 faxbot($monster[scary pirate]);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}|&lt;br /&gt;
see_also={{SeeAlso|can_faxbot|is_online}}|&lt;br /&gt;
special=The chat must be open for this function to successfully work, just as for other mafia fax interfaces.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Miscellaneous Functions]]&lt;/div&gt;</summary>
		<author><name>Gausie</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Faxbot&amp;diff=8272</id>
		<title>Faxbot</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Faxbot&amp;diff=8272"/>
		<updated>2019-08-19T21:11:24Z</updated>

		<summary type="html">&lt;p&gt;Gausie: Added new overload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
#vardefine:name|faxbot}}{{&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;
return_type={{#var:return_type}}|&lt;br /&gt;
parameter1={{Param|monster|m}}||&lt;br /&gt;
p1desc={{Pspan|m}} is the monster to request a fax of.|&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
{{&lt;br /&gt;
#vardefine:name|faxbot}}{{&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;
return_type={{#var:return_type}}|&lt;br /&gt;
parameter1={{Param|monster|m}}||&lt;br /&gt;
p1desc={{Pspan|m}} is the monster of which to request a fax.|&lt;br /&gt;
parameter2={{Param|bot|n}}||&lt;br /&gt;
p2desc={{Pspan|n}} is the name of the supported bot from to request a fax. If not specified, mafia will traverse its list of faxbots and pick the first one that is online and has your monster.|&lt;br /&gt;
}}|&lt;br /&gt;
&lt;br /&gt;
function_description=Requests the specified monster from one of mafia&#039;s known faxbots (as of r19492 this is just EasyFax or CheeseFax).|&lt;br /&gt;
&lt;br /&gt;
code1={{CodeSample|&lt;br /&gt;
title=Code Samples|&lt;br /&gt;
description=This will acquire a copy of a scary pirate if you&#039;re able to get a fax.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
if ((get_property(&amp;quot;_photocopyUsed&amp;quot;)==&amp;quot;false&amp;quot;)&amp;amp;&amp;amp;(item_amount($item[photocopied monster])==0)) {&lt;br /&gt;
 faxbot($monster[scary pirate]);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}|&lt;br /&gt;
see_also={{SeeAlso|can_faxbot|is_online}}|&lt;br /&gt;
special=The chat must be open for this function to successfully work, just as for other mafia fax interfaces.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Miscellaneous Functions]]&lt;/div&gt;</summary>
		<author><name>Gausie</name></author>
	</entry>
</feed>