Difference between revisions of "Monster Maker"

From Flexible Survival
Jump to: navigation, search
(Templates)
(Bodypart Sizes)
 
(16 intermediate revisions by 4 users not shown)
Line 28: Line 28:
 
:: The Bodypart Sizes section is divided into several fields. These are as follows:
 
:: The Bodypart Sizes section is divided into several fields. These are as follows:
 
::* Size
 
::* Size
::* 1st Person Say
+
::* 2nd Person Say
 
::* 3rd Person Say
 
::* 3rd Person Say
 
::* Breasts
 
::* Breasts
Line 41: Line 41:
 
::'''Size''': This refers to the overall size of the monster. Human is size 5 (ranges from 5'-6'6", generally with some leeway.) Body size is fairly ambiguous and purposely so, but 5 is the starting point. It goes up and down from there, from 1 to 30 (35 for special forms like privately purchased forms).
 
::'''Size''': This refers to the overall size of the monster. Human is size 5 (ranges from 5'-6'6", generally with some leeway.) Body size is fairly ambiguous and purposely so, but 5 is the starting point. It goes up and down from there, from 1 to 30 (35 for special forms like privately purchased forms).
  
::'''1st Person Say''': This is what you see when you use the say command or don't use poses while communicating on channels. For example, if you put ''snarl'', you will see when you type ''pub Hi!'': [Public] You snarl, "Hi!"
+
::'''2nd Person Say''': This is what you see when you use the say command or don't use poses while communicating on channels. For example, if you put ''snarl'', you will see when you type ''pub Hi!'': [Public] You snarl, "Hi!"
  
 
::'''3rd Person Say''': This is what you see when you use the say command or don't use poses while communicating on channels. For example, if you put ''snarls'', people on the channel will see when you type ''pub Hi!'': [Public] Player snarls, "Hi!"
 
::'''3rd Person Say''': This is what you see when you use the say command or don't use poses while communicating on channels. For example, if you put ''snarls'', people on the channel will see when you type ''pub Hi!'': [Public] Player snarls, "Hi!"
  
::'''Breasts, Cocks, Cunts''': This is the number of breasts, cocks, and cunts that the infection has for its base. Remember, this does not mean all players will have it, due to Male Preferred, Female Only and like merits.
+
::'''Breasts, Cocks, Cunts''': This is the number of breasts, cocks, and cunts that the infection has for its base. Remember, this does not mean all players will have it due to No Vagina, No Penis, and similar merits.
  
 
::'''Breast Size, Cock Length, Cunt Length''': This is the size of the parts the monster infection has. Remember that all these numbers represent proportionately to size 5. So, if you have size 12 for cock length, that's size 12 for size 5. If your monster's size is 1, it'll still have a cock size ''proportionately'' equivalent to 12, meaning something closer to size 2 or so, but you still input it as 12.
 
::'''Breast Size, Cock Length, Cunt Length''': This is the size of the parts the monster infection has. Remember that all these numbers represent proportionately to size 5. So, if you have size 12 for cock length, that's size 12 for size 5. If your monster's size is 1, it'll still have a cock size ''proportionately'' equivalent to 12, meaning something closer to size 2 or so, but you still input it as 12.
  
 
=== Descriptions and Transformations ===
 
=== Descriptions and Transformations ===
::This section can be one of the trickier portions. Here, you input the descriptions for each body part -- how they look when you view their description. Transformations are what is viewed, first-person, by the player who's being infected by this monster. String parsing and use of ''they'', ''their'', and ''them'' are all key in the Description fields, and, most importantly, using a document editor like Word that has grammar and spell-checking is ''highly suggested''.
+
::This section can be one of the trickier portions. Here, you input the descriptions for each body part -- how they look when you view their description. Transformations are what is viewed, second-person, by the player who's being infected by this monster. String parsing and use of ''they'', ''their'', and ''them'' are all key in the Description fields, and, most importantly, using a document editor like Word that has grammar and spell-checking is ''highly suggested''.
  
 
::Here is the list of fields:
 
::Here is the list of fields:
Line 76: Line 76:
 
::'''Short Skin Description''': This is the less-often used description. Mainly for heat messages and the like, it is also displayed when the [skin] string parsing is used. Using only two or three adjectives. For example, if you were wishing to describe a rabbit's fur, you could describe it as: ''soft, silky'' for the short description.
 
::'''Short Skin Description''': This is the less-often used description. Mainly for heat messages and the like, it is also displayed when the [skin] string parsing is used. Using only two or three adjectives. For example, if you were wishing to describe a rabbit's fur, you could describe it as: ''soft, silky'' for the short description.
  
::'''Skin Transformation''': This is the first-person transformation message you see when you transform into this monster. For example: ''Your skin shudders and itches as many minute fibers spring from your flesh into a thick coat of soft, silky fur.'' would display as just that when you transform your skin to this monster.
+
::'''Skin Transformation''': This is the second-person transformation message you see when you transform into this monster. For example: ''Your skin shudders and itches as many minute fibers spring from your flesh into a thick coat of soft, silky fur.'' would display as just that when you transform your skin to this monster.
  
 
::'''Head, Torso, Arms, and Legs Description''': Like the Long Skin Description, these are what will be displayed. They will also be following ''Their head is'', ''Their body is'', ''Their arms are'', and ''Their legs are'', so remember not to include that in the description. For example, let's say you want "Their arms are long and lean." to appear in the description. You would enter into the field: ''long and lean''.
 
::'''Head, Torso, Arms, and Legs Description''': Like the Long Skin Description, these are what will be displayed. They will also be following ''Their head is'', ''Their body is'', ''Their arms are'', and ''Their legs are'', so remember not to include that in the description. For example, let's say you want "Their arms are long and lean." to appear in the description. You would enter into the field: ''long and lean''.
Line 92: Line 92:
  
 
Taur:
 
Taur:
[if taur is present in [player]]part of a lower torso.[else]<description as if they were bipedal>>[end if]
+
[if taur present in [player]]part of a lower torso[else]<description as if they were bipedal>[end if].
  
 
Serpentine:
 
Serpentine:
[if serpentine is present in [player]]nonexistent.[else]<description as if they were bipedal>[end if]
+
[if serpentine present in [player]]nonexistent[else]<description as if they were bipedal>[end if].
  
 
:: This way, if you don't have the ass of said form, you'd have some bipedal legs, but if you do, the legs will be invisible anyhow. In the Ass portion, you would put the entire description for the Taur or Serpentine form:
 
:: This way, if you don't have the ass of said form, you'd have some bipedal legs, but if you do, the legs will be invisible anyhow. In the Ass portion, you would put the entire description for the Taur or Serpentine form:
  
 
Taur:
 
Taur:
Their lower body is that of a horse complete with four sturdy legs meant for long strides and a rounded, taut flanks with a whippety horse's tail.
+
Their lower body is that of a horse, complete with four sturdy legs meant for long strides and taut, rounded flanks with a whippety horse's tail.
  
 
Serpentine:
 
Serpentine:
Line 109: Line 109:
 
=== Victory and Defeat Messages ===
 
=== Victory and Defeat Messages ===
 
::One of the more complicated parts of monster making is this. Fortunately, there are only a few fields that you have to actually worry about. They are:
 
::One of the more complicated parts of monster making is this. Fortunately, there are only a few fields that you have to actually worry about. They are:
::*Monster Defeats Player, 1st Person Defeat
+
::*Monster Defeats Player, 2nd Person Defeat
::*Player Defeats Monster, 1st Person Victory
+
::*Player Defeats Monster, 2nd Person Victory
 
::*Player Defeats Monster, 3rd Person Victory
 
::*Player Defeats Monster, 3rd Person Victory
 
::*Misc. Notes
 
::*Misc. Notes
Line 116: Line 116:
 
::'''Monster Defeats Player''': This is the easiest of the three defeat fields to fill out. Since the monster is usually a solid specimen of just that infection, you don't have to worry about infection mixes when writing this one up. It is from the player's point of view and being defeated by the monster. For example: ''The goblin looms over you, a leer cracking his lips. Raising a meaty fist, he brings it down over your head again and again until you black completely out.'' You can, of course, put string parsing in and have actions based on the defeated player's statistics, such as the presence of a cock or vagina with [if [player] is male] or [if [player] is female]. Just be sure to review over it and follow String Parsing syntax.
 
::'''Monster Defeats Player''': This is the easiest of the three defeat fields to fill out. Since the monster is usually a solid specimen of just that infection, you don't have to worry about infection mixes when writing this one up. It is from the player's point of view and being defeated by the monster. For example: ''The goblin looms over you, a leer cracking his lips. Raising a meaty fist, he brings it down over your head again and again until you black completely out.'' You can, of course, put string parsing in and have actions based on the defeated player's statistics, such as the presence of a cock or vagina with [if [player] is male] or [if [player] is female]. Just be sure to review over it and follow String Parsing syntax.
  
::'''Player Defeats Monster, 1st Person''': The tricky part with this field is accounting for infection parts the player ''doesn't'' have. A victory message triggers based on the Groin infection of the player, and not its other mutations. If you want to incorporate unique aspects of the monster into the victory message, be sure to put a check in for that part existing. This can be accomplished with [if stat mutation/<body part> of [victor] = <monster>]<message if body part has correct infection>[else]<message if that body part isn't present>[end if]. For example: ''You gloat over the fallen [loser] before [if stat mutation/ass of [victor] = Scorpion]striking down with your stinger.[else]beating down with your fist.[end if]''
+
::'''Player Defeats Monster, 2nd Person''': The tricky part with this field is accounting for infection parts the player ''doesn't'' have. A victory message triggers based on the Groin infection of the player, and not its other mutations. If you want to incorporate unique aspects of the monster into the victory message, be sure to put a check in for that part existing. This can be accomplished with [if stat mutation/<body part> of [victor] = <monster>]<message if body part has correct infection>[else]<message if that body part isn't present>[end if]. For example: ''You gloat over your fallen opponent before [if stat mutation/ass of [victor] = Scorpion]striking down with your stinger[if stat misc/Tail Divider of [victor] == 1]s[end if][else]beating down with your fist[end if].''
  
::'''Player Defeats Monster, 3rd Person''': Same here as with 1st person for difficulties and methods, save you're writing it from an observer's point of view. With the above example, you'd instead have: ''As [victor] gloats over the fallen [loser], they [if stat mutation/ass of [victor] = Scorpion]strike down with their stinger-tipped tail.[else]beat down over their enemy with their fists.[end if]'' Your victory messages are as comprehensive as you make them.
+
::'''Player Defeats Monster, 3rd Person''': Same here as with 2nd person for difficulties and methods, save you're writing it from an observer's point of view. With the above example, you'd instead have: ''As [victor] gloats over [%p of [victor]] fallen opponent, [%s of [victor]] [if stat mutation/ass of [victor] = Scorpion]strikes down with [%p of [victor]] stinger-tipped tail[if stat misc/Tail Divider of [victor] == 1]s[end if][else]beats down over [%p of [victor]] enemy with [%p of [victor]] fists[end if].'' Your victory messages are as comprehensive as you make them.
  
 
::'''Misc. Notes''': This is the area where you would note some of your ideas for monster placement and potential monster powers. Final discretion still lies in the park of staff, but it's always good to voice your ideas, as the creator of the form. Remember that no Dedication or Private powers will be available for usage. For a list of powers that exist, ''list powers'' can be used, and you can ''+rpinfo'' any power to get details about it. Try to match what would be themely for the monster, not just what does the most damage or the like.
 
::'''Misc. Notes''': This is the area where you would note some of your ideas for monster placement and potential monster powers. Final discretion still lies in the park of staff, but it's always good to voice your ideas, as the creator of the form. Remember that no Dedication or Private powers will be available for usage. For a list of powers that exist, ''list powers'' can be used, and you can ''+rpinfo'' any power to get details about it. Try to match what would be themely for the monster, not just what does the most damage or the like.
  
 
== String Parsing ==
 
== String Parsing ==
:The bane and fear of many a monster making exercise: String Parsing. The greatest issue that many have is they do not understand the syntax and format of string parsing. Well, here are some helpful tips, hints, and templates.
+
:The bane and fear of many a monster making exercise: String Parsing. The greatest issue that many have is they do not understand the syntax and format of String Parsing. Well, here are some helpful tips, hints, and templates.
  
 
=== Tips and Hints ===
 
=== Tips and Hints ===
 
::* When referencing 'male' and 'female' in if statements, it refers specifically to the existence of a cock and cunt. For example: [if [player] is male] checks to see if the [player] has a cock stat that's not 0. This means it will trigger true for both males and hermaphrodites. ''NOTE'': String Parsing has been updated with [if [player] is feminine] which will trigger for nonmasculine females and feminine characters and herms. This streamlines things well!
 
::* When referencing 'male' and 'female' in if statements, it refers specifically to the existence of a cock and cunt. For example: [if [player] is male] checks to see if the [player] has a cock stat that's not 0. This means it will trigger true for both males and hermaphrodites. ''NOTE'': String Parsing has been updated with [if [player] is feminine] which will trigger for nonmasculine females and feminine characters and herms. This streamlines things well!
::* When making an [if] statement, remember to end it with an [end if] statement. The syntax is [if <statement to be checked if true or false>]<what displays if true>[end if]. If you want something to display if false, you use this syntax: [if <statement to be checked for true or false>]<what displays if true>[else]<what displays if false>[end if].
+
::* When making an [if ] statement, remember to end it with an [end if]. The syntax is [if <statement to be checked if true or false>]<what displays if true>[end if]. If you want something to display if false, you use this syntax: [if <statement to be checked if true or false>]<what displays if true>[else]<what displays if false>[end if].
 
::* If you decide to nest if statements (placing one inside of another), make sure that you have an [end if] for each if statement.
 
::* If you decide to nest if statements (placing one inside of another), make sure that you have an [end if] for each if statement.
 
::* [player] is used in the descriptions and transformations as a reference whereas [victor] and [loser] are used in the Defeat/Victory messages.
 
::* [player] is used in the descriptions and transformations as a reference whereas [victor] and [loser] are used in the Defeat/Victory messages.
 
::* String parsing can be used for many fun additives, like changeable sections or randomization. Check out the templates for some interesting ones.
 
::* String parsing can be used for many fun additives, like changeable sections or randomization. Check out the templates for some interesting ones.
::* Local stats refer to stats that you the player can change with either @set me=<stat>:<value> or &<stat> me=<value>.
+
::* Local stats refer to stats that you the player can change with lset <Form Name>/<statname>=<value>
::* Case statements can be used in lieu of messy, repeatedly nested if statements. For example: [case stat cocks of [player] >][when (target) 10]many[end when][when (target) 6]several[end when][when (target) 3]a few[end when][when (target) 2]a couple[end when][when (target) 0]a[end when][when 1]no[end when][end case] cock[if stat cocks of [player] > 1]s[end if]. For more information, check out +help string parsing/case on the MUCK.
+
::* Case statements can be used in lieu of messy [if ][else if ][end if] statements. For example: [case stat cocks of [player] >][when (target) 10]many[end when][when (target) 6]several[end when][when (target) 3]a few[end when][when (target) 2]a couple[end when][when (target) 0]a[end when][when 1]no[end when][end case] cock[if stat cocks of [player] > 1]s[end if]. For more information, check out +help string parsing/case on the MUCK.
  
 
=== Templates ===
 
=== Templates ===
Line 142: Line 142:
  
 
:''In Transformation message'':
 
:''In Transformation message'':
:[if stat <critter name>/<variable name> of [player] does not exist][set the <critter name>/<variable name> of [player] to [one of]<variable 1>[or]<variable 2>[or]<variable 3>...[or]<variable n>[at random][end if]
+
:[if stat formstat/Critter Name/variable of [player] does not exist][set the formstat/Critter Name/variable of [player] to [one of]variable 1[or]variable 2[or]variable 3...[or]variable n[at random][end if]
 
:''Breakdown of action'':  
 
:''Breakdown of action'':  
 
::You start with an if statement that checks to see if the stat exists, If it has a value of 0, it doesn't exist. So, if it's empty, the set function is triggered. It'll set that stat to one of the variables in your list. You need [one of] at the beginning and separate each variable with [or] and end it with [at random]. Then, the entire if statement ends with an [end if].
 
::You start with an if statement that checks to see if the stat exists, If it has a value of 0, it doesn't exist. So, if it's empty, the set function is triggered. It'll set that stat to one of the variables in your list. You need [one of] at the beginning and separate each variable with [or] and end it with [at random]. Then, the entire if statement ends with an [end if].
 
:''Example'':
 
:''Example'':
:[if stat Goblin/EyeColor of [player] does not exist][set the Goblin/EyeColor to [one of]green[or]brown[or]black[or]white[or]yellow[at random][end if]
+
:[if stat formstat/Goblin/eyecolor of [player] does not exist][set the formstat/Goblin/eyecolor to [one of]green[or]brown[or]black[or]white[or]yellow[at random][end if]
 
:''In Description message'':
 
:''In Description message'':
:[stat <critter name>/<variable name> of [player]]
+
:[if stat formstat/Critter Name/variable of [player] does exist][stat formstat/Critter Name/variable of [player]][else]default variable for non-player characters, like monsters or children[end if]
 
:''Example'':
 
:''Example'':
:The goblin has [stat Goblin/EyeColor of [player]] eyes.
+
:The goblin has [if formstat/Goblin/eyecolor of [player] does exist][stat formstat/Goblin/eyecolor of [player][else]default color for non-player characters, like monsters or children[end if] eyes.
  
 
:'''Player-set variables''': These can be fun for letting players choose what they want in a spot, though be sure to have a default.
 
:'''Player-set variables''': These can be fun for letting players choose what they want in a spot, though be sure to have a default.
:[if local stat <critter name>/<variable name> of [player] does exist][local stat <monster name>/<variable name> of [player]][else]<default>[end if]
+
:[if local stat Critter Name/variable of [player] does exist][local stat Critter Name/variable of [player]][else]default[end if]
 
:''Breakdown'':
 
:''Breakdown'':
 
::The if statement checks if the variable exists. If there is a value, the local stat will be displayed. If it isn't set, then the false message, the default for this, will show. Close it all off with an [end if].
 
::The if statement checks if the variable exists. If there is a value, the local stat will be displayed. If it isn't set, then the false message, the default for this, will show. Close it all off with an [end if].
 
:''Example'':
 
:''Example'':
:[if local stat Goblin/EyeColor of [player] does exist][local stat Goblin/EyeColor of [player]][else]green[end if]
+
:[if local stat Goblin/eyecolor of [player] does exist][local stat Goblin/eyecolor of [player]][else]green[end if]
  
 
:'''Player-set variables with random-set, locked-in variable for default''': Combining the two above templates can be done in this fashion. Please try to use positive variables to avoid confusion and extra '-' symbols.
 
:'''Player-set variables with random-set, locked-in variable for default''': Combining the two above templates can be done in this fashion. Please try to use positive variables to avoid confusion and extra '-' symbols.
 
:''In Transformation'':
 
:''In Transformation'':
:[if stat <critter name>/<variable name> of [player] does not exist][set the <critter name>/<variable name> of [player] to [one of]<variable 1>[or]<variable 2>[or]<variable 3>...[or]<variable n>[at random][end if]
+
:[if stat formstat/Critter Name/variable of [player] does not exist][set the formstat/Critter Name/variable of [player] to [one of]variable 1[or]variable 2[or]variable 3...[or]variable n[at random][end if]
 
:''In Description'':
 
:''In Description'':
:[if local stat <critter name>/<variable name> of [player] does exist][local stat <critter name>/<variable name> of [player]][else][stat <critter name>/<variable name> of [player]][end if]
+
:[if local stat Critter Name/variable of [player] does exist][local stat Critter Name/variable of [player]][else if stat formstat/Critter Name/variable of [player] does exist][stat formstat/Critter Name/variable of [player]][else]default variable for non-player characters, like monsters or children[end if]
 
:''Note'': Note that a local stat and a stat are in two different areas, so they may have the exact same name but be two different variables. Local stats are set directly on the player whereas Stats are set in staff-access-only parts of the player.
 
:''Note'': Note that a local stat and a stat are in two different areas, so they may have the exact same name but be two different variables. Local stats are set directly on the player whereas Stats are set in staff-access-only parts of the player.
 
::''Example:''
 
::''Example:''
::Arm Description: are lean and powerful. [They] resemble those of a [if local stat Kitsune/Quad of [player] does exist]fox with clawed paws at the end, ready to support their chest and head[else]human ending in hands tipped with foxy claws[end if].
+
::Arm Description: are lean and powerful. [They] resemble those of a [if local stat Kitsune/quad of [player] does exist]fox with clawed paws at the end, ready to support their chest and head[else]human ending in hands tipped with foxy claws[end if].
::With this, you can see that if the Kitsune/Quad variable is blank, the arms will show up anthro, but if any value is in it, the arms will show up like a quadruped's. The 'Quad' naming was arbitrary, and the form is Kitsune. It's a good way to organize variables.
+
::With this, you can see that if the Kitsune/quad variable is blank, the arms will show up anthro, but if any value is in it, the arms will show up like a quadruped's. The 'Quad' naming was arbitrary, and the form is Kitsune. It's a good way to organize variables.
  
:'''Color Chooser Support''': This bit of parsing will allow for folks with a Color Chooser item to have different colors for parts of your form. Remember, there are two colors supported, Color and Color2.
+
:'''Color Chooser Support''': This bit of parsing will allow for folks with a Color Chooser item to have different colors for parts of your form. Remember, there are three colors supported, Color, Color2 and Color3.
  
 
::''Color''
 
::''Color''
:[if color present in [player]][local stat color of [player]][else]<default>[end if]
+
:[if color present in [player]][lstat color of [player]][else]<default>[end if]
 
::''Color2''
 
::''Color2''
:[if color2 present in [player]][local stat color2 of [player]][else]<default>[end if]
+
:[if color2 present in [player]][lstat color2 of [player]][else]<default>[end if]
 +
::''Color3''
 +
:[if color3 present in [player]][lstat color3 of [player]][else]<default>[end if]
 
::''Example:''
 
::''Example:''
::Skin Description: a sleek coat of [if color present in [player]][local stat color of [player]][else]tawny orange[end if] fur all over their body with [if color2 present in [player]][local stat color2 of [player]][else]black[end if] stripes banding in a tabby pattern from nose to end.
+
::Skin Description: a sleek coat of [if color present in [player]][lstat color of [player]][else]tawny orange[end if] fur all over their body with [if color2 present in [player]][lstat color2 of [player]][else]black[end if] stripes banding in a tabby pattern from nose to end.
  
:'''Arm/Tail Divider Support''': The String Parsing used in order to add in alternative descriptions for arm and tail divider usage.
+
:'''Arm/Tail Divider Support''': The String Parsing used in order to add in alternative descriptions for Arm Divider and Tail Divider usage.
  
 
::''Arm Divider''
 
::''Arm Divider''
:[if stat misc/arm divider of [player] == 1]<Arm Divider active description>[else]<Normal Description>[end if]
+
:[if stat misc/Arm Divider of [player] == 1]<Arm Divider active description>[else]<normal description>[end if]
 
::''Tail Divider''
 
::''Tail Divider''
:[if stat misc/tail divider of [player] == 1]<Arm Divider active description>[else]<Normal Description>[end if]
+
:[if stat misc/Tail Divider of [player] == 1]<Tail Divider active description>[else]<normal description>[end if]
 
::''Example:''
 
::''Example:''
::Arm Description: powerfully built with st[if stat misc/arm divider of [player] == 1]acked shoulders leading to three pairs of[else]urdy shoulders leading down to their powerful[end if] arms. Each terminates in dexterous hands capped in wicked talons.
+
::Arm Description: powerfully built with st[if stat misc/Arm Divider of [player] == 1]acked shoulders leading to three pairs of[else]urdy shoulders leading down to their powerful[end if] arms. Each terminates in dexterous hands capped in wicked talons.
  
 +
:'''Leg Splitter Support''': Similar to Arm/Tail Dividers, adding in an alternate tauric description.
 +
:[if taur present in [player]]<Leg Splitter active description[else]<normal description>[end if]
 +
::Like taurs, this should go in at least the Ass mutation. [legs] can be used for the current legs description.
  
:'''Mutation Check''': When you need to check for a certain bodypart carrying a certain mutation, here's how.
+
:'''Mutation Check''': When you need to check for a certain body part carrying a certain mutation, here's how.
  
:[if stat mutation/<body part> of [player] = <mutation>]<statement if true>[else]<statement if false>[end if]
+
:[if stat mutation/<body part> of [player] = <Mutation>]<statement if true>[else]<statement if false>[end if]
 
::''Example:''
 
::''Example:''
 
:Arm Description: long and lean[if stat mutation/skin of [player] = Feral Dragon] with a dense covering of scales articulating down over their joints[end if].
 
:Arm Description: long and lean[if stat mutation/skin of [player] = Feral Dragon] with a dense covering of scales articulating down over their joints[end if].
Line 196: Line 201:
  
 
'''There is a pair of INVALUABLE commands created by Fauna. They are: @nviewparse and @formparse.
 
'''There is a pair of INVALUABLE commands created by Fauna. They are: @nviewparse and @formparse.
:: You can type @nviewparse followed by a string of code or description portion to get it checked for common errors and look at it in an organized fashion. For @formparse, you can look over your submitted (not yet approved) forms' portions as well as approved forms to look over string parsing. Just type the @formparse command for the syntax. Using this, you can see what parsing might've been used on some of your favorite forms!
+
:: You can type @nviewparse followed by a string of code or description portion to get it checked for common errors and look at it in an organized fashion. For @formparse, you can look over your submitted (not yet approved) forms' portions as well as approved forms to look over String Parsing. Just type the @formparse command for the syntax. Using this, you can see what parsing might've been used on some of your favorite forms!
  
''If you would like to see templates for other nifty string parsing tricks you can add to your monsters, feel free to mail Glitch or post a +request under 'Building' to get it added here!''
+
''If you would like to see templates for other nifty string parsing tricks you can add to your monsters, feel free to mail Glitch and Song or post a +request under 'Building' to get it added here!''
  
[[Category:Guides]]
+
[[Category:Monster Making]]

Latest revision as of 08:35, 15 March 2022

The Monster Maker is a useful tool to express your ideas for new and interesting monsters to be applied to the game. It is for original monsters, and it is not for copying the works of others, whether it be your fellow players or copyrighted pieces from other media.
If you like someone else's work, be sure to make use of the commend command to show your appreciation. You can commend form where form is replaced with the name of the form, such as commend goblin girl. This is one way to help authors know their work's appreciated, and it also gives them a little boost of Mako to show how much their work was liked.

Starting a Monster

There are several steps to making a monster. The first is to get it started. When you select Monster Maker from the Contributions tab of your on-line interface, you will see several drop down menus and a prompt that reads: New Monster Name with a button after it labelled Create.
It's very important that you pick an appropriate name for your monster because once you set it, it's difficult to change. Some key things to remember are:
  • Don't use copyrighted names.
  • Capitalize the name properly and use the correct spelling, if it exists.
  • It's best not to have gender or sex-specific words like 'Girl', 'Man', or 'Herm' or the like.
  • Keep it concise, one or two words.
  • Make sure something like it doesn't already exist.
Having something original and new is always best. Once you've entered the name, click on Create, and it will be created and ready for you to start filling out. Once you enter information into any of the fields, the monster you're working on is saved and able to be referred back to at any time. If you leave the Monster Maker without inputting any information into any of the monster's fields, then it will go poof. Make sure not to click on Mark Entry as ready to approve until after all the requisite fields and information has been applied.

Inputting Information for Your Monster

There are three main sections. They are:
  • Descriptions and Transformations
  • Bodypart Sizes
  • Victory and Defeat Messages
You can start in any section, but it's easiest to start with the Bodypart Sizes.

Bodypart Sizes

The Bodypart Sizes section is divided into several fields. These are as follows:
  • Size
  • 2nd Person Say
  • 3rd Person Say
  • Breasts
  • Breast Size
  • Cocks
  • Cock Length
  • Ball Size
  • Extra Balls
  • Cunts
  • Cunt Length
Size: This refers to the overall size of the monster. Human is size 5 (ranges from 5'-6'6", generally with some leeway.) Body size is fairly ambiguous and purposely so, but 5 is the starting point. It goes up and down from there, from 1 to 30 (35 for special forms like privately purchased forms).
2nd Person Say: This is what you see when you use the say command or don't use poses while communicating on channels. For example, if you put snarl, you will see when you type pub Hi!: [Public] You snarl, "Hi!"
3rd Person Say: This is what you see when you use the say command or don't use poses while communicating on channels. For example, if you put snarls, people on the channel will see when you type pub Hi!: [Public] Player snarls, "Hi!"
Breasts, Cocks, Cunts: This is the number of breasts, cocks, and cunts that the infection has for its base. Remember, this does not mean all players will have it due to No Vagina, No Penis, and similar merits.
Breast Size, Cock Length, Cunt Length: This is the size of the parts the monster infection has. Remember that all these numbers represent proportionately to size 5. So, if you have size 12 for cock length, that's size 12 for size 5. If your monster's size is 1, it'll still have a cock size proportionately equivalent to 12, meaning something closer to size 2 or so, but you still input it as 12.

Descriptions and Transformations

This section can be one of the trickier portions. Here, you input the descriptions for each body part -- how they look when you view their description. Transformations are what is viewed, second-person, by the player who's being infected by this monster. String parsing and use of they, their, and them are all key in the Description fields, and, most importantly, using a document editor like Word that has grammar and spell-checking is highly suggested.
Here is the list of fields:
  • Long Skin Description
  • Short Skin Description
  • Skin Transformation
  • Head Description
  • Head Transformation
  • Torso Description
  • Torso Transformation
  • Arms Description
  • Arms Transformation
  • Legs Description
  • Legs Transformation
  • Cock Description
  • Cunt Description
  • Cock Transformation
  • Ass/Tail Description
  • Ass/Tail Transformation
Note: They, they, Their, their, Them, and them will be replaced with the proper pronouns automatically! Do not use he, she, shi, or the like. If you want they, their, or them to appear normally, you must enclose them in square brackets like this: [they]. The exception to this is in Transformation messages. They are not parsed in Transformation messages and therefore do not need the [] surrounding them to remain normal.
Long Skin Description: This is the description that will show in the player's description when they have this monster's skin infection. It will always begin with "Their body is covered in ", and need not be written. For example, if you wanted them to have skin that's made from chunks of granite, you'd fill the field with: chunks of granite. It would read: "Their body is covered in chucnks of granite."
Short Skin Description: This is the less-often used description. Mainly for heat messages and the like, it is also displayed when the [skin] string parsing is used. Using only two or three adjectives. For example, if you were wishing to describe a rabbit's fur, you could describe it as: soft, silky for the short description.
Skin Transformation: This is the second-person transformation message you see when you transform into this monster. For example: Your skin shudders and itches as many minute fibers spring from your flesh into a thick coat of soft, silky fur. would display as just that when you transform your skin to this monster.
Head, Torso, Arms, and Legs Description: Like the Long Skin Description, these are what will be displayed. They will also be following Their head is, Their body is, Their arms are, and Their legs are, so remember not to include that in the description. For example, let's say you want "Their arms are long and lean." to appear in the description. You would enter into the field: long and lean.
Ass/Tail Description: Like the other descriptions except it has nothing before it. What you type is what's placed in this spot. If you put A long, whip-like tail switches to and fro behind them., it will display "A long, whip-like tail switches to and fro behind them."
Head, Torso, Arms, Legs, and Ass/Tail Transformation: Just like the Skin Description, what you place here will be shown to the player when this part is infected with this monster.
Cock and Cunt Descriptions: First off, Cunt description is not optional. We need it. With these descriptions, they're sandwiched between and adjective and a word for their genital type. For example, your cock field will often be sandwiched between "large" and "shaft" or something similar. So, when inputting into the field, keep this in mind. If you wish it to display: They have a large, juicy cock with barbs all along its lengthy shaft.", you'd enter: juicy cock with barbs all along its in the field. Similarly for cunt. Best to look at the description preview to check and see how well it read.
Cock Transformation: This is the one that throws a lot of people. It almost always requires string parsing unless you're extremely vague. Vague would be like this: Your groin shifts and shudders, changing until it resembles something reptilian. For something in-depth and specific, look later on this page for our string parsing templates and explanations.

Taur and Serpentine Forms

Different from the process you'd put together a standard, bipedal form with, this one takes a few exceptions and additional string parsing. Make sure to add that they are a Taur or Serpentine in the Notes so that a flag can be set to the Ass section and to the monster itself so that, if the ass is present, their legs won't show (we use a Legless property in the monster infection, so the entire lower torso description would go into the ass, not at all into the legs). In the Legs Description, instead of a normal description, you'd have something along the lines of this:

Taur: [if taur present in [player]]part of a lower torso[else]<description as if they were bipedal>[end if].

Serpentine: [if serpentine present in [player]]nonexistent[else]<description as if they were bipedal>[end if].

This way, if you don't have the ass of said form, you'd have some bipedal legs, but if you do, the legs will be invisible anyhow. In the Ass portion, you would put the entire description for the Taur or Serpentine form:

Taur: Their lower body is that of a horse, complete with four sturdy legs meant for long strides and taut, rounded flanks with a whippety horse's tail.

Serpentine: Their torso melts down into a long, sinuously serpentine tail that supports their upper body. Its length tapers down to a fine tip, and muscles ripple all along its length.

This way, the form will display properly so long as the ass is in place. If the ass isn't that of the mutation, well, then there will be bipedal legs.

Victory and Defeat Messages

One of the more complicated parts of monster making is this. Fortunately, there are only a few fields that you have to actually worry about. They are:
  • Monster Defeats Player, 2nd Person Defeat
  • Player Defeats Monster, 2nd Person Victory
  • Player Defeats Monster, 3rd Person Victory
  • Misc. Notes
Monster Defeats Player: This is the easiest of the three defeat fields to fill out. Since the monster is usually a solid specimen of just that infection, you don't have to worry about infection mixes when writing this one up. It is from the player's point of view and being defeated by the monster. For example: The goblin looms over you, a leer cracking his lips. Raising a meaty fist, he brings it down over your head again and again until you black completely out. You can, of course, put string parsing in and have actions based on the defeated player's statistics, such as the presence of a cock or vagina with [if [player] is male] or [if [player] is female]. Just be sure to review over it and follow String Parsing syntax.
Player Defeats Monster, 2nd Person: The tricky part with this field is accounting for infection parts the player doesn't have. A victory message triggers based on the Groin infection of the player, and not its other mutations. If you want to incorporate unique aspects of the monster into the victory message, be sure to put a check in for that part existing. This can be accomplished with [if stat mutation/<body part> of [victor] = <monster>]<message if body part has correct infection>[else]<message if that body part isn't present>[end if]. For example: You gloat over your fallen opponent before [if stat mutation/ass of [victor] = Scorpion]striking down with your stinger[if stat misc/Tail Divider of [victor] == 1]s[end if][else]beating down with your fist[end if].
Player Defeats Monster, 3rd Person: Same here as with 2nd person for difficulties and methods, save you're writing it from an observer's point of view. With the above example, you'd instead have: As [victor] gloats over [%p of [victor]] fallen opponent, [%s of [victor]] [if stat mutation/ass of [victor] = Scorpion]strikes down with [%p of [victor]] stinger-tipped tail[if stat misc/Tail Divider of [victor] == 1]s[end if][else]beats down over [%p of [victor]] enemy with [%p of [victor]] fists[end if]. Your victory messages are as comprehensive as you make them.
Misc. Notes: This is the area where you would note some of your ideas for monster placement and potential monster powers. Final discretion still lies in the park of staff, but it's always good to voice your ideas, as the creator of the form. Remember that no Dedication or Private powers will be available for usage. For a list of powers that exist, list powers can be used, and you can +rpinfo any power to get details about it. Try to match what would be themely for the monster, not just what does the most damage or the like.

String Parsing

The bane and fear of many a monster making exercise: String Parsing. The greatest issue that many have is they do not understand the syntax and format of String Parsing. Well, here are some helpful tips, hints, and templates.

Tips and Hints

  • When referencing 'male' and 'female' in if statements, it refers specifically to the existence of a cock and cunt. For example: [if [player] is male] checks to see if the [player] has a cock stat that's not 0. This means it will trigger true for both males and hermaphrodites. NOTE: String Parsing has been updated with [if [player] is feminine] which will trigger for nonmasculine females and feminine characters and herms. This streamlines things well!
  • When making an [if ] statement, remember to end it with an [end if]. The syntax is [if <statement to be checked if true or false>]<what displays if true>[end if]. If you want something to display if false, you use this syntax: [if <statement to be checked if true or false>]<what displays if true>[else]<what displays if false>[end if].
  • If you decide to nest if statements (placing one inside of another), make sure that you have an [end if] for each if statement.
  • [player] is used in the descriptions and transformations as a reference whereas [victor] and [loser] are used in the Defeat/Victory messages.
  • String parsing can be used for many fun additives, like changeable sections or randomization. Check out the templates for some interesting ones.
  • Local stats refer to stats that you the player can change with lset <Form Name>/<statname>=<value>
  • Case statements can be used in lieu of messy [if ][else if ][end if] statements. For example: [case stat cocks of [player] >][when (target) 10]many[end when][when (target) 6]several[end when][when (target) 3]a few[end when][when (target) 2]a couple[end when][when (target) 0]a[end when][when 1]no[end when][end case] cock[if stat cocks of [player] > 1]s[end if]. For more information, check out +help string parsing/case on the MUCK.

Templates

Cock Transformation: Most often-needed string parsing.
You can feel your groin start to shift.[if [player] is male] <cock transformation message>[end if][if [player] is female] <cunt transformation message>[end if] Now, your groin resembles that of a <monster name>.
Storing Randomized Information: If you want to make each person a little unique for this monster, it's sometimes fun to add in a variable, often color or texture, that locks in as something random from a list for that person. For example, with the Dusk Dragon, when someone transforms into it for the first time, a random color from a set list is picked and stored in a stat. If the stat already exists, it doesn't pick again, and it's locked in. Here are the formats for that.
In Transformation message:
[if stat formstat/Critter Name/variable of [player] does not exist][set the formstat/Critter Name/variable of [player] to [one of]variable 1[or]variable 2[or]variable 3...[or]variable n[at random][end if]
Breakdown of action:
You start with an if statement that checks to see if the stat exists, If it has a value of 0, it doesn't exist. So, if it's empty, the set function is triggered. It'll set that stat to one of the variables in your list. You need [one of] at the beginning and separate each variable with [or] and end it with [at random]. Then, the entire if statement ends with an [end if].
Example:
[if stat formstat/Goblin/eyecolor of [player] does not exist][set the formstat/Goblin/eyecolor to [one of]green[or]brown[or]black[or]white[or]yellow[at random][end if]
In Description message:
[if stat formstat/Critter Name/variable of [player] does exist][stat formstat/Critter Name/variable of [player]][else]default variable for non-player characters, like monsters or children[end if]
Example:
The goblin has [if formstat/Goblin/eyecolor of [player] does exist][stat formstat/Goblin/eyecolor of [player][else]default color for non-player characters, like monsters or children[end if] eyes.
Player-set variables: These can be fun for letting players choose what they want in a spot, though be sure to have a default.
[if local stat Critter Name/variable of [player] does exist][local stat Critter Name/variable of [player]][else]default[end if]
Breakdown:
The if statement checks if the variable exists. If there is a value, the local stat will be displayed. If it isn't set, then the false message, the default for this, will show. Close it all off with an [end if].
Example:
[if local stat Goblin/eyecolor of [player] does exist][local stat Goblin/eyecolor of [player]][else]green[end if]
Player-set variables with random-set, locked-in variable for default: Combining the two above templates can be done in this fashion. Please try to use positive variables to avoid confusion and extra '-' symbols.
In Transformation:
[if stat formstat/Critter Name/variable of [player] does not exist][set the formstat/Critter Name/variable of [player] to [one of]variable 1[or]variable 2[or]variable 3...[or]variable n[at random][end if]
In Description:
[if local stat Critter Name/variable of [player] does exist][local stat Critter Name/variable of [player]][else if stat formstat/Critter Name/variable of [player] does exist][stat formstat/Critter Name/variable of [player]][else]default variable for non-player characters, like monsters or children[end if]
Note: Note that a local stat and a stat are in two different areas, so they may have the exact same name but be two different variables. Local stats are set directly on the player whereas Stats are set in staff-access-only parts of the player.
Example:
Arm Description: are lean and powerful. [They] resemble those of a [if local stat Kitsune/quad of [player] does exist]fox with clawed paws at the end, ready to support their chest and head[else]human ending in hands tipped with foxy claws[end if].
With this, you can see that if the Kitsune/quad variable is blank, the arms will show up anthro, but if any value is in it, the arms will show up like a quadruped's. The 'Quad' naming was arbitrary, and the form is Kitsune. It's a good way to organize variables.
Color Chooser Support: This bit of parsing will allow for folks with a Color Chooser item to have different colors for parts of your form. Remember, there are three colors supported, Color, Color2 and Color3.
Color
[if color present in [player]][lstat color of [player]][else]<default>[end if]
Color2
[if color2 present in [player]][lstat color2 of [player]][else]<default>[end if]
Color3
[if color3 present in [player]][lstat color3 of [player]][else]<default>[end if]
Example:
Skin Description: a sleek coat of [if color present in [player]][lstat color of [player]][else]tawny orange[end if] fur all over their body with [if color2 present in [player]][lstat color2 of [player]][else]black[end if] stripes banding in a tabby pattern from nose to end.
Arm/Tail Divider Support: The String Parsing used in order to add in alternative descriptions for Arm Divider and Tail Divider usage.
Arm Divider
[if stat misc/Arm Divider of [player] == 1]<Arm Divider active description>[else]<normal description>[end if]
Tail Divider
[if stat misc/Tail Divider of [player] == 1]<Tail Divider active description>[else]<normal description>[end if]
Example:
Arm Description: powerfully built with st[if stat misc/Arm Divider of [player] == 1]acked shoulders leading to three pairs of[else]urdy shoulders leading down to their powerful[end if] arms. Each terminates in dexterous hands capped in wicked talons.
Leg Splitter Support: Similar to Arm/Tail Dividers, adding in an alternate tauric description.
[if taur present in [player]]<Leg Splitter active description[else]<normal description>[end if]
Like taurs, this should go in at least the Ass mutation. [legs] can be used for the current legs description.
Mutation Check: When you need to check for a certain body part carrying a certain mutation, here's how.
[if stat mutation/<body part> of [player] = <Mutation>]<statement if true>[else]<statement if false>[end if]
Example:
Arm Description: long and lean[if stat mutation/skin of [player] = Feral Dragon] with a dense covering of scales articulating down over their joints[end if].


There is a pair of INVALUABLE commands created by Fauna. They are: @nviewparse and @formparse.

You can type @nviewparse followed by a string of code or description portion to get it checked for common errors and look at it in an organized fashion. For @formparse, you can look over your submitted (not yet approved) forms' portions as well as approved forms to look over String Parsing. Just type the @formparse command for the syntax. Using this, you can see what parsing might've been used on some of your favorite forms!

If you would like to see templates for other nifty string parsing tricks you can add to your monsters, feel free to mail Glitch and Song or post a +request under 'Building' to get it added here!