<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.flexiblesurvival.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jetharius</id>
	<title>Flexible Survival - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.flexiblesurvival.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jetharius"/>
	<link rel="alternate" type="text/html" href="https://wiki.flexiblesurvival.com/w/Special:Contributions/Jetharius"/>
	<updated>2026-06-15T08:33:57Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://wiki.flexiblesurvival.com/index.php?title=String_Parsing&amp;diff=1452316</id>
		<title>String Parsing</title>
		<link rel="alternate" type="text/html" href="https://wiki.flexiblesurvival.com/index.php?title=String_Parsing&amp;diff=1452316"/>
		<updated>2020-03-18T13:18:58Z</updated>

		<summary type="html">&lt;p&gt;Jetharius: /* Workarounds or Other Tricks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt; String Parsing (SP) refers to some of the underlying guts of the MUCK. You can use it to liven up your creature submissions, rooms, and even your own description. While it&#039;s a bit limited in power compared to other languages, it&#039;s easy to read and learn. &lt;br /&gt;
If you&#039;re new to programming, it&#039;s recommended you use notepad to work in. This lets you save your files locally in case of a disconnect, and avoids weird formatting issues that sometimes pop up in Word. If you&#039;re going to be using SP heavily, look for a text editor [http://notepad-plus-plus.org/ Notepad++] and [https://dl.dropbox.com/u/40286482/FS%20string%20parser.zip language file] (Windows) or VI, eMacs, etc (Linux). *link to Fraise for Macs was broken, removed. Please add a good Mac alternative if you have a functioning link*&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STAFF NOTE: This page is maintained largely by the Flexible Survival community. Any information herein may not be relevant to the current standard of String Parsing or reflect its full feature set. Please view the in-game helpfiles on String Parsing for an additional point of reference.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Basic Syntax  ==&lt;br /&gt;
&lt;br /&gt;
=== Formatting ===&lt;br /&gt;
&lt;br /&gt;
Everything in SP is contained in brackets []. Though SP is supposedly case insensitive, it&#039;s recommended you use only lowercase.&lt;br /&gt;
&lt;br /&gt;
There should be no spaces after the leading bracket or before the trailing bracket.&lt;br /&gt;
:[like this]&lt;br /&gt;
:[ not like this ]&lt;br /&gt;
&lt;br /&gt;
Line breaks are bad. Avoid them within brackets, and within [if...][end if] sections.&lt;br /&gt;
&lt;br /&gt;
This is bad.&amp;lt;br&amp;gt;&lt;br /&gt;
:Hi [player]![if [player] is male]&amp;lt;br&amp;gt;&lt;br /&gt;
:I&#039;m a &amp;lt;br&amp;gt;&lt;br /&gt;
:boy![end if]&lt;br /&gt;
&lt;br /&gt;
This is good.&amp;lt;br&amp;gt;&lt;br /&gt;
:Hi! [player]!&amp;lt;br&amp;gt;&lt;br /&gt;
:[if [player] is male]I&#039;m a boy![end if]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
SP can retrieve, test, and display certain pieces of information about characters.&lt;br /&gt;
&lt;br /&gt;
=== Targets ===&lt;br /&gt;
&lt;br /&gt;
A Target refers to a specific character. Targets must be enclosed in their own set of brackets. A [&#039;&#039;target&#039;&#039;] by itself will return the target&#039;s name.&lt;br /&gt;
&lt;br /&gt;
:Hi [player]! &lt;br /&gt;
returns&lt;br /&gt;
:&#039;&#039;&#039;Hi Nuku!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Valid Targets:&lt;br /&gt;
:[player] - Name of character the description is on.&lt;br /&gt;
:[looker] - Name of the character viewing the description.&lt;br /&gt;
:[loser] - The loser of a fight. (For victory/defeat messages.)&lt;br /&gt;
:[victor] - The winner of a fight (For victory/defeat messages.)&lt;br /&gt;
&lt;br /&gt;
=== Pronouns ===&lt;br /&gt;
These will display the correct gender of the pronoun according to the target.&lt;br /&gt;
&lt;br /&gt;
Use:&lt;br /&gt;
:[&#039;&#039;pronoun&#039;&#039; of [&#039;&#039;target&#039;&#039;]]&lt;br /&gt;
::Example: You see an employee badge hanging from [%p of [player]] coat.&lt;br /&gt;
&lt;br /&gt;
Available Pronouns&lt;br /&gt;
:%p/%P for possessive pronouns (his/her/its &amp;lt;item&amp;gt;, His/Her/Hir/Its &amp;lt;item&amp;gt;)&lt;br /&gt;
::Example: Who&#039;s book is it? It&#039;s [%p of [player]] book.&lt;br /&gt;
:%a/%A for absolute possessive pronouns (his/hers/hirs/its, His/Hers/Hirs/Its)&lt;br /&gt;
::Example: Who&#039;s book is it? It&#039;s [%a of [player]].&lt;br /&gt;
:%s/%S for subjective pronouns (he/she/shi/it, He/She/Shi/It)&lt;br /&gt;
::Example: [%S of [player]] got the book.&lt;br /&gt;
:%o/%O for objective pronouns  (him/her/hir/it, Him/Her/Hir/It)&lt;br /&gt;
::Example: The book fell on [%o of [player]].&lt;br /&gt;
:%r/%R for reflexive pronouns  (himself/herself/hirself/itself, Himself/Herself/hirself/Itself)&lt;br /&gt;
::Example: Chris did it all by [%r of [player]].&lt;br /&gt;
:%n/%N for the player&#039;s name. &#039;&#039;&#039;STAFF NOTE: Please use [player] instead.&lt;br /&gt;
::The shopkeeper&#039;s name is [%n of [player]].&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
You can check if the target owns any of the following flags:&lt;br /&gt;
:Barbed, Beaked, Candy, Clawed, Feathered, Feral, Flared, Furred, Hooved, Inorganic, Knotted, Latex, Legless, Mouthless, Multiarms, Multiheads, Oviparous, Ovipositor, Pouch, Scaled, Serpentine, Snout, Tailed, Tails, Taur, Udder, Winged&lt;br /&gt;
:Example: [if clawed present in [player]] what sharp claws they have[end if]&lt;br /&gt;
&lt;br /&gt;
To check those flags in-game, type list flags.&lt;br /&gt;
&lt;br /&gt;
=== Stats ===&lt;br /&gt;
You can use SP to retrieve information about a target using [stat &#039;&#039;stat&#039;&#039; of [&#039;&#039;target&#039;&#039;]]&lt;br /&gt;
:HP - Returns current raw HP.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[stat rut of [target]]&amp;lt;/code&amp;gt; will return the target&#039;s rut level. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;[stat pregnant of [target]]&amp;lt;/code&amp;gt; will return the target&#039;s time until birth. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;[status fertile of [target]]&amp;lt;/code&amp;gt; will return the target&#039;s heat status (either 1 or 0)&lt;br /&gt;
&lt;br /&gt;
=== Local Stats ===&lt;br /&gt;
You can create your own custom stats specific to your character, and test for them like any other in your description. &#039;&#039;&#039;lset foo=bar&#039;&#039;&#039;, and then use [local stat foo of [player]] in your parsed description.&lt;br /&gt;
&lt;br /&gt;
Custom stats of a form can be viewed by typing &#039;&#039;&#039;lstats (form here)&#039;&#039;&#039;. Mastered forms with local stats can be viewed by typing &#039;&#039;&#039;formlist #lstat&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:Example: lset eyecolor=blue will make &#039;...with piercing [if local stat eyecolor of [player] does exist][local stat eyecolor of [player]][else]defaultcolor[end if] eyes.&#039; read as &#039;...with piercing blue eyes.&#039;&lt;br /&gt;
You can also organize your values with lset something/foo=bar. &lt;br /&gt;
ALWAYS use &amp;quot;&#039;&#039;Form Name/stat&#039;&#039;&amp;quot; when submitting monsters with custom stats, like [local stat Female Husky/eyecolor of [player]]. This will help keep the user config files clean and prevent accidental overwriting of a player&#039;s other custom stats.&lt;br /&gt;
Example of local stats:&lt;br /&gt;
:lset piercings/number=three&lt;br /&gt;
:lset piercings/type=silver&lt;br /&gt;
:lset piercings/side=left&lt;br /&gt;
&lt;br /&gt;
&amp;quot;They have [local stat piercings/number of [player]] [local stat piercings/type of [player]] rings in their [local stat piercings/side of [player]] ear.&amp;quot; will now read as &amp;quot;They have three silver rings in their left ear.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Body Parts ===&lt;br /&gt;
You can retrieve the numerical value of body parts with [stat &#039;&#039;part&#039;&#039; of [&#039;&#039;target&#039;&#039;]]&lt;br /&gt;
:Breasts -- number of breasts&lt;br /&gt;
:Breast Size -- returned as a numerical value (1, 2, 3) &#039;&#039;not&#039;&#039; cup size.&lt;br /&gt;
:Cocks -- number of cocks&lt;br /&gt;
:Cock Length&lt;br /&gt;
:Ball Size&lt;br /&gt;
:Cunts -- number of cunts&lt;br /&gt;
:Cunt Length -- depth of cunt&lt;br /&gt;
&lt;br /&gt;
(Not sure how [[Modest Appearance]] [[Perks|perk]] affects this.)&lt;br /&gt;
&lt;br /&gt;
==== Mutations  ====&lt;br /&gt;
Using [stat &#039;&#039;mutation/part&#039;&#039; of [&#039;&#039;target&#039;&#039;]] will retrieve the mutation present in that location.&lt;br /&gt;
:mutation/skin -- returns skin mutation&lt;br /&gt;
:mutation/head -- returns head mutation&lt;br /&gt;
:mutation/arms -- returns arms mutation&lt;br /&gt;
:mutation/torso -- returns torso mutation&lt;br /&gt;
:mutation/cock -- returns groin mutation&lt;br /&gt;
:mutation/legs -- returns legs mutation&lt;br /&gt;
&lt;br /&gt;
=== Other Values ===&lt;br /&gt;
These values do not need to be proceeded by &#039;stat&#039;. use &amp;quot;&#039;&#039;value&#039;&#039; of [&#039;&#039;target&#039;&#039;]&amp;quot;.&lt;br /&gt;
:hp -- shows the percentage of total HP. A target at 50% health will return &#039;50&#039;. (To get raw HP, use &#039;[stat HP of [&#039;&#039;target&#039;&#039;]&#039;) Will return 0 or 100 after mentoring up/down until the next reg &#039;tick&#039;.&lt;br /&gt;
::When writing forms, use [if [hp of [loser]] &amp;gt; x] in Defeat messages and [if [hp of [victor]] &amp;gt; x] in Victory messages. This allows you to change text according to remaining HP, and, if x = 0, allows you you to create a message that triggers only when submitting.&lt;br /&gt;
:pregnant -- returns pregnancy value as 0 or 1 (pregnant).  &lt;br /&gt;
:[skin] -- returns the primary user&#039;s short skin description, primary user can be tricky at times, safest to use in descs and transformations. (better to use mutation/skin)&lt;br /&gt;
:freecred -- returns target&#039;s freecred balance&lt;br /&gt;
:level -- returns target&#039;s true level&lt;br /&gt;
:mentor -- returns target&#039;s mentored level&lt;br /&gt;
:[legs] -- informs the game that legs are being accounted for in this description (such as in a tauric ass infection), and omits the normal legs from the automatic description.&lt;br /&gt;
:[breastdesc] -- informs the game that you are describing the breasts in this description, and subsequently omits the &amp;quot;He/she has X Y-sized breasts&amp;quot; part of the automatic description.&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
&lt;br /&gt;
You can check for certain features in a target using [[flags]].&lt;br /&gt;
[if (flag) present in [target]]You have something that&#039;s (flag).[end if]&lt;br /&gt;
For a list of available flags to check for, see the [[flags|flag list]].&lt;br /&gt;
&lt;br /&gt;
=== Workarounds or Other Tricks ===&lt;br /&gt;
&lt;br /&gt;
These are some workarounds to use for interesting or unique parsing situations.&lt;br /&gt;
:Because [if [target] is [player]] has been deprecated, a known workaround is using an evaluation that checks for: [if stat month of [player]&amp;gt;0] since only player entities have that stat.&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
SP provides a few simple functions for data processing.&lt;br /&gt;
&lt;br /&gt;
=== Tests ===&lt;br /&gt;
:If-Then tests are formatted as [if X]string 1[else]string 2[end if].&lt;br /&gt;
::You do not need to include [else], but you must finish with [end if].&lt;br /&gt;
::To test multiple items in one check use [if a and b and c].&lt;br /&gt;
::You can nest if-thens, but remember your [end if]s.&lt;br /&gt;
:Comparisons&lt;br /&gt;
::[if X is Y] or [if X is not Y]&lt;br /&gt;
::[if stat (stat name) of [target] = (string)]&lt;br /&gt;
::[if stat (stat name) of [target] == (number)]&lt;br /&gt;
::[if stat (stat name) of [target] &amp;gt; (number)]&lt;br /&gt;
::[if stat (stat name) of [target] &amp;lt; (number)] -- Do stat comparisons!&lt;br /&gt;
:[if (power name) owned by [target]] -- Test for a power.&lt;br /&gt;
:Test sex&lt;br /&gt;
::[if [target] is male] -- Does [target] have a cock?&lt;br /&gt;
::[if [target] is female] -- Does [target] have a pussy?&lt;br /&gt;
::[if [target] is not male] and [if [target] is not female] -- Testing for absence of cock/pussy.&lt;br /&gt;
::[if [target] is neuter] -- Is [target] neuter?&lt;br /&gt;
::[if [target] is herm] -- Is [target] a herm?&lt;br /&gt;
:Test gender (accounts for appearance merits before checking sex - use for appearance)&lt;br /&gt;
::[if [target] is masculine] -- Does the [target] look male?&lt;br /&gt;
::[if [target] is feminine] -- Does the [target] look female?&lt;br /&gt;
::[if [target] is hermy] -- Does the [target] look hermaphroditic?&lt;br /&gt;
::[if [target] is neutral] -- Does the [target] look neuter?&lt;br /&gt;
:Test fertility&lt;br /&gt;
::[if [target] is fertile] -- Non-females cannot be fertile and will always fail this test.&lt;br /&gt;
&lt;br /&gt;
=== Randoms ===&lt;br /&gt;
[one of]X[or]Y[or]Z[at random]&lt;br /&gt;
*Generates one of the specified values at random.&lt;br /&gt;
[random X to Y]&lt;br /&gt;
*Generates a number between X and Y.&lt;br /&gt;
&lt;br /&gt;
=== Nesting ===&lt;br /&gt;
You may nest [if ][end if] and [one of][or][at random] sections.&lt;br /&gt;
&lt;br /&gt;
:[if [player] is male]I&#039;m a boy[if [player] is female] and a girl[end if]![end if]&lt;br /&gt;
&lt;br /&gt;
== Colors ==&lt;br /&gt;
You can add color to your text. (Also works with @emit command.)&lt;br /&gt;
:Surround the color name in carets (for example, ^red^), then return to normal with ^normal^. Note that colors are escaped on a per-line basis. You should never end a line in ^normal^ after the last character.&lt;br /&gt;
:Valid colors: Red, blue, green, cyan, yellow, brown, black, white, gray, possibly others. Use &#039;colors&#039; command to see full list.&lt;br /&gt;
:You can also use ^bold^, ^italics^, and ^underline^. ^blink^ appears as normal italics in most clients and is strongly discouraged.&lt;br /&gt;
&lt;br /&gt;
== Advanced Code ==&lt;br /&gt;
&lt;br /&gt;
These will not work in personal or room descriptions. Mostly for use in creature creation and other NPC scripts.&lt;br /&gt;
&lt;br /&gt;
Functions&lt;br /&gt;
:[increase the (stat) of [target] by (number)] -- Modify stats, negative numbers are cool. Whole numbers only.&lt;br /&gt;
:[impregnate [target1] with [target2]] -- Causes a chance for babies. The first is the mother. Both need proper parts.&lt;br /&gt;
:[end] -- Used in defeat# and victory# to end the processing in that block if [end] remains after displaying that block.&lt;br /&gt;
::ONLY use [end] for multi-line Victory/Defeat Messages! These are not necessary unless you require a line break.&lt;br /&gt;
&lt;br /&gt;
Targets&lt;br /&gt;
:[here] -- Used to identify the room (not its name, its DB ref).&lt;br /&gt;
&lt;br /&gt;
== Limits ==&lt;br /&gt;
String Parsing &#039;&#039;cannot&#039;&#039;:&lt;br /&gt;
* Test for combat.&lt;br /&gt;
* Message other players or provide other output.&lt;br /&gt;
&lt;br /&gt;
== Example Code  ==&lt;br /&gt;
&lt;br /&gt;
=== NPC Name Tracking ===&lt;br /&gt;
By Damaged:&lt;br /&gt;
You want to say, have a particular name hang about, on the player, so that once they have given in&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;Oh, [if stat Fox/Name of [player] does exist][player]!&amp;quot; [if stat Fox/Name of [player] == 1]Lilly[else if stat Fox/Name of [player] == 2]Michelle[else if stat Fox/Name of [player] == 3]Jenny[end if] says, &amp;quot;It&#039;s Tuesday again[else]have we not met? My name is [one of]Lilly[set the Fox/Name of [player] to 1][or]Michelle[set the Fox/Name of [player] to 2][or]Jenny[set the Fox/Name of [player] to 3][at random], and I am going to fuck you nine ways from Tuesday[end if]!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note that you MUST use &#039;formstat/Monster Name/statname&#039; if you set this via a monster. Use [set the formstat/Monster Name/statname of [target] to x] as the write-function syntax and [stat formstat/Monster Name/statname of [target]] as the read-function.&lt;br /&gt;
&lt;br /&gt;
=== Set player color ===&lt;br /&gt;
by Damaged:&lt;br /&gt;
&lt;br /&gt;
Goo Girl skin transform: A ripple of tingles rushes through your entire body as you sink towards the ground, then rise again, wobbling along the way. A glance at a hand shows that you can see right through your now [set the formstat/Goo Girl/texture of player to [one of]jellied[or]gelatine like[or]translucent[at random]] [set the formstat/Goo Girl/color of player to [one of]blue[or]red[or]purple[at random]]&lt;br /&gt;
&lt;br /&gt;
== Deprecated Code ==&lt;br /&gt;
&lt;br /&gt;
These functions and items do not work anymore, but are listed for legacy purposes.&lt;br /&gt;
&lt;br /&gt;
:[infect [target] with (infection name) at (number)] -- once had a (number)% chance of infecting the named person with the named infection. This is now done by default in Defeat scenes.&lt;br /&gt;
:[otherwise] -- used to be a synonym for [else], but deprecated due to performance concerns.&lt;br /&gt;
:[infected] -- used to be a [target] attribute, similar to [player].&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
[http://web.flexiblesurvival.com/viewtopic.php?f=9&amp;amp;t=218 Damage&#039;s Original &#039;Guides&#039; post] &#039;&#039;&#039;Not up-to-date information.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://dl.dropbox.com/u/40286482/FS%20string%20parser.zip Notepad++ contextual plugin, courtesy of Kaytlin]&lt;br /&gt;
&lt;br /&gt;
[https://atom.io/packages/language-flexiblesurvival Syntax highlighter] for the [https://atom.io/ atom.io] editor by [[User:Inutt|Inutt]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Guides]][[Category:Code]]&lt;/div&gt;</summary>
		<author><name>Jetharius</name></author>
	</entry>
	<entry>
		<id>https://wiki.flexiblesurvival.com/index.php?title=String_Parsing&amp;diff=1452315</id>
		<title>String Parsing</title>
		<link rel="alternate" type="text/html" href="https://wiki.flexiblesurvival.com/index.php?title=String_Parsing&amp;diff=1452315"/>
		<updated>2020-03-18T13:18:29Z</updated>

		<summary type="html">&lt;p&gt;Jetharius: /* Workaround or Other Tricks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt; String Parsing (SP) refers to some of the underlying guts of the MUCK. You can use it to liven up your creature submissions, rooms, and even your own description. While it&#039;s a bit limited in power compared to other languages, it&#039;s easy to read and learn. &lt;br /&gt;
If you&#039;re new to programming, it&#039;s recommended you use notepad to work in. This lets you save your files locally in case of a disconnect, and avoids weird formatting issues that sometimes pop up in Word. If you&#039;re going to be using SP heavily, look for a text editor [http://notepad-plus-plus.org/ Notepad++] and [https://dl.dropbox.com/u/40286482/FS%20string%20parser.zip language file] (Windows) or VI, eMacs, etc (Linux). *link to Fraise for Macs was broken, removed. Please add a good Mac alternative if you have a functioning link*&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STAFF NOTE: This page is maintained largely by the Flexible Survival community. Any information herein may not be relevant to the current standard of String Parsing or reflect its full feature set. Please view the in-game helpfiles on String Parsing for an additional point of reference.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Basic Syntax  ==&lt;br /&gt;
&lt;br /&gt;
=== Formatting ===&lt;br /&gt;
&lt;br /&gt;
Everything in SP is contained in brackets []. Though SP is supposedly case insensitive, it&#039;s recommended you use only lowercase.&lt;br /&gt;
&lt;br /&gt;
There should be no spaces after the leading bracket or before the trailing bracket.&lt;br /&gt;
:[like this]&lt;br /&gt;
:[ not like this ]&lt;br /&gt;
&lt;br /&gt;
Line breaks are bad. Avoid them within brackets, and within [if...][end if] sections.&lt;br /&gt;
&lt;br /&gt;
This is bad.&amp;lt;br&amp;gt;&lt;br /&gt;
:Hi [player]![if [player] is male]&amp;lt;br&amp;gt;&lt;br /&gt;
:I&#039;m a &amp;lt;br&amp;gt;&lt;br /&gt;
:boy![end if]&lt;br /&gt;
&lt;br /&gt;
This is good.&amp;lt;br&amp;gt;&lt;br /&gt;
:Hi! [player]!&amp;lt;br&amp;gt;&lt;br /&gt;
:[if [player] is male]I&#039;m a boy![end if]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
SP can retrieve, test, and display certain pieces of information about characters.&lt;br /&gt;
&lt;br /&gt;
=== Targets ===&lt;br /&gt;
&lt;br /&gt;
A Target refers to a specific character. Targets must be enclosed in their own set of brackets. A [&#039;&#039;target&#039;&#039;] by itself will return the target&#039;s name.&lt;br /&gt;
&lt;br /&gt;
:Hi [player]! &lt;br /&gt;
returns&lt;br /&gt;
:&#039;&#039;&#039;Hi Nuku!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Valid Targets:&lt;br /&gt;
:[player] - Name of character the description is on.&lt;br /&gt;
:[looker] - Name of the character viewing the description.&lt;br /&gt;
:[loser] - The loser of a fight. (For victory/defeat messages.)&lt;br /&gt;
:[victor] - The winner of a fight (For victory/defeat messages.)&lt;br /&gt;
&lt;br /&gt;
=== Pronouns ===&lt;br /&gt;
These will display the correct gender of the pronoun according to the target.&lt;br /&gt;
&lt;br /&gt;
Use:&lt;br /&gt;
:[&#039;&#039;pronoun&#039;&#039; of [&#039;&#039;target&#039;&#039;]]&lt;br /&gt;
::Example: You see an employee badge hanging from [%p of [player]] coat.&lt;br /&gt;
&lt;br /&gt;
Available Pronouns&lt;br /&gt;
:%p/%P for possessive pronouns (his/her/its &amp;lt;item&amp;gt;, His/Her/Hir/Its &amp;lt;item&amp;gt;)&lt;br /&gt;
::Example: Who&#039;s book is it? It&#039;s [%p of [player]] book.&lt;br /&gt;
:%a/%A for absolute possessive pronouns (his/hers/hirs/its, His/Hers/Hirs/Its)&lt;br /&gt;
::Example: Who&#039;s book is it? It&#039;s [%a of [player]].&lt;br /&gt;
:%s/%S for subjective pronouns (he/she/shi/it, He/She/Shi/It)&lt;br /&gt;
::Example: [%S of [player]] got the book.&lt;br /&gt;
:%o/%O for objective pronouns  (him/her/hir/it, Him/Her/Hir/It)&lt;br /&gt;
::Example: The book fell on [%o of [player]].&lt;br /&gt;
:%r/%R for reflexive pronouns  (himself/herself/hirself/itself, Himself/Herself/hirself/Itself)&lt;br /&gt;
::Example: Chris did it all by [%r of [player]].&lt;br /&gt;
:%n/%N for the player&#039;s name. &#039;&#039;&#039;STAFF NOTE: Please use [player] instead.&lt;br /&gt;
::The shopkeeper&#039;s name is [%n of [player]].&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
You can check if the target owns any of the following flags:&lt;br /&gt;
:Barbed, Beaked, Candy, Clawed, Feathered, Feral, Flared, Furred, Hooved, Inorganic, Knotted, Latex, Legless, Mouthless, Multiarms, Multiheads, Oviparous, Ovipositor, Pouch, Scaled, Serpentine, Snout, Tailed, Tails, Taur, Udder, Winged&lt;br /&gt;
:Example: [if clawed present in [player]] what sharp claws they have[end if]&lt;br /&gt;
&lt;br /&gt;
To check those flags in-game, type list flags.&lt;br /&gt;
&lt;br /&gt;
=== Stats ===&lt;br /&gt;
You can use SP to retrieve information about a target using [stat &#039;&#039;stat&#039;&#039; of [&#039;&#039;target&#039;&#039;]]&lt;br /&gt;
:HP - Returns current raw HP.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[stat rut of [target]]&amp;lt;/code&amp;gt; will return the target&#039;s rut level. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;[stat pregnant of [target]]&amp;lt;/code&amp;gt; will return the target&#039;s time until birth. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;[status fertile of [target]]&amp;lt;/code&amp;gt; will return the target&#039;s heat status (either 1 or 0)&lt;br /&gt;
&lt;br /&gt;
=== Local Stats ===&lt;br /&gt;
You can create your own custom stats specific to your character, and test for them like any other in your description. &#039;&#039;&#039;lset foo=bar&#039;&#039;&#039;, and then use [local stat foo of [player]] in your parsed description.&lt;br /&gt;
&lt;br /&gt;
Custom stats of a form can be viewed by typing &#039;&#039;&#039;lstats (form here)&#039;&#039;&#039;. Mastered forms with local stats can be viewed by typing &#039;&#039;&#039;formlist #lstat&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:Example: lset eyecolor=blue will make &#039;...with piercing [if local stat eyecolor of [player] does exist][local stat eyecolor of [player]][else]defaultcolor[end if] eyes.&#039; read as &#039;...with piercing blue eyes.&#039;&lt;br /&gt;
You can also organize your values with lset something/foo=bar. &lt;br /&gt;
ALWAYS use &amp;quot;&#039;&#039;Form Name/stat&#039;&#039;&amp;quot; when submitting monsters with custom stats, like [local stat Female Husky/eyecolor of [player]]. This will help keep the user config files clean and prevent accidental overwriting of a player&#039;s other custom stats.&lt;br /&gt;
Example of local stats:&lt;br /&gt;
:lset piercings/number=three&lt;br /&gt;
:lset piercings/type=silver&lt;br /&gt;
:lset piercings/side=left&lt;br /&gt;
&lt;br /&gt;
&amp;quot;They have [local stat piercings/number of [player]] [local stat piercings/type of [player]] rings in their [local stat piercings/side of [player]] ear.&amp;quot; will now read as &amp;quot;They have three silver rings in their left ear.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Body Parts ===&lt;br /&gt;
You can retrieve the numerical value of body parts with [stat &#039;&#039;part&#039;&#039; of [&#039;&#039;target&#039;&#039;]]&lt;br /&gt;
:Breasts -- number of breasts&lt;br /&gt;
:Breast Size -- returned as a numerical value (1, 2, 3) &#039;&#039;not&#039;&#039; cup size.&lt;br /&gt;
:Cocks -- number of cocks&lt;br /&gt;
:Cock Length&lt;br /&gt;
:Ball Size&lt;br /&gt;
:Cunts -- number of cunts&lt;br /&gt;
:Cunt Length -- depth of cunt&lt;br /&gt;
&lt;br /&gt;
(Not sure how [[Modest Appearance]] [[Perks|perk]] affects this.)&lt;br /&gt;
&lt;br /&gt;
==== Mutations  ====&lt;br /&gt;
Using [stat &#039;&#039;mutation/part&#039;&#039; of [&#039;&#039;target&#039;&#039;]] will retrieve the mutation present in that location.&lt;br /&gt;
:mutation/skin -- returns skin mutation&lt;br /&gt;
:mutation/head -- returns head mutation&lt;br /&gt;
:mutation/arms -- returns arms mutation&lt;br /&gt;
:mutation/torso -- returns torso mutation&lt;br /&gt;
:mutation/cock -- returns groin mutation&lt;br /&gt;
:mutation/legs -- returns legs mutation&lt;br /&gt;
&lt;br /&gt;
=== Other Values ===&lt;br /&gt;
These values do not need to be proceeded by &#039;stat&#039;. use &amp;quot;&#039;&#039;value&#039;&#039; of [&#039;&#039;target&#039;&#039;]&amp;quot;.&lt;br /&gt;
:hp -- shows the percentage of total HP. A target at 50% health will return &#039;50&#039;. (To get raw HP, use &#039;[stat HP of [&#039;&#039;target&#039;&#039;]&#039;) Will return 0 or 100 after mentoring up/down until the next reg &#039;tick&#039;.&lt;br /&gt;
::When writing forms, use [if [hp of [loser]] &amp;gt; x] in Defeat messages and [if [hp of [victor]] &amp;gt; x] in Victory messages. This allows you to change text according to remaining HP, and, if x = 0, allows you you to create a message that triggers only when submitting.&lt;br /&gt;
:pregnant -- returns pregnancy value as 0 or 1 (pregnant).  &lt;br /&gt;
:[skin] -- returns the primary user&#039;s short skin description, primary user can be tricky at times, safest to use in descs and transformations. (better to use mutation/skin)&lt;br /&gt;
:freecred -- returns target&#039;s freecred balance&lt;br /&gt;
:level -- returns target&#039;s true level&lt;br /&gt;
:mentor -- returns target&#039;s mentored level&lt;br /&gt;
:[legs] -- informs the game that legs are being accounted for in this description (such as in a tauric ass infection), and omits the normal legs from the automatic description.&lt;br /&gt;
:[breastdesc] -- informs the game that you are describing the breasts in this description, and subsequently omits the &amp;quot;He/she has X Y-sized breasts&amp;quot; part of the automatic description.&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
&lt;br /&gt;
You can check for certain features in a target using [[flags]].&lt;br /&gt;
[if (flag) present in [target]]You have something that&#039;s (flag).[end if]&lt;br /&gt;
For a list of available flags to check for, see the [[flags|flag list]].&lt;br /&gt;
&lt;br /&gt;
=== Workarounds or Other Tricks ===&lt;br /&gt;
&lt;br /&gt;
These are some workaround to use for interesting or unique parsing situations.&lt;br /&gt;
:Because [if [target] is [player]] has been deprecated a known workaround is using an evaluation that checks for [if stat month of [player]&amp;gt;0] since only player entities have that stat.&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
SP provides a few simple functions for data processing.&lt;br /&gt;
&lt;br /&gt;
=== Tests ===&lt;br /&gt;
:If-Then tests are formatted as [if X]string 1[else]string 2[end if].&lt;br /&gt;
::You do not need to include [else], but you must finish with [end if].&lt;br /&gt;
::To test multiple items in one check use [if a and b and c].&lt;br /&gt;
::You can nest if-thens, but remember your [end if]s.&lt;br /&gt;
:Comparisons&lt;br /&gt;
::[if X is Y] or [if X is not Y]&lt;br /&gt;
::[if stat (stat name) of [target] = (string)]&lt;br /&gt;
::[if stat (stat name) of [target] == (number)]&lt;br /&gt;
::[if stat (stat name) of [target] &amp;gt; (number)]&lt;br /&gt;
::[if stat (stat name) of [target] &amp;lt; (number)] -- Do stat comparisons!&lt;br /&gt;
:[if (power name) owned by [target]] -- Test for a power.&lt;br /&gt;
:Test sex&lt;br /&gt;
::[if [target] is male] -- Does [target] have a cock?&lt;br /&gt;
::[if [target] is female] -- Does [target] have a pussy?&lt;br /&gt;
::[if [target] is not male] and [if [target] is not female] -- Testing for absence of cock/pussy.&lt;br /&gt;
::[if [target] is neuter] -- Is [target] neuter?&lt;br /&gt;
::[if [target] is herm] -- Is [target] a herm?&lt;br /&gt;
:Test gender (accounts for appearance merits before checking sex - use for appearance)&lt;br /&gt;
::[if [target] is masculine] -- Does the [target] look male?&lt;br /&gt;
::[if [target] is feminine] -- Does the [target] look female?&lt;br /&gt;
::[if [target] is hermy] -- Does the [target] look hermaphroditic?&lt;br /&gt;
::[if [target] is neutral] -- Does the [target] look neuter?&lt;br /&gt;
:Test fertility&lt;br /&gt;
::[if [target] is fertile] -- Non-females cannot be fertile and will always fail this test.&lt;br /&gt;
&lt;br /&gt;
=== Randoms ===&lt;br /&gt;
[one of]X[or]Y[or]Z[at random]&lt;br /&gt;
*Generates one of the specified values at random.&lt;br /&gt;
[random X to Y]&lt;br /&gt;
*Generates a number between X and Y.&lt;br /&gt;
&lt;br /&gt;
=== Nesting ===&lt;br /&gt;
You may nest [if ][end if] and [one of][or][at random] sections.&lt;br /&gt;
&lt;br /&gt;
:[if [player] is male]I&#039;m a boy[if [player] is female] and a girl[end if]![end if]&lt;br /&gt;
&lt;br /&gt;
== Colors ==&lt;br /&gt;
You can add color to your text. (Also works with @emit command.)&lt;br /&gt;
:Surround the color name in carets (for example, ^red^), then return to normal with ^normal^. Note that colors are escaped on a per-line basis. You should never end a line in ^normal^ after the last character.&lt;br /&gt;
:Valid colors: Red, blue, green, cyan, yellow, brown, black, white, gray, possibly others. Use &#039;colors&#039; command to see full list.&lt;br /&gt;
:You can also use ^bold^, ^italics^, and ^underline^. ^blink^ appears as normal italics in most clients and is strongly discouraged.&lt;br /&gt;
&lt;br /&gt;
== Advanced Code ==&lt;br /&gt;
&lt;br /&gt;
These will not work in personal or room descriptions. Mostly for use in creature creation and other NPC scripts.&lt;br /&gt;
&lt;br /&gt;
Functions&lt;br /&gt;
:[increase the (stat) of [target] by (number)] -- Modify stats, negative numbers are cool. Whole numbers only.&lt;br /&gt;
:[impregnate [target1] with [target2]] -- Causes a chance for babies. The first is the mother. Both need proper parts.&lt;br /&gt;
:[end] -- Used in defeat# and victory# to end the processing in that block if [end] remains after displaying that block.&lt;br /&gt;
::ONLY use [end] for multi-line Victory/Defeat Messages! These are not necessary unless you require a line break.&lt;br /&gt;
&lt;br /&gt;
Targets&lt;br /&gt;
:[here] -- Used to identify the room (not its name, its DB ref).&lt;br /&gt;
&lt;br /&gt;
== Limits ==&lt;br /&gt;
String Parsing &#039;&#039;cannot&#039;&#039;:&lt;br /&gt;
* Test for combat.&lt;br /&gt;
* Message other players or provide other output.&lt;br /&gt;
&lt;br /&gt;
== Example Code  ==&lt;br /&gt;
&lt;br /&gt;
=== NPC Name Tracking ===&lt;br /&gt;
By Damaged:&lt;br /&gt;
You want to say, have a particular name hang about, on the player, so that once they have given in&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;Oh, [if stat Fox/Name of [player] does exist][player]!&amp;quot; [if stat Fox/Name of [player] == 1]Lilly[else if stat Fox/Name of [player] == 2]Michelle[else if stat Fox/Name of [player] == 3]Jenny[end if] says, &amp;quot;It&#039;s Tuesday again[else]have we not met? My name is [one of]Lilly[set the Fox/Name of [player] to 1][or]Michelle[set the Fox/Name of [player] to 2][or]Jenny[set the Fox/Name of [player] to 3][at random], and I am going to fuck you nine ways from Tuesday[end if]!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note that you MUST use &#039;formstat/Monster Name/statname&#039; if you set this via a monster. Use [set the formstat/Monster Name/statname of [target] to x] as the write-function syntax and [stat formstat/Monster Name/statname of [target]] as the read-function.&lt;br /&gt;
&lt;br /&gt;
=== Set player color ===&lt;br /&gt;
by Damaged:&lt;br /&gt;
&lt;br /&gt;
Goo Girl skin transform: A ripple of tingles rushes through your entire body as you sink towards the ground, then rise again, wobbling along the way. A glance at a hand shows that you can see right through your now [set the formstat/Goo Girl/texture of player to [one of]jellied[or]gelatine like[or]translucent[at random]] [set the formstat/Goo Girl/color of player to [one of]blue[or]red[or]purple[at random]]&lt;br /&gt;
&lt;br /&gt;
== Deprecated Code ==&lt;br /&gt;
&lt;br /&gt;
These functions and items do not work anymore, but are listed for legacy purposes.&lt;br /&gt;
&lt;br /&gt;
:[infect [target] with (infection name) at (number)] -- once had a (number)% chance of infecting the named person with the named infection. This is now done by default in Defeat scenes.&lt;br /&gt;
:[otherwise] -- used to be a synonym for [else], but deprecated due to performance concerns.&lt;br /&gt;
:[infected] -- used to be a [target] attribute, similar to [player].&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
[http://web.flexiblesurvival.com/viewtopic.php?f=9&amp;amp;t=218 Damage&#039;s Original &#039;Guides&#039; post] &#039;&#039;&#039;Not up-to-date information.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://dl.dropbox.com/u/40286482/FS%20string%20parser.zip Notepad++ contextual plugin, courtesy of Kaytlin]&lt;br /&gt;
&lt;br /&gt;
[https://atom.io/packages/language-flexiblesurvival Syntax highlighter] for the [https://atom.io/ atom.io] editor by [[User:Inutt|Inutt]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Guides]][[Category:Code]]&lt;/div&gt;</summary>
		<author><name>Jetharius</name></author>
	</entry>
	<entry>
		<id>https://wiki.flexiblesurvival.com/index.php?title=String_Parsing&amp;diff=1452314</id>
		<title>String Parsing</title>
		<link rel="alternate" type="text/html" href="https://wiki.flexiblesurvival.com/index.php?title=String_Parsing&amp;diff=1452314"/>
		<updated>2020-03-18T13:18:16Z</updated>

		<summary type="html">&lt;p&gt;Jetharius: /* Variables */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt; String Parsing (SP) refers to some of the underlying guts of the MUCK. You can use it to liven up your creature submissions, rooms, and even your own description. While it&#039;s a bit limited in power compared to other languages, it&#039;s easy to read and learn. &lt;br /&gt;
