Monster Gender Tracking

Monster Gender Tracking

Postby TigerStripes » Sun Mar 06, 2016 7:59 pm

Monster Gender Tracking

Overview:
I have recently added a new data feature to the game, a value which tracks the gender of the creature most recently encountered. This is done via the 'mongender of currentmonster' variable, which is set to the appropriate value at the start of each creature's description (see below). This variable currently covers a range of 20 values to represent numerous possible creature genders to span a considerable diversity. While I'll go into more detail below, the range is also divided into two main sections - 0 through 9 is for single creatures and 10 through 19 is for creature groups.

For this system to work, every creature must be set up to include this result and all new creatures added must have this value set as part of their description code.

Applications:
There are several potential uses for having this data available to the writers and coders. Here are those that spring to mind at the moment, though I'm sure enterprising writer/coders will come up with other stuff.

Generalized scenes: Chief among the uses of this feature is its ability to expand upon and increase the diversity of generalized scenes, such as those for the Vore Predator and Unbirthing abilities. Obviously, by knowing the creature's gender, scenes can be built that incorporate that. This can range from simply allowing the text to use the appropriate gender pronouns, to additional flavour text based on gender and all the way to full-on sexual interplay before or during the scenes. Additionally, since we can determine whether the fight was against a single foe or a group of foes, such scenes might also be geared towards dealing with multiple defeated foes or selecting one out of the group for further interaction.

Random fights in events: Before now, when a random fight was inserted into an event, any post-fight outcome would have to be generalized and vague about the details of the creature fought. By knowing the gender of the creature after such a fight, the subsequent event content can reference the creature's gender with the appropriate pronouns rather than being restricted to more generalized terms and phrasing.

Weapon/Attack messages: By knowing the gender of the player's foe, the player's attack messages for their weapons, special combat items and so forth can now include gender-specific pronouns. Should the player side of Alt-Combat be created, this data can further be exploited there. For reference, the new Flash version is going to have special attacks for the player and a comparable monster gender variable, so we should see some use of it there.

Humanity-loss messages: Some of the humanity loss messages reference the most recently called creature from the table of random critters, but this is not always the creature the player last fought. The current stock of messages could be increased by adding one or two others referencing 'that female/male/herm you recently encountered' as being part of the player's mental fantasies wearing down their resolve.

Gender Values:
Firstly, here's a list of the potential values the mongender variable can take and what each represents:
Code: Select all
[  TABLE OF MONGENDER VALUES  ]
[ 0-9   Single individuals    ]         [ 10-19 Multiple individuals  ]
[  0 - Neuter X (genderless)  ][N]      [ 10 - Neuter X (genderless)  ][N]
[  1 - Neuter M (masculine)   ][M]      [ 11 - Neuter M (masculine)   ][M]
[  2 - Neuter F (feminine)    ][F]      [ 12 - Neuter F (feminine)    ][F]
[  3 - Male                   ][M]      [ 13 - Male                   ][M]
[  4 - Female                 ][F]      [ 14 - Female                 ][F]
[  5 - Herm                   ][F]     [ 15 - Herm                   ][F]
[  6 - Shemale                ][F]      [ 16 - Shemale                ][F]
[  7 - M-Herm                 ][M]      [ 17 - M-Herm                 ][M]
[  8 - Cuntboy                ][M]      [ 18 - Cuntboy                ][M]
[  9 - Variable               ][N]      [ 19 - Mixed/Variable         ][N]


While most of these are fairly self-explanatory, I'll mention a few things here.
- Firstly, this needs to represent the creature's actual, physical gender and form to avoid any issues.
- Secondly, the letter to the right of each row represents the gender pronoun to be referenced against. While a few herms out there are 'shi' instead of 'she', we'll default to using the female pronouns for them.
- As mentioned, the list is sub-divided between the single and multiples for each possibility.
- There are three neuter 'genders' for each group. These designate whether the creature is:
--- 0 (10): Neuter and (apparently) completely genderless and referred to as it/they. This would include creatures where there is no apparent or applicable gender (e.g.: Snake, Blob) or sexless foes like robots, tanks, rock monsters, etc.
--- 1 (11): Neuter yet still masculine, and thus referred to as he/him. These would be foes with masculine physical traits but lacking genitalia.
--- 2 (12): Neuter yet still feminine, and thus referred to as she/her. Like the above, but instead having feminine physical traits while lacking genitalia. These might have breasts or at least a breast-like formation at the chest, though they likely are more form than function.
- The variable entry (9) is for some of the various oddballs out there, especially those creatures whose gender fluctuates frequently. By this, I mean they either change to suit the situation and needs (e.g.: Chocolate Lab) or have no fixed form or genital configuration (e.g.: Flesh Blob). These are going to be exceptionally rare cases. Because of this unclassifiable nature, these few creatures would be excluded from generalized scenes, as they're not likely to be suitable.
- It's matching plural entry (19), represents both multiple creatures of this type as well as any group of creatures where the individual members don't all have the same gender. Examples of the latter are the Rabbit Pack and Sea Otter, though the second of these can be just males or females to suit the player's banning choices. The reason for this is because it would be pointlessly difficult to cover all possible mixed groups with individual codes and any generic scene trying to pick from such a group cannot count on any particular gender being present among the group. As such, these groups are likely to also be excluded form generalized scenes.

