String Parsing

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


String Parsing (SP) 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. While it's a bit limited in power compared to other languages, it's easy to read and learn. If you're new to programming, it's recommended you use notepad to work in. This lets you save your files localy in case of a disconnect, and avoids weird formatting issues that sometimes pop up in Word. If you're going to be using SP heavily, look for a programming editor like Notepad++ (Win) or Fraise (Mac).

Basic Syntax

Formatting

Everything in SP is contained in brackets []. Though SP is supposedly case insensitive, it's recommended you use only lowercase.

There should be no spaces after the leading bracket or before the trailing bracket.

[like this]
[ not like this ]

Line breaks are bad. Avoid them within brackets, and within [if...][end if] sections.

This is bad.

Hi [player]![if [player] is male]
I'm a

boy![end if]

This is good.

Hi! [player]!
[if [player] is male]I'm a boy![end if]

Nesting

You may nest [if..][end if] tests. Do NOT nest [one of]...[at random] sections.

[if [player] is male]I'm a boy[if [player] is female] and a girl[end if]![end if]


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
infected - 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