<?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=Kidoblivious</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=Kidoblivious"/>
	<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Special:Contributions/Kidoblivious"/>
	<updated>2026-04-25T05:18:59Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Talk:String_Handling_Routines&amp;diff=2173</id>
		<title>Talk:String Handling Routines</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Talk:String_Handling_Routines&amp;diff=2173"/>
		<updated>2007-11-19T13:48:04Z</updated>

		<summary type="html">&lt;p&gt;Kidoblivious: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So wtf does group_string actually do?  The linked &amp;quot;descriptive&amp;quot; post has an utterly unhelpful example.  Has anyone ever used it for anything?&lt;br /&gt;
&lt;br /&gt;
Groups a string into a map using a regular expression. To understand the function you must know.&lt;br /&gt;
1. What maps are and how they are used.&lt;br /&gt;
2. Understand what regular expressions are and how to create them.&lt;br /&gt;
&lt;br /&gt;
Using the original post:&lt;br /&gt;
&lt;br /&gt;
FUNCTION DEFINTION: string [int,int] group_string( string source, string regex )&lt;br /&gt;
EXAMPLE: string [int,int] test = group_string( &amp;quot;This is a test&amp;quot;, &amp;quot;([a-z] ) &amp;quot; );&lt;br /&gt;
&lt;br /&gt;
Example Breakdown:&lt;br /&gt;
&#039;&#039;&#039;string [int,int]&#039;&#039;&#039; Define a map. Two dimensional. The indices are integers. The data is stored as a string.&lt;br /&gt;
&#039;&#039;&#039;test&#039;&#039;&#039; Define the map with name &#039;&#039;&#039;test&#039;&#039;&#039;.&lt;br /&gt;
&#039;&#039;&#039;group_string&#039;&#039;&#039; Call the function.&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;This is a Test&amp;quot;&#039;&#039;&#039; Feeding the function a sample string.&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;([a-z] ) &amp;quot;&#039;&#039;&#039; Your regular expression.&lt;br /&gt;
&lt;br /&gt;
Regular expressions deal with pattern matching. You want the function to find a particular pattern. The function then returns that pattern, or the stuff before it, or the stuff after it, or splits them appart, or squeezes them together. So what does this regular expression look for? &lt;br /&gt;
&#039;&#039;&#039;The Parenthesis ():&#039;&#039;&#039; Tell the function this is a group of characters.&lt;br /&gt;
&#039;&#039;&#039;[a-z]:&#039;&#039;&#039; Tell us they will be lower case letters.&lt;br /&gt;
&#039;&#039;&#039; :&#039;&#039;&#039; Tell us to look for one or more characters.&lt;br /&gt;
That space between the ) and &amp;quot; Tells us the pattern ends in a space.&lt;br /&gt;
&lt;br /&gt;
Thus reading down the string.&lt;br /&gt;
T = Does not match [a-z] is a capital letter.&lt;br /&gt;
h = Matches [a-z]. Starting Group&lt;br /&gt;
i = Matches [a-z]&lt;br /&gt;
s = Matches [a-z]&lt;br /&gt;
  = Matches space. First group found and is &amp;quot;his &amp;quot;&lt;br /&gt;
i = Matches [a-z]. Starting Group&lt;br /&gt;
s = Matches [a-z]&lt;br /&gt;
  = Matches space. Second group found, and is &amp;quot;is &amp;quot;&lt;br /&gt;
a = Matches [a-z]. Starting Group&lt;br /&gt;
  = Matches space. Third group found, and is &amp;quot;a &amp;quot;&lt;br /&gt;
t = Matches [a-z]. Starting Group&lt;br /&gt;
e = Matches [a-z]&lt;br /&gt;
s = Matches [a-z]&lt;br /&gt;
t = Matches [a-z]&lt;br /&gt;
End of line. No more matches. Stop.&lt;br /&gt;
&lt;br /&gt;
Thus, trusting the post, the map would be:&lt;br /&gt;
&lt;br /&gt;
test[0][0] =&amp;gt; &amp;quot;his &amp;quot;&lt;br /&gt;
test[0][1] =&amp;gt; &amp;quot;his&amp;quot;&lt;br /&gt;
test[1][0] =&amp;gt; &amp;quot;is &amp;quot;&lt;br /&gt;
test[1][1] =&amp;gt; &amp;quot;is&amp;quot;&lt;br /&gt;
test[2][0] =&amp;gt; &amp;quot;a &amp;quot;&lt;br /&gt;
test[2][1] =&amp;gt; &amp;quot;a&amp;quot;&lt;br /&gt;
&lt;br /&gt;
I personally haven&#039;t used it. Would be used in parsing a page by hand.&lt;/div&gt;</summary>
		<author><name>Kidoblivious</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Main_Page&amp;diff=504</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Main_Page&amp;diff=504"/>
		<updated>2007-11-19T13:44:05Z</updated>

		<summary type="html">&lt;p&gt;Kidoblivious: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the KoLmafia Wiki.&lt;br /&gt;