Usage and Tools:
This section will deal with the tools I've pre-built to make use of this feature easier. While more might be added later, these will allow the writers/coders to quickly determine the creature's gender, their pronoun set (he/she/it) and to check if cock/cunt/breasts are present. You can also determine if the fight was with one or more than one creature. Please keep in mind that the below attributes are all checked against 'currentmonster', which is a non-localized person upon whom all these checks are made. For instance, you could include:
Code: Select all
if currentmonster is male:

or
Code: Select all
say "You grab the creature's [if currentmonster is cocked]cock[otherwise if currentmonster is cunted]pussy[otherwise]bare crotch[end if], causing [if currentmonster is malepro]him[otherwise if currentmonster is femalepro]her[otherwise]it[end if] to moan."


Recording the gender:
setmongender X - Assigns a value of X to mongender of currentmonster, recording a creature's gender.
[mongendernum x] - Assigns a value of X to mongender of currentmonster, but usable within a text string such as the desc entry of a creature.

Adjective Statuses:
malepro - An attribute designating that the creature is referred to by male pronouns (he/him/his).
femalepro - An attribute designating that the creature is referred to by female pronouns (she/her/hers).
neuterpro - An attribute designating that the creature is referred to by neuter pronouns (it/its/they/them/their).

Gender Statuses:
multiple - The creature is actually a group of creatures - valid for any of the plural results (10-19).
neuter - The creature is any of the neuter/genderless options. Useful for excluding them from generalized scenes involving sex.
neuterx - The creature is desginated as being neuter-X (0 or 10).
neuterm - The creature is desginated as being neuter-M (1 or 11).
neuterf - The creature is desginated as being neuter-F (2 or 12).
male - The creature is desginated as being male (3 or 13).
female - The creature is desginated as being female (4 or 14).
herm - The creature is desginated as being a herm (5 or 15).
shemale- The creature is desginated as being a shemale (6 or 16).
mherm- The creature is desginated as being a male-herm (7 or 17).
cuntboy - The creature is desginated as being a cuntboy (8 or 18).
variable- The creature is desginated as being either mixed or variable (9 or 19).

Genital Statuses:
cocked - The creature has a cock - male, herm, shemale or m-herm.
cunted - The creature has a cunt - female, herm, m-herm or cuntboy.
For reference, breasts are a little trickier to assume, as some females (such as ferals) might not have prominent breasts, but my general advice would be to check against the 'femalepro' attribute.

Debugging and Testing:
monnum - A command to prompt the output the current mongender value as well as a breakdown of all the above potential traits.
monnum X - A command to assign a value of X to the mongender value. It will restate that value along with the gender it corresponds to.

Assigning the mongender value for a creature:
As stated, all creatures need to trigger saving their gender value into the mongender variable for later use. There are two possible methods for doing so, though the first is preferred in cases where it is possible. It needs to take place during the initial description of the creature so it's recorded the moment the fight starts. Also, be sure to pick the value based on the creature's form and whether the fight is with a single individual or with multiple individuals.

Method 1 - Most frequently used
Copy and paste the appropriate setting from List 1 below into the "to say <monster description>" subroutine of the creature file. Most creatures have a say statement that controls their description. With the exception of creatures that can come in multiple possible genders, just insert the line into the code at the top of the subroutine. In the case of creatures with multiple gender outcomes, put the appropriate setting above the description for each individual gender result. Also, make sure that the tabs are properly aligned, especially in the case of multiple variations.

Here are some examples from those I've already done, though simplified as I've trimmed out a bunch of ancillary code to make the examples clearer.

Example 1 - Single form
Code: Select all
to say eagledesc:
   setmongender 3;      [creature is male]
   say "     Your searching is interrupted by a sharp screech from overhead and you spot a large avian swooping down at you, talons grabbing for you.  You barely dodge this first swipe as the eagle man screeches in again, this time in anger at missing.  '[one of]I'll get you,' he crie[or]You won't get away,' he crie[or]You'll be mine, prey,' he snap[at random]s as he swoops around for another pass at you.  This humanoid avian has a bald eagle, with dark brown feathers over his body and wings and a bright white over his head and neck.  His wings are long and broad, formed into part of his arms.  His small, taloned hands are at the midpoint of his wings['] leading edge, able to be used when the not fully extended.  His feet end in the bird feet with sharp claws.  His beak also looks quite sharp and dangerous.";

As you can see, the command to record that the creature is male occurs at the top of their description. This makes sure it's clearly visible for rapid reference when looking at the code.

