String Parsing

From Flexible Survival
Revision as of 18:29, 14 December 2011 by Sevenish (talk | contribs) (Targets)
Jump to: navigation, search


String Parsing refers to some of the underlying guts of the MUD. You can use it to liven up your creature submissions, rooms, and even your own description.

Basic Syntax

String parsing processes only what is in between [brackets]. Keywords and functions should all be in lowercase, though the code is supposedly case sensitive. There should be no spaces after the [leading bracket or before the trailing bracket].

Line breaks are bad. Avoid them when parsing. [Set of parse code]{line break}[Another set of parse code] is fine.

Functions

[variable] will show the value of that variable.
[stat (stat name) of [(person name)]] -- Show a stat!
If-Then tests are formatted as [if X]item 1[otherwise]item 2[end if].
You do not need to include [otherwise] but you must finish with [end if]
To test multiple items in one check use [if a and b and c], Not [if a and if b and if c]
You can nest if-thens, but remember your [end if]s.
Randoms are [one of]X[or]Y[or]Z[at random]. Do NOT nest randoms.
Comparisons
[if X is Y] or [if X is not Y]
[if stat (stat name) of (person name) = (number)]
[if stat (stat name) of (person name) > (number)]
[if stat (stat name) of (person name) < (number)] -- Do stat comparisons!
test for a power [if POWER NAME is owned by TARGET]
Test gender
[if TARGET is male] - Does TARGET have a cock?
[if TARGET is female] - Does TARGET have a pussy?
[if TARGET is not male] and [if TARGET is not female] - Testing for absence of cock/pussy
[if TARGET is not male and TARGET is not female] - Combining tests. Only a neuter will pass this.
[if TARGET is male and TARGET is female] - Combining tests. Only a herm will pass this.
Test ferility
[if TARGET is fertile] - Non-females cannot be fertile and will always fail this test.

Targets

Target variables must be encased within brackets ([player], [victor], etc).

victor - returns the name of the winner in a fight (creature desc only)
loser - returns the loser of a fight (creature desc only)
player - returns the container(player) of the description
looker - returns the viewer of a description
<codeinfected</code> - returns target of infection (creature infection message only)

Stats

pregnant - returns pregnancy value. Anything over 0 means pregnant.

[If stat pregnant of loser >0]

Adventuring Group - returns name of player group
[skin] -- returns the primary user's skin, primary user can be tricky at times, safest to use in descs and transformations. (better to use mutation/skin)
freecred - returns target's freecred balance
hp - returns target's HP percent of total HP (To get raw HP, use 'stat HP') Will return 0 or 100 after mentoring up/down until the next reg 'tick'.

Colors

Surround the color name in carets (for example, ^red^), then return to normal with ^normal^
Valid colors: Red, blue, green, cyan, yellow, brown, black, white, gray/grey, possibly others.
You can also use ^bold^, ^blink^, ^italics^, ^underline^

Pronoun Substitutions

%a/%A for absolute possessive (his/hers/its, His/Hers/Its)
%s/%S for subjective pronouns (he/she/it, He/She/It)
%o/%O for objective pronouns (him/her/it, Him/Her/It)
%p/%P for possessive pronouns (his/her/its, His/Her/Its)
%r/%R for reflexive pronouns (himself/herself/itself,Himself/Herself/Itself)
%n/%N for the player's name.


Sub-values

mutation/skin - returns skin mutation
mutation/head - returns head mutation
mutation/arms - returns arms mutation
mutation/torso - returns torso mutation
mutation/cock - returns groin mutation
mutation/legs - returns legs mutation

Creature Only Code

These will not work in personal or room descriptions.

[increase the (stat) of (person name) by (number)] Modify stats, negative numbers are cool. Whole numbers only.
[impregnate (person name) with (person name)] -- Causes a chance for babies. The first is the mother. Both need proper parts.
[set the <variable> of <person> to <value>] - Set a custom value on the target.
[end] -- Used in defeat# and victory# to end the processing in that block if [end] remains after displaying that block.
infected - returns target of infection (creature infection message only)

Example Code

NPC Name Tracking

By Damaged: You want to say, have a particular name hang about, on the player, so that once they have given in

[if stat Fox/Name of player = 0]"Oh, have we not met? My name is [one of]Lilly[increase the Fox/Name of player by 1][or]Michelle[increase the Fox/Name of player by 2][or]Jenny[increase the Fox/Name of player by 3][at random], and I am going to fuck you nine ways from tuesday!"[otherwise]"Oh, [player]!" [if stat Fox/Name of player = 1]Lilly[end if][if stat Fox/Name of player = 2]Michelle[end if][if stat Fox/Name of player = 3]Jenny[end if] says, "Its tuesday again!"[end if]


Set player color

by Damaged:

str /Infection/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 Goo Girl/texture of player to [one of]jellied[or]gelatine like[or]translucent[at random]] [set the Goo Girl/color of player to [one of]blue[or]red[or]purple[at random]]

Deprecated Code

These functions and items do not work anymore, but are listed for legacy purposes.

[infect (person name) with (infection name) at (number)] -- has a (number)% chance of infecting the named person with the named infection.

Resources

Damage's Original 'Guides' post

Help on String Parsing