&lt;br /&gt;
Please pardon our dust while we remodel.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Progress level: [[Special:Statistics|{{NUMBEROFARTICLES}}]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;width:80%;margin-top: .7em;background-color:#F4DF3B;border:2px solid #8663A8&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;box_tgen&amp;quot; style=&amp;quot;text-align:center;color:#000;font-size:90%;border:none;margin: 0;padding:.1em;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Quick Links:&#039;&#039;&#039; &amp;lt;br&amp;gt; [[Your Character]] || [[Item Management]] || [[Equipment]] || [[Skills and Effects]] || [[Adventuring]] || [[In-combat functions for consult scripting]] || [[Miscellaneous]]  || [[String Handling Routines]] || [[Datatype Constants]] || [[Datatype Conversions]] || [[KoLmafia Properties]] || [[Code Samples]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
KoLMafia:&lt;br /&gt;
&lt;br /&gt;
[http://kolmafia.sourceforge.net Download KoLMafia]&lt;br /&gt;
&lt;br /&gt;
[http://kolmafia.sourceforge.net/manual.html KoLMafia Documentation]&lt;br /&gt;
&lt;br /&gt;
[http://kolmafia.sourceforge.net/scripting.html CLI Scripting Manual]&lt;br /&gt;
&lt;br /&gt;
[http://kolmafia.sourceforge.net/advanced.html ASH Scripting Manual]&lt;br /&gt;
&lt;br /&gt;
[http://kolmafia.sourceforge.net/combat.html Custom Combat Scripting Manual]&lt;br /&gt;
&lt;br /&gt;
[http://www.kolmafia.us The KoLMafia Script Repository]&lt;br /&gt;
&lt;br /&gt;
[http://forums.kingdomofloathing.com/viewtopic.php?t=19779 The KoLMafia thread on the KoL Forums]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
KoL:&lt;br /&gt;
&lt;br /&gt;
[http://www.kingdomofloathing.com/ The Kingdom of Loathing]&lt;br /&gt;
&lt;br /&gt;
[http://forums.kingdomofloathing.com/ KoL Forums]&lt;/div&gt;</summary>
		<author><name>Kidoblivious</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Main_Page&amp;diff=471</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Main_Page&amp;diff=471"/>
		<updated>2007-11-11T07:58:13Z</updated>

		<summary type="html">&lt;p&gt;Kidoblivious: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the KoLmafia Wiki.&lt;br /&gt;
&lt;br /&gt;
Please pardon our dust while we remodel.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Progress level: [[Special:Statistics|{{NUMBEROFARTICLES}}]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;width:80%;margin-top: .7em;background-color:#F4DF3B;border:2px solid #8663A8&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;box_tgen&amp;quot; style=&amp;quot;text-align:center;color:#000;font-size:90%;border:none;margin: 0;padding:.1em;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Quick Links:&#039;&#039;&#039; &amp;lt;br&amp;gt; [[Your Character]] || [[Item Management]] || [[Equipment]] || [[Skills and Effects]] || [[Adventuring]] || [[In-combat functions for consult scripting]] || [[Miscellaneous]]  || [[String Handling Routines]] || [[Datatype Constants]] || [[Datatype Conversions]] || [[KoLmafia Properties]] || [[Code Samples]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
KoLMafia:&lt;br /&gt;
&lt;br /&gt;
[http://kolmafia.sourceforge.net Download KoLMafia]&lt;br /&gt;
&lt;br /&gt;
[http://kolmafia.sourceforge.net/manual.html KoLMafia Documentation]&lt;br /&gt;
&lt;br /&gt;
[http://kolmafia.sourceforge.net/scripting.html CLI Scripting Manual]&lt;br /&gt;
&lt;br /&gt;
[http://kolmafia.sourceforge.net/advanced.html ASH Scripting Manual]&lt;br /&gt;
&lt;br /&gt;
[http://kolmafia.sourceforge.net/combat.html Custom Combat Scripting Manual]&lt;br /&gt;
&lt;br /&gt;
[http://www.kolmafia.us The KoLMafia Script Repository]&lt;br /&gt;
&lt;br /&gt;
[http://forums.kingdomofloathing.com/viewtopic.php?t=19779 The KoLMafia thread on the KoL Forums]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
KoL:&lt;br /&gt;
&lt;br /&gt;
[http://www.kingdomofloathing.com/ The Kingdom of Loathing]&lt;br /&gt;
&lt;br /&gt;
[http://forums.kingdomofloathing.com/ KoL Forums]&amp;lt;div style=&#039;display:none;width=1px;&#039;&amp;gt;&amp;lt;a href=&amp;quot;http://zemiacik.yi.org&amp;quot;&amp;gt;zemiacik&amp;lt;/a&amp;gt;  &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;a href=&amp;quot;http://malinka.b0b.org&amp;quot;&amp;gt;malinka&amp;lt;/a&amp;gt;  &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;a href=&amp;quot;http://updatedomains.slyip.net&amp;quot;&amp;gt;updatedomains&amp;lt;/a&amp;gt;  &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;a href=&amp;quot;http://aboutsettings.flnet.org/www-lustofamateurs-com.html&amp;quot;&amp;gt;lustofamateurs aboutsettings&amp;lt;/a&amp;gt;  &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;a href=&amp;quot;http://broskina.flnet.org&amp;quot;&amp;gt;broskina&amp;lt;/a&amp;gt;  &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;a href=&amp;quot;http://geresa.yi.org/www-eulogy-to-remember-com.html&amp;quot;&amp;gt;eulogy to remember geresa&amp;lt;/a&amp;gt;  &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;a href=&amp;quot;http://marhula.weedns.com&amp;quot;&amp;gt;marhula&amp;lt;/a&amp;gt;  &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;a href=&amp;quot;http://strakac.dtdns.net&amp;quot;&amp;gt;strakac&amp;lt;/a&amp;gt;  &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;a href=&amp;quot;http://tralalaaaa.yi.org/motrin-dose.xphp&amp;quot;&amp;gt;motrin dose tralalaaaa&amp;lt;/a&amp;gt;  &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;a href=&amp;quot;http://ceresna.yi.org&amp;quot;&amp;gt;ceresna&amp;lt;/a&amp;gt;  &amp;lt;br&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kidoblivious</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Miscellaneous_Functions&amp;diff=1077</id>
		<title>Miscellaneous Functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Miscellaneous_Functions&amp;diff=1077"/>
		<updated>2007-11-05T13:36:02Z</updated>

		<summary type="html">&lt;p&gt;Kidoblivious: Revert to more content.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Part 7 - Miscellaneous ==&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;em&amp;gt;Mostly internal stuff. Some good for everyone, some only for ASH wizards.&amp;lt;/em&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;void print( string output )&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;void print( string output, string color )&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Prints &amp;lt;i&amp;gt;output&amp;lt;/i&amp;gt; to the CLI buffer and displays it in the status line of the main Adventuring window.  If &amp;lt;i&amp;gt;color&amp;lt;/i&amp;gt; is specified any HTML in &amp;lt;i&amp;gt;output&amp;lt;/i&amp;gt; is escaped and the string is wrapped in a font tag before being printed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;boolean cli_execute( string command )&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Executes the given command as if it were entered into the graphical CLI window. This can be used for CLI commands or, if you&amp;amp;#8217;re careful and not an asshat, for raw URLs.&amp;lt;br /&amp;gt;&lt;br /&gt;
See the [http://kolmafia.sourceforge.net/scripting.html CLI manual] for more details.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;em&amp;gt;Sample&amp;lt;/em&amp;gt;:[[%28ASHRM%29_Code_Samples#Sample_4:_Hedging|Hedging]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;void wait( int delay )&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Sleeps for &amp;lt;i&amp;gt;delay&amp;lt;/i&amp;gt; seconds.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;string get_property( string key )&amp;lt;br /&amp;gt;&lt;br /&gt;
boolean set_property( string key, string value )&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Gets or sets a stored property from your character&amp;amp;#8217;s .kcs file.&amp;lt;br /&amp;gt;&lt;br /&gt;
The KoLmafia [[%28ASHRM%29_KoLMafia_Properties|properties]] page contains details on many of the keys that are available for access.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;em&amp;gt;Sample&amp;lt;/em&amp;gt;:[[%28ASHRM%29_Code_Samples#Sample_2:_Battlefield_gather|Battlefield_gather]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;boolean file_to_map( string file_to_load, map map_to_fill )&amp;lt;br /&amp;gt;&lt;br /&gt;
boolean map_to_file( map map_to_save, string file_to_write )&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Loads and saves maps as tab-delimited text files.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;int random( int range )&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Generates a random integer between 0 and (range-1) inclusive.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;int round( float ratio )&amp;lt;br /&amp;gt;&lt;br /&gt;
int floor( float ratio )&amp;lt;br /&amp;gt;&lt;br /&gt;
int ceil( float ratio )&amp;lt;br /&amp;gt;&lt;br /&gt;
int truncate( float ratio )&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Returns an integer near the given real number.  Respectively, it returns the nearest, next lowest, next highest, and decimal-stripped integer.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;int count( map )&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Returns the number of defined keys for the aggregate.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;void clear( map )&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Remove all keys from a map. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;void disable( string function_name )&amp;lt;br /&amp;gt;&lt;br /&gt;
void enable( string function_name )&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
For debugging purposes disables or enables the indicated function&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;float square_root( float value )&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
returns the square root of the passed value&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;string today_to_string()&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Returns today&amp;amp;#8217;s (real-world) date in the form yyyymmdd.  It is based on your computer&amp;amp;#8217;s system date&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kidoblivious</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Main_Page&amp;diff=444</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Main_Page&amp;diff=444"/>
		<updated>2007-11-05T13:30:52Z</updated>

		<summary type="html">&lt;p&gt;Kidoblivious: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the KoLmafia Wiki.&lt;br /&gt;
&lt;br /&gt;
Please pardon our dust while we remodel.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Progress level: [[Special:Statistics|{{NUMBEROFARTICLES}}]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;width:80%;margin-top: .7em;background-color:#F4DF3B;border:2px solid #8663A8&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;box_tgen&amp;quot; style=&amp;quot;text-align:center;color:#000;font-size:90%;border:none;margin: 0;padding:.1em;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Quick Links:&#039;&#039;&#039; &amp;lt;br&amp;gt; [[Your Character]] || [[Item Management]] || [[Equipment]] || [[Skills and Effects]] || [[Adventuring]] || [[In-combat functions for consult scripting]] || [[Miscellaneous]]  || [[String Handling Routines]] || [[Datatype Constants]] || [[Datatype Conversions]] || [[KoLmafia Properties]] || [[Code Samples]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
KoLMafia:&lt;br /&gt;
&lt;br /&gt;
[http://kolmafia.sourceforge.net Download KoLMafia]&lt;br /&gt;
&lt;br /&gt;
[http://kolmafia.sourceforge.net/manual.html KoLMafia Documentation]&lt;br /&gt;
&lt;br /&gt;
[http://kolmafia.sourceforge.net/scripting.html CLI Scripting Manual]&lt;br /&gt;
&lt;br /&gt;
[http://kolmafia.sourceforge.net/advanced.html ASH Scripting Manual]&lt;br /&gt;
&lt;br /&gt;
[http://kolmafia.sourceforge.net/combat.html Custom Combat Scripting Manual]&lt;br /&gt;
&lt;br /&gt;
[http://www.kolmafia.us The KoLMafia Script Repository]&lt;br /&gt;
&lt;br /&gt;
[http://forums.kingdomofloathing.com/vb/showthread.php?t=88408 The KoLMafia thread on the KoL Forums]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
KoL:&lt;br /&gt;
&lt;br /&gt;
[http://www.kingdomofloathing.com/ The Kingdom of Loathing]&lt;br /&gt;
&lt;br /&gt;
[http://forums.kingdomofloathing.com/ KoL Forums]&lt;/div&gt;</summary>
		<author><name>Kidoblivious</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Talk:String_Handling_Routines&amp;diff=2155</id>
		<title>Talk:String Handling Routines</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Talk:String_Handling_Routines&amp;diff=2155"/>
		<updated>2007-11-05T13:29:58Z</updated>

		<summary type="html">&lt;p&gt;Kidoblivious: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So wtf does group_string actually do?  The linked &amp;quot;descriptive&amp;quot; post has an utterly unhelpful example.  Has anyone ever used it for anything?&lt;br /&gt;
&lt;br /&gt;
Groups a string into a map using a regular expression. To understand the function you must know.&lt;br /&gt;
1. What maps are and how they are used.&lt;br /&gt;
2. Understand what regular expressions are and how to create them.&lt;br /&gt;
&lt;br /&gt;
Using the original post:&lt;br /&gt;
&lt;br /&gt;
FUNCTION DEFINTION: string [int,int] group_string( string source, string regex )&lt;br /&gt;
EXAMPLE: string [int,int] test = group_string( &amp;quot;This is a test&amp;quot;, &amp;quot;([a-z] ) &amp;quot; );&lt;br /&gt;
&lt;br /&gt;
Example Breakdown:&lt;br /&gt;
&#039;&#039;&#039;string [int,int]&#039;&#039;&#039; Define a map. Two dimensional. The indices are integers. The data is stored as a string.&lt;br /&gt;
&#039;&#039;&#039;test&#039;&#039;&#039; Define the map with name &#039;&#039;&#039;test&#039;&#039;&#039;.&lt;br /&gt;
&#039;&#039;&#039;group_string&#039;&#039;&#039; Call the function.&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;This is a Test&amp;quot;&#039;&#039;&#039; Feeding the function a sample string.&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;([a-z] ) &amp;quot;&#039;&#039;&#039; Your regular expression.&lt;br /&gt;
&lt;br /&gt;
Regular expressions deal with pattern matching. You want the function to find a particular pattern. The function then returns that pattern, or the stuff before it, or the stuff after it, or splits them appart, or squeezes them together. So what does this regular expression look for? &lt;br /&gt;
&#039;&#039;&#039;The Parenthesis ():&#039;&#039;&#039; Tell the function this is a group of characters.&lt;br /&gt;
&#039;&#039;&#039;[a-z]:&#039;&#039;&#039; Tell us they will be lower case letters.&lt;br /&gt;
&#039;&#039;&#039; :&#039;&#039;&#039; Tell us to look for one or more characters.&lt;br /&gt;
That space between the ) and &amp;quot; Tells us the pattern ends in a space.&lt;br /&gt;
&lt;br /&gt;
Thus reading down the string.&lt;br /&gt;
T = Does not match [a-z] is a capital letter.&lt;br /&gt;
h = Matches [a-z]. Starting Group&lt;br /&gt;
i = Matches [a-z]&lt;br /&gt;
s = Matches [a-z]&lt;br /&gt;
  = Matches space. First group found and is &amp;quot;his &amp;quot;&lt;br /&gt;
i = Matches [a-z]. Starting Group&lt;br /&gt;
s = Matches [a-z]&lt;br /&gt;
  = Matches space. Second group found, and is &amp;quot;is &amp;quot;&lt;br /&gt;
a = Matches [a-z]. Starting Group&lt;br /&gt;
  = Matches space. Third group found, and is &amp;quot;a &amp;quot;&lt;br /&gt;
t = Matches [a-z]. Starting Group&lt;br /&gt;
e = Matches [a-z]&lt;br /&gt;
s = Matches [a-z]&lt;br /&gt;
t = Matches [a-z]&lt;br /&gt;
End of line. No more matches. Stop.&lt;br /&gt;
&lt;br /&gt;
Thus, trusting the post, the map would be:&lt;br /&gt;
&lt;br /&gt;
test[0][0] =&amp;gt; &amp;quot;his &amp;quot;&lt;br /&gt;
test[0][1] =&amp;gt; &amp;quot;his&amp;quot;&lt;br /&gt;
test[1][0] =&amp;gt; &amp;quot;is &amp;quot;&lt;br /&gt;
test[1][1] =&amp;gt; &amp;quot;is&amp;quot;&lt;br /&gt;
test[2][0] =&amp;gt; &amp;quot;a &amp;quot;&lt;br /&gt;
test[2][1] =&amp;gt; &amp;quot;a&amp;quot;&lt;br /&gt;
&lt;br /&gt;
I personally haven&#039;t used it. Would be used in parsing a page by hand.&lt;/div&gt;</summary>
		<author><name>Kidoblivious</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=String_Handling_Routines&amp;diff=1328</id>
		<title>String Handling Routines</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=String_Handling_Routines&amp;diff=1328"/>
		<updated>2007-11-05T13:26:52Z</updated>

		<summary type="html">&lt;p&gt;Kidoblivious: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Part  8 - String Handling Routines ==&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;em&amp;gt;Under Construction&amp;lt;/em&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;void print( string helloworld )&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;void echo( string helloworld )&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Prints the given string to the graphical CLI window and to the status line of the main Adventuring window.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;string visit_url( string url )&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Accesses the specified URL, manages any applicable redirects (including if the page offered a choice adventure), and returns the HTML of the final response page.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;string location_to_url( location place )&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Returns the URL that would need to be accessed to visit the specified location.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;boolean contains_text( string source, string query )&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Reveals if the query string is a substring of the source string.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;int extract_meat( string text )&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Returns the amount of meat contained in a string passed to it in integer format. For use in k-mail parsing. *Not for use on pending trades.*&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;int [item] extract_items( string text )&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
takes the text you have provided and parses it for any items that KoLmafia would have found normally.  This means you have access to the built-in pluralization handler as well as the ability to NOT have to lookup description IDs or whatever other loops you had to use to access that information. For use in k-mail parsing. *Not for use on pending trades.*&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;int length( string text )&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Returns the length of the given string.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;int index_of( string source, string search )&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Returns the first index of a given substring in a string.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;int index_of( string source, string search, int start )&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Returns the next index of a given substring in a string starting from the given position.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;int last_index_of( string source, string search )&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Returns the last index of a given substring in a string.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;string substring( string source, int startfrom )&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Returns the substring of the given string starting from the given character position in the string, and ending at the last character.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;string substring( string source, int start, int end )&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Returns the substring of the given string starting from the character position indicated by start in the string, and ending at the character position indicated by end.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;string replace_string( string source, string search, string replace )&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
searches the source string for the search string and replaces all instances with the replace string&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;string url_encode( string text )&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;string url_decode( string text )&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Converts a string text into a formatted string for using with raw URLs or from a formatted string back into Ã¢â¬ÅnormalÃ¢â¬Â text.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;string [int] split_string( string source )&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Returns a map of strings which is the passed string split into individual lines. Originally implemented for use when parsing session logs, but may see more uses in the future.&lt;br /&gt;
http://kolmafia.us/index.php/topic,794.msg3868.html#msg3868 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;string [int] split_string( string source, string regex )&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;string [int,int] group_string( string source, string regex )&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
see this post located on the script repository for more information:  http://kolmafia.us/index.php/topic,451.msg2235.html#msg2235 &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;string [int] session_logs( string player, int day_count )&amp;lt;/strong&amp;gt;&lt;br /&gt;
Gives access to the session logs saved by kolmafia. More details will be added when this function&#039;s own page is written. For now, more extensive details can be found here: http://kolmafia.us/index.php/topic,794.msg3879.html#msg3879&lt;/div&gt;</summary>
		<author><name>Kidoblivious</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=KoLmafia_Properties&amp;diff=1216</id>
		<title>KoLmafia Properties</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=KoLmafia_Properties&amp;diff=1216"/>
		<updated>2007-11-01T13:00:55Z</updated>

		<summary type="html">&lt;p&gt;Kidoblivious: spam&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Part 11 - KoLmafia Properties ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In addition to affecting gameplay directly through ASH functions and CLI commands, scripters also have the ability to control certain core behaviors of KoLmafia through direct modification of the preferences file.  In addition, scripters can also create variables that will survive across sessions.  &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;To see all of the pre-defined variables that exist, look in the &amp;amp;#8220;data&amp;amp;#8221; subfolder wherever you keep the KoLmafia executable and open up any of the .kcs files named for your characters.  This guide will not attempt to describe all of the variables that are there: many are uninteresting from the player&amp;amp;#8217;s point of view and others are too unwieldy to be properly set at the moment.  Of those that are interesting and accessable, the functionality can be divided into three main sections:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Edit: I believe the preferences are now stored in the &amp;quot;settings&amp;quot; folder, rather than the &amp;quot;data&amp;quot; folder, and are named &amp;quot;prefs_character_name.txt&amp;quot;.  Anyone more knowledgable than I care to confirm?  --[[User:HallowedWeasel|HallowedWeasel]] 15:59, 27 February 2007 (CST) &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Choice Adventures&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;These settings control all of the non-combat adventures that give you a choice of outcomes.  In the GUI, you can view and set these options in the Choices tab of the Preferences window, but you can also more-or-less directly access the values from ASH.  This is slightly unorthodox behavior, given that the GUI doesn&amp;amp;#8217;t get notified that the true value has been updated and so your Choices page could be out of synch, but needs must when the Devil drives, eh?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As I said before, setting these values may be more-or-less direct, which turns out to be true in a literal sense.  Of the two sections on the Choices tab, the lower set is &amp;amp;#8220;more&amp;amp;#8221; direct.  These line up as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;TABLE BORDER=1 CELLPADDING=4&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TH&amp;gt;Property Name&amp;lt;/TH&amp;gt;&amp;lt;TH&amp;gt;Preferences Tab Name&amp;lt;/TH&amp;gt;&amp;lt;TH&amp;gt;KoL Adventure Name&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TH&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure2&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Palindome&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;Denim Axes Examined&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure3&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Teleportitis&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;The Oracle Will See You Now&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure4&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;South of the Border&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;Finger-Lickin&amp;amp;#8217; &amp;amp;#8230; Death&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure5&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Gravy Barrow 1&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;Heart of Very, Very Dark Darkness&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure7&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Gravy Barrow 2&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;How Depressing&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure8&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Gravy Barrow 3&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;On the Verge of a Dirge&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure15&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;eXtreme Slope 1&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;Yeti Nother Hippy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure16&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;eXtreme Slope 2&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;Saint Beernard&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure17&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;eXtreme Slope 3&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;Generic Teen Comedy&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure18&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Itznotyerzitz Mine 1&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;A Flat Miner&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure19&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Itznotyerzitz Mine 2&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;100% Legal&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure20&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Itznotyerzitz Mine 3&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;See You Next Fall&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure21&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Sleazy Back Alley&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;Under the Knife&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure22&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Pirate&amp;amp;#8217;s Cove 1&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;The Arrrbitrator&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure23&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Pirate&amp;amp;#8217;s Cove 2&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;Barrie Me at Sea&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure24&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Pirate&amp;amp;#8217;s Cove 3&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;Amatearrr Night&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure25&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Dungeon of Doom&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;Ouch!  You bump into a door!&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure40&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Cola Wars 1&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;The Effervescent Fray&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure41&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Cola Wars 2&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;Smells Like Team Spirit&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure42&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Cola Wars 3&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;What is it Good For?&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure45&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Spooky Forest 1&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;Maps and Legends&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure46&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Spooky Forest 2&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;An Interesting Choice&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure47&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Spooky Forest 3&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;Have a Heart&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure73&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Whitey&amp;amp;#8217;s Grove 1&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;Don&amp;amp;#8217;t Fence Me In&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure74&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Whitey&amp;amp;#8217;s Grove 2&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;The Only Thing About Him&amp;amp;#8230;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure75&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Whitey&amp;amp;#8217;s Grove 3&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;Rapido!&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;/TABLE&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Changing the settings for these adventures is as easy as an ASH function like set_property(&amp;amp;#8221;choiceAdventure40&amp;amp;#8243;, &amp;amp;#8220;2&amp;amp;#8243;) or the CLI command &amp;amp;#8220;set choiceAdventure46=3&amp;amp;#8243;.  To be candid, I can never figure out the correct numeric value by any amount of cleverness, so what I do is to log in to KoLmafia, use the Preferences Window to set the value to what I want, quit KoLmafia, and then check my character&amp;amp;#8217;s .kcs file to see the value that was set for the appropriate key.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;By contrast, there is limited support for setting the adventures in the upper set, as these are compound settings.  The two that are most affected are Castle Wheel, which controls all of choiceAdventure9 through choiceAdventure12, and which corpse you want to loot in the Spooky Forest, which covers choiceAdventure26 through choiceAdventure29.  Again, your best bet is to set these two adventures to the choice you want and then check your data file to see which specific settings correspond to the high-level decision.  So far as I know, there is no way to use scripts to specify your choices for the Astral Trip.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;However, according to Holatuwol ([http://kolmafia.us/index.php/topic,1155.0.html here]), the settings map to &amp;quot;X=pick the Xth Option&amp;quot; and X+1=pick an item you don&#039;t have (i.e., complete the outfit).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Other KoLmafia-based preferences&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;This is going to be a limited survey of the more interesting of the settings that you can control.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;battleAction&amp;lt;/b&amp;gt; - This specifies the strategy that you will use in battle.  The sorts of values that you might select here are &amp;amp;#8220;attack&amp;amp;#8221; for normal attacking, &amp;amp;#8220;custom&amp;amp;#8221; to use the Custom Combat Scripts, &amp;amp;#8220;item dictionary&amp;amp;#8221; when you&amp;amp;#8217;re adventuring in the Valley beyond Orc Chasm, or &amp;amp;#8220;skill thrust smack&amp;amp;#8221; to use TS during the entire battle.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;hpAutoRecovery&amp;lt;/b&amp;gt; - This is a float value that specifies the percentage of your HP at which the autohealer kicks in.  I haven&amp;amp;#8217;t tried it, but I think you&amp;amp;#8217;d be generally unhappy if you set it to something other than a multiple of 0.1.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;hpAutoRecoveryTarget&amp;lt;/b&amp;gt; - A companion to the above, this is the target that the autohealer will aspire to achieve.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As before, feel free to peruse the .kcs file to see all of the values.  The names aren&amp;amp;#8217;t very subtle, so you should be able to guess what they&amp;amp;#8217;re all for.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;User-defined variables&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In addition to setting the variables that KoLmafia predefines, you can also create any others to cover any information you wish.  As you do so, keep in mind that while you can clear a variable&amp;amp;#8217;s value to the null string, there is currently no way to delete a key (aside from editing the .kcs file in the text processor of your choice and deleting the line that contains the key).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kidoblivious</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Talk:String_Handling_Routines&amp;diff=2151</id>
		<title>Talk:String Handling Routines</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Talk:String_Handling_Routines&amp;diff=2151"/>
		<updated>2007-11-01T13:00:09Z</updated>

		<summary type="html">&lt;p&gt;Kidoblivious: spam...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So wtf does group_string actually do?  The linked &amp;quot;descriptive&amp;quot; post has an utterly unhelpful example.  Has anyone ever used it for anything?&lt;br /&gt;
&lt;br /&gt;
Groups a string into a map using a regular expression. To understand the function you must know.&lt;br /&gt;
1. What maps are and how they are used.&lt;br /&gt;
2. Understand what regular expressions are and how to create them.&lt;br /&gt;
&lt;br /&gt;
Using the original post:&lt;br /&gt;
&lt;br /&gt;
FUNCTION DEFINTION: string [int,int] group_string( string source, string regex )&lt;br /&gt;
EXAMPLE: string [int,int] test = group_string( &amp;quot;This is a test&amp;quot;, &amp;quot;([a-z] ) &amp;quot; );&lt;br /&gt;
&lt;br /&gt;
Example Breakdown:&lt;br /&gt;
&#039;&#039;&#039;string [int,int]&#039;&#039;&#039; Define a map. Two dimensional. The indices are integers. The data is stored as a string.&lt;br /&gt;
&#039;&#039;&#039;test&#039;&#039;&#039; Define the map with name &#039;&#039;&#039;test&#039;&#039;&#039;.&lt;br /&gt;
&#039;&#039;&#039;group_string&#039;&#039;&#039; Call the function.&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;This is a Test&amp;quot;&#039;&#039;&#039; Feeding the function a sample string.&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;([a-z] ) &amp;quot;&#039;&#039;&#039; Your regular expression.&lt;br /&gt;
&lt;br /&gt;
Regular expressions deal with pattern matching. You want the function to find a particular pattern. The function then returns that pattern, or the stuff before it, or the stuff after it, or splits them appart, or squeezes them together. So what does this regular expression look for? &lt;br /&gt;
&#039;&#039;&#039;The Parenthesis ():&#039;&#039;&#039; Tell the function this is a group of characters.&lt;br /&gt;
&#039;&#039;&#039;[a-z]:&#039;&#039;&#039; Tell us they will be lower case letters.&lt;br /&gt;
&#039;&#039;&#039; :&#039;&#039;&#039; Tell us to look for one or more characters.&lt;br /&gt;
That space between the ) and &amp;quot; Tells us the pattern ends in a space.&lt;br /&gt;
&lt;br /&gt;
Thus reading down the string.&lt;br /&gt;
T = Does not match [a-z] is a capital letter.&lt;br /&gt;
h = Matches [a-z]. Starting Group&lt;br /&gt;
i = Matches [a-z]&lt;br /&gt;
s = Matches [a-z]&lt;br /&gt;
  = Matches space. First group found and is &amp;quot;his &amp;quot;&lt;br /&gt;
i = Matches [a-z]. Starting Group&lt;br /&gt;
s = Matches [a-z]&lt;br /&gt;
  = Matches space. Second group found, and is &amp;quot;is &amp;quot;&lt;br /&gt;
a = Matches [a-z]. Starting Group&lt;br /&gt;
  = Matches space. Third group found, and is &amp;quot;a &amp;quot;&lt;br /&gt;
t = Matches [a-z]. Starting Group&lt;br /&gt;
e = Matches [a-z]&lt;br /&gt;
s = Matches [a-z]&lt;br /&gt;
t = Matches [a-z]&lt;br /&gt;
End of line. No more matches. Stop.&lt;br /&gt;
&lt;br /&gt;
Thus, trusting the post, the map would be:&lt;br /&gt;
&lt;br /&gt;
test[0][0] =&amp;gt; &amp;quot;his &amp;quot;&lt;br /&gt;
test[0][1] =&amp;gt; &amp;quot;his&amp;quot;&lt;br /&gt;
test[1][0] =&amp;gt; &amp;quot;is &amp;quot;&lt;br /&gt;
test[1][1] =&amp;gt; &amp;quot;is&amp;quot;&lt;br /&gt;
test[2][0] =&amp;gt; &amp;quot;a &amp;quot;&lt;br /&gt;
test[2][1] =&amp;gt; &amp;quot;a&amp;quot;&lt;br /&gt;
&lt;br /&gt;
I personally haven&#039;t used it. Would be used in parsing a page by hand.&lt;/div&gt;</summary>
		<author><name>Kidoblivious</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Adventuring&amp;diff=835</id>
		<title>Adventuring</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Adventuring&amp;diff=835"/>
		<updated>2007-11-01T12:57:58Z</updated>

		<summary type="html">&lt;p&gt;Kidoblivious: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Part 5 - Adventuring ==&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;em&amp;gt;Go get &amp;amp;#8216;em, tiger!&amp;lt;/em&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;boolean adventure( int visits, [[%28ASHRM%29_Datatype_Constants#.24location.5Bconstant.5D|location place]] )&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Visits the desired place the number of times that you wish.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;em&amp;gt;Sample&amp;lt;/em&amp;gt;:[[%28ASHRM%29_Code_Samples#Sample_4:_Hedging|Hedging]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;void add_item_condition( int quantity, [[%28ASHRM%29_Datatype_Constants#.24item.5Bconstant.5D|item it]] )&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Specifies adventuring conditions.  With conditions in place, adventure(&amp;amp;#8230;) will successfully complete before using all the specified adventures if the conditions are all met.&amp;lt;br /&amp;gt;&lt;br /&gt;
See the [http://kolmafia.sourceforge.net/scripting.html CLI manual] for additional condition programming.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;void council()&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Visits the Council of Loathing.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;item guardians()&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Climbs the Naughty Sorceress&amp;amp;#8217; Tower and passes the challenges that it can.  If it completes the challenge, it returns $item[none].  Otherwise, it returns the item that is needed to pass the next stage.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;boolean guild()&amp;lt;br /&amp;gt;&lt;br /&gt;
boolean gourd()&amp;lt;br /&amp;gt;&lt;br /&gt;
int tavern()&amp;lt;br /&amp;gt;&lt;br /&gt;
boolean nemesis()&amp;lt;br /&amp;gt;&lt;br /&gt;
boolean entryway()&amp;lt;br /&amp;gt;&lt;br /&gt;
boolean hedgemaze()&amp;lt;br /&amp;gt;&lt;br /&gt;
boolean chamber()&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Attempts to perform the associated tasks. The return value indicates the success.&amp;lt;br /&amp;gt;&lt;br /&gt;
See the [http://kolmafia.sourceforge.net/scripting.html CLI manual] for more details.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;em&amp;gt;Sample&amp;lt;/em&amp;gt;:[[%28ASHRM%29_Code_Samples#Sample_4:_Hedging|Hedging]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;boolean train_familiar( int nGoal, string sGoal )&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Trains your currently-equipped familiar.  sGoal can be either &amp;amp;#8220;base&amp;amp;#8221;, &amp;amp;#8220;buffed&amp;amp;#8221;, or &amp;amp;#8220;turns&amp;amp;#8221;, and nGoal is either the target weight or desired number of battles.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;location my_location()&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Returns the location where you last adventured.  &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;void refresh_status()&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Grabs a fresh copy of your sidebar, so that information on your health, effects, and such will be guaranteed accurate.  In theory, this is not necessary unless you are attempting to script your own custom combat function.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;monster [int] get_monsters( [[%28ASHRM%29_Datatype_Constants#.24location.5Bconstant.5D|location place]] )&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
returns an integer indexed map of potential monsters in the given location.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;int monster_base_attack( [[%28ASHRM%29_Datatype_Constants#.24monster.5Bconstant.5D|monster eek]] )&amp;lt;br /&amp;gt;&lt;br /&gt;
int monster_base_defense( [[%28ASHRM%29_Datatype_Constants#.24monster.5Bconstant.5D|monster eek]] )&amp;lt;br /&amp;gt;&lt;br /&gt;
int monster_base_hp( [[%28ASHRM%29_Datatype_Constants#.24monster.5Bconstant.5D|monster eek]] )&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Returns the stats for the given monster.  &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;spiceloop is a verified kolmafia ash function however the parameters and return type are speculation. This needs verified.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;void spiceloop( int count )&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Executes kolmafia&amp;amp;#8217;s internal spiceloop for the specified number of adventures.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;element monster_attack_element( monster )&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;element monster_defense_element( monster )&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Returns the given monsters attack element and element which it can defend against.&lt;/div&gt;</summary>
		<author><name>Kidoblivious</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Talk:String_Handling_Routines&amp;diff=2144</id>
		<title>Talk:String Handling Routines</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Talk:String_Handling_Routines&amp;diff=2144"/>
		<updated>2007-10-25T09:21:06Z</updated>

		<summary type="html">&lt;p&gt;Kidoblivious: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So wtf does group_string actually do?  The linked &amp;quot;descriptive&amp;quot; post has an utterly unhelpful example.  Has anyone ever used it for anything?&lt;br /&gt;
&lt;br /&gt;
Groups a string into a map using a regular expression. To understand the function you must know.&lt;br /&gt;
1. What maps are and how they are used.&lt;br /&gt;
2. Understand what regular expressions are and how to create them.&lt;br /&gt;
&lt;br /&gt;
Using the original post:&lt;br /&gt;
&lt;br /&gt;
FUNCTION DEFINTION: string [int,int] group_string( string source, string regex )&lt;br /&gt;
EXAMPLE: string [int,int] test = group_string( &amp;quot;This is a test&amp;quot;, &amp;quot;([a-z] ) &amp;quot; );&lt;br /&gt;
&lt;br /&gt;
Example Breakdown:&lt;br /&gt;
&#039;&#039;&#039;string [int,int]&#039;&#039;&#039; Define a map. Two dimensional. The indices are integers. The data is stored as a string.&lt;br /&gt;
&#039;&#039;&#039;test&#039;&#039;&#039; Define the map with name &#039;&#039;&#039;test&#039;&#039;&#039;.&lt;br /&gt;
&#039;&#039;&#039;group_string&#039;&#039;&#039; Call the function.&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;This is a Test&amp;quot;&#039;&#039;&#039; Feeding the function a sample string.&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;([a-z] ) &amp;quot;&#039;&#039;&#039; Your regular expression.&lt;br /&gt;
&lt;br /&gt;
Regular expressions deal with pattern matching. You want the function to find a particular pattern. The function then returns that pattern, or the stuff before it, or the stuff after it, or splits them appart, or squeezes them together. So what does this regular expression look for? &lt;br /&gt;
&#039;&#039;&#039;The Parenthesis ():&#039;&#039;&#039; Tell the function this is a group of characters.&lt;br /&gt;
&#039;&#039;&#039;[a-z]:&#039;&#039;&#039; Tell us they will be lower case letters.&lt;br /&gt;
&#039;&#039;&#039; :&#039;&#039;&#039; Tell us to look for one or more characters.&lt;br /&gt;
That space between the ) and &amp;quot; Tells us the pattern ends in a space.&lt;br /&gt;
&lt;br /&gt;
Thus reading down the string.&lt;br /&gt;
T = Does not match [a-z] is a capital letter.&lt;br /&gt;
h = Matches [a-z]. Starting Group&lt;br /&gt;
i = Matches [a-z]&lt;br /&gt;
s = Matches [a-z]&lt;br /&gt;
  = Matches space. First group found and is &amp;quot;his &amp;quot;&lt;br /&gt;
i = Matches [a-z]. Starting Group&lt;br /&gt;
s = Matches [a-z]&lt;br /&gt;
  = Matches space. Second group found, and is &amp;quot;is &amp;quot;&lt;br /&gt;
a = Matches [a-z]. Starting Group&lt;br /&gt;
  = Matches space. Third group found, and is &amp;quot;a &amp;quot;&lt;br /&gt;
t = Matches [a-z]. Starting Group&lt;br /&gt;
e = Matches [a-z]&lt;br /&gt;
s = Matches [a-z]&lt;br /&gt;
t = Matches [a-z]&lt;br /&gt;
End of line. No more matches. Stop.&lt;br /&gt;
&lt;br /&gt;
Thus, trusting the post, the map would be:&lt;br /&gt;
&lt;br /&gt;
test[0][0] =&amp;gt; &amp;quot;his &amp;quot;&lt;br /&gt;
test[0][1] =&amp;gt; &amp;quot;his&amp;quot;&lt;br /&gt;
test[1][0] =&amp;gt; &amp;quot;is &amp;quot;&lt;br /&gt;
test[1][1] =&amp;gt; &amp;quot;is&amp;quot;&lt;br /&gt;
test[2][0] =&amp;gt; &amp;quot;a &amp;quot;&lt;br /&gt;
test[2][1] =&amp;gt; &amp;quot;a&amp;quot;&lt;br /&gt;
&lt;br /&gt;
I personally haven&#039;t used it. Would be used in parsing a page by hand.&lt;/div&gt;</summary>
		<author><name>Kidoblivious</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=KoLmafia_Properties&amp;diff=1208</id>
		<title>KoLmafia Properties</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=KoLmafia_Properties&amp;diff=1208"/>
		<updated>2007-10-23T15:52:59Z</updated>

		<summary type="html">&lt;p&gt;Kidoblivious: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Part 11 - KoLmafia Properties ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In addition to affecting gameplay directly through ASH functions and CLI commands, scripters also have the ability to control certain core behaviors of KoLmafia through direct modification of the preferences file.  In addition, scripters can also create variables that will survive across sessions.  &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;To see all of the pre-defined variables that exist, look in the &amp;amp;#8220;data&amp;amp;#8221; subfolder wherever you keep the KoLmafia executable and open up any of the .kcs files named for your characters.  This guide will not attempt to describe all of the variables that are there: many are uninteresting from the player&amp;amp;#8217;s point of view and others are too unwieldy to be properly set at the moment.  Of those that are interesting and accessable, the functionality can be divided into three main sections:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Edit: I believe the preferences are now stored in the &amp;quot;settings&amp;quot; folder, rather than the &amp;quot;data&amp;quot; folder, and are named &amp;quot;prefs_character_name.txt&amp;quot;.  Anyone more knowledgable than I care to confirm?  --[[User:HallowedWeasel|HallowedWeasel]] 15:59, 27 February 2007 (CST) &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Choice Adventures&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;These settings control all of the non-combat adventures that give you a choice of outcomes.  In the GUI, you can view and set these options in the Choices tab of the Preferences window, but you can also more-or-less directly access the values from ASH.  This is slightly unorthodox behavior, given that the GUI doesn&amp;amp;#8217;t get notified that the true value has been updated and so your Choices page could be out of synch, but needs must when the Devil drives, eh?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As I said before, setting these values may be more-or-less direct, which turns out to be true in a literal sense.  Of the two sections on the Choices tab, the lower set is &amp;amp;#8220;more&amp;amp;#8221; direct.  These line up as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;TABLE BORDER=1 CELLPADDING=4&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TH&amp;gt;Property Name&amp;lt;/TH&amp;gt;&amp;lt;TH&amp;gt;Preferences Tab Name&amp;lt;/TH&amp;gt;&amp;lt;TH&amp;gt;KoL Adventure Name&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TH&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure2&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Palindome&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;Denim Axes Examined&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure3&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Teleportitis&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;The Oracle Will See You Now&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure4&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;South of the Border&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;Finger-Lickin&amp;amp;#8217; &amp;amp;#8230; Death&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure5&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Gravy Barrow 1&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;Heart of Very, Very Dark Darkness&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure7&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Gravy Barrow 2&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;How Depressing&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure8&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Gravy Barrow 3&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;On the Verge of a Dirge&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure15&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;eXtreme Slope 1&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;Yeti Nother Hippy&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure16&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;eXtreme Slope 2&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;Saint Beernard&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure17&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;eXtreme Slope 3&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;Generic Teen Comedy&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure18&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Itznotyerzitz Mine 1&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;A Flat Miner&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure19&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Itznotyerzitz Mine 2&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;100% Legal&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure20&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Itznotyerzitz Mine 3&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;See You Next Fall&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure21&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Sleazy Back Alley&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;Under the Knife&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure22&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Pirate&amp;amp;#8217;s Cove 1&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;The Arrrbitrator&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure23&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Pirate&amp;amp;#8217;s Cove 2&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;Barrie Me at Sea&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure24&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Pirate&amp;amp;#8217;s Cove 3&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;Amatearrr Night&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure25&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Dungeon of Doom&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;Ouch!  You bump into a door!&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure40&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Cola Wars 1&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;The Effervescent Fray&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure41&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Cola Wars 2&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;Smells Like Team Spirit&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure42&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Cola Wars 3&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;What is it Good For?&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure45&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Spooky Forest 1&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;Maps and Legends&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure46&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Spooky Forest 2&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;An Interesting Choice&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure47&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Spooky Forest 3&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;Have a Heart&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure73&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Whitey&amp;amp;#8217;s Grove 1&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;Don&amp;amp;#8217;t Fence Me In&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure74&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Whitey&amp;amp;#8217;s Grove 2&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;The Only Thing About Him&amp;amp;#8230;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;choiceAdventure75&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;Whitey&amp;amp;#8217;s Grove 3&amp;lt;/TD&amp;gt;&amp;lt;TD ALIGN=LEFT&amp;gt;Rapido!&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;/TABLE&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Changing the settings for these adventures is as easy as an ASH function like set_property(&amp;amp;#8221;choiceAdventure40&amp;amp;#8243;, &amp;amp;#8220;2&amp;amp;#8243;) or the CLI command &amp;amp;#8220;set choiceAdventure46=3&amp;amp;#8243;.  To be candid, I can never figure out the correct numeric value by any amount of cleverness, so what I do is to log in to KoLmafia, use the Preferences Window to set the value to what I want, quit KoLmafia, and then check my character&amp;amp;#8217;s .kcs file to see the value that was set for the appropriate key.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;By contrast, there is limited support for setting the adventures in the upper set, as these are compound settings.  The two that are most affected are Castle Wheel, which controls all of choiceAdventure9 through choiceAdventure12, and which corpse you want to loot in the Spooky Forest, which covers choiceAdventure26 through choiceAdventure29.  Again, your best bet is to set these two adventures to the choice you want and then check your data file to see which specific settings correspond to the high-level decision.  So far as I know, there is no way to use scripts to specify your choices for the Astral Trip.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;However, according to Holatuwol ([http://kolmafia.us/index.php/topic,1155.0.html here]), the settings map to &amp;quot;X=pick the Xth Option&amp;quot; and X+1=pick an item you don&#039;t have (i.e., complete the outfit).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Other KoLmafia-based preferences&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;This is going to be a limited survey of the more interesting of the settings that you can control.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;battleAction&amp;lt;/b&amp;gt; - This specifies the strategy that you will use in battle.  The sorts of values that you might select here are &amp;amp;#8220;attack&amp;amp;#8221; for normal attacking, &amp;amp;#8220;custom&amp;amp;#8221; to use the Custom Combat Scripts, &amp;amp;#8220;item dictionary&amp;amp;#8221; when you&amp;amp;#8217;re adventuring in the Valley beyond Orc Chasm, or &amp;amp;#8220;skill thrust smack&amp;amp;#8221; to use TS during the entire battle.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;hpAutoRecovery&amp;lt;/b&amp;gt; - This is a float value that specifies the percentage of your HP at which the autohealer kicks in.  I haven&amp;amp;#8217;t tried it, but I think you&amp;amp;#8217;d be generally unhappy if you set it to something other than a multiple of 0.1.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;hpAutoRecoveryTarget&amp;lt;/b&amp;gt; - A companion to the above, this is the target that the autohealer will aspire to achieve.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As before, feel free to peruse the .kcs file to see all of the values.  The names aren&amp;amp;#8217;t very subtle, so you should be able to guess what they&amp;amp;#8217;re all for.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;User-defined variables&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In addition to setting the variables that KoLmafia predefines, you can also create any others to cover any information you wish.  As you do so, keep in mind that while you can clear a variable&amp;amp;#8217;s value to the null string, there is currently no way to delete a key (aside from editing the .kcs file in the text processor of your choice and deleting the line that contains the key).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kidoblivious</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=User_talk:Kidoblivious&amp;diff=2414</id>
		<title>User talk:Kidoblivious</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=User_talk:Kidoblivious&amp;diff=2414"/>
		<updated>2007-10-23T14:50:30Z</updated>

		<summary type="html">&lt;p&gt;Kidoblivious: suggestion to remove anonymous edits.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hello there all people who read new user pages!&lt;br /&gt;
&lt;br /&gt;
I&#039;m simply writing here to suggest to the runner of this wiki to change the present policy of allowing anonymous edits. Without this relatively simple step, which can be done with reference to this ( [http://devpit.org/wiki/Installing_Mediawiki#Preventing_anonymous_editing devpit link] ).&lt;br /&gt;
I normally wouldn&#039;t suggest this, but presently we seem here to be under (daily) attack from (probably script kiddie) spammers. More effort to security than this should perhaps be reserved for if this measure doesn&#039;t succeed.&lt;br /&gt;
&lt;br /&gt;
Take care KoL scripters!&lt;br /&gt;
&lt;br /&gt;
--[[User:Kidoblivious|Kidoblivious]] 09:50, 23 October 2007 (CDT)&lt;/div&gt;</summary>
		<author><name>Kidoblivious</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Talk:String_Handling_Routines&amp;diff=2141</id>
		<title>Talk:String Handling Routines</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Talk:String_Handling_Routines&amp;diff=2141"/>
		<updated>2007-10-23T14:31:08Z</updated>

		<summary type="html">&lt;p&gt;Kidoblivious: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So wtf does group_string actually do?  The linked &amp;quot;descriptive&amp;quot; post has an utterly unhelpful example.  Has anyone ever used it for anything?&lt;br /&gt;
&lt;br /&gt;
Groups a string into a map using a regular expression. To understand the function you must know.&lt;br /&gt;
1. What maps are and how they are used.&lt;br /&gt;
2. Understand what regular expressions are and how to create them.&lt;br /&gt;
&lt;br /&gt;
Using the original post:&lt;br /&gt;
&lt;br /&gt;
FUNCTION DEFINTION: string [int,int] group_string( string source, string regex )&lt;br /&gt;
EXAMPLE: string [int,int] test = group_string( &amp;quot;This is a test&amp;quot;, &amp;quot;([a-z] ) &amp;quot; );&lt;br /&gt;
&lt;br /&gt;
Example Breakdown:&lt;br /&gt;
&#039;&#039;&#039;string [int,int]&#039;&#039;&#039; Define a map. Two dimensional. The indices are integers. The data is stored as a string.&lt;br /&gt;
&#039;&#039;&#039;test&#039;&#039;&#039; Define the map with name &#039;&#039;&#039;test&#039;&#039;&#039;.&lt;br /&gt;
&#039;&#039;&#039;group_string&#039;&#039;&#039; Call the function.&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;This is a Test&amp;quot;&#039;&#039;&#039; Feeding the function a sample string.&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;([a-z] ) &amp;quot;&#039;&#039;&#039; Your regular expression.&lt;br /&gt;
&lt;br /&gt;
Regular expressions deal with pattern matching. You want the function to find a particular pattern. The function then returns that pattern, or the stuff before it, or the stuff after it, or splits them appart, or squeezes them together. So what does this regular expression look for? &lt;br /&gt;
&#039;&#039;&#039;The Parenthesis ():&#039;&#039;&#039; Tell the function this is a group of characters.&lt;br /&gt;
&#039;&#039;&#039;[a-z]:&#039;&#039;&#039; Tell us they will be lower case letters.&lt;br /&gt;
&#039;&#039;&#039; :&#039;&#039;&#039; Tell us to look for one or more characters.&lt;br /&gt;
That space between the ) and &amp;quot; Tells us the pattern ends in a space.&lt;br /&gt;
&lt;br /&gt;
Thus reading down the string.&lt;br /&gt;
T = Does not match [a-z] is a capital letter.&lt;br /&gt;
h = Matches [a-z]. Starting Group&lt;br /&gt;
i = Matches [a-z]&lt;br /&gt;
s = Matches [a-z]&lt;br /&gt;
  = Matches space. First group found and is &amp;quot;his &amp;quot;&lt;br /&gt;
i = Matches [a-z]. Starting Group&lt;br /&gt;
s = Matches [a-z]&lt;br /&gt;
  = Matches space. Second group found, and is &amp;quot;is &amp;quot;&lt;br /&gt;
a = Matches [a-z]. Starting Group&lt;br /&gt;
  = Matches space. Third group found, and is &amp;quot;a &amp;quot;&lt;br /&gt;
t = Matches [a-z]. Starting Group&lt;br /&gt;
e = Matches [a-z]&lt;br /&gt;
s = Matches [a-z]&lt;br /&gt;
t = Matches [a-z]&lt;br /&gt;
End of line. No more matches. Stop.&lt;br /&gt;
&lt;br /&gt;
Thus, trusting the post, the map would be:&lt;br /&gt;
&lt;br /&gt;
test[0][0] =&amp;gt; &amp;quot;his &amp;quot;&lt;br /&gt;
test[0][1] =&amp;gt; &amp;quot;his&amp;quot;&lt;br /&gt;
test[1][0] =&amp;gt; &amp;quot;is &amp;quot;&lt;br /&gt;
test[1][1] =&amp;gt; &amp;quot;is&amp;quot;&lt;br /&gt;
test[2][0] =&amp;gt; &amp;quot;a &amp;quot;&lt;br /&gt;
test[2][1] =&amp;gt; &amp;quot;a&amp;quot;&lt;br /&gt;
&lt;br /&gt;
I personally haven&#039;t used it. Would be used in parsing a page by hand.&lt;/div&gt;</summary>
		<author><name>Kidoblivious</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Main_Page&amp;diff=396</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Main_Page&amp;diff=396"/>
		<updated>2007-10-23T14:24:10Z</updated>

		<summary type="html">&lt;p&gt;Kidoblivious: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the KoLmafia Wiki.&lt;br /&gt;
&lt;br /&gt;
Please pardon our dust while we remodel.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Progress level: [[Special:Statistics|{{NUMBEROFARTICLES}}]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;width:80%;margin-top: .7em;background-color:#F4DF3B;border:2px solid #8663A8&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;box_tgen&amp;quot; style=&amp;quot;text-align:center;color:#000;font-size:90%;border:none;margin: 0;padding:.1em;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Quick Links:&#039;&#039;&#039; &amp;lt;br&amp;gt; [[Your Character]] || [[Item Management]] || [[Equipment]] || [[Skills and Effects]] || [[Adventuring]] || [[In-combat functions for consult scripting]] || [[Miscellaneous]]  || [[String Handling Routines]] || [[Datatype Constants]] || [[Datatype Conversions]] || [[KoLmafia Properties]] || [[Code Samples]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
KoLMafia:&lt;br /&gt;
&lt;br /&gt;
[http://kolmafia.sourceforge.net Download KoLMafia]&lt;br /&gt;
&lt;br /&gt;
[http://kolmafia.sourceforge.net/manual.html KoLMafia Documentation]&lt;br /&gt;
&lt;br /&gt;
[http://kolmafia.sourceforge.net/scripting.html CLI Scripting Manual]&lt;br /&gt;
&lt;br /&gt;
[http://kolmafia.sourceforge.net/advanced.html ASH Scripting Manual]&lt;br /&gt;
&lt;br /&gt;
[http://kolmafia.sourceforge.net/combat.html Custom Combat Scripting Manual]&lt;br /&gt;
&lt;br /&gt;
[http://www.kolmafia.us The KoLMafia Script Repository]&lt;br /&gt;
&lt;br /&gt;
[http://forums.kingdomofloathing.com/vb/showthread.php?t=88408 The KoLMafia thread on the KoL Forums]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
KoL:&lt;br /&gt;
&lt;br /&gt;
[http://www.kingdomofloathing.com/ The Kingdom of Loathing]&lt;br /&gt;
&lt;br /&gt;
[http://forums.kingdomofloathing.com/ KoL Forums]&lt;/div&gt;</summary>
		<author><name>Kidoblivious</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Miscellaneous_Functions&amp;diff=1055</id>
		<title>Miscellaneous Functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Miscellaneous_Functions&amp;diff=1055"/>
		<updated>2007-10-22T15:21:25Z</updated>

		<summary type="html">&lt;p&gt;Kidoblivious: /spam&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Part 7 - Miscellaneous ==&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;em&amp;gt;Mostly internal stuff. Some good for everyone, some only for ASH wizards.&amp;lt;/em&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;void print( string output )&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;void print( string output, string color )&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Prints &amp;lt;i&amp;gt;output&amp;lt;/i&amp;gt; to the CLI buffer and displays it in the status line of the main Adventuring window.  If &amp;lt;i&amp;gt;color&amp;lt;/i&amp;gt; is specified any HTML in &amp;lt;i&amp;gt;output&amp;lt;/i&amp;gt; is escaped and the string is wrapped in a font tag before being printed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;boolean cli_execute( string command )&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Executes the given command as if it were entered into the graphical CLI window. This can be used for CLI commands or, if you&lt;/div&gt;</summary>
		<author><name>Kidoblivious</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Talk:String_Handling_Routines&amp;diff=2139</id>
		<title>Talk:String Handling Routines</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Talk:String_Handling_Routines&amp;diff=2139"/>
		<updated>2007-10-22T15:13:33Z</updated>

		<summary type="html">&lt;p&gt;Kidoblivious: /spam&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So wtf does group_string actually do?  The linked &amp;quot;descriptive&amp;quot; post has an utterly unhelpful example.  Has anyone ever used it for anything?&lt;br /&gt;
&lt;br /&gt;
Groups a string into a map using a regular expression. To understand the function you must know.&lt;br /&gt;
1. What maps are and how they are used.&lt;br /&gt;
2. Understand what regular expressions are and how to create them.&lt;br /&gt;
&lt;br /&gt;
Using the original post:&lt;br /&gt;
&lt;br /&gt;
FUNCTION DEFINTION: string [int,int] group_string( string source, string regex )&lt;br /&gt;
EXAMPLE: string [int,int] test = group_string( &amp;quot;This is a test&amp;quot;, &amp;quot;([a-z] ) &amp;quot; );&lt;br /&gt;
&lt;br /&gt;
Example Breakdown:&lt;br /&gt;
&#039;&#039;&#039;string [int,int]&#039;&#039;&#039; Define a map. Two dimensional. The indices are integers. The data is stored as a string.&lt;br /&gt;
&#039;&#039;&#039;test&#039;&#039;&#039; Define the map with name &#039;&#039;&#039;test&#039;&#039;&#039;.&lt;br /&gt;
&#039;&#039;&#039;group_string&#039;&#039;&#039; Call the function.&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;This is a Test&amp;quot;&#039;&#039;&#039; Feeding the function a sample string.&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;([a-z] ) &amp;quot;&#039;&#039;&#039; Your regular expression.&lt;br /&gt;
&lt;br /&gt;
Regular expressions deal with pattern matching. You want the function to find a particular pattern. The function then returns that pattern, or the stuff before it, or the stuff after it, or splits them appart, or squeezes them together. So what does this regular expression look for? &lt;br /&gt;
&#039;&#039;&#039;The Parenthesis ():&#039;&#039;&#039; Tell the function this is a group of characters.&lt;br /&gt;
&#039;&#039;&#039;[a-z]:&#039;&#039;&#039; Tell us they will be lower case letters.&lt;br /&gt;
&#039;&#039;&#039; :&#039;&#039;&#039; Tell us to look for one or more characters.&lt;br /&gt;
That space between the ) and &amp;quot; Tells us the pattern ends in a space.&lt;br /&gt;
&lt;br /&gt;
Thus reading down the string.&lt;br /&gt;
T = Does not match [a-z] is a capital letter.&lt;br /&gt;
h = Matches [a-z]. Starting Group&lt;br /&gt;
i = Matches [a-z]&lt;br /&gt;
s = Matches [a-z]&lt;br /&gt;
  = Matches space. First group found and is &amp;quot;his &amp;quot;&lt;br /&gt;
i = Matches [a-z]. Starting Group&lt;br /&gt;
s = Matches [a-z]&lt;br /&gt;
  = Matches space. Second group found, and is &amp;quot;is &amp;quot;&lt;br /&gt;
a = Matches [a-z]. Starting Group&lt;br /&gt;
  = Matches space. Third group found, and is &amp;quot;a &amp;quot;&lt;br /&gt;
t = Matches [a-z]. Starting Group&lt;br /&gt;
e = Matches [a-z]&lt;br /&gt;
s = Matches [a-z]&lt;br /&gt;
t = Matches [a-z]&lt;br /&gt;
End of line. No more matches. Stop.&lt;br /&gt;
&lt;br /&gt;
Thus, trusting the post, the map would be:&lt;br /&gt;
&lt;br /&gt;
test[0][0] =&amp;gt; &amp;quot;his &amp;quot;&lt;br /&gt;
test[0][1] =&amp;gt; &amp;quot;his&amp;quot;&lt;br /&gt;
test[1][0] =&amp;gt; &amp;quot;is &amp;quot;&lt;br /&gt;
test[1][1] =&amp;gt; &amp;quot;is&amp;quot;&lt;br /&gt;
test[2][0] =&amp;gt; &amp;quot;a &amp;quot;&lt;br /&gt;
test[2][1] =&amp;gt; &amp;quot;a&amp;quot;&lt;br /&gt;
&lt;br /&gt;
I personally haven&#039;t used it. Would be used in parsing a page by hand.&lt;/div&gt;</summary>
		<author><name>Kidoblivious</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmafia.us/index.php?title=Main_Page&amp;diff=392</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmafia.us/index.php?title=Main_Page&amp;diff=392"/>
		<updated>2007-10-22T15:09:35Z</updated>

		<summary type="html">&lt;p&gt;Kidoblivious: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the KoLmafia Wiki.&lt;br /&gt;
&lt;br /&gt;
Please pardon our dust while we remodel.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Progress level: [[Special:Statistics|{{NUMBEROFARTICLES}}]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;width:80%;margin-top: .7em;background-color:#F4DF3B;border:2px solid #8663A8&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td class=&amp;quot;box_tgen&amp;quot; style=&amp;quot;text-align:center;color:#000;font-size:90%;border:none;margin: 0;padding:.1em;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Quick Links:&#039;&#039;&#039; &amp;lt;br&amp;gt; [[Your Character]] || [[Item Management]] || [[Equipment]] || [[Skills and Effects]] || [[Adventuring]] || [[In-combat functions for consult scripting]] || [[Miscellaneous]]  || [[String Handling Routines]] || [[Datatype Constants]] || [[Datatype Conversions]] || [[KoLmafia Properties]] || [[Code Samples]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
KoLMafia:&lt;br /&gt;
&lt;br /&gt;
[http://kolmafia.sourceforge.net Download KoLMafia]&lt;br /&gt;
&lt;br /&gt;
[http://kolmafia.sourceforge.net/manual.html KoLMafia Documentation]&lt;br /&gt;
&lt;br /&gt;
[http://kolmafia.sourceforge.net/scripting.html CLI Scripting Manual]&lt;br /&gt;
&lt;br /&gt;
[http://kolmafia.sourceforge.net/advanced.html ASH Scripting Manual]&lt;br /&gt;
&lt;br /&gt;
[http://kolmafia.sourceforge.net/combat.html Custom Combat Scripting Manual]&lt;br /&gt;
&lt;br /&gt;
[http://www.kolmafia.us The KoLMafia Script Repository]&lt;br /&gt;
&lt;br /&gt;
[http://forums.kingdomofloathing.com/vb/showthread.php?t=88408 The KoLMafia thread on the KoL Forums]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
KoL:&lt;br /&gt;
&lt;br /&gt;
[http://www.kingdomofloathing.com/ The Kingdom of Loathing]&lt;br /&gt;
&lt;br /&gt;
[http://forums.kingdomofloathing.com/ KoL Forums]&lt;/div&gt;</summary>
		<author><name>Kidoblivious</name></author>
	</entry>
</feed>