Example 2 - Multiple forms
Code: Select all
to say cfgdesc:
   now cfgmode is a random number between 1 and 2;
   if cfgmode is 1:   [female]
      setmongender 4;      [creature is female]
      say "     Before you is one of the most unusual forms the infection has taken, creating a partially mechanical fox-creature.  Looking over this clockwork fox girl, her body is covered in gears sticking through brass wire fur.  She whirrs and clicks as she moves in a strangely mechanical manner, occasionally twitching as something internal catches before releasing a moment later.  Her head is drawn forward into a muzzle and the pointed brass ears at the top give it a very foxy look.  Her body is thin and shapely, not dissimilar to the other vulpines you've seen in the city, but having several plated sections and protrusions of gears.  Her chestplate has two small breasts formed onto it.  Her arms and legs are thin and vulpine, leading down to small clawed paws.  She has a long plumed tail that seems to be made from extremely soft wire that resembles a fox tail, moving with the faint click of cogs and gears within.  A private peek reveals that she has a thick-lipped cunt nestled between her legs, made of shimmering, coppery flesh, but dripping a clear lubricant that glistens like oil as the female mechanism moves forward to attack you.";
   if cfgmode is 2:   [male]
      setmongender 3;      [creature is male]
      say "     Before you is one of the most unusual forms the infection has taken, creating a partially mechanical fox-creature.  Looking over this clockwork fox guy, his body is covered in gears sticking through brass wire fur.  He whirrs and clicks as he moves in a strangely mechanical manner, occasionally twitching as something internal catches before releasing a moment later.  His head is drawn forward into a muzzle and the pointed brass ears at the top give it a very foxy look.  His body is thin and shapely, not dissimilar to the other vulpines you've seen in the city, but having several plated sections and protrusions of gears.  His chestplate gleams brightly, as if polished brass.  His arms and legs are thin and vulpine, leading down to small clawed paws.  He has a long plumed tail that seems to be made from extremely soft wire that resembles a fox tail, moving with the faint click of cogs and gears within.  A private peek reveals that he has a long, knotted cock made of coppery flesh and driven by a clockwork mechanism.  It leaks a clear lubricant that glistens like oil as the male mechanism moves forward to attack you.";

This time, as we're dealing with a creature that can come in one of two genders, the assignment of the gender of the current foe must wait until the description for each individual potential encounter. If a creature has multiple possible forms, but all are of the same gender, then it can be assigned at the top before the selection process.

Method 2 - Description in table
A few creatures, primarily older ones and several by Sarokcat, do not have a description subroutine but instead have their description directly in their monster table data. In those cases, you'd need to insert the appropriate clause from List 2 below into that element of their table. Add it to the very start of the desc entry.

Example 3 - Description in table
now desc entry is "[mongendernum 5] A bipedal deer with soft brown fur and creamy off-white belly and undertail. Her nose, eartips and hands are dark hues. Atop her head is a large rack of antlers, proud and powerful. She has large cream covered breasts capped with thick black teats. She has a hungry, lustful look in her eyes, one hand usually straying to her cock, stroking it almost absentmindedly. It is disturbingly human in appearance, ebon-black fleshed with a cream sheath at the base. She has large plum sized balls contained in a creamy coloured softly furred sac. Despite her animalistic appearances, she has hair like a human, running down to a little past her shoulders, a little darker than the brown fur of the majority of her form.[if level of player is greater than 5] [doestats][end if]";

List 1:
Code: Select all
   setmongender 0;      [creature is neuter-X]
   setmongender 1;      [creature is neuter-M]
   setmongender 2;      [creature is neuter-F]
   setmongender 3;      [creature is male]
   setmongender 4;      [creature is female]
   setmongender 5;      [creature is herm]
   setmongender 6;      [creature is shemale]
   setmongender 7;      [creature is mherm]
   setmongender 8;      [creature is cuntboy]
   setmongender 9;      [creature is variable]
   setmongender 10;   [creatures are neuter-X]
   setmongender 11;   [creatures are neuter-M]
   setmongender 12;   [creatures are neuter-F]
   setmongender 13;   [creatures are male]
   setmongender 14;   [creatures are female]
   setmongender 15;   [creatures are herm]
   setmongender 16;   [creatures are shemale]
   setmongender 17;   [creatures are mherm]
   setmongender 18;   [creatures are cuntboy]
   setmongender 19;   [creatures are mixed/variable]


List 2:
Code: Select all
[mongendernum 0]
[mongendernum 1]
[mongendernum 2]
[mongendernum 3]
[mongendernum 4]
[mongendernum 5]
[mongendernum 6]
[mongendernum 7]
[mongendernum 8]
[mongendernum 9]
[mongendernum 10]
[mongendernum 11]
[mongendernum 12]
[mongendernum 13]
[mongendernum 14]
[mongendernum 15]
[mongendernum 16]
[mongendernum 17]
[mongendernum 18]
[mongendernum 19]
User avatar
TigerStripes
 
Posts: 592
Joined: Mon Dec 09, 2013 4:39 pm

Return to Dev Chat

Who is online

Users browsing this forum: No registered users and 18 guests