Difference between revisions of "String Parsing"
(→Flags) |
m (→Flags) |
||
Line 121: | Line 121: | ||
You can check for certain features in a target using [[flags]]. | You can check for certain features in a target using [[flags]]. | ||
− | [if (flag) | + | [if (flag) present in [target]]You have something that's (flag).[end if] |
For a list of available flags to check for, see the [[flags|flag list]]. | For a list of available flags to check for, see the [[flags|flag list]]. | ||
Revision as of 02:56, 29 November 2013
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 locally 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 text editor Notepad++ and language file (Windows) Fraise (Mac), or VI, eMacs, etc (Linux).
Staffer's 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.
Contents
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]
Variables
SP can retrieve, test, and display certain pieces of information about characters.
Targets
A Target refers to a specific character. Targets must be enclosed in their own set of brackets. A [target] by itself will return the target's name.
- Hi [player]!
returns
- Hi Nuku!
Valid Targets:
- [player] - Name of character the description is on.
- [looker] - Name of the character viewing the description.
- [loser] - The loser of a fight. (For victory/defeat messages.)
- [victor] - The winner of a fight (For victory/defeat messages.)
- [infected] - Returns target of infection (NOTE: Please avoid using this when possible)
Pronouns
These will display the correct gender of the pronoun according to the target.
Use:
- [pronoun of [target]]
- Example: You see an employee badge hanging from [%p of [player]] coat.
Available Pronouns (Examples are not valid code. They are only demonstrating where
- %p/%P for possessive pronouns (his/her/its <item>, His/Her/Hir/Its <item>)
- Example: Who's book is it? It's %p book.
- %a/%A for absolute possessive pronouns (his/hers/hirs/its, His/Hers/Hirs/Its)
- Example: Who's book is it? It's %a.
- %s/%S for subjective pronouns (he/she/shi/it, He/She/Shi/It)
- Example: %S got the book.
- %o/%O for objective pronouns (him/her/hir/it, Him/Her/Hir/It)
- Example: The book fell on %o.
- %r/%R for reflexive pronouns (himself/herself/hirself/itself, Himself/Herself/hirself/Itself)
- Example: Chris did it all by %r.
- %n/%N for the player's name. (Also can just use [target] by itself.)
- The shopkeeper's name is %n .
Stats
You can use SP to retrieve information about a target using [stat stat of [target]]
- HP - Returns current raw HP.
Local Stats
You can create your own custom stats specific to your character, and test for them like any other in your description. @set me=foo:bar, and then use [local stat foo of [player]] in your parsed description.
If you feel like your custom stat may be of use to others, please add it to the list of Community Custom Stats.
- Example: @set me=eyecolor:blue will make '...with piercing [local stat eyecolor of [player]] eyes.' read as '...with piercing blue eyes.'
You can also organize your values with @set me=something/foo:bar. Please use "public/mystat" for your custom stats. This will help keep the user config files clean, and prevent accidental overwriting of important variables. If you have a lot of custom stats, consider "public/mystats/stat1, public/mystats/stat2" etc. Recent security features will, in fact, keep you from being able to access local stats other than in the root directory and in the public directory. You may put as many subdirectories in the public one as you need. Example:
- @set me=public/piercings/number:three
- @set me=public/piercings/type:silver
- @set me=public/piercings/side:left
"They have [local stat public/piercings/number of [player]] [local stat public/piercings/type of [player]] rings in their [local stat public/piercings/side of [player]] ear." will now read as "They have three silver rings in their left ear."
Body Parts
You can retrieve the numerical value of body parts with [stat part of [target]]
- Breasts - Number of breasts
- Breast Size - Returned as a numerical value (1, 2, 3) not cup size.
- Cocks - Number of Cocks
- Cock Length
- Ball Size
- Cunts - Number of counts
- Cunt Length - Depth of Cunt
(Not sure how Modest Appearance perk affects this.)
Mutations
Using [stat mutation/part of [target] will retrieve the mutation present in that location.
- 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
Other Values
These values do not need to be proceeded by 'stat'. use "value of [target]".
- hp - shows the percentage of total HP. A target at 50% health will return '50'. (To get raw HP, use '[stat HP of [target]') Will return 0 or 100 after mentoring up/down until the next reg 'tick'.
- pregnant - returns pregnancy value as 0 or 1 (pregnant).
- [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
- level - returns target's true level
- mentor - returns target's mentored level
- [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.
- [breastdesc] - Informs the game that you are describing the breasts in this description, and subsequently omits the "He/she has X Y-sized breasts" part of the automatic description.
Flags
You can check for certain features in a target using flags. [if (flag) present in [target]]You have something that's (flag).[end if] For a list of available flags to check for, see the flag list.
Functions
SP provides a few simple functions for data processing.
Tests
- If-Then tests are formatted as [if X]string 1[else]string 2[end if].
- You do not need to include [else], but you must finish with [end if].
- To test multiple items in one check use [if a and b and c].
- You can nest if-thens, but remember your [end if]s.
- Comparisons
- [if X is Y] or [if X is not Y]
- [if stat (stat name) of [target] = (string)]
- [if stat (stat name) of [target] == (number)]
- [if stat (stat name) of [target] > (number)]
- [if stat (stat name) of [target] < (number)] -- Do stat comparisons!
- [if (power name) owned by [target]] -- Test for a power.
- 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 neuter] -- Is [target] neuter?
- [if [target] is herm] -- Is [target] a herm?
- Test fertility
- [if [target] is fertile] -- Non-females cannot be fertile and will always fail this test.
Randoms
[one of]X[or]Y[or]Z[at random]
- Generates one of the specified values at random.
[random X to Y]
- Generates a number between X and Y.
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]
Colors
You can add color to your text. (Also works with @emit command.)
- 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. Use 'colors' command to see full list.
- You can also use ^bold^, ^italics^, ^underline^, and yes, even ^blink^.
Advanced Code
These will not work in personal or room descriptions. Mostly for use in creature creation and other NPC scripts.
Functions
- [increase the (stat) of [target] by (number)] Modify stats, negative numbers are cool. Whole numbers only.
- [impregnate [target1] with [target2]] -- Causes a chance for babies. The first is the mother. Both need proper parts.
- [end] -- Used in defeat# and victory# to end the processing in that block if [end] remains after displaying that block.
Targets
- [here] -- Used to identify the room (not its name, its DB ref).
Limits
String Parsing cannot:
-
Compare two variables. (If cocks > cunts) -
Test for effects. (DamResist) - Test for combat.
- Message other players or provide other output.
-
Do math. (1 + 2)
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
- "Oh, [if stat Fox/Name of [player] does exist][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, "It'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]!"
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 [target] with (infection name) at (number)] -- has a (number)% chance of infecting the named person with the named infection.
Resources
Damage's Original 'Guides' post Not up-to-date information.