If you&#039;re new to programming, it&#039;s recommended you use notepad to work in. This lets you save your files locally in case of a disconnect, and avoids weird formatting issues that sometimes pop up in Word. If you&#039;re going to be using SP heavily, look for a text editor [http://notepad-plus-plus.org/ Notepad++] and [https://dl.dropbox.com/u/40286482/FS%20string%20parser.zip language file] (Windows) or VI, eMacs, etc (Linux). *link to Fraise for Macs was broken, removed. Please add a good Mac alternative if you have a functioning link*&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STAFF NOTE: This page is maintained largely by the Flexible Survival community. Any information herein may not be relevant to the current standard of String Parsing or reflect its full feature set. Please view the in-game helpfiles on String Parsing for an additional point of reference.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Basic Syntax  ==&lt;br /&gt;
&lt;br /&gt;
=== Formatting ===&lt;br /&gt;
&lt;br /&gt;
Everything in SP is contained in brackets []. Though SP is supposedly case insensitive, it&#039;s recommended you use only lowercase.&lt;br /&gt;
&lt;br /&gt;
There should be no spaces after the leading bracket or before the trailing bracket.&lt;br /&gt;
:[like this]&lt;br /&gt;
:[ not like this ]&lt;br /&gt;
&lt;br /&gt;
Line breaks are bad. Avoid them within brackets, and within [if...][end if] sections.&lt;br /&gt;
&lt;br /&gt;
This is bad.&amp;lt;br&amp;gt;&lt;br /&gt;
:Hi [player]![if [player] is male]&amp;lt;br&amp;gt;&lt;br /&gt;
:I&#039;m a &amp;lt;br&amp;gt;&lt;br /&gt;
:boy![end if]&lt;br /&gt;
&lt;br /&gt;
This is good.&amp;lt;br&amp;gt;&lt;br /&gt;
:Hi! [player]!&amp;lt;br&amp;gt;&lt;br /&gt;
:[if [player] is male]I&#039;m a boy![end if]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
SP can retrieve, test, and display certain pieces of information about characters.&lt;br /&gt;
&lt;br /&gt;
=== Targets ===&lt;br /&gt;
&lt;br /&gt;
A Target refers to a specific character. Targets must be enclosed in their own set of brackets. A [&#039;&#039;target&#039;&#039;] by itself will return the target&#039;s name.&lt;br /&gt;
&lt;br /&gt;
:Hi [player]! &lt;br /&gt;
returns&lt;br /&gt;
:&#039;&#039;&#039;Hi Nuku!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Valid Targets:&lt;br /&gt;
:[player] - Name of character the description is on.&lt;br /&gt;
:[looker] - Name of the character viewing the description.&lt;br /&gt;
:[loser] - The loser of a fight. (For victory/defeat messages.)&lt;br /&gt;
:[victor] - The winner of a fight (For victory/defeat messages.)&lt;br /&gt;
&lt;br /&gt;
=== Pronouns ===&lt;br /&gt;
These will display the correct gender of the pronoun according to the target.&lt;br /&gt;
&lt;br /&gt;
Use:&lt;br /&gt;
:[&#039;&#039;pronoun&#039;&#039; of [&#039;&#039;target&#039;&#039;]]&lt;br /&gt;
::Example: You see an employee badge hanging from [%p of [player]] coat.&lt;br /&gt;
&lt;br /&gt;
Available Pronouns&lt;br /&gt;
:%p/%P for possessive pronouns (his/her/its &amp;lt;item&amp;gt;, His/Her/Hir/Its &amp;lt;item&amp;gt;)&lt;br /&gt;
::Example: Who&#039;s book is it? It&#039;s [%p of [player]] book.&lt;br /&gt;
:%a/%A for absolute possessive pronouns (his/hers/hirs/its, His/Hers/Hirs/Its)&lt;br /&gt;
::Example: Who&#039;s book is it? It&#039;s [%a of [player]].&lt;br /&gt;
:%s/%S for subjective pronouns (he/she/shi/it, He/She/Shi/It)&lt;br /&gt;
::Example: [%S of [player]] got the book.&lt;br /&gt;
:%o/%O for objective pronouns  (him/her/hir/it, Him/Her/Hir/It)&lt;br /&gt;
::Example: The book fell on [%o of [player]].&lt;br /&gt;
:%r/%R for reflexive pronouns  (himself/herself/hirself/itself, Himself/Herself/hirself/Itself)&lt;br /&gt;
::Example: Chris did it all by [%r of [player]].&lt;br /&gt;
:%n/%N for the player&#039;s name. &#039;&#039;&#039;STAFF NOTE: Please use [player] instead.&lt;br /&gt;
::The shopkeeper&#039;s name is [%n of [player]].&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
You can check if the target owns any of the following flags:&lt;br /&gt;
:Barbed, Beaked, Candy, Clawed, Feathered, Feral, Flared, Furred, Hooved, Inorganic, Knotted, Latex, Legless, Mouthless, Multiarms, Multiheads, Oviparous, Ovipositor, Pouch, Scaled, Serpentine, Snout, Tailed, Tails, Taur, Udder, Winged&lt;br /&gt;
:Example: [if clawed present in [player]] what sharp claws they have[end if]&lt;br /&gt;
&lt;br /&gt;
To check those flags in-game, type list flags.&lt;br /&gt;
&lt;br /&gt;
=== Stats ===&lt;br /&gt;
You can use SP to retrieve information about a target using [stat &#039;&#039;stat&#039;&#039; of [&#039;&#039;target&#039;&#039;]]&lt;br /&gt;
:HP - Returns current raw HP.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[stat rut of [target]]&amp;lt;/code&amp;gt; will return the target&#039;s rut level. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;[stat pregnant of [target]]&amp;lt;/code&amp;gt; will return the target&#039;s time until birth. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;[status fertile of [target]]&amp;lt;/code&amp;gt; will return the target&#039;s heat status (either 1 or 0)&lt;br /&gt;
&lt;br /&gt;
=== Local Stats ===&lt;br /&gt;
You can create your own custom stats specific to your character, and test for them like any other in your description. &#039;&#039;&#039;lset foo=bar&#039;&#039;&#039;, and then use [local stat foo of [player]] in your parsed description.&lt;br /&gt;
&lt;br /&gt;
Custom stats of a form can be viewed by typing &#039;&#039;&#039;lstats (form here)&#039;&#039;&#039;. Mastered forms with local stats can be viewed by typing &#039;&#039;&#039;formlist #lstat&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:Example: lset eyecolor=blue will make &#039;...with piercing [if local stat eyecolor of [player] does exist][local stat eyecolor of [player]][else]defaultcolor[end if] eyes.&#039; read as &#039;...with piercing blue eyes.&#039;&lt;br /&gt;
You can also organize your values with lset something/foo=bar. &lt;br /&gt;
ALWAYS use &amp;quot;&#039;&#039;Form Name/stat&#039;&#039;&amp;quot; when submitting monsters with custom stats, like [local stat Female Husky/eyecolor of [player]]. This will help keep the user config files clean and prevent accidental overwriting of a player&#039;s other custom stats.&lt;br /&gt;
Example of local stats:&lt;br /&gt;
:lset piercings/number=three&lt;br /&gt;
:lset piercings/type=silver&lt;br /&gt;
:lset piercings/side=left&lt;br /&gt;
&lt;br /&gt;
&amp;quot;They have [local stat piercings/number of [player]] [local stat piercings/type of [player]] rings in their [local stat piercings/side of [player]] ear.&amp;quot; will now read as &amp;quot;They have three silver rings in their left ear.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Body Parts ===&lt;br /&gt;
You can retrieve the numerical value of body parts with [stat &#039;&#039;part&#039;&#039; of [&#039;&#039;target&#039;&#039;]]&lt;br /&gt;
:Breasts -- number of breasts&lt;br /&gt;
:Breast Size -- returned as a numerical value (1, 2, 3) &#039;&#039;not&#039;&#039; cup size.&lt;br /&gt;
:Cocks -- number of cocks&lt;br /&gt;
:Cock Length&lt;br /&gt;
:Ball Size&lt;br /&gt;
:Cunts -- number of cunts&lt;br /&gt;
:Cunt Length -- depth of cunt&lt;br /&gt;
&lt;br /&gt;
(Not sure how [[Modest Appearance]] [[Perks|perk]] affects this.)&lt;br /&gt;
&lt;br /&gt;
==== Mutations  ====&lt;br /&gt;
Using [stat &#039;&#039;mutation/part&#039;&#039; of [&#039;&#039;target&#039;&#039;]] will retrieve the mutation present in that location.&lt;br /&gt;
:mutation/skin -- returns skin mutation&lt;br /&gt;
:mutation/head -- returns head mutation&lt;br /&gt;
:mutation/arms -- returns arms mutation&lt;br /&gt;
:mutation/torso -- returns torso mutation&lt;br /&gt;
:mutation/cock -- returns groin mutation&lt;br /&gt;
:mutation/legs -- returns legs mutation&lt;br /&gt;
&lt;br /&gt;
=== Other Values ===&lt;br /&gt;
These values do not need to be proceeded by &#039;stat&#039;. use &amp;quot;&#039;&#039;value&#039;&#039; of [&#039;&#039;target&#039;&#039;]&amp;quot;.&lt;br /&gt;
:hp -- shows the percentage of total HP. A target at 50% health will return &#039;50&#039;. (To get raw HP, use &#039;[stat HP of [&#039;&#039;target&#039;&#039;]&#039;) Will return 0 or 100 after mentoring up/down until the next reg &#039;tick&#039;.&lt;br /&gt;
::When writing forms, use [if [hp of [loser]] &amp;gt; x] in Defeat messages and [if [hp of [victor]] &amp;gt; x] in Victory messages. This allows you to change text according to remaining HP, and, if x = 0, allows you you to create a message that triggers only when submitting.&lt;br /&gt;
:pregnant -- returns pregnancy value as 0 or 1 (pregnant).  &lt;br /&gt;
:[skin] -- returns the primary user&#039;s short skin description, primary user can be tricky at times, safest to use in descs and transformations. (better to use mutation/skin)&lt;br /&gt;
:freecred -- returns target&#039;s freecred balance&lt;br /&gt;
:level -- returns target&#039;s true level&lt;br /&gt;
:mentor -- returns target&#039;s mentored level&lt;br /&gt;
:[legs] -- informs the game that legs are being accounted for in this description (such as in a tauric ass infection), and omits the normal legs from the automatic description.&lt;br /&gt;
:[breastdesc] -- informs the game that you are describing the breasts in this description, and subsequently omits the &amp;quot;He/she has X Y-sized breasts&amp;quot; part of the automatic description.&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
&lt;br /&gt;
You can check for certain features in a target using [[flags]].&lt;br /&gt;
[if (flag) present in [target]]You have something that&#039;s (flag).[end if]&lt;br /&gt;
For a list of available flags to check for, see the [[flags|flag list]].&lt;br /&gt;
&lt;br /&gt;
=== Workaround or Other Tricks ===&lt;br /&gt;
&lt;br /&gt;
These are some workaround to use for interesting or unique parsing situations.&lt;br /&gt;
:Because [if [target] is [player]] has been deprecated a known workaround is using an evaluation that checks for [if stat month of [player]&amp;gt;0] since only player entities have that stat.&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
SP provides a few simple functions for data processing.&lt;br /&gt;
&lt;br /&gt;
=== Tests ===&lt;br /&gt;
:If-Then tests are formatted as [if X]string 1[else]string 2[end if].&lt;br /&gt;
::You do not need to include [else], but you must finish with [end if].&lt;br /&gt;
::To test multiple items in one check use [if a and b and c].&lt;br /&gt;
::You can nest if-thens, but remember your [end if]s.&lt;br /&gt;
:Comparisons&lt;br /&gt;
::[if X is Y] or [if X is not Y]&lt;br /&gt;
::[if stat (stat name) of [target] = (string)]&lt;br /&gt;
::[if stat (stat name) of [target] == (number)]&lt;br /&gt;
::[if stat (stat name) of [target] &amp;gt; (number)]&lt;br /&gt;
::[if stat (stat name) of [target] &amp;lt; (number)] -- Do stat comparisons!&lt;br /&gt;
:[if (power name) owned by [target]] -- Test for a power.&lt;br /&gt;
:Test sex&lt;br /&gt;
::[if [target] is male] -- Does [target] have a cock?&lt;br /&gt;
::[if [target] is female] -- Does [target] have a pussy?&lt;br /&gt;
::[if [target] is not male] and [if [target] is not female] -- Testing for absence of cock/pussy.&lt;br /&gt;
::[if [target] is neuter] -- Is [target] neuter?&lt;br /&gt;
::[if [target] is herm] -- Is [target] a herm?&lt;br /&gt;
:Test gender (accounts for appearance merits before checking sex - use for appearance)&lt;br /&gt;
::[if [target] is masculine] -- Does the [target] look male?&lt;br /&gt;
::[if [target] is feminine] -- Does the [target] look female?&lt;br /&gt;
::[if [target] is hermy] -- Does the [target] look hermaphroditic?&lt;br /&gt;
::[if [target] is neutral] -- Does the [target] look neuter?&lt;br /&gt;
:Test fertility&lt;br /&gt;
::[if [target] is fertile] -- Non-females cannot be fertile and will always fail this test.&lt;br /&gt;
&lt;br /&gt;
=== Randoms ===&lt;br /&gt;
[one of]X[or]Y[or]Z[at random]&lt;br /&gt;
*Generates one of the specified values at random.&lt;br /&gt;
[random X to Y]&lt;br /&gt;
*Generates a number between X and Y.&lt;br /&gt;
&lt;br /&gt;
=== Nesting ===&lt;br /&gt;
You may nest [if ][end if] and [one of][or][at random] sections.&lt;br /&gt;
&lt;br /&gt;
:[if [player] is male]I&#039;m a boy[if [player] is female] and a girl[end if]![end if]&lt;br /&gt;
&lt;br /&gt;
== Colors ==&lt;br /&gt;
You can add color to your text. (Also works with @emit command.)&lt;br /&gt;
:Surround the color name in carets (for example, ^red^), then return to normal with ^normal^. Note that colors are escaped on a per-line basis. You should never end a line in ^normal^ after the last character.&lt;br /&gt;
:Valid colors: Red, blue, green, cyan, yellow, brown, black, white, gray, possibly others. Use &#039;colors&#039; command to see full list.&lt;br /&gt;
:You can also use ^bold^, ^italics^, and ^underline^. ^blink^ appears as normal italics in most clients and is strongly discouraged.&lt;br /&gt;
&lt;br /&gt;
== Advanced Code ==&lt;br /&gt;
&lt;br /&gt;
These will not work in personal or room descriptions. Mostly for use in creature creation and other NPC scripts.&lt;br /&gt;
&lt;br /&gt;
Functions&lt;br /&gt;
:[increase the (stat) of [target] by (number)] -- Modify stats, negative numbers are cool. Whole numbers only.&lt;br /&gt;
:[impregnate [target1] with [target2]] -- Causes a chance for babies. The first is the mother. Both need proper parts.&lt;br /&gt;
:[end] -- Used in defeat# and victory# to end the processing in that block if [end] remains after displaying that block.&lt;br /&gt;
::ONLY use [end] for multi-line Victory/Defeat Messages! These are not necessary unless you require a line break.&lt;br /&gt;
&lt;br /&gt;
Targets&lt;br /&gt;
:[here] -- Used to identify the room (not its name, its DB ref).&lt;br /&gt;
&lt;br /&gt;
== Limits ==&lt;br /&gt;
String Parsing &#039;&#039;cannot&#039;&#039;:&lt;br /&gt;
* Test for combat.&lt;br /&gt;
* Message other players or provide other output.&lt;br /&gt;
&lt;br /&gt;
== Example Code  ==&lt;br /&gt;
&lt;br /&gt;
=== NPC Name Tracking ===&lt;br /&gt;
By Damaged:&lt;br /&gt;
You want to say, have a particular name hang about, on the player, so that once they have given in&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;Oh, [if stat Fox/Name of [player] does exist][player]!&amp;quot; [if stat Fox/Name of [player] == 1]Lilly[else if stat Fox/Name of [player] == 2]Michelle[else if stat Fox/Name of [player] == 3]Jenny[end if] says, &amp;quot;It&#039;s Tuesday again[else]have we not met? My name is [one of]Lilly[set the Fox/Name of [player] to 1][or]Michelle[set the Fox/Name of [player] to 2][or]Jenny[set the Fox/Name of [player] to 3][at random], and I am going to fuck you nine ways from Tuesday[end if]!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note that you MUST use &#039;formstat/Monster Name/statname&#039; if you set this via a monster. Use [set the formstat/Monster Name/statname of [target] to x] as the write-function syntax and [stat formstat/Monster Name/statname of [target]] as the read-function.&lt;br /&gt;
&lt;br /&gt;
=== Set player color ===&lt;br /&gt;
by Damaged:&lt;br /&gt;
&lt;br /&gt;
Goo Girl skin transform: A ripple of tingles rushes through your entire body as you sink towards the ground, then rise again, wobbling along the way. A glance at a hand shows that you can see right through your now [set the formstat/Goo Girl/texture of player to [one of]jellied[or]gelatine like[or]translucent[at random]] [set the formstat/Goo Girl/color of player to [one of]blue[or]red[or]purple[at random]]&lt;br /&gt;
&lt;br /&gt;
== Deprecated Code ==&lt;br /&gt;
&lt;br /&gt;
These functions and items do not work anymore, but are listed for legacy purposes.&lt;br /&gt;
&lt;br /&gt;
:[infect [target] with (infection name) at (number)] -- once had a (number)% chance of infecting the named person with the named infection. This is now done by default in Defeat scenes.&lt;br /&gt;
:[otherwise] -- used to be a synonym for [else], but deprecated due to performance concerns.&lt;br /&gt;
:[infected] -- used to be a [target] attribute, similar to [player].&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
[http://web.flexiblesurvival.com/viewtopic.php?f=9&amp;amp;t=218 Damage&#039;s Original &#039;Guides&#039; post] &#039;&#039;&#039;Not up-to-date information.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://dl.dropbox.com/u/40286482/FS%20string%20parser.zip Notepad++ contextual plugin, courtesy of Kaytlin]&lt;br /&gt;
&lt;br /&gt;
[https://atom.io/packages/language-flexiblesurvival Syntax highlighter] for the [https://atom.io/ atom.io] editor by [[User:Inutt|Inutt]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Guides]][[Category:Code]]&lt;/div&gt;</summary>
		<author><name>Jetharius</name></author>
	</entry>
	<entry>
		<id>https://wiki.flexiblesurvival.com/index.php?title=Category:Soul&amp;diff=1446082</id>
		<title>Category:Soul</title>
		<link rel="alternate" type="text/html" href="https://wiki.flexiblesurvival.com/index.php?title=Category:Soul&amp;diff=1446082"/>
		<updated>2020-01-03T06:19:50Z</updated>

		<summary type="html">&lt;p&gt;Jetharius: added how to get Monster Monarch class&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Classes replace the old Roles system. Each class provides a number of combat skills geared toward a certain combat role, such as damage-dealing, healing, tanking, buffing, or debuffing. The number of points of combat skills equals 26 for all classes. You can now also level your Class with opt-in Class Mastery. Each class is considered level 5 until you opt-in, and you can train it from level 1 up to level 10. Check out &#039;&#039;&#039;+help class levels&#039;&#039;&#039; for more info. Additionally, all classes besides Classless offer four powers, acquired at levels 15, 25, 35, and 45. If one acquires a secondary class through use of a Dual Soul Pendant in their inventory, they also acquire the level 15 and 25 powers of their secondary class, albeit at levels 30 and 50 respectively. No other qualities of the secondary class are inherited. You are not locked into a class once chosen, and can change both primary and (if you have one via a Dual Soul Pendant) secondary classes any time you are out of combat.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Classes&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Class&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Description&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Role&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Powers&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Unlock&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Anarchist]] || You just want to watch the world burn, don&#039;t ya? Even so, best to burn it in a way that you&#039;re around to see the fruits of your revolution. || Gear-focused DoT / Debuffer  || [[Guerrilla Tactics]], [[Molotov Cocktail]], [[Cookbook]], [[Improvised Explosives]] || Purchased in [Chandler Hospital]: Refugee Camp or on the web interface for 1,500 Freecreds.&lt;br /&gt;
|-&lt;br /&gt;
| [[Berserker]] || You thrive on the pain of your enemies and your own. You love being the center of attention. Let their eyes be focused on you as you lay into them. They should drink in your terrible charms before the battle&#039;s over and you&#039;ve proven victorious. || DPS / Off-Tank  || [[Last Standing]], [[Frantic Cleave]], [[Savage Slice]], [[Commanding Presence]] || Purchased in [The Golden Goat]: Bar or on the web interface for 100,000 Freecreds.&lt;br /&gt;
|-&lt;br /&gt;
| [[Blood Warrior]] || You&#039;ve abandoned all thoughts of self-preservation, of finesse. It&#039;s all about dealing as much harm as possible before you drop. Yeah, some of that blood is yours, but you don&#039;t care! || Glass Cannon DPS  || [[Burning Blood]], [[Raging Charge]], [[Agony]], [[Skull Crusher]] || Unlocked after killing yourself with betraying damage.&lt;br /&gt;
|-&lt;br /&gt;
| [[Bloody Sadist]] || You love to see them bleed. The more gaping a wound, to more you revel in their suffering. Tearing and gashing, rending and shredding, it all gives you glee to rapidly see those ruby beads sparkle in the air. || Big Hits / Repeats DPS  || [[Ripping Good Time]], [[Sadistic Glee]], [[Reaping Strokes]], [[Blood Bath]] || Purchased in the token shop for 200 reward tokens.&lt;br /&gt;
|-&lt;br /&gt;
| [[Bounty Hunter]] || Striding out on your own, hunting down your mark, living off the land and doing it your own way. This is what you were born for. You don&#039;t take orders from anyone, only your prey is what matters. You have the means, you have the skills, all you need now is a target. || Jack of Many Trades (Resilient)  || [[Thrill Of The Hunt]], [[Ambush]], [[Spring Trap]], [[Even The Odds]] || Purchased in Chandler Hospital: Refugee Camp or on the web interface for 150,000 Freecreds.&lt;br /&gt;
|-&lt;br /&gt;
| [[Brawler]] || Float like a butterfly, sting like a bee! Hit fast, quick, and just keep going until they tuck tail and run, or are a bloody mess under you. || Repeat DPS  || [[Floating Footwork]], [[Agile Footwork]], [[Sudden OneTwo]], [[Dizzying Pummel]], [[Measured Approach]], [[Haymaker]] || Purchased in [RSX Solutions]: Training and Procedures or on the web interface for 1,500 Freecreds.&lt;br /&gt;
|-&lt;br /&gt;
| [[Brother&#039;s Keeper]] || Someone&#039;s always in need of assistance, and for whatever reason, it is almost always their fault. Much like Fox to Coyote, you are there to pick up the pieces and keep them going. || Single-Target Healer / Buffer  || [[Rapid Response]], [[Periodic Checks]], [[Ancient Medicines]], [[Intensive Care]] || || &lt;br /&gt;
|-&lt;br /&gt;
| [[Captivator]] || You know how to fight in a less direct manner by grabbing the attention of your enemy (or enemies) and hypnotizing them into inaction with your displays. || Opportunistic (elemental) Debuffer  || [[Too Sexy]], [[Entrance]], [[Carnal-val]], [[Flash Dance]] || Acquired by having at least 20 [[Sexual]].&lt;br /&gt;
|-&lt;br /&gt;
| [[Cheerleader]] || Even as the world falls apart, some people keep up their pep and want you to do it too! Even better, let&#039;s get everyone else cheered up when they&#039;re feeling lethargic and tired. Let&#039;s show them who&#039;s the winning team! || Support Buffer / Healer  || [[Eternal Cheer]], [[Pom Pom Sway]], [[Sudden Rally]], [[Impossible Stunt]] || Purchased in the token shop for 200 reward tokens.&lt;br /&gt;
|-&lt;br /&gt;
| [[Cihuacoatl Warrior]] || Boon to your friends, nightmare to your foes, a warrior through and through! Blending the tender care of a midwife with the brutal nature of the ancient Central American soldier, you bring a force few would wish to stand against. One many are thankful to have on their side. || Big Hits AoE / buffer  || [[Warrior Spirit]], [[Rapid Strike]], [[Battlecry]], [[Wrath of Earth Mother]] || Obtained automatically when you purchase the Ixchel Jaguar dedication and obtain the badge.&lt;br /&gt;
|-&lt;br /&gt;
| [[Classless]] || Basic class with no focus on any one aspect. || Jack of All Trades  || None || Automatically unlocked on all characters.&lt;br /&gt;
|-&lt;br /&gt;
| [[Combat Medic]] || Keep your medkit, cock, breasts, and anything else you use ready along with your knife, claws, teeth, hooves, and gun. Someone has to keep everyone else fighting. || Healer / Buffer  || [[Stimpack]], [[Do No Harm]], [[Watchful Gaze]], [[Stay with Me]], [[Surprise Shotgun]], [[Medical Grenade]] || Purchased in [RSX Solutions]: Training and Procedures or on the web interface for 1,500 Freecreds.&lt;br /&gt;
|-&lt;br /&gt;
| [[Commando]] || You&#039;re a commando. Your job is to infiltrate enemy lines, strike from within, and retreat before they can retaliate. Strategically pick off targets to soften their ranks, then let your team take care of the rest. || Single-target Repeats / DoT DPS  || [[Butcher and Bolt]], [[Suppressed Fire]], [[Knife Thrust]], [[Covering Fire]] || Purchased in [RSX Solutions]: Training and Procedures or on the web interface for 1,500 Freecreds.&lt;br /&gt;
|-&lt;br /&gt;
| [[Corporal]] || Give the command! Where to attack, how to react, and lend aid wherever you can. Give the call to battle, show the way, and provide only the best in backup! || AoE Healer / Buffer  || [[Battlefield Watch]], [[Intelligent Plans]], [[Subvert Expectations]], [[Impossible to Fail]] || Purchased in [RSX Solutions]: Training and Procedures or on the web interface for 1,500 Freecreds.&lt;br /&gt;
|-&lt;br /&gt;
| [[Cursed Lover]] || Somewhere along the way, you picked up a bit of something... strange. You can bring with your embrace or your bite a strange sensation, an odd feeling, or perhaps, something worse. There also seems to always be something strange happening to you... || Debuffer  || [[Baneful Allure]], [[Strange Aura]], [[Cursed Embrace]], [[Primal Call]] || Purchased in the hidden [[Uber Fox]] dedication store.  Check Hidden once the dedication badge has been obtained and you are actively dedicated to [[Uber Fox]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Den Keeper]] || Children, troops, machine. Whatever they are, it is up to you to direct them, and a lot of them. Bring a small army, and keep them safe. || Pet User / Healer / Buffer  || [[Motherly Advice]], [[Overlord]], [[Rallying Cry]], [[Force of Personality]], [[Motherly Vigil]], [[Personal Minion]] || Purchased in [RSX Solutions]: Training and Procedures or on the web interface for 1,500 Freecreds.&lt;br /&gt;
|-&lt;br /&gt;
| [[Desk Jockey]] || When push comes to shove, even a desk jockey can be pushed past a boiling point and get involved in combat. Their aptitude for the technical is unrivaled, but, this doesn&#039;t precisely make them to most volatile in combat. || Gear-focused Buffer  || [[Computer Nerd]], [[Stapler Fury]], [[Pocket Protector]], [[Nerd Rage]] || Purchased in the token shop for 100 reward tokens.&lt;br /&gt;
|-&lt;br /&gt;
| [[Determinator]] || You&#039;re not the fastest, you&#039;re not the strongest, but you have the will to survive and every enemy you fell keeps you going. || Vampiric AoE Repeats  || [[Leeching Aura]], [[Strong Spirit]], [[Bludgeon]], [[Rapid Fire]], [[Refuse to Die]], [[Force of Nature]] || Purchase the [[Determinator]] item in the elite shop for 20 Mako.&lt;br /&gt;
|-&lt;br /&gt;
| [[Drone Master]] || Other agents love getting messy, and so do you, but it&#039;s different. You prefer the mess happen before the fight. You slave the long hours to perfect your servants. Once you&#039;re on the field, you let them wade into the mess under your supervision. Efficiency! || Gear-focused Pet User / Buffer  || [[Deploy Lasers]], [[Security Drone]], [[Overclock]], [[Cover Me]], [[Securitron]], [[Explosive Drone]] || Purchased in the token shop for 200 reward tokens.&lt;br /&gt;
|-&lt;br /&gt;
| [[Explosives Expert]] || Sometimes, the proper answer is explosives. Still, such things cannot just be hurled without care. Precision, expertise, and a steady hand are required if you want to be alive long enough to try it again. I know it looks like anarchist fun when you have a rocket launcher on your shoulder, but there&#039;s a lot of thought behind it, like who you&#039;re going to explode today. Think on it. || Gear-focused AoE Big Hits  || [[Explosive Grip]], [[Grenade Toss]], [[Rocket Fire]], [[Artillery Call]] || Purchased in [RSX Solutions]: Training and Procedures or on the web interface for 150,000 Freecreds.&lt;br /&gt;
|-&lt;br /&gt;
| [[Flame Warden]] || You&#039;ve got this flamethrower, someone, at some point told you how to use it. It&#039;s kinda nice. It&#039;s also sorta hazardous to use. || AoE Big Hits  || [[Blazing Fury]], [[Stoke the Coals]], [[Vent Heat]], [[Self-Destruct]] || Purchase and use the [[Flame Warden]] item in the elite shop for 20 Mako.&lt;br /&gt;
|-&lt;br /&gt;
| [[Fox Magician]] || Ye of nine tails, weaver of deceptions and lies. You can lay down entire armies by striking at their heads. Those who are full of hubris and pride, they will not know they are falling until they&#039;ve already struck the ground. || Single-target DoT / Debuffer  || [[Mastered Duplicity]], [[Honeyed Words]], [[Kitsunetsuki]], [[Ward of Inari]] || &lt;br /&gt;
|-&lt;br /&gt;
| [[Frontline Soldier]] || You wear the thickest armor you can, the loudest gun on the market, and wade thick into dangerous situations under cover of your own barrage, opening the way for those behind you. Protect, Defend, Assault, that&#039;s your motto and you&#039;re sticking by it. || Technical Tank / AoE Repeats  || [[Reinforced Armor]], [[Never Stop]], [[Pinning Barrage]], [[Keep Moving]], [[Kevlar Vest]], [[Get Down]] || Purchased in [RSX Solutions]: Training and Procedures or on the web interface for 150,000 Freecreds.&lt;br /&gt;
|-&lt;br /&gt;
| [[Fullblade Edgelord]] || For some, guns are the way. For others, using their bare hands. For you? It&#039;s blades. And not just any blade, but a massive, monolithic slab of reaving metal, ready to rip and rend. You&#039;ve devoted yourself to mastering the edge with a killer&#039;s zeal. You will kill them to death with your massive blade. || Vampiric single-target Big Hits DPS  || [[Edgy Bastard]], [[Hot Topic]], [[No mercy]], [[Sanguine Massacre]] || Purchased in the token shop for 200 reward tokens.&lt;br /&gt;
|-&lt;br /&gt;
| [[Heavy Fighter]] || Hit hard, hit strong, and make every hit count! Swing the largest weapon around and show them who&#039;s boss. || Big Hits DPS  || [[Beef Up]], [[Scrapping for a Fight]], [[Random Cudgel]], [[Meet the Pavement]], [[Unstoppable]], [[Back Breaker]] || Purchased in [RSX Solutions]: Training and Procedures or on the web interface for 1,500 Freecreds.&lt;br /&gt;
|-&lt;br /&gt;
| [[Heavy Power Armor]] || Clad in the heavy armor crafted by the finest techs of Zephyr and RSX, you are technology incarnate, protected from harm, both physical and energy. With the cutting edge of innovation, what could hope to stop you? ||   || [[Armored Shell]], [[Targeting Assist]], [[Mechanical Punch]], [[Immovable]], [[Emergency Vent]], [[Restart]] || Hold a set of Nanite Power Armor in your inventory for a bit, or having the powerarmor status&lt;br /&gt;
|-&lt;br /&gt;
| [[Hedonist]] || The party-goer and ever-loving participant in revelries and decadence, the Hedonist is both hearty and quick to react for a good time. With a bit of a masochistic streak, they welcome all comers, but they are swift to reciprocate, not being a stingy lover. || DamageReturn DPS  || [[Party Life]], [[Bacchanal]], [[Vile Humour]], [[Party Never Ends]] || &lt;br /&gt;
|-&lt;br /&gt;
| [[Hell Raiser]] || It&#039;s hard to say what makes hell so prone to mischevious trouble makers, rather than the more overt kind, but clearly, sometimes in spite of their mischief, they can have a heart of gold. They are, also, unfortunately not the best at soothing pains out there. || Technical AoE DoT DPS  || [[Infernal Temper]], [[Mephitic Burst]], [[Dark Brigade]], [[Diabolitics]] || Obtained automatically after receiving the dedication badge upon purchase.&lt;br /&gt;
|-&lt;br /&gt;
| [[Heroic Outlaw]] || What others call profiteering, you call righteous plundering. The spoils of battle are yours to take, and you only take your due, ensuring your friends and allies standing on the front lines earn the greater share. Relying on a keen eye and a strict moral compass, you&#039;ve learned to stand your ground and never falter, keeping spirits high and the body count higher. || Vibrant Single-target Big Hits DPS   || [[Alms Wide Open]], [[Aim True]], [[Split the Arrow]], [[Lincoln Green]] ||  Purchased in [RSX Solutions]: Training and Procedures or on the web interface for 150,000 Freecreds.&lt;br /&gt;
|-&lt;br /&gt;
| [[Huntress]] || The Hunters of Artemis are a tight-knit community of master outdoorsmen. Tasked by the Goddess with pursuing supernatural beasts and patrol far-flung woodlands, the hunters are self-sufficient master of ambush and tracking, able to follow their quarry in the light of their goddess. || Big Hits / DoT DPS   || [[Patience]], [[Persistence]], [[Hearth &amp;amp; Home]], [[Reverence]] ||  &lt;br /&gt;
|-&lt;br /&gt;
| [[Incorrigible Jerk]] || You are a terrible, Terrible, terrible, terrible, terrible, terrible, terrible person. Not that your friends would notice. || Off-tank / DoT DPS  || [[Yer Face is...]], [[Schadenfreude]], [[Prickly Skin]], [[Yer Mom]] || Purchased in [RSX Solutions]: Training and Procedures or on the web interface for 1,500,000 Freecreds, but why would you do this?&lt;br /&gt;
|-&lt;br /&gt;
| [[Life Sapper]] || Drawn towards pulling the essence of vitality from others to suit their own nourishment and aid their allies, the Life Sappers are trained in techniques to sap the life from opponents. ||   || [[Insatiable Urges]], [[Essential Drain]], [[Dark Arts]], [[Grim Reap]] || &lt;br /&gt;
|-&lt;br /&gt;
| [[Martyr]] || This job is a pain, but for your friends, you would do anything. This is a party focused class. || Suicidal Healer, Party Focused  || [[Martyr&#039;s brand]], [[Martyr&#039;s blood]], [[Cruselfixion]], [[Surge of Fucking Dying For Your Friends]] || &lt;br /&gt;
|-&lt;br /&gt;
| [[Master Insurgent]] || Get in, get the work done, and call in the rest of the team. Or just bring the team in with you! Instead of focusing on team building though, you work to bring your enemies down a peg or two. || Pet User / Debuffer  || [[Demo Training]], [[Constant Efforts]], [[Gradual Assault]], [[Call Backup]] || Purchased in [RSX Solutions]: Training and Procedures or on the web interface for 150,000 Freecreds.&lt;br /&gt;
|-&lt;br /&gt;
| [[Midnight Templar]] || Stalwart warriors that bring terrible curses with them. Their every blow seems to come with terrible debilitation as they keep their allies safe behind their formidable shields and unwavering souls. || DoT DPS / Off-tank  || [[Dimming Curse]], [[Strengthened Soul]], [[Cruel Strike]], [[Draining Strike]], [[Cursed Armor]], [[Midnight Slash]] || Purchased in [RSX Solutions]: Training and Procedures or on the web interface for 150,000 Freecreds.&lt;br /&gt;
|-&lt;br /&gt;
| [[Milk Maiden]] || You bear a heavy burden. While for most people this would be on your back, this was not your lot in life. Your burden rides on your chest, full of sweet restoring nutrition to stave off hunger and pain in your friends. They need not fear so long as you&#039;re around. Your milk is the solution to all their problems. || Healer / Buffer  || [[Milk Cleanse]], [[Does a Body Good]], [[Calcium Enriched]], [[Pasteurization]], [[Infectious Vitality]], [[Always Whole]] || Purchased in the Cow Maiden dedication store for around 250000 freecred once you have obtained the badge for purchasing the dedication.&lt;br /&gt;
|-&lt;br /&gt;
| [[Mobster]] || You&#039;re the one in charge here, see? Everyone else is gonna be alright, see, just hang back, let you call the shots, see? You always go around with some good fellas, and you keep them safe, so long as they do what you say, see? || Pet User / Tank  || [[Mafioso Grace]], [[Unrefusable Offer]], [[Protection Racket]], [[Trouble Boys]] || Purchased in [RSX Solutions]: Training and Procedures or on the web interface for 75,000 Freecreds.&lt;br /&gt;
|-&lt;br /&gt;
| [[Monster Monarch]] || Some say size isn&#039;t everything. Some are wrong. Size. Is. Everything. You live large, and come crashing down with all the bulk you&#039;ve developed with pride and power. You may not be the fastest, but who cares? You&#039;ll be felt, that&#039;s for sure. || Single-target Big Hits DPS  || [[Atomic Hide]], [[Size is Everything]], [[Atomic Beam]], [[Belittle]], [[Toxic Breath]], [[Pinnacle of Stature]] || Kaiju Dedicant class.&lt;br /&gt;
|-&lt;br /&gt;
| [[Monstrosity]] || One enemy, several? Does it matter? They&#039;re all just targets waiting to feel your claws, fangs, and whatever other limb happens to be available to knock them down. You&#039;re a whirling vortex of destruction and moderately good at getting out of the way, but you&#039;re better able at continuing to mete out the pain while ignoring your own. || AoE Big Hits DPS  || [[Bloody Roar]], [[Will to Destroy]], [[Dance of Destruction]], [[Staggering Blow]], [[Bloodthirst]], [[Frenzied Assault]] || Purchased in [New Dawn]: Feral Training or on the web interface for 300,000 Freecreds.&lt;br /&gt;
|-&lt;br /&gt;
| [[NanoTuner]] || Your specialized training allows you to make optimal use of fortifying nanite programs. With practice, you can even gain mastery over a few programs that you can tune on the fly to deflect or augment specific forms of trauma both incoming and outgoing to keep your team operating at optimal efficiency. || Technical Buffer  || [[Specialized Defenses]], [[Specialized Offense]], [[Magnified Assault]], [[Broad Spectrum Defense]] || Purchased in [RSX Solutions]: Training and Procedures or on the web interface for 150,000 Freecreds.&lt;br /&gt;
|-&lt;br /&gt;
| [[Nekomancer]] || You are a nekomata, a cat of curses. It is unlucky to be around you, especially for your foes, as their attacks will miss at inopportune moments and their traps hardly affect you. You&#039;re often alone, but you know how to take care of yourself. || DoT DPS  || [[Cloak of Curses]], [[Cat Charm]], [[Jinx]], [[Damnation]], [[Anathematize]], [[Curiosity]] || &lt;br /&gt;
|-&lt;br /&gt;
| [[Nurturer]] || Some mutants feel the urge to tend to the needs of others, be they their children, friends, or even strangers. Soothing the aches of others makes you feel better, and calms your own raging beast for a time. || Healer / Buffer  || [[Maternal Instinct]], [[Precautious Care]], [[Encouraging Words]], [[Angry Mother]] || Purchased in [New Dawn]: Feral Training or on the web interface for 1,500 Freecreds.&lt;br /&gt;
|-&lt;br /&gt;
| [[Pack Rat]] || Rod taught us to chill out, but he also taught us when it&#039;s time to be serious. This training covers both nicely, so just sit back, relax, and let the awesome rain down on you. || Debuffer / DoT DPS  || [[Quantum Mechanics]], [[Hip]], [[Rad Turn]], [[Awesome Twist]], [[Constant Upkeep]], [[Tubular Takedown]] || Purchased in [The Mall]: Mall Rat Territory or on the web interface for 75,000 Freecreds.&lt;br /&gt;
|-&lt;br /&gt;
| [[Plague Doctor]] || You know exactly what they need, and how to make sure the most gain is had. Even better that the one who will benefit the most is yourself. || Vampiric DoT DPS  || [[Questionable Practices]], [[Miasmic Affliction]], [[Controlled Bleed]], [[Exsanguination]] || Purchase and use the [[Plague Doctor]] item in the elite shop for 20 Mako.&lt;br /&gt;
|-&lt;br /&gt;
| [[Point Man]] || Get in there, hit hard, and make mutants sorry they picked a fight with you! || Classic Tank  || [[Heavy Shield]], [[First In]], [[Last Out]], [[Never Fall]], [[Shield Smash]], [[Never Surrender]] || Purchased in [RSX Solutions]: Training and Procedures or on the web interface for 1,500 Freecreds.&lt;br /&gt;
|-&lt;br /&gt;
| [[Police Officer]] || Protect and serve is a common motto among police officers. So protecting the innocent is a calling that many still feel, and while ultimately, the application of justice is for the courts to decide, the service and needs of the people are more immediately served by officers of the law. At least, that&#039;s the ideal. Many meet their end in this role. Be careful officer. || Hybrid Buffer / Debuffer / Healer / DoT DPS  || [[Pepper Spray]], [[Protect and Serve]], [[Crime Against The Peace]], [[Emergency First Aid]], [[Kevlar Vest]], [[Tactical Consideration]] || Purchased in [RSX Solutions]: Training and Procedures or on the web interface for 7,500 Freecreds.&lt;br /&gt;
|-&lt;br /&gt;
| [[Raccoon Guardian]] || Imbued with the power of the king of Tanukis, the raccoon guardians are large and imposing, but they always have a smile. Willing to take terrible blows for their friends, they bounce it back with their large bellies and other bloated bodyparts and leave the foe sprawled on the ground and ready for their allies to mop up. || Repeats DPS / Tank / Buffer  || [[Bold Drink]], [[Beat the Drum]], [[Belly Blast]], [[Rolling Over]], [[Statue Form]], [[Mastery of Forms]] || &lt;br /&gt;
|-&lt;br /&gt;
| [[Rainbow Warrior]] || You&#039;re a paragon of justice or something, of the colorful variety. You&#039;ll sell sugary cereal and promote something or other, probably toys. || Repeats DPS / Healer  || [[Charmed Life]], [[Theme Song]], [[Flamboyant Pose]], [[Strobing Colors]], [[Transformation Sequence]], [[Rainbow Revive]] || Purchased in [RSX Solutions]: Training and Procedures or on the web interface for 10,000 Freecreds.&lt;br /&gt;
|-&lt;br /&gt;
| [[Regen Scrapper]] || Infused with the power to simply never give up, you are impressively difficult to keep down. They may land telling blows, but it just never sticks, and you&#039;re soon back on your feet and ready to continue pummeling. || Durable DPS  || [[Constant Rebalancing]], [[Fast Healing]], [[Resilience]], [[Instant Healing]], [[Active Blood]], [[Dragon Tail]] || Acquired after regenerating 13% of HP or more in a single regen tick.&lt;br /&gt;
|-&lt;br /&gt;
| [[Sniper]] || Hit hard, hit fast. Hit like a thunderstorm before they hit back, because you&#039;re not here to take hits, just dish them out, hard and fast. || Single-target Big Hits DPS  || [[Relocation]], [[Line the Shot]], [[Hold Your Breath]], [[Squeeze the Trigger]], [[Paint Target]], [[One Shot One Kill]] || Purchased in [RSX Solutions]: Training and Procedures or on the web interface for 37,500 Freecreds.&lt;br /&gt;
|-&lt;br /&gt;
| [[Social Agent]] || Fighting isn&#039;t the only way the world is going to be improved. We need people willing to talk to other people. We need doers and acters. The builds need to be erected and upkept. The fights have to be quelled. Are you ready to be a force of change? || Jack of Many Trades (roleplay focus)  || [[Gear Up]], [[Be Prepared]], [[Emergency Plans]], [[Radio Backup]] || Purchased in [RSX Solutions]: Training and Procedures or on the web interface for 150,000 Freecreds.&lt;br /&gt;
|-&lt;br /&gt;
| [[Statuesque]] || Embracing a state of statuesque beauty and refinement befitting Medusa, those trained in these methods take on the semblance of a statue in movement and durability. Able to weather assault, they deliver blows with the metered feat of a moving statue. ||   || [[Immortal Beauty]], [[Alabaster Slam]], [[Stone Cold]], [[Statuary Assault]] || &lt;br /&gt;
|-&lt;br /&gt;
| [[Stealth Ninja]] || Cloaked in the arts of Shinobi and Kiri, you&#039;ve learned the art of being the shadow, of disappearing in the corner of an eye. Those trained in this discipline value stealth and striking with deep penetration, of strategy versus heavy hits. || Back Row DPS  || [[Shadow Depth]], [[Piercing Night]], [[Choking Fog]], [[Deathblow]] || Purchased in the token shop for 200 reward tokens.&lt;br /&gt;
|-&lt;br /&gt;
| [[Storm Caller]] || For those who&#039;re already one with nature, calling down the fury of the storm becomes a second nature. Drawing on the dire elements of lightning, thunder, sleet, acid rain, and even the burning heat of raining, volcanic tears, the Storm Caller can bring on the storm. || AoE DoT  || [[Pervasive Magic]], [[Embrace Destruction]], [[Elemental Ray]], [[Elemental Blast]], [[Storm Warden]], [[Orb of Storms]] || &lt;br /&gt;
|-&lt;br /&gt;
| [[Strategist]] || You prefer brains over brawn, thinking several steps ahead for the perfect opportunity to enact the perfect maneuver to win the battle. || Buffer / Debuffer  || [[Planned Trap]], [[Marching Strategy]], [[Offensive Plan]], [[Counter Tactics]], [[Favored Terrain]], [[Master Plan]] || Purchased in [RSX Solutions]: Training and Procedures or on the web interface for 45,000 Freecreds.&lt;br /&gt;
|-&lt;br /&gt;
| [[Street Samurai]] || The Street Samurai is a master of weapons, one with extensive training often combined with carefully chosen nanite augmentation to enhance their combat potential beyond normal human limits. They often adopt codes of honor as well, from simply not harming innocent bystandards to more complex codes like bushido, as a way of holding on to their humanity in a nanite-infested world. || Technical Big Hits DPS  || [[Tranquil Acumen]], [[Windless Cut]], [[Blade Parry]], [[Setting Sun]] || Acquired by talking with Diya after dedicating to the [[Weapon Master (dedication)|Weapon Master]] dedication.&lt;br /&gt;
|-&lt;br /&gt;
| [[Tail Guard]] || Someone has to keep the riffraff out, and that&#039;s you. You decide who comes in and who has to stay out. Anyone who disagrees will find a swift trip to the pavement, with you little more than a blur. || Cover-based Off-Tank  || [[Talk to the Paw]], [[Bark and Growl]], [[Threatening Bite]], [[On All Fours]] || Obtained in the Husky Den by talking to Chris.&lt;br /&gt;
|-&lt;br /&gt;
| [[Tormentor]] || Poisons, burns, and other nasty things. Torment your foes until they grovel, beg to be forgiven! || DoT Debuffer / DPS  || [[Questionable Compound]], [[Winners do Drugs]], [[Vile concoction]], [[Poisoned Dart Spray]], [[Chemical Bath]], [[Noxious Fumes]] || Purchased in [RSX Solutions]: Training and Procedures or on the web interface for 1,500 Freecreds.&lt;br /&gt;
|-&lt;br /&gt;
| [[Tousky Party Escort]] || Everyone around you is so serious all the time! It&#039;s your job to get in there and be the center of attention. Show them how to have a good time; sooner or later, they&#039;ll get the point. || DamageReturn Tank  || [[Party Fowl]], [[Thorn to be Wild]], [[Dance Partner]], [[Guest of Honor]] || Purchased in [New Dawn]: Feral Training or on the web interface for 120,000 freecreds.&lt;br /&gt;
|-&lt;br /&gt;
| [[Tukupar Itar]] || Literally translated as &#039;Sky Coyote&#039;, and figuratively as &#039;Trickster God&#039;, Coyote&#039;s ego is larger than life, and perhaps for good reason. Managing both to debilitate foes and send them into a blind rage, it is a rare person who manages to frustrate their enemies to no end... and survive in the process. || Taunt Tank / DoT DPS  || [[That&#039;s No Moon]], [[Mail Order Madness]], [[Scattering Stars]], [[Lick Wounds]] || &lt;br /&gt;
|-&lt;br /&gt;
| [[Twilight Breaker]] || Through focus of mind and awareness born to crystalline clarity, you have gained insight into the matters of combat. This balance of mind, spirit, and body makes you formidable in combat, able to see opportunies and react quickly with deft, concentrated force, penetrating through defenses like chipping the facets away from a gem. || Single-target DoT / Debuffer  || [[Cleared Mind]], [[Cutting Edge]], [[Crystalline Clarity]], [[Calming The Storm]], [[Furious Thoughts]], [[Refractive Mind]] || Obtained by stepping into the Training Halls attached to the Dusk Dragon Shrine after purchasing the dedication and receiving the badge.&lt;br /&gt;
|-&lt;br /&gt;
| [[Wasteland Paladin]] || The knight in shining armor. The caretaker of the weak and defenseless. You are a bastion of hope to those who call you friend! || Main Tank / Healer / Vibrant Strikes DPS  || [[Defender Stance]], [[Redirection]], [[Lay on Paws]], [[Call of Vitality]] || Purchase and use the [[Wasteland Paladin]] item in the elite shop for 20 Mako.&lt;br /&gt;
|-&lt;br /&gt;
| [[Wind Blade]] || The intense speed of the messengers of Love can be harnessed into a volatile fighting class. Ever-swift, their arrows strike like slashing blades and piercing spears in harrowing assaults. || AoE Repeats DPS / Healer  || [[Dire Focus]], [[Heartfelt Arrows]], [[Showering Stars]], [[Brilliant Rain]] ||&lt;/div&gt;</summary>
		<author><name>Jetharius</name></author>
	</entry>
	<entry>
		<id>https://wiki.flexiblesurvival.com/index.php?title=String_Parsing&amp;diff=1445650</id>
		<title>String Parsing</title>
		<link rel="alternate" type="text/html" href="https://wiki.flexiblesurvival.com/index.php?title=String_Parsing&amp;diff=1445650"/>
		<updated>2019-12-29T04:21:33Z</updated>

		<summary type="html">&lt;p&gt;Jetharius: /* Flags */  fixed example code.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt; String Parsing (SP) refers to some of the underlying guts of the MUCK. You can use it to liven up your creature submissions, rooms, and even your own description. While it&#039;s a bit limited in power compared to other languages, it&#039;s easy to read and learn. &lt;br /&gt;
If you&#039;re new to programming, it&#039;s recommended you use notepad to work in. This lets you save your files locally in case of a disconnect, and avoids weird formatting issues that sometimes pop up in Word. If you&#039;re going to be using SP heavily, look for a text editor [http://notepad-plus-plus.org/ Notepad++] and [https://dl.dropbox.com/u/40286482/FS%20string%20parser.zip language file] (Windows) or VI, eMacs, etc (Linux). *link to Fraise for Macs was broken, removed. Please add a good Mac alternative if you have a functioning link*&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STAFF NOTE: This page is maintained largely by the Flexible Survival community. Any information herein may not be relevant to the current standard of String Parsing or reflect its full feature set. Please view the in-game helpfiles on String Parsing for an additional point of reference.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Basic Syntax  ==&lt;br /&gt;
&lt;br /&gt;
=== Formatting ===&lt;br /&gt;
&lt;br /&gt;
Everything in SP is contained in brackets []. Though SP is supposedly case insensitive, it&#039;s recommended you use only lowercase.&lt;br /&gt;
&lt;br /&gt;
There should be no spaces after the leading bracket or before the trailing bracket.&lt;br /&gt;
:[like this]&lt;br /&gt;
:[ not like this ]&lt;br /&gt;
&lt;br /&gt;
Line breaks are bad. Avoid them within brackets, and within [if...][end if] sections.&lt;br /&gt;
&lt;br /&gt;
This is bad.&amp;lt;br&amp;gt;&lt;br /&gt;
:Hi [player]![if [player] is male]&amp;lt;br&amp;gt;&lt;br /&gt;
:I&#039;m a &amp;lt;br&amp;gt;&lt;br /&gt;
:boy![end if]&lt;br /&gt;
&lt;br /&gt;
This is good.&amp;lt;br&amp;gt;&lt;br /&gt;
:Hi! [player]!&amp;lt;br&amp;gt;&lt;br /&gt;
:[if [player] is male]I&#039;m a boy![end if]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
SP can retrieve, test, and display certain pieces of information about characters.&lt;br /&gt;
&lt;br /&gt;
=== Targets ===&lt;br /&gt;
&lt;br /&gt;
A Target refers to a specific character. Targets must be enclosed in their own set of brackets. A [&#039;&#039;target&#039;&#039;] by itself will return the target&#039;s name.&lt;br /&gt;
&lt;br /&gt;
:Hi [player]! &lt;br /&gt;
returns&lt;br /&gt;
:&#039;&#039;&#039;Hi Nuku!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Valid Targets:&lt;br /&gt;
:[player] - Name of character the description is on.&lt;br /&gt;
:[looker] - Name of the character viewing the description.&lt;br /&gt;
:[loser] - The loser of a fight. (For victory/defeat messages.)&lt;br /&gt;
:[victor] - The winner of a fight (For victory/defeat messages.)&lt;br /&gt;
&lt;br /&gt;
=== Pronouns ===&lt;br /&gt;
These will display the correct gender of the pronoun according to the target.&lt;br /&gt;
&lt;br /&gt;
Use:&lt;br /&gt;
:[&#039;&#039;pronoun&#039;&#039; of [&#039;&#039;target&#039;&#039;]]&lt;br /&gt;
::Example: You see an employee badge hanging from [%p of [player]] coat.&lt;br /&gt;
&lt;br /&gt;
Available Pronouns&lt;br /&gt;
:%p/%P for possessive pronouns (his/her/its &amp;lt;item&amp;gt;, His/Her/Hir/Its &amp;lt;item&amp;gt;)&lt;br /&gt;
::Example: Who&#039;s book is it? It&#039;s [%p of [player]] book.&lt;br /&gt;
:%a/%A for absolute possessive pronouns (his/hers/hirs/its, His/Hers/Hirs/Its)&lt;br /&gt;
::Example: Who&#039;s book is it? It&#039;s [%a of [player]].&lt;br /&gt;
:%s/%S for subjective pronouns (he/she/shi/it, He/She/Shi/It)&lt;br /&gt;
::Example: [%S of [player]] got the book.&lt;br /&gt;
:%o/%O for objective pronouns  (him/her/hir/it, Him/Her/Hir/It)&lt;br /&gt;
::Example: The book fell on [%o of [player]].&lt;br /&gt;
:%r/%R for reflexive pronouns  (himself/herself/hirself/itself, Himself/Herself/hirself/Itself)&lt;br /&gt;
::Example: Chris did it all by [%r of [player]].&lt;br /&gt;
:%n/%N for the player&#039;s name. &#039;&#039;&#039;STAFF NOTE: Please use [player] instead.&lt;br /&gt;
::The shopkeeper&#039;s name is [%n of [player]].&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
You can check if the target owns any of the following flags:&lt;br /&gt;
:Barbed, Beaked, Candy, Clawed, Feathered, Feral, Flared, Furred, Hooved, Inorganic, Knotted, Latex, Legless, Mouthless, Multiarms, Multiheads, Oviparous, Ovipositor, Pouch, Scaled, Serpentine, Snout, Tailed, Tails, Taur, Udder, Winged&lt;br /&gt;
:Example: [if clawed present in [player]] what sharp claws they have[end if]&lt;br /&gt;
&lt;br /&gt;
To check those flags in-game, type list flags.&lt;br /&gt;
&lt;br /&gt;
=== Stats ===&lt;br /&gt;
You can use SP to retrieve information about a target using [stat &#039;&#039;stat&#039;&#039; of [&#039;&#039;target&#039;&#039;]]&lt;br /&gt;
:HP - Returns current raw HP.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[stat rut of [target]]&amp;lt;/code&amp;gt; will return the target&#039;s rut level. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;[stat pregnant of [target]]&amp;lt;/code&amp;gt; will return the target&#039;s time until birth. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;[status fertile of [target]]&amp;lt;/code&amp;gt; will return the target&#039;s heat status (either 1 or 0)&lt;br /&gt;
&lt;br /&gt;
=== Local Stats ===&lt;br /&gt;
You can create your own custom stats specific to your character, and test for them like any other in your description. &#039;&#039;&#039;lset foo=bar&#039;&#039;&#039;, and then use [local stat foo of [player]] in your parsed description.&lt;br /&gt;
&lt;br /&gt;
Custom stats of a form can be viewed by typing &#039;&#039;&#039;lstats (form here)&#039;&#039;&#039;. Mastered forms with local stats can be viewed by typing &#039;&#039;&#039;formlist #lstat&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:Example: lset eyecolor=blue will make &#039;...with piercing [if local stat eyecolor of [player] does exist][local stat eyecolor of [player]][else]defaultcolor[end if] eyes.&#039; read as &#039;...with piercing blue eyes.&#039;&lt;br /&gt;
You can also organize your values with lset something/foo=bar. &lt;br /&gt;
ALWAYS use &amp;quot;&#039;&#039;Form Name/stat&#039;&#039;&amp;quot; when submitting monsters with custom stats, like [local stat Female Husky/eyecolor of [player]]. This will help keep the user config files clean and prevent accidental overwriting of a player&#039;s other custom stats.&lt;br /&gt;
Example of local stats:&lt;br /&gt;
:lset piercings/number=three&lt;br /&gt;
:lset piercings/type=silver&lt;br /&gt;
:lset piercings/side=left&lt;br /&gt;
&lt;br /&gt;
&amp;quot;They have [local stat piercings/number of [player]] [local stat piercings/type of [player]] rings in their [local stat piercings/side of [player]] ear.&amp;quot; will now read as &amp;quot;They have three silver rings in their left ear.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Body Parts ===&lt;br /&gt;
You can retrieve the numerical value of body parts with [stat &#039;&#039;part&#039;&#039; of [&#039;&#039;target&#039;&#039;]]&lt;br /&gt;
:Breasts -- number of breasts&lt;br /&gt;
:Breast Size -- returned as a numerical value (1, 2, 3) &#039;&#039;not&#039;&#039; cup size.&lt;br /&gt;
:Cocks -- number of cocks&lt;br /&gt;
:Cock Length&lt;br /&gt;
:Ball Size&lt;br /&gt;
:Cunts -- number of cunts&lt;br /&gt;
:Cunt Length -- depth of cunt&lt;br /&gt;
&lt;br /&gt;
(Not sure how [[Modest Appearance]] [[Perks|perk]] affects this.)&lt;br /&gt;
&lt;br /&gt;
==== Mutations  ====&lt;br /&gt;
Using [stat &#039;&#039;mutation/part&#039;&#039; of [&#039;&#039;target&#039;&#039;]] will retrieve the mutation present in that location.&lt;br /&gt;
:mutation/skin -- returns skin mutation&lt;br /&gt;
:mutation/head -- returns head mutation&lt;br /&gt;
:mutation/arms -- returns arms mutation&lt;br /&gt;
:mutation/torso -- returns torso mutation&lt;br /&gt;
:mutation/cock -- returns groin mutation&lt;br /&gt;
:mutation/legs -- returns legs mutation&lt;br /&gt;
&lt;br /&gt;
=== Other Values ===&lt;br /&gt;
These values do not need to be proceeded by &#039;stat&#039;. use &amp;quot;&#039;&#039;value&#039;&#039; of [&#039;&#039;target&#039;&#039;]&amp;quot;.&lt;br /&gt;
:hp -- shows the percentage of total HP. A target at 50% health will return &#039;50&#039;. (To get raw HP, use &#039;[stat HP of [&#039;&#039;target&#039;&#039;]&#039;) Will return 0 or 100 after mentoring up/down until the next reg &#039;tick&#039;.&lt;br /&gt;
::When writing forms, use [if [hp of [loser]] &amp;gt; x] in Defeat messages and [if [hp of [victor]] &amp;gt; x] in Victory messages. This allows you to change text according to remaining HP, and, if x = 0, allows you you to create a message that triggers only when submitting.&lt;br /&gt;
:pregnant -- returns pregnancy value as 0 or 1 (pregnant).  &lt;br /&gt;
:[skin] -- returns the primary user&#039;s short skin description, primary user can be tricky at times, safest to use in descs and transformations. (better to use mutation/skin)&lt;br /&gt;
:freecred -- returns target&#039;s freecred balance&lt;br /&gt;
:level -- returns target&#039;s true level&lt;br /&gt;
:mentor -- returns target&#039;s mentored level&lt;br /&gt;
:[legs] -- informs the game that legs are being accounted for in this description (such as in a tauric ass infection), and omits the normal legs from the automatic description.&lt;br /&gt;
:[breastdesc] -- informs the game that you are describing the breasts in this description, and subsequently omits the &amp;quot;He/she has X Y-sized breasts&amp;quot; part of the automatic description.&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
&lt;br /&gt;
You can check for certain features in a target using [[flags]].&lt;br /&gt;
[if (flag) present in [target]]You have something that&#039;s (flag).[end if]&lt;br /&gt;
For a list of available flags to check for, see the [[flags|flag list]].&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
SP provides a few simple functions for data processing.&lt;br /&gt;
&lt;br /&gt;
=== Tests ===&lt;br /&gt;
:If-Then tests are formatted as [if X]string 1[else]string 2[end if].&lt;br /&gt;
::You do not need to include [else], but you must finish with [end if].&lt;br /&gt;
::To test multiple items in one check use [if a and b and c].&lt;br /&gt;
::You can nest if-thens, but remember your [end if]s.&lt;br /&gt;
:Comparisons&lt;br /&gt;
::[if X is Y] or [if X is not Y]&lt;br /&gt;
::[if stat (stat name) of [target] = (string)]&lt;br /&gt;
::[if stat (stat name) of [target] == (number)]&lt;br /&gt;
::[if stat (stat name) of [target] &amp;gt; (number)]&lt;br /&gt;
::[if stat (stat name) of [target] &amp;lt; (number)] -- Do stat comparisons!&lt;br /&gt;
:[if (power name) owned by [target]] -- Test for a power.&lt;br /&gt;
:Test sex&lt;br /&gt;
::[if [target] is male] -- Does [target] have a cock?&lt;br /&gt;
::[if [target] is female] -- Does [target] have a pussy?&lt;br /&gt;
::[if [target] is not male] and [if [target] is not female] -- Testing for absence of cock/pussy.&lt;br /&gt;
::[if [target] is neuter] -- Is [target] neuter?&lt;br /&gt;
::[if [target] is herm] -- Is [target] a herm?&lt;br /&gt;
:Test gender (accounts for appearance merits before checking sex - use for appearance)&lt;br /&gt;
::[if [target] is masculine] -- Does the [target] look male?&lt;br /&gt;
::[if [target] is feminine] -- Does the [target] look female?&lt;br /&gt;
::[if [target] is hermy] -- Does the [target] look hermaphroditic?&lt;br /&gt;
::[if [target] is neutral] -- Does the [target] look neuter?&lt;br /&gt;
:Test fertility&lt;br /&gt;
::[if [target] is fertile] -- Non-females cannot be fertile and will always fail this test.&lt;br /&gt;
&lt;br /&gt;
=== Randoms ===&lt;br /&gt;
[one of]X[or]Y[or]Z[at random]&lt;br /&gt;
*Generates one of the specified values at random.&lt;br /&gt;
[random X to Y]&lt;br /&gt;
*Generates a number between X and Y.&lt;br /&gt;
&lt;br /&gt;
=== Nesting ===&lt;br /&gt;
You may nest [if ][end if] and [one of][or][at random] sections.&lt;br /&gt;
&lt;br /&gt;
:[if [player] is male]I&#039;m a boy[if [player] is female] and a girl[end if]![end if]&lt;br /&gt;
&lt;br /&gt;
== Colors ==&lt;br /&gt;
You can add color to your text. (Also works with @emit command.)&lt;br /&gt;
:Surround the color name in carets (for example, ^red^), then return to normal with ^normal^. Note that colors are escaped on a per-line basis. You should never end a line in ^normal^ after the last character.&lt;br /&gt;
:Valid colors: Red, blue, green, cyan, yellow, brown, black, white, gray, possibly others. Use &#039;colors&#039; command to see full list.&lt;br /&gt;
:You can also use ^bold^, ^italics^, and ^underline^. ^blink^ appears as normal italics in most clients and is strongly discouraged.&lt;br /&gt;
&lt;br /&gt;
== Advanced Code ==&lt;br /&gt;
&lt;br /&gt;
These will not work in personal or room descriptions. Mostly for use in creature creation and other NPC scripts.&lt;br /&gt;
&lt;br /&gt;
Functions&lt;br /&gt;
:[increase the (stat) of [target] by (number)] -- Modify stats, negative numbers are cool. Whole numbers only.&lt;br /&gt;
:[impregnate [target1] with [target2]] -- Causes a chance for babies. The first is the mother. Both need proper parts.&lt;br /&gt;
:[end] -- Used in defeat# and victory# to end the processing in that block if [end] remains after displaying that block.&lt;br /&gt;
::ONLY use [end] for multi-line Victory/Defeat Messages! These are not necessary unless you require a line break.&lt;br /&gt;
&lt;br /&gt;
Targets&lt;br /&gt;
:[here] -- Used to identify the room (not its name, its DB ref).&lt;br /&gt;
&lt;br /&gt;
== Limits ==&lt;br /&gt;
String Parsing &#039;&#039;cannot&#039;&#039;:&lt;br /&gt;
* Test for combat.&lt;br /&gt;
* Message other players or provide other output.&lt;br /&gt;
&lt;br /&gt;
== Example Code  ==&lt;br /&gt;
&lt;br /&gt;
=== NPC Name Tracking ===&lt;br /&gt;
By Damaged:&lt;br /&gt;
You want to say, have a particular name hang about, on the player, so that once they have given in&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;Oh, [if stat Fox/Name of [player] does exist][player]!&amp;quot; [if stat Fox/Name of [player] == 1]Lilly[else if stat Fox/Name of [player] == 2]Michelle[else if stat Fox/Name of [player] == 3]Jenny[end if] says, &amp;quot;It&#039;s Tuesday again[else]have we not met? My name is [one of]Lilly[set the Fox/Name of [player] to 1][or]Michelle[set the Fox/Name of [player] to 2][or]Jenny[set the Fox/Name of [player] to 3][at random], and I am going to fuck you nine ways from Tuesday[end if]!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note that you MUST use &#039;formstat/Monster Name/statname&#039; if you set this via a monster. Use [set the formstat/Monster Name/statname of [target] to x] as the write-function syntax and [stat formstat/Monster Name/statname of [target]] as the read-function.&lt;br /&gt;
&lt;br /&gt;
=== Set player color ===&lt;br /&gt;
by Damaged:&lt;br /&gt;
&lt;br /&gt;
Goo Girl skin transform: A ripple of tingles rushes through your entire body as you sink towards the ground, then rise again, wobbling along the way. A glance at a hand shows that you can see right through your now [set the formstat/Goo Girl/texture of player to [one of]jellied[or]gelatine like[or]translucent[at random]] [set the formstat/Goo Girl/color of player to [one of]blue[or]red[or]purple[at random]]&lt;br /&gt;
&lt;br /&gt;
== Deprecated Code ==&lt;br /&gt;
&lt;br /&gt;
These functions and items do not work anymore, but are listed for legacy purposes.&lt;br /&gt;
&lt;br /&gt;
:[infect [target] with (infection name) at (number)] -- once had a (number)% chance of infecting the named person with the named infection. This is now done by default in Defeat scenes.&lt;br /&gt;
:[otherwise] -- used to be a synonym for [else], but deprecated due to performance concerns.&lt;br /&gt;
:[infected] -- used to be a [target] attribute, similar to [player].&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
[http://web.flexiblesurvival.com/viewtopic.php?f=9&amp;amp;t=218 Damage&#039;s Original &#039;Guides&#039; post] &#039;&#039;&#039;Not up-to-date information.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://dl.dropbox.com/u/40286482/FS%20string%20parser.zip Notepad++ contextual plugin, courtesy of Kaytlin]&lt;br /&gt;
&lt;br /&gt;
[https://atom.io/packages/language-flexiblesurvival Syntax highlighter] for the [https://atom.io/ atom.io] editor by [[User:Inutt|Inutt]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Guides]][[Category:Code]]&lt;/div&gt;</summary>
		<author><name>Jetharius</name></author>
	</entry>
	<entry>
		<id>https://wiki.flexiblesurvival.com/index.php?title=String_Parsing&amp;diff=1445120</id>
		<title>String Parsing</title>
		<link rel="alternate" type="text/html" href="https://wiki.flexiblesurvival.com/index.php?title=String_Parsing&amp;diff=1445120"/>
		<updated>2019-12-22T23:32:42Z</updated>

		<summary type="html">&lt;p&gt;Jetharius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt; String Parsing (SP) refers to some of the underlying guts of the MUCK. You can use it to liven up your creature submissions, rooms, and even your own description. While it&#039;s a bit limited in power compared to other languages, it&#039;s easy to read and learn. &lt;br /&gt;
If you&#039;re new to programming, it&#039;s recommended you use notepad to work in. This lets you save your files locally in case of a disconnect, and avoids weird formatting issues that sometimes pop up in Word. If you&#039;re going to be using SP heavily, look for a text editor [http://notepad-plus-plus.org/ Notepad++] and [https://dl.dropbox.com/u/40286482/FS%20string%20parser.zip language file] (Windows) or VI, eMacs, etc (Linux). *link to Fraise for Macs was broken, removed. Please add a good Mac alternative if you have a functioning link*&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STAFF NOTE: This page is maintained largely by the Flexible Survival community. Any information herein may not be relevant to the current standard of String Parsing or reflect its full feature set. Please view the in-game helpfiles on String Parsing for an additional point of reference.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Basic Syntax  ==&lt;br /&gt;
&lt;br /&gt;
=== Formatting ===&lt;br /&gt;
&lt;br /&gt;
Everything in SP is contained in brackets []. Though SP is supposedly case insensitive, it&#039;s recommended you use only lowercase.&lt;br /&gt;
&lt;br /&gt;
There should be no spaces after the leading bracket or before the trailing bracket.&lt;br /&gt;
:[like this]&lt;br /&gt;
:[ not like this ]&lt;br /&gt;
&lt;br /&gt;
Line breaks are bad. Avoid them within brackets, and within [if...][end if] sections.&lt;br /&gt;
&lt;br /&gt;
This is bad.&amp;lt;br&amp;gt;&lt;br /&gt;
:Hi [player]![if [player] is male]&amp;lt;br&amp;gt;&lt;br /&gt;
:I&#039;m a &amp;lt;br&amp;gt;&lt;br /&gt;
:boy![end if]&lt;br /&gt;
&lt;br /&gt;
This is good.&amp;lt;br&amp;gt;&lt;br /&gt;
:Hi! [player]!&amp;lt;br&amp;gt;&lt;br /&gt;
:[if [player] is male]I&#039;m a boy![end if]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
SP can retrieve, test, and display certain pieces of information about characters.&lt;br /&gt;
&lt;br /&gt;
=== Targets ===&lt;br /&gt;
&lt;br /&gt;
A Target refers to a specific character. Targets must be enclosed in their own set of brackets. A [&#039;&#039;target&#039;&#039;] by itself will return the target&#039;s name.&lt;br /&gt;
&lt;br /&gt;
:Hi [player]! &lt;br /&gt;
returns&lt;br /&gt;
:&#039;&#039;&#039;Hi Nuku!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Valid Targets:&lt;br /&gt;
:[player] - Name of character the description is on.&lt;br /&gt;
:[looker] - Name of the character viewing the description.&lt;br /&gt;
:[loser] - The loser of a fight. (For victory/defeat messages.)&lt;br /&gt;
:[victor] - The winner of a fight (For victory/defeat messages.)&lt;br /&gt;
&lt;br /&gt;
=== Pronouns ===&lt;br /&gt;
These will display the correct gender of the pronoun according to the target.&lt;br /&gt;
&lt;br /&gt;
Use:&lt;br /&gt;
:[&#039;&#039;pronoun&#039;&#039; of [&#039;&#039;target&#039;&#039;]]&lt;br /&gt;
::Example: You see an employee badge hanging from [%p of [player]] coat.&lt;br /&gt;
&lt;br /&gt;
Available Pronouns&lt;br /&gt;
:%p/%P for possessive pronouns (his/her/its &amp;lt;item&amp;gt;, His/Her/Hir/Its &amp;lt;item&amp;gt;)&lt;br /&gt;
::Example: Who&#039;s book is it? It&#039;s [%p of [player]] book.&lt;br /&gt;
:%a/%A for absolute possessive pronouns (his/hers/hirs/its, His/Hers/Hirs/Its)&lt;br /&gt;
::Example: Who&#039;s book is it? It&#039;s [%a of [player]].&lt;br /&gt;
:%s/%S for subjective pronouns (he/she/shi/it, He/She/Shi/It)&lt;br /&gt;
::Example: [%S of [player]] got the book.&lt;br /&gt;
:%o/%O for objective pronouns  (him/her/hir/it, Him/Her/Hir/It)&lt;br /&gt;
::Example: The book fell on [%o of [player]].&lt;br /&gt;
:%r/%R for reflexive pronouns  (himself/herself/hirself/itself, Himself/Herself/hirself/Itself)&lt;br /&gt;
::Example: Chris did it all by [%r of [player]].&lt;br /&gt;
:%n/%N for the player&#039;s name. &#039;&#039;&#039;STAFF NOTE: Please use [player] instead.&lt;br /&gt;
::The shopkeeper&#039;s name is [%n of [player]].&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
You can check if the target owns any of the following flags:&lt;br /&gt;
:Barbed, Beaked, Candy, Clawed, Feathered, Feral, Flared, Furred, Hooved, Inorganic, Knotted, Latex, Legless, Mouthless, Multiarms, Multiheads, Oviparous, Ovipositor, Pouch, Scaled, Serpentine, Snout, Tailed, Tails, Taur, Udder, Winged&lt;br /&gt;
:Example: [if clawed is present [player]] what sharp claws they have[end if]&lt;br /&gt;
&lt;br /&gt;
To check those flags in-game, type list flags.&lt;br /&gt;
&lt;br /&gt;
=== Stats ===&lt;br /&gt;
You can use SP to retrieve information about a target using [stat &#039;&#039;stat&#039;&#039; of [&#039;&#039;target&#039;&#039;]]&lt;br /&gt;
:HP - Returns current raw HP.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[stat rut of [target]]&amp;lt;/code&amp;gt; will return the target&#039;s rut level. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;[stat pregnant of [target]]&amp;lt;/code&amp;gt; will return the target&#039;s time until birth. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;[status fertile of [target]]&amp;lt;/code&amp;gt; will return the target&#039;s heat status (either 1 or 0)&lt;br /&gt;
&lt;br /&gt;
=== Local Stats ===&lt;br /&gt;
You can create your own custom stats specific to your character, and test for them like any other in your description. &#039;&#039;&#039;lset foo=bar&#039;&#039;&#039;, and then use [local stat foo of [player]] in your parsed description.&lt;br /&gt;
&lt;br /&gt;
Custom stats of a form can be viewed by typing &#039;&#039;&#039;lstats (form here)&#039;&#039;&#039;. Mastered forms with local stats can be viewed by typing &#039;&#039;&#039;formlist #lstat&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:Example: lset eyecolor=blue will make &#039;...with piercing [if local stat eyecolor of [player] does exist][local stat eyecolor of [player]][else]defaultcolor[end if] eyes.&#039; read as &#039;...with piercing blue eyes.&#039;&lt;br /&gt;
You can also organize your values with lset something/foo=bar. &lt;br /&gt;
ALWAYS use &amp;quot;&#039;&#039;Form Name/stat&#039;&#039;&amp;quot; when submitting monsters with custom stats, like [local stat Female Husky/eyecolor of [player]]. This will help keep the user config files clean and prevent accidental overwriting of a player&#039;s other custom stats.&lt;br /&gt;
Example of local stats:&lt;br /&gt;
:lset piercings/number=three&lt;br /&gt;
:lset piercings/type=silver&lt;br /&gt;
:lset piercings/side=left&lt;br /&gt;
&lt;br /&gt;
&amp;quot;They have [local stat piercings/number of [player]] [local stat piercings/type of [player]] rings in their [local stat piercings/side of [player]] ear.&amp;quot; will now read as &amp;quot;They have three silver rings in their left ear.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Body Parts ===&lt;br /&gt;
You can retrieve the numerical value of body parts with [stat &#039;&#039;part&#039;&#039; of [&#039;&#039;target&#039;&#039;]]&lt;br /&gt;
:Breasts -- number of breasts&lt;br /&gt;
:Breast Size -- returned as a numerical value (1, 2, 3) &#039;&#039;not&#039;&#039; cup size.&lt;br /&gt;
:Cocks -- number of cocks&lt;br /&gt;
:Cock Length&lt;br /&gt;
:Ball Size&lt;br /&gt;
:Cunts -- number of cunts&lt;br /&gt;
:Cunt Length -- depth of cunt&lt;br /&gt;
&lt;br /&gt;
(Not sure how [[Modest Appearance]] [[Perks|perk]] affects this.)&lt;br /&gt;
&lt;br /&gt;
==== Mutations  ====&lt;br /&gt;
Using [stat &#039;&#039;mutation/part&#039;&#039; of [&#039;&#039;target&#039;&#039;]] will retrieve the mutation present in that location.&lt;br /&gt;
:mutation/skin -- returns skin mutation&lt;br /&gt;
:mutation/head -- returns head mutation&lt;br /&gt;
:mutation/arms -- returns arms mutation&lt;br /&gt;
:mutation/torso -- returns torso mutation&lt;br /&gt;
:mutation/cock -- returns groin mutation&lt;br /&gt;
:mutation/legs -- returns legs mutation&lt;br /&gt;
&lt;br /&gt;
=== Other Values ===&lt;br /&gt;
These values do not need to be proceeded by &#039;stat&#039;. use &amp;quot;&#039;&#039;value&#039;&#039; of [&#039;&#039;target&#039;&#039;]&amp;quot;.&lt;br /&gt;
:hp -- shows the percentage of total HP. A target at 50% health will return &#039;50&#039;. (To get raw HP, use &#039;[stat HP of [&#039;&#039;target&#039;&#039;]&#039;) Will return 0 or 100 after mentoring up/down until the next reg &#039;tick&#039;.&lt;br /&gt;
::When writing forms, use [if [hp of [loser]] &amp;gt; x] in Defeat messages and [if [hp of [victor]] &amp;gt; x] in Victory messages. This allows you to change text according to remaining HP, and, if x = 0, allows you you to create a message that triggers only when submitting.&lt;br /&gt;
:pregnant -- returns pregnancy value as 0 or 1 (pregnant).  &lt;br /&gt;
:[skin] -- returns the primary user&#039;s short skin description, primary user can be tricky at times, safest to use in descs and transformations. (better to use mutation/skin)&lt;br /&gt;
:freecred -- returns target&#039;s freecred balance&lt;br /&gt;
:level -- returns target&#039;s true level&lt;br /&gt;
:mentor -- returns target&#039;s mentored level&lt;br /&gt;
:[legs] -- informs the game that legs are being accounted for in this description (such as in a tauric ass infection), and omits the normal legs from the automatic description.&lt;br /&gt;
:[breastdesc] -- informs the game that you are describing the breasts in this description, and subsequently omits the &amp;quot;He/she has X Y-sized breasts&amp;quot; part of the automatic description.&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
&lt;br /&gt;
You can check for certain features in a target using [[flags]].&lt;br /&gt;
[if (flag) present in [target]]You have something that&#039;s (flag).[end if]&lt;br /&gt;
For a list of available flags to check for, see the [[flags|flag list]].&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
SP provides a few simple functions for data processing.&lt;br /&gt;
&lt;br /&gt;
=== Tests ===&lt;br /&gt;
:If-Then tests are formatted as [if X]string 1[else]string 2[end if].&lt;br /&gt;
::You do not need to include [else], but you must finish with [end if].&lt;br /&gt;
::To test multiple items in one check use [if a and b and c].&lt;br /&gt;
::You can nest if-thens, but remember your [end if]s.&lt;br /&gt;
:Comparisons&lt;br /&gt;
::[if X is Y] or [if X is not Y]&lt;br /&gt;
::[if stat (stat name) of [target] = (string)]&lt;br /&gt;
::[if stat (stat name) of [target] == (number)]&lt;br /&gt;
::[if stat (stat name) of [target] &amp;gt; (number)]&lt;br /&gt;
::[if stat (stat name) of [target] &amp;lt; (number)] -- Do stat comparisons!&lt;br /&gt;
:[if (power name) owned by [target]] -- Test for a power.&lt;br /&gt;
:Test sex&lt;br /&gt;
::[if [target] is male] -- Does [target] have a cock?&lt;br /&gt;
::[if [target] is female] -- Does [target] have a pussy?&lt;br /&gt;
::[if [target] is not male] and [if [target] is not female] -- Testing for absence of cock/pussy.&lt;br /&gt;
::[if [target] is neuter] -- Is [target] neuter?&lt;br /&gt;
::[if [target] is herm] -- Is [target] a herm?&lt;br /&gt;
:Test gender (accounts for appearance merits before checking sex - use for appearance)&lt;br /&gt;
::[if [target] is masculine] -- Does the [target] look male?&lt;br /&gt;
::[if [target] is feminine] -- Does the [target] look female?&lt;br /&gt;
::[if [target] is hermy] -- Does the [target] look hermaphroditic?&lt;br /&gt;
::[if [target] is neutral] -- Does the [target] look neuter?&lt;br /&gt;
:Test fertility&lt;br /&gt;
::[if [target] is fertile] -- Non-females cannot be fertile and will always fail this test.&lt;br /&gt;
&lt;br /&gt;
=== Randoms ===&lt;br /&gt;
[one of]X[or]Y[or]Z[at random]&lt;br /&gt;
*Generates one of the specified values at random.&lt;br /&gt;
[random X to Y]&lt;br /&gt;
*Generates a number between X and Y.&lt;br /&gt;
&lt;br /&gt;
=== Nesting ===&lt;br /&gt;
You may nest [if ][end if] and [one of][or][at random] sections.&lt;br /&gt;
&lt;br /&gt;
:[if [player] is male]I&#039;m a boy[if [player] is female] and a girl[end if]![end if]&lt;br /&gt;
&lt;br /&gt;
== Colors ==&lt;br /&gt;
You can add color to your text. (Also works with @emit command.)&lt;br /&gt;
:Surround the color name in carets (for example, ^red^), then return to normal with ^normal^. Note that colors are escaped on a per-line basis. You should never end a line in ^normal^ after the last character.&lt;br /&gt;
:Valid colors: Red, blue, green, cyan, yellow, brown, black, white, gray, possibly others. Use &#039;colors&#039; command to see full list.&lt;br /&gt;
:You can also use ^bold^, ^italics^, and ^underline^. ^blink^ appears as normal italics in most clients and is strongly discouraged.&lt;br /&gt;
&lt;br /&gt;
== Advanced Code ==&lt;br /&gt;
&lt;br /&gt;
These will not work in personal or room descriptions. Mostly for use in creature creation and other NPC scripts.&lt;br /&gt;
&lt;br /&gt;
Functions&lt;br /&gt;
:[increase the (stat) of [target] by (number)] -- Modify stats, negative numbers are cool. Whole numbers only.&lt;br /&gt;
:[impregnate [target1] with [target2]] -- Causes a chance for babies. The first is the mother. Both need proper parts.&lt;br /&gt;
:[end] -- Used in defeat# and victory# to end the processing in that block if [end] remains after displaying that block.&lt;br /&gt;
::ONLY use [end] for multi-line Victory/Defeat Messages! These are not necessary unless you require a line break.&lt;br /&gt;
&lt;br /&gt;
Targets&lt;br /&gt;
:[here] -- Used to identify the room (not its name, its DB ref).&lt;br /&gt;
&lt;br /&gt;
== Limits ==&lt;br /&gt;
String Parsing &#039;&#039;cannot&#039;&#039;:&lt;br /&gt;
* Test for combat.&lt;br /&gt;
* Message other players or provide other output.&lt;br /&gt;
&lt;br /&gt;
== Example Code  ==&lt;br /&gt;
&lt;br /&gt;
=== NPC Name Tracking ===&lt;br /&gt;
By Damaged:&lt;br /&gt;
You want to say, have a particular name hang about, on the player, so that once they have given in&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;Oh, [if stat Fox/Name of [player] does exist][player]!&amp;quot; [if stat Fox/Name of [player] == 1]Lilly[else if stat Fox/Name of [player] == 2]Michelle[else if stat Fox/Name of [player] == 3]Jenny[end if] says, &amp;quot;It&#039;s Tuesday again[else]have we not met? My name is [one of]Lilly[set the Fox/Name of [player] to 1][or]Michelle[set the Fox/Name of [player] to 2][or]Jenny[set the Fox/Name of [player] to 3][at random], and I am going to fuck you nine ways from Tuesday[end if]!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note that you MUST use &#039;formstat/Monster Name/statname&#039; if you set this via a monster. Use [set the formstat/Monster Name/statname of [target] to x] as the write-function syntax and [stat formstat/Monster Name/statname of [target]] as the read-function.&lt;br /&gt;
&lt;br /&gt;
=== Set player color ===&lt;br /&gt;
by Damaged:&lt;br /&gt;
&lt;br /&gt;
Goo Girl skin transform: A ripple of tingles rushes through your entire body as you sink towards the ground, then rise again, wobbling along the way. A glance at a hand shows that you can see right through your now [set the formstat/Goo Girl/texture of player to [one of]jellied[or]gelatine like[or]translucent[at random]] [set the formstat/Goo Girl/color of player to [one of]blue[or]red[or]purple[at random]]&lt;br /&gt;
&lt;br /&gt;
== Deprecated Code ==&lt;br /&gt;
&lt;br /&gt;
These functions and items do not work anymore, but are listed for legacy purposes.&lt;br /&gt;
&lt;br /&gt;
:[infect [target] with (infection name) at (number)] -- once had a (number)% chance of infecting the named person with the named infection. This is now done by default in Defeat scenes.&lt;br /&gt;
:[otherwise] -- used to be a synonym for [else], but deprecated due to performance concerns.&lt;br /&gt;
:[infected] -- used to be a [target] attribute, similar to [player].&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
[http://web.flexiblesurvival.com/viewtopic.php?f=9&amp;amp;t=218 Damage&#039;s Original &#039;Guides&#039; post] &#039;&#039;&#039;Not up-to-date information.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://dl.dropbox.com/u/40286482/FS%20string%20parser.zip Notepad++ contextual plugin, courtesy of Kaytlin]&lt;br /&gt;
&lt;br /&gt;
[https://atom.io/packages/language-flexiblesurvival Syntax highlighter] for the [https://atom.io/ atom.io] editor by [[User:Inutt|Inutt]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Guides]][[Category:Code]]&lt;/div&gt;</summary>
		<author><name>Jetharius</name></author>
	</entry>
	<entry>
		<id>https://wiki.flexiblesurvival.com/index.php?title=String_Parsing&amp;diff=1445119</id>
		<title>String Parsing</title>
		<link rel="alternate" type="text/html" href="https://wiki.flexiblesurvival.com/index.php?title=String_Parsing&amp;diff=1445119"/>
		<updated>2019-12-22T23:31:33Z</updated>

		<summary type="html">&lt;p&gt;Jetharius: added pregnant evaluation to stats and moved useful stats that aren&amp;#039;t obvious to stats.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt; String Parsing (SP) refers to some of the underlying guts of the MUCK. You can use it to liven up your creature submissions, rooms, and even your own description. While it&#039;s a bit limited in power compared to other languages, it&#039;s easy to read and learn. &lt;br /&gt;
If you&#039;re new to programming, it&#039;s recommended you use notepad to work in. This lets you save your files locally in case of a disconnect, and avoids weird formatting issues that sometimes pop up in Word. If you&#039;re going to be using SP heavily, look for a text editor [http://notepad-plus-plus.org/ Notepad++] and [https://dl.dropbox.com/u/40286482/FS%20string%20parser.zip language file] (Windows) or VI, eMacs, etc (Linux). *link to Fraise for Macs was broken, removed. Please add a good Mac alternative if you have a functioning link*&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;STAFF NOTE: This page is maintained largely by the Flexible Survival community. Any information herein may not be relevant to the current standard of String Parsing or reflect its full feature set. Please view the in-game helpfiles on String Parsing for an additional point of reference.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Basic Syntax  ==&lt;br /&gt;
&lt;br /&gt;
=== Formatting ===&lt;br /&gt;
&lt;br /&gt;
Everything in SP is contained in brackets []. Though SP is supposedly case insensitive, it&#039;s recommended you use only lowercase.&lt;br /&gt;
&lt;br /&gt;
There should be no spaces after the leading bracket or before the trailing bracket.&lt;br /&gt;
:[like this]&lt;br /&gt;
:[ not like this ]&lt;br /&gt;
&lt;br /&gt;
Line breaks are bad. Avoid them within brackets, and within [if...][end if] sections.&lt;br /&gt;
&lt;br /&gt;
This is bad.&amp;lt;br&amp;gt;&lt;br /&gt;
:Hi [player]![if [player] is male]&amp;lt;br&amp;gt;&lt;br /&gt;
:I&#039;m a &amp;lt;br&amp;gt;&lt;br /&gt;
:boy![end if]&lt;br /&gt;
&lt;br /&gt;
This is good.&amp;lt;br&amp;gt;&lt;br /&gt;
:Hi! [player]!&amp;lt;br&amp;gt;&lt;br /&gt;
:[if [player] is male]I&#039;m a boy![end if]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
SP can retrieve, test, and display certain pieces of information about characters.&lt;br /&gt;
&lt;br /&gt;
=== Targets ===&lt;br /&gt;
&lt;br /&gt;
A Target refers to a specific character. Targets must be enclosed in their own set of brackets. A [&#039;&#039;target&#039;&#039;] by itself will return the target&#039;s name.&lt;br /&gt;
&lt;br /&gt;
:Hi [player]! &lt;br /&gt;
returns&lt;br /&gt;
:&#039;&#039;&#039;Hi Nuku!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Valid Targets:&lt;br /&gt;
:[player] - Name of character the description is on.&lt;br /&gt;
:[looker] - Name of the character viewing the description.&lt;br /&gt;
:[loser] - The loser of a fight. (For victory/defeat messages.)&lt;br /&gt;
:[victor] - The winner of a fight (For victory/defeat messages.)&lt;br /&gt;
&lt;br /&gt;
=== Pronouns ===&lt;br /&gt;
These will display the correct gender of the pronoun according to the target.&lt;br /&gt;
&lt;br /&gt;
Use:&lt;br /&gt;
:[&#039;&#039;pronoun&#039;&#039; of [&#039;&#039;target&#039;&#039;]]&lt;br /&gt;
::Example: You see an employee badge hanging from [%p of [player]] coat.&lt;br /&gt;
&lt;br /&gt;
Available Pronouns&lt;br /&gt;
:%p/%P for possessive pronouns (his/her/its &amp;lt;item&amp;gt;, His/Her/Hir/Its &amp;lt;item&amp;gt;)&lt;br /&gt;
::Example: Who&#039;s book is it? It&#039;s [%p of [player]] book.&lt;br /&gt;
:%a/%A for absolute possessive pronouns (his/hers/hirs/its, His/Hers/Hirs/Its)&lt;br /&gt;
::Example: Who&#039;s book is it? It&#039;s [%a of [player]].&lt;br /&gt;
:%s/%S for subjective pronouns (he/she/shi/it, He/She/Shi/It)&lt;br /&gt;
::Example: [%S of [player]] got the book.&lt;br /&gt;
:%o/%O for objective pronouns  (him/her/hir/it, Him/Her/Hir/It)&lt;br /&gt;
::Example: The book fell on [%o of [player]].&lt;br /&gt;
:%r/%R for reflexive pronouns  (himself/herself/hirself/itself, Himself/Herself/hirself/Itself)&lt;br /&gt;
::Example: Chris did it all by [%r of [player]].&lt;br /&gt;
:%n/%N for the player&#039;s name. &#039;&#039;&#039;STAFF NOTE: Please use [player] instead.&lt;br /&gt;
::The shopkeeper&#039;s name is [%n of [player]].&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
You can check if the target owns any of the following flags:&lt;br /&gt;
:Barbed, Beaked, Candy, Clawed, Feathered, Feral, Flared, Furred, Hooved, Inorganic, Knotted, Latex, Legless, Mouthless, Multiarms, Multiheads, Oviparous, Ovipositor, Pouch, Scaled, Serpentine, Snout, Tailed, Tails, Taur, Udder, Winged&lt;br /&gt;
:Example: [if clawed is present [player]] what sharp claws they have[end if]&lt;br /&gt;
&lt;br /&gt;
To check those flags in-game, type list flags.&lt;br /&gt;
&lt;br /&gt;
=== Stats ===&lt;br /&gt;
You can use SP to retrieve information about a target using [stat &#039;&#039;stat&#039;&#039; of [&#039;&#039;target&#039;&#039;]]&lt;br /&gt;
:HP - Returns current raw HP.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[stat rut of [target]]&amp;lt;/code&amp;gt; will return the target&#039;s rut level&lt;br /&gt;
&amp;lt;code&amp;gt;[stat pregnant of [target]]&amp;lt;/code&amp;gt; will return the target&#039;s time until birth.&lt;br /&gt;
&amp;lt;code&amp;gt;[status fertile of [target]]&amp;lt;/code&amp;gt; will return the target&#039;s heat status (either 1 or 0)&lt;br /&gt;
&lt;br /&gt;
=== Local Stats ===&lt;br /&gt;
You can create your own custom stats specific to your character, and test for them like any other in your description. &#039;&#039;&#039;lset foo=bar&#039;&#039;&#039;, and then use [local stat foo of [player]] in your parsed description.&lt;br /&gt;
&lt;br /&gt;
Custom stats of a form can be viewed by typing &#039;&#039;&#039;lstats (form here)&#039;&#039;&#039;. Mastered forms with local stats can be viewed by typing &#039;&#039;&#039;formlist #lstat&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:Example: lset eyecolor=blue will make &#039;...with piercing [if local stat eyecolor of [player] does exist][local stat eyecolor of [player]][else]defaultcolor[end if] eyes.&#039; read as &#039;...with piercing blue eyes.&#039;&lt;br /&gt;
You can also organize your values with lset something/foo=bar. &lt;br /&gt;
ALWAYS use &amp;quot;&#039;&#039;Form Name/stat&#039;&#039;&amp;quot; when submitting monsters with custom stats, like [local stat Female Husky/eyecolor of [player]]. This will help keep the user config files clean and prevent accidental overwriting of a player&#039;s other custom stats.&lt;br /&gt;
Example of local stats:&lt;br /&gt;
:lset piercings/number=three&lt;br /&gt;
:lset piercings/type=silver&lt;br /&gt;
:lset piercings/side=left&lt;br /&gt;
&lt;br /&gt;
&amp;quot;They have [local stat piercings/number of [player]] [local stat piercings/type of [player]] rings in their [local stat piercings/side of [player]] ear.&amp;quot; will now read as &amp;quot;They have three silver rings in their left ear.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Body Parts ===&lt;br /&gt;
You can retrieve the numerical value of body parts with [stat &#039;&#039;part&#039;&#039; of [&#039;&#039;target&#039;&#039;]]&lt;br /&gt;
:Breasts -- number of breasts&lt;br /&gt;
:Breast Size -- returned as a numerical value (1, 2, 3) &#039;&#039;not&#039;&#039; cup size.&lt;br /&gt;
:Cocks -- number of cocks&lt;br /&gt;
:Cock Length&lt;br /&gt;
:Ball Size&lt;br /&gt;
:Cunts -- number of cunts&lt;br /&gt;
:Cunt Length -- depth of cunt&lt;br /&gt;
&lt;br /&gt;
(Not sure how [[Modest Appearance]] [[Perks|perk]] affects this.)&lt;br /&gt;
&lt;br /&gt;
==== Mutations  ====&lt;br /&gt;
Using [stat &#039;&#039;mutation/part&#039;&#039; of [&#039;&#039;target&#039;&#039;]] will retrieve the mutation present in that location.&lt;br /&gt;
:mutation/skin -- returns skin mutation&lt;br /&gt;
:mutation/head -- returns head mutation&lt;br /&gt;
:mutation/arms -- returns arms mutation&lt;br /&gt;
:mutation/torso -- returns torso mutation&lt;br /&gt;
:mutation/cock -- returns groin mutation&lt;br /&gt;
:mutation/legs -- returns legs mutation&lt;br /&gt;
&lt;br /&gt;
=== Other Values ===&lt;br /&gt;
These values do not need to be proceeded by &#039;stat&#039;. use &amp;quot;&#039;&#039;value&#039;&#039; of [&#039;&#039;target&#039;&#039;]&amp;quot;.&lt;br /&gt;
:hp -- shows the percentage of total HP. A target at 50% health will return &#039;50&#039;. (To get raw HP, use &#039;[stat HP of [&#039;&#039;target&#039;&#039;]&#039;) Will return 0 or 100 after mentoring up/down until the next reg &#039;tick&#039;.&lt;br /&gt;
::When writing forms, use [if [hp of [loser]] &amp;gt; x] in Defeat messages and [if [hp of [victor]] &amp;gt; x] in Victory messages. This allows you to change text according to remaining HP, and, if x = 0, allows you you to create a message that triggers only when submitting.&lt;br /&gt;
:pregnant -- returns pregnancy value as 0 or 1 (pregnant).  &lt;br /&gt;
:[skin] -- returns the primary user&#039;s short skin description, primary user can be tricky at times, safest to use in descs and transformations. (better to use mutation/skin)&lt;br /&gt;
:freecred -- returns target&#039;s freecred balance&lt;br /&gt;
:level -- returns target&#039;s true level&lt;br /&gt;
:mentor -- returns target&#039;s mentored level&lt;br /&gt;
:[legs] -- informs the game that legs are being accounted for in this description (such as in a tauric ass infection), and omits the normal legs from the automatic description.&lt;br /&gt;
:[breastdesc] -- informs the game that you are describing the breasts in this description, and subsequently omits the &amp;quot;He/she has X Y-sized breasts&amp;quot; part of the automatic description.&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
&lt;br /&gt;
You can check for certain features in a target using [[flags]].&lt;br /&gt;
[if (flag) present in [target]]You have something that&#039;s (flag).[end if]&lt;br /&gt;
For a list of available flags to check for, see the [[flags|flag list]].&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
SP provides a few simple functions for data processing.&lt;br /&gt;
&lt;br /&gt;
=== Tests ===&lt;br /&gt;
:If-Then tests are formatted as [if X]string 1[else]string 2[end if].&lt;br /&gt;
::You do not need to include [else], but you must finish with [end if].&lt;br /&gt;
::To test multiple items in one check use [if a and b and c].&lt;br /&gt;
::You can nest if-thens, but remember your [end if]s.&lt;br /&gt;
:Comparisons&lt;br /&gt;
::[if X is Y] or [if X is not Y]&lt;br /&gt;
::[if stat (stat name) of [target] = (string)]&lt;br /&gt;
::[if stat (stat name) of [target] == (number)]&lt;br /&gt;
::[if stat (stat name) of [target] &amp;gt; (number)]&lt;br /&gt;
::[if stat (stat name) of [target] &amp;lt; (number)] -- Do stat comparisons!&lt;br /&gt;
:[if (power name) owned by [target]] -- Test for a power.&lt;br /&gt;
:Test sex&lt;br /&gt;
::[if [target] is male] -- Does [target] have a cock?&lt;br /&gt;
::[if [target] is female] -- Does [target] have a pussy?&lt;br /&gt;
::[if [target] is not male] and [if [target] is not female] -- Testing for absence of cock/pussy.&lt;br /&gt;
::[if [target] is neuter] -- Is [target] neuter?&lt;br /&gt;
::[if [target] is herm] -- Is [target] a herm?&lt;br /&gt;
:Test gender (accounts for appearance merits before checking sex - use for appearance)&lt;br /&gt;
::[if [target] is masculine] -- Does the [target] look male?&lt;br /&gt;
::[if [target] is feminine] -- Does the [target] look female?&lt;br /&gt;
::[if [target] is hermy] -- Does the [target] look hermaphroditic?&lt;br /&gt;
::[if [target] is neutral] -- Does the [target] look neuter?&lt;br /&gt;
:Test fertility&lt;br /&gt;
::[if [target] is fertile] -- Non-females cannot be fertile and will always fail this test.&lt;br /&gt;
&lt;br /&gt;
=== Randoms ===&lt;br /&gt;
[one of]X[or]Y[or]Z[at random]&lt;br /&gt;
*Generates one of the specified values at random.&lt;br /&gt;
[random X to Y]&lt;br /&gt;
*Generates a number between X and Y.&lt;br /&gt;
&lt;br /&gt;
=== Nesting ===&lt;br /&gt;
You may nest [if ][end if] and [one of][or][at random] sections.&lt;br /&gt;
&lt;br /&gt;
:[if [player] is male]I&#039;m a boy[if [player] is female] and a girl[end if]![end if]&lt;br /&gt;
&lt;br /&gt;
== Colors ==&lt;br /&gt;
You can add color to your text. (Also works with @emit command.)&lt;br /&gt;
:Surround the color name in carets (for example, ^red^), then return to normal with ^normal^. Note that colors are escaped on a per-line basis. You should never end a line in ^normal^ after the last character.&lt;br /&gt;
:Valid colors: Red, blue, green, cyan, yellow, brown, black, white, gray, possibly others. Use &#039;colors&#039; command to see full list.&lt;br /&gt;
:You can also use ^bold^, ^italics^, and ^underline^. ^blink^ appears as normal italics in most clients and is strongly discouraged.&lt;br /&gt;
&lt;br /&gt;
== Advanced Code ==&lt;br /&gt;
&lt;br /&gt;
These will not work in personal or room descriptions. Mostly for use in creature creation and other NPC scripts.&lt;br /&gt;
&lt;br /&gt;
Functions&lt;br /&gt;
:[increase the (stat) of [target] by (number)] -- Modify stats, negative numbers are cool. Whole numbers only.&lt;br /&gt;
:[impregnate [target1] with [target2]] -- Causes a chance for babies. The first is the mother. Both need proper parts.&lt;br /&gt;
:[end] -- Used in defeat# and victory# to end the processing in that block if [end] remains after displaying that block.&lt;br /&gt;
::ONLY use [end] for multi-line Victory/Defeat Messages! These are not necessary unless you require a line break.&lt;br /&gt;
&lt;br /&gt;
Targets&lt;br /&gt;
:[here] -- Used to identify the room (not its name, its DB ref).&lt;br /&gt;
&lt;br /&gt;
== Limits ==&lt;br /&gt;
String Parsing &#039;&#039;cannot&#039;&#039;:&lt;br /&gt;
* Test for combat.&lt;br /&gt;
* Message other players or provide other output.&lt;br /&gt;
&lt;br /&gt;
== Example Code  ==&lt;br /&gt;
&lt;br /&gt;
=== NPC Name Tracking ===&lt;br /&gt;
By Damaged:&lt;br /&gt;
You want to say, have a particular name hang about, on the player, so that once they have given in&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;Oh, [if stat Fox/Name of [player] does exist][player]!&amp;quot; [if stat Fox/Name of [player] == 1]Lilly[else if stat Fox/Name of [player] == 2]Michelle[else if stat Fox/Name of [player] == 3]Jenny[end if] says, &amp;quot;It&#039;s Tuesday again[else]have we not met? My name is [one of]Lilly[set the Fox/Name of [player] to 1][or]Michelle[set the Fox/Name of [player] to 2][or]Jenny[set the Fox/Name of [player] to 3][at random], and I am going to fuck you nine ways from Tuesday[end if]!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note that you MUST use &#039;formstat/Monster Name/statname&#039; if you set this via a monster. Use [set the formstat/Monster Name/statname of [target] to x] as the write-function syntax and [stat formstat/Monster Name/statname of [target]] as the read-function.&lt;br /&gt;
&lt;br /&gt;
=== Set player color ===&lt;br /&gt;
by Damaged:&lt;br /&gt;
&lt;br /&gt;
Goo Girl skin transform: A ripple of tingles rushes through your entire body as you sink towards the ground, then rise again, wobbling along the way. A glance at a hand shows that you can see right through your now [set the formstat/Goo Girl/texture of player to [one of]jellied[or]gelatine like[or]translucent[at random]] [set the formstat/Goo Girl/color of player to [one of]blue[or]red[or]purple[at random]]&lt;br /&gt;
&lt;br /&gt;
== Deprecated Code ==&lt;br /&gt;
&lt;br /&gt;
These functions and items do not work anymore, but are listed for legacy purposes.&lt;br /&gt;
&lt;br /&gt;
:[infect [target] with (infection name) at (number)] -- once had a (number)% chance of infecting the named person with the named infection. This is now done by default in Defeat scenes.&lt;br /&gt;
:[otherwise] -- used to be a synonym for [else], but deprecated due to performance concerns.&lt;br /&gt;
:[infected] -- used to be a [target] attribute, similar to [player].&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
[http://web.flexiblesurvival.com/viewtopic.php?f=9&amp;amp;t=218 Damage&#039;s Original &#039;Guides&#039; post] &#039;&#039;&#039;Not up-to-date information.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://dl.dropbox.com/u/40286482/FS%20string%20parser.zip Notepad++ contextual plugin, courtesy of Kaytlin]&lt;br /&gt;
&lt;br /&gt;
[https://atom.io/packages/language-flexiblesurvival Syntax highlighter] for the [https://atom.io/ atom.io] editor by [[User:Inutt|Inutt]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Guides]][[Category:Code]]&lt;/div&gt;</summary>
		<author><name>Jetharius</name></author>
	</entry>
	<entry>
		<id>https://wiki.flexiblesurvival.com/index.php?title=Goo_girl_glomp_(quest)&amp;diff=1443392</id>
		<title>Goo girl glomp (quest)</title>
		<link rel="alternate" type="text/html" href="https://wiki.flexiblesurvival.com/index.php?title=Goo_girl_glomp_(quest)&amp;diff=1443392"/>
		<updated>2019-12-01T01:28:48Z</updated>

		<summary type="html">&lt;p&gt;Jetharius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Started via Mr. Simon in RSX Headquarters, second floor, west of the briefing room in the elite supplies office.  &lt;br /&gt;
&lt;br /&gt;
Part one: He requests for you to visit the sewers in Woodfield city and remove the Goo Girl menace!  &lt;br /&gt;
(hint: use tport remort, then depart to the overworld, and go south and down from the court of love entrance.)&lt;br /&gt;
&lt;br /&gt;
    Once in the sewers use room scan to check for your target.  Search for trouble and if your encounters includes at least one of the goo girl ferals, and you successfully dispatch them, the room will be cleared for quest progress.  This must be done for every, single, room in the sewers, to include the cave in the north west area.  It is time consuming and patrol point heavy.  Once every room is verified to be clear of Goo Girls using scan room, return to Mr. Simon.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Part two: He is excited to hear about your success but requests evidence to back up your claim.  &lt;br /&gt;
&lt;br /&gt;
    Return to the sewers and &#039;search&#039; around for any remnants of the ferals you dispatched earlier.  (hint: using search in the cave will return 100% of encountering a goo girl w/o special perks.)  Once you complete the encounter, return to Mr. Simon, for a strong berating and some insults along with your reward; some freecred, the Glomper badge, and the Suppressing craftmod recipe.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Multiplayer Quests]]&lt;br /&gt;
[[Category:Fairhaven Quests]]&lt;/div&gt;</summary>
		<author><name>Jetharius</name></author>
	</entry>
	<entry>
		<id>https://wiki.flexiblesurvival.com/index.php?title=Goo_girl_glomp_(quest)&amp;diff=1443391</id>
		<title>Goo girl glomp (quest)</title>
		<link rel="alternate" type="text/html" href="https://wiki.flexiblesurvival.com/index.php?title=Goo_girl_glomp_(quest)&amp;diff=1443391"/>
		<updated>2019-12-01T01:26:06Z</updated>

		<summary type="html">&lt;p&gt;Jetharius: Kill a bunch of goo girls and be told your an idiot to get the Suppressing craftmod.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Started via Mr. Simon in RSX Headquarters, second floor, west of the briefing room in the elite supplies office.  &lt;br /&gt;
&lt;br /&gt;
Part one: He requests for you to visit the sewers in Woodfield city and remove the Goo Girl menace!  &lt;br /&gt;
(hint: use tport remort, then depart to the overworld, and go south and down from the court of love entrance.)&lt;br /&gt;
&lt;br /&gt;
    Once in the sewers use room scan to check for your target.  Search for trouble and if your encounters includes at least one of the goo girl ferals, and you successfully dispatch them, the room will be cleared for quest progress.  This must be done for every, single, room in the sewers, to include the cave in the north west area.  It is time consuming and patrol point heavy.  Once every room is verified to be clear of Goo Girls using scan room, return to Mr. Simon.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Part two: He is excited to hear about your success but requests evidence to back up your claim.  &lt;br /&gt;
&lt;br /&gt;
    Return to the sewers and &#039;search&#039; around for any remnants of the ferals you dispatched earlier.  (hint: using search in the cave will return 100% of encountering a goo girl w/o special perks.)  Once you complete the encounter, return to Mr. Simon, for a strong berating and some insults along with your reward; some freecred, the Glomper badge, and the Suppressing craftmod recipe.&lt;/div&gt;</summary>
		<author><name>Jetharius</name></author>
	</entry>
</feed>