New Mechanics and Additions

New Mechanics and Additions

Postby TigerStripes » Tue Dec 10, 2013 6:36 pm

FOREWORD - Dec 10/2013
Thanks to Blue Bishop collecting this data, I'll be restoring this thread. Unfortunately, several of the other posts connected to this one have not been recovered. I will make connections to the various sub-articles as they become available or new versions are created to replace them.

RESTORED:
I will be using this to list some of the new stuff I develop so others may know how to make use of it. I'll also provide links to the other threads started on more specific topics. Hopefully this will make accessing information easier as stuff is bumped down the line.

First off, there's this basic page I made quite a while back on the Wiki about Coding Additions. It generally covers back player and creature stats and how they're used. If you're new to coding for the game, it might be a good starting place. I can't promise that everything's up to date, but any differences will be small.

Inform/Git Setup:
GIT Setup and Usage for FS: ----
Inform, intital set-up and compiling FS: ----
Setting Up Inform7 / Git: ----
How Do I Beta-Test Something Before Submission: ----

Items:
New Inventory System: viewtopic.php?f=4&t=10&start=10#p117
Clothing and Armour: viewtopic.php?f=4&t=10&start=10#p119
Weapon Discussion: ----

Creatures:
Current Creature Breakdown: viewtopic.php?f=4&t=14
Adding and Removing Creatures from Play: ----
Creature Type / Gender Exclusions: ----
Stop Asking about Sex: viewtopic.php?f=4&t=10#p32
Importing from Multiplayer: viewtopic.php?f=4&t=10#p33
Gender-Swapping Infections/Creatures and Cross-Contamination: viewtopic.php?f=4&t=10#p34
Using Creature Lists: viewtopic.php?f=4&t=10#p31

Combat:
Determining Victory or Loss - fightoutcome: viewtopic.php?f=4&t=10&p=117#p115

Situations/Events:
Scavenging Events: ----
Important Notice: Situations: viewtopic.php?f=4&t=22

Scenes/Sex/Fucking:
Descriptive Elements: viewtopic.php?f=4&t=10#p35
More/Less Anal: viewtopic.php?f=4&t=10&start=10#p116
No/Full WS: viewtopic.php?f=4&t=10#p39
Easy Day/Night Check: ----
Counting Turns / Fucking: ----
Pregnancy Checks and Cum Load Size of Player: viewtopic.php?f=4&t=10#p36
Compact Code for Singular/Plural: viewtopic.php?f=4&t=10#p38

Various:
How Do I...: ----
Perks: ----
Debugging and Data Collection Commands: viewtopic.php?f=4&t=10#p37

Item Creation (older stuff):
----
----
----
----
----
User avatar
TigerStripes
 
Posts: 592
Joined: Mon Dec 09, 2013 4:39 pm

Using Creature Lists

Postby TigerStripes » Tue Dec 10, 2013 6:39 pm

ORIGINALLY POSTED: Jan 24/2013
As some of you have noticed, a large number of creature lists have been generated to classify the critters/infections in the game into broad groups. The main reason for this is to facilitate scenes where a player's infection is important, but only in a more generalized sense. The pet food supplies found at the Veterinary Clinic, for example, are good for players who are feline or canine in nature, their infections making those seem tempting enough to take. Sam and Lindsey have different sex scenes if their partner, the player, is a taur like them. Alexandra's hot for knots, so if the player's got one, her scenes are different.

So how's this managed and how do you use it?

As part of the initial setup of any new infection, you should be placing flags (for banning) and you can also set many markers (classification groups) to which your creature will belong. This is done by:

Code: Select all
    when play begins:
       add { "German Shepherd" } to infections of guy;
       add { "German Shepherd" } to infections of furry;
       add { "German Shepherd" } to infections of Caninelist;      [list of canine infections]
       add { "German Shepherd" } to infections of Knotlist;      [list of cock infections with a knot]

All existing creatures and infections should already be covered by the existing lists (either preset in the story.ni file or preset in their own files). Any new ones will need to have these features added though. The full list of flags and markers can be found in the Template For FS.i7x file.

To use these, simply check against the list to see if the player's current infection is contained within that list. Generally, you'll be interested in the player's body, though some times it might be their head or tail, or even their cock. In the case of the Knotlist, it specifically deals with the cock and should focus on that.

Code: Select all
    if bodyname of player is listed in infections of Caninelist:
       say "The soldier pets you, saying 'Good doggy!'";
    otherwise:
       say "The soldier is nervous, not trusting you.";

Now, since these involve a text check, they are inherently a little slower than numerical checks, but should still be pretty speedy given the shorter list of infections. As well, since the text being checked isn't part of the condition itself (no "nameofinfection"), it can be used as part of a say statement, making for subtler changes into scenes without requiring complete duplication.

Code: Select all
    say "You drive around town, doing your own thing.  There's lots to do and see [if headname of player is listed in infections of Caninelist]with your head hanging out the window[otherwise]with the windows rolled up[end if].  You come across a bunch of interesting stuff and do a lot of interesting things.";

If necessary, more marker lists can be added with ease using the same method as the others. For ease of use, it'd be best if they were all kept in the story.ni file so they can be created before any of the extensions are added. If any new ones are made, it's important to make sure any existing creatures are added to this new list if they apply. It would also be important to check any existing NPC-specific infections and the few that aren't in the table of random critters at all. Don't worry too much about getting it perfect though, as these can be edited and revised later. Just let us know it's gone up and everyone can make sure nothing's been missed.

For example, here's my most recently added list for avians, containing any forms that are birds or partial birds. As such, I will be including vulpogryph forms which is NPC specific.

Code: Select all
    Avianlist is a marker.   [list of avian/bird infections]
    when play begins:
       add { "Bald Eagle", "Fluffy Owl", "harpy", "Hermaphrodite Gryphon", "peacock", "Quilled Tousky", "Hawkman", "Siren", "Vulpogryph", "Bird of Paradise" } to infections of Avianlist;
User avatar
TigerStripes
 
Posts: 592
Joined: Mon Dec 09, 2013 4:39 pm

Stop Asking About Sex

Postby TigerStripes » Tue Dec 10, 2013 6:43 pm

ORIGINALLY POSTED: Jan 24/2013
Another new technique I've started using recently has been the trick to stop asking the player about victory sex if they continually show no interest in it with a given creature. This is mainly meant to help streamline player interaction with enemies and combat, subtly improving a player's experience by removing a frustration they may have. This will also build their connection with the PC, as he/she seems to better respond to their desires over time. Conceivably this could be reversed to even do the converse, always picking victory sex if the player has shown a tendency to accept it. I have yet to do so, as players may want victory sex for a while and then get bored of it with a given creature or finish exploring its variations. The main benefit of this is geared towards players only interested in M/M or M/F content, but is of use to all players who are selective in some manner.

This trick is purely optional, but is very quick and easy to implement, so I hope you'll give it a chance. As shown below, it can easily be added to new creatures or into existing ones as it requires very little adjustment to the existing structure if there's a choice mechanic already in place. It can even be folded into creatures that have both choice and no-choice victory sex. The Anime Babe is a fine example of this and it is simply achieved by bumping down the auto-refusal message below those variations which cause the player to have no choice about sex. You will also see that all of those forced scenes start with 'The choice is taken out of your hands as...' as an indicator that they might otherwise have a choice if it weren't for the tentacular action going on.

How is this mechanic achieved?
To show how this is done, we'll use the example of the Raccoon, with the various messages trimmed. By using a variable (nocandycoonsex), we can count how many times in a row the player's refused victory sex. As you can see below, if that variable has become three, the victory scene is skipped entirely with a message similar to choosing to refuse, but states that this is how you've reacted to him in the past. This part is important, as it shows the player that their choices has caused this. Further down, if the player does accept victory sex, the variable is reset back to zero. This is critical, as it needs to be three refusals in a row that activates this state of skipping. At the bottom, where the player's choice is to opt out of victory sex, the variable is incremented by one.

Code: Select all
    to say beatthecandycoon:
       if nocandycoonsex > 2:
          say "     You manage to knock the fight out of the coon boytoy.  He moans and plays with himself, rolling over to expose his bottom to you, but you leave him to deal with his own lusts as you have in the past.";
       otherwise if libido of player < 20:
          say "     You manage to knock the fight out of the coon boytoy.  He moans and plays with himself, rolling over to expose his bottom to you, but you leave him to deal with his own lusts.";
       otherwise:
          say "     <Coon offers sex>";
          if the player consents:
             now nocandycoonsex is 0;
             If cocks of player > 0:
                say "M/M";
             otherwise:
                say "M/F";
          otherwise:
             say "     You decide it best to just leave the horny coon to his own devices.";
             increase nocandycoonsex by 1;

The final part to this mechanic is a means for the player to undo this state as well as an opportunity for them to change their mind should the creature beat them and they want vengeance. In the section for creature victory sex, it should start with the variable being reset back to zero. This way, should a player lock themselves out of victory sex, losing to the creature will reset it back to the normal status quo.

Code: Select all
    to say losetocandycoon:
       now nocandycoonsex is 0;
       If cocks of player > 0:
          say "...code continues as normal...
User avatar
TigerStripes
 
Posts: 592
Joined: Mon Dec 09, 2013 4:39 pm

Adapting Creatures from Multiplayer

Postby TigerStripes » Tue Dec 10, 2013 6:59 pm

IMPORTING FROM MULTIPLAYER

This document is extensive and it covers almost everything you need to know and will save you a lot of headaches. I went into a lot of detail because I just got off doing a lot of them and not because it's a difficult task. I just did about 8 of them in about 24 hours of total work. I have just seen a lot of the stuff you can run into and want to cover it all. This task just has a bunch of little things to take care of and you might miss them if you don't know what to watch for the first few times. You can skip the tangents and parts you already know, but the stuff on the sex scenes, multiplayer code and infection entries are important and very, very helpful in sorting out your first import properly. By the time you do your third one, I expect you'll have this technique down and it'll go super-fast.

As I've been doing a lot of this recently, I've got some instructions and tips on how to import creatures from multiplayer. If you play multiplayer, this'll be even better for you, as you'll be able to see those critters at work and know what suits their interests and the needs of single-player, letting you make a pick you really want to do. This is not strictly necessary though, as there's an extensive list of creatures from multiplayer listed in the Wiki here. The descriptions are short, but it and the powers data should provide some clues as to the creature's themes. Expect surprises, but these are often good surprises.

Once you've got a candidate or two picked, message Nuku and request the import. He'll use the auto-translator system to snag it. It'll be dumped into the Auto Translator folder.

About the Auto-Translator:
This is a quirky bit of code that will do a rough job of grabbing data on the creature, giving you a good base to work off of when making your version. There are a few things you need to know about it though:
1> STATS: The stats it gives are bunk. It always gives the same ones for level, hp, dmg, str, dex, etc... Set them as needed yourself once you've gone through the other work.
2> Breasts: Divide the breast size given by 2 to get a value suitable for single player that matches the multiplayer description better.
3> Often, the line for the cock width will come out as 'cock width size entry is ;' . This error is frequent, but not absolute. If it occurs, add a 'now' in front and remove the 'size'. A value will also need to be assigned. It, and sometimes a few of the other values in that area, will come out empty. They should be zeros in that case.
4> Check the creature's power level on the Wiki for reference to see how the creature ranks in the scheme of multiplayer. As a rough estimate, divide the level range (shown in the right hand side of its 'known locations' data by 5 to get a rough estimate of where it ranks. This will place it in the 1-10 range typical of FS single player creatures. Feel free to fudge it, but don't make a super-monster into a wimp or vice-versa.
5> The scenes it gives will sometimes be more useful than at other times. Generally, the description's an okay starting point and the player defeat scene is good. The monster defeat is largely redundant and will need to be replaced wholesale.

Prepping the File:
1> Place a copy of the creature file in your folder.
2> Open it and change the creator name from Auto Translator to your own. You deserve some credit.
3> You'll notice that the file starts at Section 2. Copy the Section 1 data from the Template for FS.i7x file for later use. Similarly, copy the new monster table rows and the framework for the endings onto the bottom portion of the file. Start from the:

Code: Select all
       [ These represent the new additions to the table of random critters ]

line in the template file and place it immediately following the lootchance entry line in the working file.
4> With this framework, replace the 'template' in the win/loss/description say statements with the creature's name.
5> Many creature names in Multiplayer include the creature's gender, which can conflict occasionally with single-player mechanics and use of Gender Preferred feats. Consider removing the gender marker and stick to the creature type itself or use some other suitable descriptor.

Prepping the scenes:
0> You'll be moving chunks around first. Don't worry about editing them or building them into the say statements yet. It's cleanup first.
1> Scroll down to the creature data received and locate the desc entry. Excise the description and place it with the appropriate say statement. Place the appropriate link for it into the desc entry instead.
2> Locate the victory entry. This is the creature victory scene. Excise it and place it with 'losetocreature' say statement. Replace it with the appropriate link in its field.
3> Locate the defeated entry. This is the scene you see as a victorious player with this infection when you are the victor over anyone in multiplayer. The name of their losing foe is replaced with the name of the creature where appropriate. Most of the time, it will not work well as the player victory scene, but may provide added insight or description for use with the monster victory scene.

The description:
The creature's description will follow the basic setup of all multiplayer monster descriptions. It will describe the creature by using the various form data successively. This starts by stating the skin, head, torso, breasts (if any), arms and legs, ass/tail. It ends with a private peak to see their groin with a small description for the cunt/cock and their sizes. In multiplayer, these are all different infection areas and so may not always flow nicely from one to another in this format. Occasional 'you's and 'they's may be off, but that's rare in this part.
1> This data is pretty much identical to the data shown in the face, body, skin, tail and cock entry below. As such, it may need a little bit of revision, especially if the form suffers variable descriptions based on variables set by other factors or by having the proper skin infection.
2> This description is rather bland and gets repetitive fast. Read it over and apply a few tweaks to set the mood by describing its stance, its arrival, its intentions and so forth. The private peek section will also need an adjustment a lot of the time, as it can be very blunt in some cases. Alternatively, try reordering the sections, putting the head or body first (if they're the most striking feature). Alternatively, simply stating what the creature is before before starting in on its description. A bull is a bull and saying you've got an anthropomorphic one in front of you will go a long way to building the picture in the player's mind instead of working from all the parts.
3> Most forms from Multiplayer are anthropomorphic/humanoid, even if they don't state so clearly. Be on the lookout for the occasional four-footer or other oddball out there, but they're rare given the game's mechanics. Since the creature's description is based on the player infection form data, it'll be tricky to spot these sometimes. Taurs almost always have 'Taur' in their name, so they're hard to miss.
Once you've got the description, you'll have an idea of what the creature looks like, so now you can move on to the creature victory scene.

Creature Victory:
As stated, the creature victory scene is taken from the multiplayer code for the same. It is the message the player sees if he/she loses to the critter in question. Just what we need, right? Almost. Nearly all of this text will be useful and require minimal rewriting. The main issue will be tweaking the formatting. Once you've got this done, it'll be a speedy process that will leave you time to improve the scene you're given to new heights of pleasure.
1> The random and if clauses in this statement are nested (if within if within if...), which Inform does not like as part of a single say statement. Most of these scenes involve different results for different genders, so it'll need to be broken up. Often you'l see several [end if]'s built up in succession at the end the scene. This is a sure sign you'll need to break things into different parts.
2> Multiplayer code looks different, but is similarly easy to understand. 'of you' means the player in the code.
[if stat mutation/head of you = Corota] is checking if the player's facename is "Corota".
Gender is similar:
[if you is male] which means its checking if the player has a cock. The tricky part with gender comes in locating [if you is male] and [if you in female] in succession or nested together, thereby detecting if you're a herm (both male and female). There'll often even be an [otherwise] way at the end of this stuff to cover a neuter player, which is more common to obtain to encounter in multiplayer. If not, that scenario's probably caught by some general no-sex message or oral message normally used for a male or female victim if the creature only wants one gender for their main scene.
[if stat cock length of you > 12] is checking if the player's cock length is greater than 12. If a message like this is appearing, you've likely already been asked if the player is male shortly before, meaning two if's are nested. This is your clue to break this section into chunks back at the male/female check, making a separate say statement for each.
[if stat cocks > 1] is checking if on the number of cocks the player has. Similarly, if a message like this is appearing, you've likely got another male/female division earlier and you'll need to break things up.
[otherwise][if ...] will need to be consolidated into [otherwise if ...]. When you've got a bunch of these, you again may need to break into several say statements if they're getting nested together.
3> At times, some scenes may be driven by the player having a certain infection or trait. In those cases, since most of the multiplayer infections and traits don't exist in multiplayer, look over the scene and what's driving it, as there will often be a parallel for it in the single player. For example, the Fire Elemental got enraged after beating a player with the Fenrir Wolf dedication (an ice wolf). I altered this idea to apply to the Reindeer (with its snow powers) and the Naiad (a water maiden) and made alternative scenes. The Anime Babe was vulnerable to tentacle attack from the Parasitic Plant, but also other tentacle forms in multiplayer. The scenes were repurposed for single-player tentacle forms. If a trait can't be checked or has no apparent parallels, then leave it to the side and continue on.
4> Locate the main divisions of the script, usually detecting male/female/herm/neuter first and break those up into their own say statements. After that, start lightly revising. If you're lucky, little will be needed for this and you just need to swap for the proper if conditions and set up the proper otherwise if statements.
5> Often, the creature's name will be inserted without a 'the' ahead of it. It's being used instead of a player name in this case, so it looks a little off. Just tweak it by adding the or swapping it for another phrase like 'the <descriptive> creature' or 'he/she/it' and so on to avoid repetition.
6> Spice up the scenes a little while you're going through them. The scenes are often pretty good as is, but can be a little short to meet the needs of multiplayer better. Feel free to add an extra turn of phrase here or there to enrich it.
7> Occasionally the creature's built with a specific home or location in mind, especially if it's part of plot content. This may help determine where you'll place it in single player, but it may also mean you need to tweak these portions of dialog to suit the locations of single player instead. For example, the Quilled Tousky is found on a cliffside path and so is able to jump off the cliff while attempting to fly. I adjusted this to put him in the Junkyard and have him leap off the mounds of junk instead. The location has changed, but the results are the same.
8> Watch out for boss creatures. If you're dealing with a boss creature from a multiplayer area, then its victory scene is often going to be dramatic and possibly unusable, as its too tied to the quest involved. Porting boss creatures should also be rare, as they're not normally meant to be roaming around, though doing this might be handy if you need a boss for a quest or area you're making. There'll be plenty of ideas and parts you can use from their victory scene, but you're almost guaranteed to need to alter considerable segments of it as well to make it fit or prevent a rather more permanent end to the player.

Player Victory:
1> As stated, the scene you get is not really applicable most of the time. You'll need to make a scene from scratch based on the creature type and how you think a player might react to having the chance to have some fun with it. Alternatively, you might give the creature some means of escape or simply state that the player has no interest in fun with it at this time.
2> The infected player victory message is not entirely without merit, as it might be useful for making a scene where the player's new instincts drive it to interact with another of their own kind, making for a special variation scene. You'll still need something to cover the normal situation if the player does not have the matching infection, but you might get some fun out of it.
3> A lot of people are after the player victory aspect, so don't neglect this one too often if you're porting over a bunch of critters. At least take the time to add it in on occasion or make plans to come back and add it later once you get an appropriate idea.

Combat:
1> The attack entry message will need some reworking, as it defaults to listing the creature's special attacks by name. This isn't very descriptive, but will give you ideas to start. If you want to know more about these special attacks, click on them on the creature's table on their wiki page. You'll get a bunch of confusing numbers and effects, but in there is a description that'll help give you a better idea of how the critter fights. Throw in the occasional punch, kick or claw for variety and you're good to go.
2> If one of these attacks is particularly interesting or has an odd effect you want to help convey, an alt attack can be done if you're feeling up to it. I'll try to come up with a guide for those someday, but there's so much variety, it'd be tricky to say anything other than 'copy this' and 'change that a little'.

Transformation:
The transformation data's broken up into two parts, the form description and transformation description. Generally, what's there is good, you'll just need to do a few minor tweaks as long as the description's not interconnected.
1> Make sure it starts with a lower case letter and matched appropriately with the typical single-player lead in. Exception: In the case of the tail entry, this is meant to be a full sentence ending in a period. It can also be left completely blank in the case of a normal, human ass. Check the template for a proper description of the format required, as the one shown by the auto-translator is not accurate.
2> Keep the cock description to a simple, one word or two word setup. You can use [one of]x[or]y[or]z[at random] or an if statement to adjust variety.
3> Remove the final period from all portions except the tail entry.
4> Look for the occasional confusion between 'they' and 'you' and 3rd and 2nd person for verbs.
4> If portions of the description are interconnected and change depending on matching with each other (typically the skin), then you have one of three options. As the use of " to mark the infection name's text is not possible, you can get around it by:
a> Make a text variable that is set by default to the creature name. You can then match infection to variable.

Code: Select all
    boptext is a text that varies.  boptext is usually "Bird of Paradise".
    now tail entry is "[if skinname of player is boptext]Your tailfeathers are so long that they sweep the ground as you walk, yet somehow still manage to remain spotless despite that. The feathers themselves are large and broad, starting from a deep violet from within their shafts and gradually warming through all the colours of the rainbow up to the edges.[otherwise]Your ass is firm and muscular, the sort of thing you only find on magazine covers, but there seems to be something missing about it despite its perfection.[end if]";

b> Make a separate say statement to check the various portions. This may become necessary in the case of nested comparisons, though those are extremely rare. Usually only one factor applies at any given time.

Code: Select all
    now tail entry is "[boptail]";

    to say boptail:
         if skinname of player is boptext:
              say "Your tailfeathers are so long that they sweep the ground as you walk, yet somehow still manage to remain spotless despite that. The feathers themselves are large and broad, starting from a deep violet from within their shafts and gradually warming through all the colours of the rainbow up to the edges.";
         otherwise:
              say "Your ass is firm and muscular, the sort of thing you only find on magazine covers, but there seems to be something missing about it despite its perfection.";

c> Make a definition and use that for the comparison:

Code: Select all
       now tail entry is "[if player is bopskinned]Your tailfeathers are so long that they sweep the ground as you walk, yet somehow still manage to remain spotless despite that.  The feathers themselves are large and broad, starting from a deep violet from within their shafts and gradually warming through all the colours of the rainbow up to the edges[otherwise]Your ass is firm and muscular, the sort of thing you only find on magazine covers, but there seems to be something missing about it despite its perfection[end if].";

    Definition: a person is bopskinned:
       if the skinname of the player is "Bird of Paradise", yes;
       no;

While the third is the one I actually used in the case of the Bird of Paradise, all three are valid and have been used by me in the past. If you have a lot of these to deal with, then c> or a> works best. This technique can also be applied to any new creatures you make and is especially useful if they've got a special composition, gender traits or other effects. It can also be used as a means to provide a cunt description as part of the body description if the cock and body infections are paired up. See the body entries for the Cerberus and Junkman for more examples.

Stats:
Set the stats as appropriate for a creature of the level and strength you're looking to make. Please adjust it accordingly to fit. Remember, the stat values provided by the auto-translator are default and never vary.
1> As stated above, check the threat level of the creature from multiplayer, divide it by 5 and that'll give you a rough idea of the level. Some aren't ranked, typically meaning they're not 'roaming creatures' but are instead just player forms that can be collected. Fudge as necessary.
2> Pick reasonable str, dex, sta, per, int and cha values for this creature. Remember that 10-11 is normal human average before the outbreak. The player's base 12 as already above the curve in that regard. Stats may be a little higher on high level creatures, but please don't send them through the roof just so your critter can feel like a bad ass. Those stats will be used eventually and need to be sensible. A player gets 1 point every two levels to a single stat. If the creatures outstrip that too much, it won't match in cases where comparisons are made with a comparable level player.
3> Dex should climb at about 1 point for every 3 to 5 levels so it can match roughly with a player over time but not require that it be their only option. More agile creatures should climb a little faster, while slower ones have their focus to toughness or damage instead.
4> Pick an hp amount that scale with the other critters around, adjusting up or down if the creature's got a toughened hide, hardy physique or is physically frailer than these other monsters. Also, if the creature doesn't fight to the last breath, it's hp should be lower, as this is its submit/flee point, not its point of exhaustion. If a creature's up for rambunctious sex after losing, it probably didn't fight to the edge of passing out.
5> Pick a damage level that meshes with the other critters around. Again, it should probably climb at a rate of a point every 2 or 3 levels. If it seems more or less vicious, adjust slightly around, but a creature shouldn't excel at everything most of the time.
6> If you give the creature an alt attack, consider dropping its regular damage to compensate, as this'll average out with their enhanced ability elsewhere. This is the difference between landing punches on the shoulder and kneeing in the balls. The first is a normal hit and hurts, but the second's a special hit and is where the big damage is done when the creature gets the chance. If you aren't distinguishing the damage, you raise the damage on the average blow to include the kneed groins. But if you're counting busted balls separately (alt attack), then the normal hits should better reflect their hit to still balance with a drop in the creature damage.

Gender, Libido and Loot:
1> These are generally good, save for the breast size, which should be divided by 2 to get something more in line to match between the creature's description and the scale used in single-player (cup size scale). Remember, in single player, a 2 is a B cup and a 3 is a C cup, with is pretty nice average for the real world.
2> Check for any missing values with just a semi-colon. Those were lacking or did not get read properly and should be a zero.
3> If you're changing the creature's gender as part of your conversion, you'll need to play with the numbers and target gender.
4> Almost all creatures in multiplayer do a direct male to male and female to female infection pattern. If you want your female to make the player male or vice verso, you'll need to make that adjustment now by changing both the size values and the target gender (sex entry).
5> The libido value comes with a default value of 20, set it as you feel is appropriate based on your creature's behaviour from its appearance and victory scene. If the creature is more fight than sex, then its libido is definitely low. If its all about the sex, then it should be higher.
6> You'll not have a drop item. If appropriate, you might use an existing one, though that'd need a very good reason, or you can make a new one suitable for the creature. New infectious items are helpful, as they let a player win but still enjoy becoming infected as well.

New Variables:
Fill in these creature values as appropriate. Check the BFandI.i7x file in my folder if you need explanation or just check a few critters for more examples.

Drop Item: (optional)
See other files and explanations on how to make a drop item. Usually, copy a basic infectious one, swap all names and infections as appropriate and you're good to go.

Heat: (female optional)
See the other files and the Needy Heat file originally designed by Telanda Softpaw for more on this. An explanation page to eventually come.

Alt Combat: (advanced optional)
See the Alt Combat file and various critters with alt combat attacks for examples. A how-to may come eventually, but it's really a case-by-case sort of process. Check the many examples for the type of effect you want, copy it and adjust the values as necessary for your new attack.

Endings:
Write some endings for your critter for player succumbing and player survival. To mesh well with NPC and pet endings, the player should go through the military extraction, be released and try to settle down into a new life. How stable or unstable that life is can vary, but should allow for other content to work. Conversely, succumbing messages should not involve the player being successfully extracted, as they're considered feral now. Their interaction with the city and/or others of their kind should instead be explored. The template's pattern for gender division need not be followed, it's merely a helpful example.

Sending it along:
If at all possible, test your file with Inform.
Send it along using your typical method. Using the Git Hub is preferred, but posting it to the forums here also works.
See the other posts on setting up inform and using the Git Hub.
If you skip the testing phase, be sure to let us know, that way we can test if it compiles before attempting to post it.
Be awesome in the knowledge that you've helped the game get even better.
User avatar
TigerStripes
 
Posts: 592
Joined: Mon Dec 09, 2013 4:39 pm

Gender-Swapping Infections/Creatures/Cross-Contamination

Postby TigerStripes » Tue Dec 10, 2013 7:20 pm

ORIGINALLY POSTED: Jan 25, 2013
This post will come in three parts, but deals with three interrelated and interconnected techniques with a lot of overlap. Some of the stuff covered in one section will be useful in another, but references will call to it when that happens. As such, you need only focus on the situation you're dealing with if you want to set one of these up. The three cases we'll be looking at are:

A> Gender Swapping Infections - An infection that adjusts its infection gender. Ex: Snow Leopard
B> Gender Swapping Creatures - A single infection with male and female enemies. Ex: Clockwork Fox
C> Cross-Contamination - Two paired infections which cause each others infection. Ex: Nymph and Satyr


A> GENDER SWAPPING INFECTIONS:

This method is probably the easiest and contains the barest of steps to perform, so we'll start here. What this setup does is allow the creature's infection to adjust itself to aim towards the player's Gender Preferred target, should that be different of the creature's normal goal. Examples of this include: Snow Leopard and Fennec (male primary), Trash Coon and Snow Bat (female primary) as well as several others. Note, there is no need to use this method if the creature's usual target gender his "Both" as the sex change subroutine automatically compensates for a shift for Male/Female Preferred w/o loss of data.

To do this:
Step 1> Make your creature as normal or bring up your existing creature file.
Step 2> In the description of your creature, include the following code to shift the target gender if the player has a Gender-Preferred feat.

If the normal target gender is "Male":

Code: Select all
       choose row monster from table of random critters;
       if "Female Preferred" is listed in feats of player:
          now sex entry is "Female";
       otherwise if "Herm Preferred" is listed in feats of player:
          now sex entry is "Both";
       otherwise:
          now sex entry is "Male";

or, If the normal target gender is "Female":

Code: Select all
       choose row monster from table of random critters;
       if "Male Preferred" is listed in feats of player:
          now sex entry is "Male";
       otherwise if "Herm Preferred" is listed in feats of player:
          now sex entry is "Both";
       otherwise:
          now sex entry is "Female";


Step 3> Prof... no, adjust the creature gender values in its data. Make sure there are size and number values for cocks, cunts and breasts as appropriate. Unless you want male breasts, keep that value zero. The following example's from the Trash Coon.

Code: Select all
       now sex entry is "Female";      [ Infection will move the player towards this gender.  Current: 'Male' 'Female' 'Both' ]
       now cocks entry is 1;         [ Number of cocks the infection will try to cause if sex entry is 'Male' or 'Both'. ]
       now cock length entry is 10;      [ Length infection will make cock grow to if cocks. ]
       now cock width entry is 6;      [ Cock width, more commonly used for ball size. ]
       now breasts entry is 2;         [ Number of breasts the infection will give a player. ]
       now breast size entry is 5;      [ Size of breasts the infection will try to attain. ]
       now male breast size entry is 0;    [ Breast size for if Sex="Male", usually zero. ]
       now cunts entry is 1;         [ The number of cunts the infection will try to cause if sex entry is 'Female' or 'Both'. ]
       now cunt length entry is 10;      [ Depth of female sex the infection will attempt to give a player. ]
       now cunt width entry is 6;      [ Width of female sex the infection will try to give a player. ]

What this does:
0> Skip this if you don't care to know and just trust me on it.
1> It begins by selecting the creature's data line in the table of critters (which is preset to 'monster' because you're about to start a fight with it).
2> It checks if the player has a Gender Preferred feat other than the typical target gender.
If so> It changes to that target gender (sex entry) for use later.
if not> It progresses to keeping the target gender (sex entry) set to the default value.
3> This means that even if the player gains, loses or changes their Gender Preferred feat during the course of the game, the infection will adjust itself accordingly upon the next encounter.
4> Having data in all gender fields does not activate them. They are only used if the target gender is appropriate for them. Male infections will assume zeros for cunts and breasts (except w/male breasts) and females will assume zeros for cocks and balls. Since the numbers aren't used, they can merrily sit there for the Gender Preferred player to shift the target gender.

Alternate uses:
A> This mechanic can be used to make an NPC (or event) adjust their infection gender before infecting the player. In that case, you'll need to call and set the monster value to the NPC's infection before putting this into effect (shown later xxxxxxxx). The alteration can be left in effect, making it continue to persist for the player if infected by the creature or to await the next swap by the NPC (or creature if it uses the above method as well).
B> The creature could have an internal mechanic that makes it adjust its own target gender based on other criteria. This is what the German Shepherd does when he picks whether to make you into his female bitch (normal) or a male pack member (changing sex entry to "Male"). Instead of doing it according to the selection method above, you simply pick the creature and adjust the sex entry value when conditions dictate this behaviour change has occurred.


B> GENDER SWAPPING CREATURES:

This method is used if you want to make one infection that has two or more forms for the creature based on gender. This method could easily be altered to affect other aspects of the creature, but most of the time, gender is the key factor involved here. For this example, we'll deal with a male and a female form, though a herm could be swapped in or all three done. Of the three techniques in this post, this one is the most involved. The basic scenario is simple, but requires several adjustments, and more advanced adjustments are a require a little extra care.

Examples of this include:
Automaton: Male and female (same power level)
Clockwork Fox: Male and female (same power level)
Vixen Nurse: Female and herm (different power levels)

It can also be extended/altered to other characteristics and effects which include:
Bottlenose Toy: Anthro and feral dolphins
Doberman: Stages of lust
Siamese Cats: Male and female (together w/different power levels)
Albino Mouse: Dr. Mouse boss fight (boss w/two forms)

We will be focusing on the basic case of two forms with equal power levels as that's the general case. The others may be explored or added to this post later. Once you understand the basic case, it's fairly simple to expand to the others as long as you take a little care. Essentially, you're making one creature, but some sections branch into two versions, male and female, to be picked during the description immediately as the fight begins. Since much of the data, like the player infection, remain united, you prevent confusion with players having a mix of male and female infected parts.

Step 1> Start constructing of your creature as normal, but prepare your two descriptions.
Step 2> When putting the description together, include a means to pick between the two of them and have a variable to track it. We will use the Clockwork Fox as our example, as this is a good, basic one that you can use with ease.

Code: Select all
       choose row monster from the table of random critters;
       if guy is banned and girl is banned:      [if both types are banned, the fight is aborted and removed from critter table]
          say "     You come across a strange, mechanical fox.  The mechanical fox whirrs and clicks as it looks you over, eyes scanning you in some strange manner.  As if sensing something about you, it turns and heads off, somehow knowing you don't want to play with it.";
          blank out the whole row;
          now fightoutcome is 19;
          now combat abort is 1;
          now cfgmode is 0;
       otherwise if guy is banned:
          now cfgmode is 1;
       otherwise if girl is banned:
          now cfgmode is 2;
       otherwise if a random chance of 1 in 2 succeeds:
          now cfgmode is 1;
       otherwise:
          now cfgmode is 2;
       if cfgmode is 1:
          say "Female vixen description";
          now sex entry is "Male";
          if "Female Preferred" is listed in the feats of the player, now sex entry is "Female";
       if cfgmode is 2:
          say "Male fox description";
          now sex entry is "Female";
          if "Male Preferred" is listed in the feats of the player, now sex entry is "Male";


In this case, cfgmode tracks the gender of the current Clockwork Fox being faced with 1=female and 2=male.
The trickiest part here comes from the need to manage gender flags. While the creature could be flagged as both guy and girl, this would cut out both genders at once, even if someone only ones one of the two gone. To get around this, the first half of the gender selection process checks to see if either possibility is outright banned and thereby forces the other. If both are banned, the creature's removed from the game at that point and the combat is aborted. In the middle section, if flags aren't an issue, there's a 50-50 chance the player will get either gender. Lastly, with the gender chosen, the appropriate description is displayed. The vixen will try to make the player into a fox (sex entry is "Male") and the fox will try to make the player into a vixen (sex entry is "Female") using a method similar to that shown in part A. As long as the genital data is able to accommodate either (see part A-3), that will function as we've covered above.

If you're changed based on other factors, external to random chance, then use those variables to make your decision, but it may be easier to set a new variable to track the form within the creature and combat. If the two forms have different stats or abilities, they should be updated into the creature's data at this point.

Step 3> The creature's attacks, which could vary between genders (even if just by fox/vixen and he/she), will need to be able to distinguish the gender of the current enemy. You then use your gender tracking variable to distinguish.

Code: Select all
    to say cfgfight:
       if cfgmode is 1:
          say "Various vixen attacks.";
       otherwise:
          say "Various fox attacks.";

    (in the creature data)
    now attack entry is "[cfgfight]";

Step 4> Make your creature victory and player victory scenes as usual, but as a double-set. Again, use the gender tracking variable you made to distinguish which scene set to use.

Code: Select all
    to say losetocfg:
       if cfgmode is 1:
          say "[losetocfgirl]";  [beaten by vixen]
       otherwise:
          say "[losetocfguy]";  [beaten by fox]

    to say beatthecfg:
       if cfgmode is 1:
          say "[beatthecfgirl]";  [vixen is defeated]
       otherwise:
          say "[beatthecfguy]";  [fox is defeated]

Step 4 - Optional> You may choose to make the infected player's appearance vary based on the player's gender, or any other features. Tips on how this is done is partially covered in my post on 'Importing from Multiplayer' in the 'Transformation' subsection. I will make a lesson to cover this more fully at a later date.

Step 5> As mentioned above, include gender data for both male and female forms of the infection in the creature data (see part A-3).


C> CROSS-CONTAMINATION:

This method is used when you want to make two linked, interdependent infections. These typically have two different forms and manifestations and can cause each others infection, either as a preference or as a backup/special case. This can be two-way, as in the case of the Satyr and Greek Nymph, or one-way, as in the case of the Alpha Husky causing the Female Husky infection.

Examples of this include:
Satyr and Greek Nymph (two-way, picking by player gender)
Alpha Husky (one-way to Female Husky under most conditions)
Tiger Cop (one-way to Tigress Hooker at all times)
Centaur Mare and Centaur Stallion (swaps only in presence of Gender Preferred override)
Feral Sea Dragon and Feral Sea Dragoness (two-way unless in presence of Gender Preferred override)

Clearly there's a lot of variation and uses for this method. We'll start with the basics and then show how they can be adjusted to do all these different formats with only small changes in execution.

Case 0> The creature is completely non-infectious.
If you have a situation where an creature in the critter table needs to be non-infectious, either because it cannot bestow its infection or (more likely), it is a quest/NPC strain that can only be obtained by plot means or once the creature is unlocked, you need to set the creature's non-infectious entry to true in the creature data. This will prevent loss against the creature from resulting in their infection being spread and will also prevent random infection sources (such as dirty water) from picking their strain.

Code: Select all
       now non-infectious entry is true;     

This status can be toggled on and off as needed by calling up the creature and swapping the result to false (infectious). As a reminder, the infection name is case sensitive.

Code: Select all
    setmonster "Creature Name";
    choose row monster from the table of random critters;
    now non-infectious entry is false;


Case 1> To make a creature cause the infection of another (during monster victory).
End the monster victory scene with a call to the monster in question, ensuring that it is the primary monster. Depending on the effect desired, this can be done by either:
a> Prompting infection as part of the victory scene. This will result in one infection as part of the scene to be immediately followed by a second infection when the remainder of the combat loss code is run. This effectively makes the creature double-infectious.

Code: Select all
    to say losetotigercop:
       say "Player lost to tiger cop.";
       infect "Tigress Hooker";


b> Selecting that creature who's infection you want, making it the primary monster. In this case, the player will receive only one dose of the creature "Creature Name" as the combat loss code is completed.

Code: Select all
    to say losetoexamplecritter:
       say "Beaten by example critter.";
       setmonster "Creature Name";

c> Inducing a random infection or picking a random, infectious monster. In this case, the player will receive one or two doses of a randomly chosen infection. Please note, the example below (Mismatched Chimera) does both of these back to back to give the player two different infections.

Code: Select all
    to say losetomischim:
       say "Beaten by Mismatched Chimera.";
       weakrandominfect;         [picks a random infection and causes it]
       increase monster by 1;    [picks the next infectious monster and sets it as primary]
       choose row monster from table of random critters;
       while there is a non-infectious in row monster of table of random critters and non-infectious entry is true:
          increase monster by 1;
          choose row monster from table of random critters;

If the creature itself is to be non-infectious during the normal course of events, then follow the procedure for Case 0 as well. Doing this will not prevent the double-infection scenario shown above, as you are now dealing with the new target infection, which is still set as infectious.

Case 2> The creature causes another infection under certain conditions only.
This is simply an adaptation of Case 1 with one or more conditions preceding forcing the new creature to be selected as the primary.
Example a>
Code: Select all
    to say losetocentaurmare:
       say "Scene for losing to Centaur Mare.";
       if "Male Preferred" is listed in feats of player and guy is not banned:      [change target to Stallion for infection]
          setmonster "Centaur Stallion":

Example b>
Code: Select all
    to say dragoness attack:
       say "Scene for losing to feral sea dragoness.";
       if "Female Preferred" is not listed in feats of player and guy is not banned:      [change target to male for infection, if valid]
          setmonster "feral sea dragon";

Example c>
Code: Select all
    to say Greek Nymph attack:
       if cocks of player is greater than 0:
          say "Male/Herm lost to Greek Nymph.";
          if guy is not banned, infect "Satyr";
       otherwise:
          say "Female lost to Greek Nymph.";
          infect "Greek Nymph";

Example d>
Code: Select all
    to say Alpha Husky attack:
       say "'Lost to Alpha Husky.";
       infect "Female Husky";

    To say Alpha Husky loss:
       if sarahslut is greater than 3:
          say "Special conditions - offers training to be Alpha Husky";
          if player consents:
             say "Training accepted.  Infected w/Alpha Husky.";
             infect "Alpha Husky";
             infect "Alpha Husky";
          otherwise:
             say "Training refused.  Normal player victory message.";
       otherwise:
          say "Normal conditions - normal player victory message.";

Example e>
Code: Select all
    to say losetoanimebabe:
       say "Intro - Player lost to Anime Babe.";
       if cocks of player > 0 and cockname of player is "Parasitic Plant":
          say "Male player has Parasitic Plant tentacle cock!  Oh my!";
          infect "Parasitic Plant";
       otherwise if cocks of player > 0 and cockname of player is "Tentacle Horror":
          say "Male player has Tentacle Horror tentacle cock!  Oh my!";
          infect "Tentacle Horror";
       otherwise if cocks of player > 0 and tailname of player is "Cerberus":
          say "Male player has Cerberus tailcock!  Oh my!";
          infect "Cerberus";
       otherwise if bodyname of player is "Squid":
          say "Male player has Squid body.  Tentacle arms!  Oh my!";
          infect "Squid";
       otherwise if cocks of player > 0 and cockname of player is "Squid":
          say "Male player has Squid tentacle cock!  Oh my!";
          infect "Squid";
       otherwise:
          say "Normal player loss scene.";

    to say beattheanimebabe:
       say "Intro - Player beat the Anime Babe.";
       if cocks of player > 0 and cockname of player is "Parasitic Plant":
          say "Male player has Parasitic Plant tentacle cock!  Oh my!";
          infect "Parasitic Plant";
       otherwise if cocks of player > 0 and cockname of player is "Tentacle Horror":
          say "Male player has Tentacle Horror tentacle cock!  Oh my!";
          infect "Tentacle Horror";
       otherwise if cocks of player > 0 and tailname of player is "Cerberus":
          say "Male player has Cerberus tailcock!  Oh my!";
          infect "Cerberus";
       otherwise if bodyname of player is "Squid":
          say "Male player has Squid body.  Tentacle arms!  Oh my!";
          infect "Squid";
       otherwise if cocks of player > 0 and cockname of player is "Squid":
          say "Male player has Squid tentacle cock!  Oh my!";
          infect "Squid";
       otherwise:
          say "Normal player victory scene.";

Discussion of examples:
Examples a and b are near-identical, with opposite effect. With the Centaur Mare, she will only swap to the Centaur Stallion infection if the player's "Male Preferred" feat demands the player be male (and the flag says guys are still around). In the case of the feral sea dragoness, she will cause the feral sea dragon unless the player's "Female Preferred" feat demands the player be female (or the flag says the guys have been banned).
In example c, the player's current gender (and the type of scene they got because of it), dictates which infection (flags permitting), they will get. The inclusion of the added 'infect "Greek Nymph"' at the end is not necessary, existing only for balance to give double-infection for both scenarios.
Example d is basically the same as Case 1, but one of player victory possibilities still leaves getting the Alpha Husky infection open by causing active infection then. For this to work, the Alpha Husky's non-infectious entry would be kept as false to allow this infection to occur.
Example e has the player obtaining different infections if the player already possess a specific infection in a specific area. This then causes a different scene and that specific infection continues to spread. If the player was the loser, under these special conditions, they'll get a double-dose of their infection. If the player was the winner, but these scenes occurred, the player will obtain the single infection (because the regular loss infection will not occur for victory). The normal effects will occur if the player does not meet any of these conditions.

NOTE: The setmonster subroutine is a new one I just made to simplify doing just this sort of thing, and many other tasks. As such, you'll see the full code this replaces if you check the files for some of these examples, but it's just showing the same steps the subroutine takes. The subroutine will also return an error message if it fails to find the creature in question. This might occur if it's banned, deleted or the infection name has been misspelled or improperly capitalized.

Case 3> Paired cross-contamination
This is the case where you want two infections to be linked such that they each cause the other's infection while remaining distinct. Doing this is simply a matter applying Case 1 or Case 2 to both creatures. The exact manner or determining conditions to implement these do not need to be the same, though they will usually be paired together in a symmetrical manner due to the nature of their interdependence.
User avatar
TigerStripes
 
Posts: 592
Joined: Mon Dec 09, 2013 4:39 pm

Descriptive Elements

Postby TigerStripes » Tue Dec 10, 2013 7:38 pm

STUFF FOR MAKING AND IMPROVING SCENES
ORIGINALLY POSTED: Jan 30/2013 - formatting restoration to be completed later
This posting will contain a large listing of the various descriptive elements usable in the game. These are the bits of code to allow you to add descriptions to a scene based on the players current form, genitals, etc... I will also add some properties and statuses which can be checked as well when making branching scenes or content that adjusts for certain player qualities.

NOTE: This document will not cover critter/NPC/quest/event specific variables and properties. Check the individual files to research those. Many NPCs and quests are now being made with a legend on what these variables mean at any given value. Typically, it is placed at the top or bottom of the file. If you create an NPC or quest, please consider the inclusion of this, both to make it easier for you to keep track of this and for others who may need to tie into your content at some later point.
NOTE 2: I'm also sure I'm missing a few of these. I'll add them as I remember or people point them out.

Part 1 - Useful Variables and Properties:
The data of the game is contained in a lot of variables and properties, many of which may be useful in the building of your scene or to increase the level of detail and personal connection to the player character. References to the player's form, size, genitals, etc... all help personalize the scenes and increase replayability. Some of these are more useful than others. I'll denote those descriptive elements I feel are particularly useful for scenes relating to them by using ** in front of them. They can then be inserted into text by using [cock of player] or as part of conditional statements (more on this in part 2 of this document).

Player Stats: numerical, rarely useful for scenes except for comparisons, but here for completeness
hp of player | current hp of player
maxhp of player | player's maximum hp
xp of player
level of player
strength of player
dexterity of player
stamina of player
charisma of player
intelligence of player
perception of player
hunger of player
thirst of player
morale of player
libido of player
humanity of player
score
turns - current numerical turn (counts down) - DO NOT ALTER!
targetturns - the turn number for game over - DO NOT ALTER!

Basic Infection Variables:
bodyname of player | The infection name on the player's cock. Very useful for comparisons or, less desirably, as a descriptive element.
facename of player | The infection name on the player's cock. Very useful for comparisons or, less desirably, as a descriptive element.
skinname of player | The infection name on the player's cock. Useful for comparisons or, less desirably, as a descriptive element.
tailname of player | The infection name on the player's cock. Useful for comparisons or, less desirably, as a descriptive element.
cockname of player | The infection name on the player's cock. Useful for comparisons or, less desirably, as a descriptive element.

body of player | portion of the player's description dealing with their body. Generally not useful for scenes.
face of player | portion of the player's description dealing with their face. Generally not useful for scenes.
skin of player | portion of the player's description dealing with their skin. Used occasionally for scenes, but often has differences in application that makes this messy.
tail of player | portion of the player's description dealing with their tail. Generally not useful for scenes.
**cock of player | one or two word description(s) of the player's cock. Recommended for use in scenes.

**scalevalue of player | numerical value for player's rough size category (1 to 5)
body size of player | adjective describing the player's rough size category (tiny to huge)
**bodydesc of player | single adjective(s) used to describe the player's body and build (fat/thin/muscled/effeminate...)
**bodytype of player | single adjective(s) denoting the general type of infection the player has (human/feline/canine...)
daycycle of player | numerical: day/night preference (if any) of the player's form. 0=standard, 1=day-preferred, 2=night-preferred

Genital Variables:
This first set are the numerical values, to be followed by the descriptive ones which adjust themselves based on these numbers.
cocks of player | the number of cocks the player has
cock length of player | the length (in inches) of the player's cock
cock width of player | the size (comparatively) of the player's balls
cunts of player | the number of cunts the player has
cunt length of player | the depth (in inches) of the player's cunt
cunt width of player | the width (in inches) of the player's cunt
breasts of player | the number of breasts the player has (an even number)
breast size of player | the breast size (corresponding to cup size) of the player's breasts (1=A, 2=B, 3=C, etc...)
character number breast size of player in cupsize | the player's breast size as the corresponding cup letter

**cock size desc of player | adjective describing the player's cock size (cock length)
**cunt size desc of player | adjective describing the player's cunt size (cunt length)
**breast size desc of player | adjective describing the player's breast size
**ball size | adjective + balls/testicles/gonads | describes the size of the player's balls. Note: no 'of player' on this one.
**cum load size of player | adjective describing the size of the player's load. Typical usage is: "your [cum load size of player] load". NEW!

Other/Environmental:
monsterhp | the monster's current hp
location of player | name of the room the player is in (is hunting/exploring from)
time of day | descriptive time of day
short time of day | general time of day
the number of entries in childrenfaces | the number of children the player has
mpregcount | the number of male-births the player has had

Part 2 - Useful Statuses and Comparisons:
These are used as part of conditional statements or clauses to alter scenes based on player/environmental properties. They can be coupled with otherwise if and otherwise for greater variation or 'and/or/not' can be used to make further variations and combinations. If they do not contain any quotation marks for exact text ("), then they can also be built into say statements by being enclosed in square brackets, such as [if cocks of player > 0] and closed with [end if]. In some cases, there are multiple ways to check the same info, in those cases, I've separated the options by an italicized or. Only the green is the code.

For your own sanity, only include a few of these variations in any given scene at most, as some will be more relevant than others to the events you're creating. Some writers have preferences to the aspects they like to highlight about the scene in this manner, so don't feel you have to use all the same ones as everyone else.

Genitals:
if player is male or if cocks of player > 0 | does the player have any cocks? (male/herm)
if player is female or if cunts of player > 0 | does the player have any cunts? (female/herm)
if player is herm or if cunts of player > 0 and cocks of player > 0 | does the player have both cock and cunt? (herm)
if player is neuter or if cunts of player is 0 and cocks of player is 0 | does the player have no cunt and no cock? (neuter)
if cocks of player is 1 | does the player have a single cock?
if cocks of player > 1 | does the player have multiple cocks?
if cocks of player > 2 | does the player have 3 or more cocks?
if cock length of player > 6 | does the player have a cock that is 7 inches or more?
if cock length of player < 10 | does the player have a cock that is under 10 inches?
if cock length of player > 30 | does the player have a belly-bloating huge cock? (this is just my typical values used for an avg sized creature)
if cock length of player > 20 | does the player have a belly-stuffing big cock? (again, my value choice for this)
if cock width of player > 5 | are the player's balls ranked above 5 in size?
if cock width of player < 12 | are the player's balls ranked under 12 in size?
if cock width of player > 40 | is the player's load belly-bloatingly large? (again, my value choice for this)
if cock width of player > 20 | is the player's load belly-stuffingly large? (again, my value choice for this)
The above cock comparisons can be done for the player's cunt values. The size comparisons should also be considered against a critter's cunt/cock size to just their fit.

Infections:
if bodyname of player is "Rubber Tigress" | does the player have the Rubber Tigress infection on their body? (case sensitive to name)
if skinname of player is "Bird of Paradise" | does the player have the Bird of Paradise infection on their skin? (case sensitive to name)
if bodyname of player is "Alpha Husky" or facename of player is "Alpha Husky" | are either of the player's head or body infected with the "Alpha Husky" strain?
if player is pure | does the player have the same infection on all body parts?
if bodyname of player is "Feline" and player is pure | is the player fully infected with the Feline strain?
if bodyname of player is listed in infections of Felinelist | does the player have any of the feline infections on their body?
if bodyname of player is not listed in infections of Felinelist | does the player not possess any feline infection on their body?
The current list options are: felinelist, caninelist, equinelist, vulpinelist, reptilelist, insectlist, plantlist, avianlist, taurlist, knotlist (cock), latexlist (skin)
if scalevalue of player is 3 | is the player roughly human sized?
if scalevalue of player < 3 | is the player smaller than human average?
if scalevalue of player > 3 | is the player above human average?
if player is perminfected | does the player have any of the permanent infections? (jackalman, Hellhound, etc...)

Fighting and Fight Outcomes:
if weapon object of player is journal | does the player fight barehanded?
if weapon object of player is not journal | does the player fight with a weapon?
if hp of player > 0 | did the player submit/lose to lust before being KO'd? (when used within player loss scenes for critters)
if monsterhp < ( hp entry / 2 ) | is the critter's hp under 50%? (must choose the current monster row beforehand)
if lost is 1 | did the player lose their last fight? (usable only after combat's fully resolved and critter win/loss scene have played) WARNING: Does not account for fleeing.
if fightoutcome >= 10 and fightoutcome <= 19 | did the player win their last fight?
if fightoutcome >= 20 and fightoutcome <= 29 | did the player lose their last fight?
if fightoutcome >= 30 | did the player manage to flee from their last fight?
Numerous more examples and more specific results for fightoutcome can be seen in this document: ----

Feats:
if "Male Preferred" is listed in feats of player | does the player have the Male Preferred feat? (feat name is case sensitive)
if "Male Preferred" is not listed in feats of player | does the player not have the Male Preferred feat?
if "MPreg" is listed in feats of player | does the player have the MPreg feat
if player is submissive | shorthand for checking if the player has the Submissive feat
if player is fastlearning | shorthand for checking if the player has the Fast Learner feat
if anallevel is 3 or if "More Anal" is listed in feats of player | is the player set for More Anal?
if anallevel is 1 or if "Less Anal" is listed in feats of player | is the player set for Less Anal?
if anallevel > 1 or if anallevel is not 1 or if "Less Anal" is not listed in feats of player | if the player not set for Less Anal? (normal or More Anal)
if analalevel < 3 or if anallevel is not 3 or if "More Anal" is not listed in feats of player | if player is not set for More Anal? (normal or Less Anal)
Numerous more examples for More/Less Anal listed in the second half of this document: ----

Pregnancy and children: (new features listed)
if player is impreg_now or if gestation of child > 0 | is the player is currently pregnant?
if player is impreg_ok | can the player become pregnant in general? (not sterile, has cunt/MPreg)
if player is impreg_able | can the player currently become pregnant? (impregnable and not currently pregnant/parasite)
if player is mpreg_now | is the player is currently male-pregnant?
if player is mpreg_ok | can the player become male-pregnant in general? (not sterile, has MPreg)
if player is mpreg_able | can the player currently become male-pregnant? (male-impregnable and not currently pregnant/parasite/Velos-blocked)
if gestation of child > 0 and gestation of child < 10 | advanced pregnancy
if gestation of child > 0 and gestation of child < 20 | pregnancy is showing
if gestation of child > 0 and gestation of child < 30 | early pregnancy (not showing, but faintly aware)
if gestation of child >= 30 | very early pregnant (no signs yet)
if the number of entries in childrenfaces > 3 | does the player have 4 or more children?
if childrenfaces is empty | does the player have no children?
if "Feline" is listed within childrenbodies | does the player have at least one child with a Feline body?
if "Feline" is not listed within childrenbodies | does the player have no children with a Feline body?

NPCs and Pets:
if Candy is bunkered | is Candy in the Bunker?
if Snow is booked | is Snow in the Library?
if the number of bunkered people > 2 | are there three or more people in the Bunker?
if the number of booked people is 0 | are there no NPCs in the Library?
if number of booked people + number of bunkered people > 3 | are there at least 4 NPCs in the Bunker and Library together?
(note: booked and bunkered do not apply to the player or to Trixie. These exist for checking/counting in-game NPCs only.)
if lastfuck of Alexandra - turns < 6 | has it been less than six turns since Alexandra was last fucked? (usable on most NPCs)
if bee girl is tamed | is the bee girl one of the player's pets?
if companion of player is bee girl | is the bee girl the player's current companion (active pet)?
if level of companion of player > 3 | is the player's current companion level 4 or higher?
if player is lonely | does the player have pet with them currently?
if the number of tamed pets is 0 | does the player have no pets at all yet?

Objects:
if water bottle is owned or if carried of water bottle > 0[/color] | is the player carrying a water bottle?
if carried of soda > 1 | does the player have at least 2 soda on them?
if food is fiveowned or if carried of food > 4[/color] | does the player have at least 5 food on them?
if pocketknife is wielded or if weapon object of player is pocketknife[/color] | is the player using the pocketknife?
if face mask is equipped | is the player wearing the face mask?
if weapon object of player is improved | has the player's current weapon been improved (upgraded by Snow)?
if cot is present or if "cot" is listed in invent of location of player[/color] | is there a cot in the room?

Situations/Locations:
if inasituation is true | is a situation/event is current being resolved? (useful to avoid conflicts between fights and events)
if Poor Kitty is resolved | is the event "Poor Kitty" resolved/done/closed?
if Poor Kitty is not resolved | is the event "Poor Kitty" currently encounterable (open)?
if Trevor Labs is known | does the player know how to get to Trevor Labs (in their nav list)?
if location of player is Grey Abbey Library | is the player currently in the Grey Abbey Library?

Flags/Banning/Game Mode:
if guy is banned | the Guy flag is banned (guy content not available)
if girl is not banned | the Girl flag is not banned (girl content available)
if hardmode is true or if scenario is "Hard mode" | is the game in Hard Mode?
The current game modes are "Bunker", "Caught Outside", "Rescuer Stranded", "Researcher", "Forgotten" and "Hard mode". These are case sensitive, as they are text. Only hard mode has a direct variable for it.

Researchers/Vials:
To be added later.

Other checks:
if daytimer is day | currently daytime hours
if daytimer is night | currently nighttime hours
if libido of player > 40 | is the player's libido above 40?
if humanity of player < 10 | is the player's humanity under 10?
if libido of player > humanity of player | is the player libido greater than their humanity?
if score > 100 | is the current game score over 100?
if morale of player > 0 | does the player have positive morale?
if level of player > 5 | is the player level 6 or higher?
if thirst of player > 30 | is the player's thirst above 30? (starting to feel the effects of thirst)
if hunger of player > 30 | is the player's hunger above 30? (starting to feel the effects of hunger)

Special:
if skipturnblocker is 0 | This is to be included as part of everyturn rules which should NOT occur or would be delayed if the player is missing turns while KO'd or otherwise completely incapacitated... engineer these scenes to occur once the player's recovered, typically by allowing for >= or <= your target number rather than its exact value or waiting until the scene can play to increment to the next status.

Random chance:
if a random chance of 1 in 3 succeeds | a 33% chance of occurring.
if cunts of player > 0 and a random chance of 1 in 2 succeeds | if the player has a cunt, 50% chance of this scene playing out.
if a random number between 1 and 100 < 15 | another way to do random chance, this one is 14%
if "More Anal" is listed in feats of player and a random chance of 3 in 5 succeeds | there is a 60% chance of this scene playing out, but only if the player has More Anal.
if cunts of player is 0 or a random chance of 1 in 3 succeeds | This will occur if the player has no cunt, otherwise it'll occur a third of the time.
if a random chance of 1 in 2 succeeds or ( cocks of player > 0 and a random chance of 1 in 3 succeeds ) | this will occur one half of the time, with males/herms getting an additional 33% chance on top of that.
if libido of player > a random number between 1 and 100 | random libido check (yes = gave in, no = resisted)
if libido of player > a random number between 25 and 125 | random libido check w/a libido of 25 or less guaranteed to win (not give in) and random roll of 101-125 also always winning (yes = gave in, no = resisted)
if ( 100 + humanity of player - libido of player ) > a random number between 1 and 150 | a random check pitting the player's humanity and libido against one another (yes = resisted, no=gave in)
if a random number between 0 and humanity of player > a random number between 0 and libido of player | another check pitting the player's humanity and libido against one another (yes=resisted, no=gave in)

Part 3 - Fancy Text
Use sparingly, but can be helpful for highlighting key info
[special-style-1] | switches to bold dark green text (typically: healing and freecred increase)
[special-style-2] | switches to bold red text (typically: fire damage, damage and freecred decrease)
[fixed type] | switches to fixed length characters
[bold type] | switches to bold text
[italic type] | switches to italics text
[roman type] | switches back to normal text - necessary after using any of the above

Part 4 - Actions and Effects for Scenes
Coming soon.

Part 5 - Key Properties and Aspects to Vary
As covered in part one, there are several descriptive elements which are more useful and of common use than others. Similarly, when framing scenes, some of the status checks you can make will be more handy than others. I'll list some of the ones I consider to be key ones you should consider using more often in your content. While it's not really viable to use all within any given victory/loss scene (for example), it is nice to drop in a few of them as appropriate, even if only for changing a phrase here or there.
[if cunts of player > 0]...[end if] | Dropping this in for scenes with male/herm players to insert an extra bit for a herm player to show what's going on, or not going on, with their cunt while their cock's the centre of the action. The same can also be done for female/herm scenes by checking for a cock.
[if cocks of player > 1]...[otherwise if cocks of player is 1]...[end if] | This is very handy for making a quick distinction or addition to a scene should the player have more than one cock, even if it's just distinguishing between 'cock' and 'cocks' in the text, this makes the scene fit better for a player who is multi-equipped. Obviously the same can be done for a player with two or more cunts.
[if cock length of player > 16]...[otherwise if cock length of player > 8]...[otherwise]...[end if] | Players with smaller or larger dicks may have variation on their scenes where it's easier or harder to stuff a hole or it takes more effort to entice their oversized lover to the heights of passion, or many other subtle variations. Completely different scenes (such as oral vs penetration) can even be built based on these factors. The same can be applied in reverse to the player if you check their cunt size instead. It is helpful to consider the scale of the creature and the size of the critter's junk, which you can sometimes get for an existing creature from their table data or by checking their description and any existing scenes.
[if cock width of player > 40]...[otherwise if cock length of player > 20]...[otherwise]...[end if] | As mentioned above, this sort of thing can be used to distinguish between the size of a players balls (and the output thereof) so you can show what kind of effect the player's (potentially huge) load may have on their partner. Similarly, feel free to adjust this around based on the creature's scale.
[if scalevalue of player > 3]...[otherwise if scalevalue of player < 3]...[otherwise]...[end if] | You can use this to make a turn of phrase that is slightly different for larger than human players, smaller than human players and human-scale players. You can even adjust this further if the creature happens to be smaller (2) or larger (4) than normal. While full scenes with different positions can be done, even this will show the players in different size brackets that things aren't always the same for them.
[if hp of player > 0]...[otherwise]...[end if] | When used during a player-loss scene, this allow for varying a portion of text based on whether the player submitted or outright lost the fight.
[if anallevel > 1]...[end if] | This can let you slip in a short extra bit for anal or added M/M fun into a scene unless they're explicitly set not to get those bits. Similarly, other variations can be made based on the examples above and in the original posting on More/Less Anal.
[if libido of player > 40]...[otherwise]...[end if] | This lets you put in a different chunk if the player is sufficiently aroused to make things play out a little differently.
[one of]...[or]...[or]...[at random] | This lets you insert a bit of random variation into a scene so some detail or event plays out differently. You may set as many [or] elements as you like within a set. You can also find other rules on how the text varies in the built-in documentation on using Inform (Chapter 5.7).
[one of]...[or]...[or][if cocks of player > 0]...[otherwise]...[end if][or]...[at random] | This is much the same as the last example, but one of the possible outcomes varies depending on whether the player has a cock or not. It is possible to nest a [one of][at random] phrase within an [if][end if] clause, or vise-verse, but not an [if] or [one of] within another of the same kind. There are ways these effects can be done if need be though.
[if a random chance of 1 in 3 succeeds]...[otherwise]...[end if] | A random variation that will occur one third of the time in the scene, letting you add a little variety without having to fully duplicate a scene when the bulk of it is still the same during these random variations.
[if player is submissive]...[otherwise]...[end if] | While often if you're making a variation based on whether the player has the "Submissive" feat, it'll be a more significant variation, at times, you may want to simply have the player react slightly differently to their situation based on it or need to alter a small portion of one paragraph before or after the full Submissive-variant appears in its own sub-section.
Last edited by TigerStripes on Wed Dec 11, 2013 2:56 pm, edited 1 time in total.
User avatar
TigerStripes
 
Posts: 592
Joined: Mon Dec 09, 2013 4:39 pm

Pregnancy Checks and Cum Load Size of Player

Postby TigerStripes » Tue Dec 10, 2013 7:45 pm

ORIGINALLY POSTED: Feb 04/2013
As there's been a few minor additions to the mechanics available to devs lately, I thought I'd list them. They've been added to the previous post, but I wanted to highlight them for those who are already familiar with most of that material and may have missed them.

Pregnancy Check Definitions:
There's now an assortment of definitions usable to check on the pregnancy and breedability of a player for potential use in scenes. This has been updated to take Velos's temporary effects on MPreg into account. I'll also suggest some potential uses for these. Hopefully these will make it a little easier for you to deal with pregnancy-related scenes.
A) if player is impreg_ok | can the player become pregnant in general? (not sterile, has cunt/MPreg)
B) if player is mpreg_ok | can the player become male-pregnant in general? (not sterile, has MPreg)
Both of these deal with whether the player is able to be pregnant in general, with the A being both normal and mpreg combined and B dealing with MPreg only. To check for the potential of female impregnation only, add a check to see if the player has a cunt to A. These do not discriminate with whether the player is currently pregnant or not or if they have a batch of fertilized parasite eggs on the go or not.

C) if player is impreg_now or if gestation of child > 0 | is the player is currently pregnant?
D) if player is mpreg_now | is the player is currently male-pregnant?
Both of these deal with checking whether the player is currently pregnant. C checks for either a normal or MPreg pregnancy (again, check for a cunt as well if you want to be female-specific) while D deals with MPreg pregnancy only.

E) if player is impreg_able | can the player currently become pregnant? (impregnable and not currently pregnant/parasite)
F) if player is mpreg_able | can the player currently become male-pregnant? (male-impregnable and not currently pregnant/parasite/Velos-blocked)
This pair deals with whether, at this moment, the player can be impregnated. As before, E is both and F is MPreg-only. If the player is pregnant, sterile, has active parasite eggs or is otherwise prevented from becoming pregnant at this time, this will return as false.

These can be used in scenes where a creature or NPC might respond differently to a player based on their pregnancy status. As well, A and B can be used as another means to do this sort of check as part of player endings. Some NPCs or monsters may not be interested in fucking a pregnant player (impreg_now), or will be all over them if they are ready to be knocked up (impreg_able). Others may make comments about wanting the player to come back so they can knock them up properly next time (C or D) or are looking forward too seeing them fat and heavy with their offspring (E or F). You can even combine this with the gestation of child variable to check what state the player's current pregnancy is in to denote how much the player is showing (if at all).

Cum Load Size of Player:
A new descriptive variable has been created (between Blue Bishop and myself) to allow you to quickly insert a descriptive adjective for the size of the player's load. These are a mix of volumes, size adjectives and output rates to provide a lot of variety. The typical usage is something along the lines of "...your [cum load size of player] load/output..." This will make a nice shorthand for displaying how much a player is cumming, though if you want to make the scene vary as well (e.g. bloating the recipient), then go right ahead. Like all such descriptive variables, you may used them if you like, though having at least a couple do help match the scene a little better to the player's current sexual characteristics.

cock width of player < 3: piddling / tiny / miniscule / feeble / small / meager
cock width of player < 6: average / normal-sized / fair-sized / moderate / adequate / regular-sized
cock width of player < 12: triple-dose / half-cup / cupload / ample / above-average / generous / sizable
cock width of player < 16: half-litre / considerable / impressive / pint-full / copious / substantial / large / abundant / plentiful
cock width of player < 20: one-litre / flowing / heavy / quart-sized / drenching / jumbo / whopping
cock width of player < 25: two-litre / half-gallon / giant / huge / blasting / enormous / immense
cock width of player < 32: overflowing / bucket-filling / excessive / gushing / massive
cock width of player >= 32: torrential / monumental / colossal / gigantic / immeasurable / devastating / near-unending

Among my favourites are 'impressive', 'drenching', 'bucket-filling' and 'devastating'. :)
User avatar
TigerStripes
 
Posts: 592
Joined: Mon Dec 09, 2013 4:39 pm

Debugging and Data Collection Commands

Postby TigerStripes » Tue Dec 10, 2013 7:50 pm

Debugging and Data Collection Commands
ORIGINALLY POSTED: Feb 14/2013

There exist several debugging commands in the game added by devs over time to help ensure that content is working as expected or verify data. These are only usable in an unreleased version of the game - this means a test-compile in Inform run using the 'Go!' option. I'm going to list them here so you know what tools are available to see what's in the game and to help you when testing new content.

Note: The in-game infection terminal (in Dr. Matt's lab) also exists as a tool you can use to check on data, as it allows you to see the full list of active critters in the game as well as their level and current location. I believe banned critters are not displayed at all as they've been removed from the table of random critters.

The BFandI commands (Brute-Force-and-Ignorance):
These are a set of commands I've made which display listed data from the game you normally don't get to see all together. This can let you check for omissions, count the total number of something or otherwise assess an overall state of the material they look at. There's currently 5 of these:
bfandi1 <creature> (also bfandi): This will show, in turn, each creature whose name matches with the text provided and displays there new data for the new critter table entries along with a description or example of it. Please note, for the body descriptor and body type variables, it can only display one of those values at a time. If you want to check on all possible outcomes of those variables for a given creature, it's best to just go to the file. This command was mainly useful when ensuring all infections had been given the new data, but you might have a use for it on rare occasion.
Of note, the BFandI file also contains details and instructions on how to use these table entries.
bfandi2: Runs through the entire list of infections in the table of critters and displays whether they've got an altcombat value and, if so, what that value is. This can help you quickly assess how frequent altcombat values are. Unfortunately, the data is not sorted in any way. Makes a good check to see if all critters in the wiki with altcombat are properly listed as such.
bfandi3: Displays a list of all events in your current area, displaying whether they're resolved or unresolved and their level. To do this, you must be next to a 'dangerous' door (a hunting area). Scavevents will also be specifically pointed out as such. A total is provided at the end. This is very useful in assessing the event congestion and breakdown in a given area. It will also help you find how many unlockable events there are or any quest events which are open but aren't yet needed or assessing if events have closed or not closed properly as a quest is progressing or after a Trixie-code is applied. The results of this scan is affected by banning flagged content, so you can also note if some things are remaining open when they should be closed by flags. The events are unsorted, allowing you to see which ones would be found first while hunting for text matching several of them.
bfandi4: This command is much like bfandi3, but it does its work across the entire set of events. This list can be sorted in one of several manners: by Hunting Area, Level or Unsorted. As before, unsorted gives the list as it is normally held by the game allowing you to assess which would be found first in the case of matching text while hunting.
bfandi5: This command lists each of the existing flags and markers in turn, counting and displaying their individual contents. This can be useful for assessing what the total group is like and what it holds, checking for missing or misplaced members or seeing if a group has some lack or surplus. Also, checking the Tailweapon marker will allow the Wiki data for the same to be kept up to date.

spawn <creature>: Starts a fight with the selected creature (as if challenge "<creature>" were to occur in the code). Allows easy testing of a critter.

levelcheat: Gain xp and go up one level.

Table Listing by crazypsychopath (I think):
tlist <list>: This lists data from the various tables in the game. The possible lists for this command are: object (list of game objects), creature (critters by level), critcombat (critter combat entries w/no data), room (list of rooms), npc (the names of all people in the game, including all pets, and 'the child' and 'yourself'), grab (all grab objects, which should be identical to 'object'), weapon (all weapon objects), equipment (clothing and armour), heat (heat cycles w/basic data), zephyr (entries in the zephyr list), biker (current entries in the hyena biker destination list), loot (creatures with their drop item and drop chance), situation (listing all situations w/o data).

Butterfly Debugging
These commands made by mirumu to help him debug his Butterfly creation. She's crazy complex, so I'd strongly recommend avoiding fiddling around with her, but if something goes terribly wrong, these tools may help.
bdebug: Command to list the various status levels of the Butterfly.
bpill: Gain a testosterone pill.
bproc: Spontaneously make the Butterfly have a child.
bspawn: Summon a Butterfly to fight.
bimpreg: Spontaneously make the Butterfly pregnant. Also gives you both negligees to test those.
bstore: Take the player to the lingerie store.
breset: Reset the Butterfly to starting values.
bsave: Used w/Trixie's saveword. Displays the 'butterflymagic' portion which encodes the Butterfly data.
brestore <butterflymagic>: Used w/Trixie's saveword. Restores the Butterfly using the 'butterflymagic' save data.

I believe there are a couple of others, but I'm not sure where they are right now.
User avatar
TigerStripes
 
Posts: 592
Joined: Mon Dec 09, 2013 4:39 pm

Compact Code for Singular/Plural

Postby TigerStripes » Tue Dec 10, 2013 7:57 pm

ORIGINALLY POSTED: Feb 20/2013
I have added a set of short say statements that will add the plural form to nouns or verbs based on whether the player has (depending on the set used), multiple cocks or multiple cunts. There is a set for nouns and a reversed set for verbs, allowing you a simpler means to build in distinctions when the player has more than one of a given sexual characteristic. This doesn't include stuff like it/they, that/those, etc... If you're going to make more involved scenes or add substantial differences when the player has multiple equipment, you'll still need to resort to making both variations in full, but short snippets can easily be set to show both variations. This is especially handy if you're building them within another if clause.

EXPANDED: Feb 3/2015
A set for pronouns (such as it/they) has been added. It follows the other material.

For nouns: (singular/plural)
[smn]: adds an s based on whether the player is multiple male - for use on most nouns.
[sfn]: adds an s based on whether the player is multiple female - for use on most nouns.
[esmn]: adds an es based on whether the player is multiple male - for use on nouns which add 'es' when plural.
[esfn]: adds an es based on whether the player is multiple female - for use on nouns which add 'es' when plural.
[ymn]: adds a y or ies based on whether the player is multiple male - for use on nouns ending in y.
[yfn]: adds a y or ies on whether the player is multiple female - for use on nouns ending in y.

For verbs: (3rd person singular/plural)
[smv]: adds an s based on whether the player is singular male - for use on most verbs.
[sfv]: adds an s based on whether the player is singular female - for use on most verbs.
[esmv]: adds an es based on whether the player is singular male - for use on verbs which take the 'es' form for the 3rd person singular.
[esfv]: adds an es based on whether the player is singular female - for use on verbs which take the 'es' form for the 3rd person singular.
[ymv]: adds an ies or y based on whether the player is singular male - for use on verbs ending in y.
[yfv]: adds an ies or y based on whether the player is singular female - for use on verbs ending in y.

For pronouns: (3rd person singular/plural)

[ittheym]: picks either it or they based on whether the player is singular male - personal pronoun as subject.
[ittheyf]: picks either it or they based on whether the player is singular female - personal pronoun as subject.
[itthemm]: picks either it or them based on whether the player is singular male - personal pronoun as object.
[itthemf]: picks either it or them based on whether the player is singular female - personal pronoun as object.
[itstheirm]: picks either its or their based on whether the player is singular male - possessive adjective.
[itstheirf]: picks either its or their based on whether the player is singular female - possessive adjective.
[itstheirsm]: picks either its or theirs based on whether the player is singular male - possessive pronoun.
[itstheirsf]: picks either its or theirs based on whether the player is singular female - possessive pronoun.

Examples:
#1 - After having determined the player to be a herm:

Code: Select all
    say "Your cock[smn] smash[esmv] into the goblin's face.  Your juicy puss[yfn] then grind[sfv] against his pointy nose.";

1 cock: Your cock smashes into the goblin's face...
2+ cocks: Your cocks smash into the goblin's face...
1 cunt: ...Your juicy pussy then grinds against his pointy nose.
2+ cunts: ...Your juicy pussies then grind against his pointy nose.
This adjusts the nouns and verbs easily based on whether the player has extra cocks or cunts without having to write a separate if clause for each of the two parts.

#2 - After having determined the player to be a herm:

Code: Select all
    say "[if player is submissive or hp of player > 0]Unwilling to keep fighting, you roll over onto your back and put yourself on display, showing off your hard cock[smn] and juicy cunt[sfn][otherwise]Defeated by your foe, you are knocked over and land on your back.  This puts you on display, showing off your stiffening phallus[esmn] and increasingly wet cunt[sfn][end if].  Your opponents leers down at you...";

This will yield cock/cocks and pussy/pussies as appropriate to both versions of the text within the if clause, thereby sparing you from the need to break that out into its own set of say statements.

I used herm scenes for the above examples because it allowed me to show more usage, but clearly it's also just as useful for males and females.

#3 - Content focusing on male only w/another variation

Code: Select all
    say "With your opponent down, you press your [cock of player] shaft[smn] against her ass and start rocking your hips.  You grind your pulsing cock[smn] between those shapely cheeks, letting your precum get dribble onto her lower back[if cock length of player < 20].  Good and hard now, your [cock size desc of player] prick[smn] pulse[smv] and throb[smv], ready for the main course.  And she's gotten quite excited as well, raising her tail willingly and spreading her pussy lips for you with her paws.  Getting yourself lined up, you thrust into her offered pussy, enjoying her needy moan[otherwise].  Good and hard now, your [cock size desc of player] prick[smn] seem[smv] too large for the small female.  But she's gotten quite excited by this point and seems quite willing to try, raising her ass and reaching between her legs.  Her paws spread her latex pussy lips wide, opening her up much further than you'd initially expect.  With such a tantalizing offer, you throw your earlier caution to the wind and get yourself lined up before thrusting into her offered pussy, enjoying her needy moan[end if].  Stuffed inside her juicy hole, you...";


This will yield an appropriate version for either a single cock or multiple cocks and still allows for the setup for the variation based on the player's cock length. This spares you from having to either make four variations of the scene ( size x # of cocks) within the same master clause or to break it down into two say statements, each with two forms.

#3 - Examples of pronoun usage. Player determined to be male beforehand.

Code: Select all
You are pushed to the ground by the horny female.  She yanks off your pants and bares your cock[smn] to her lustful gaze.  After licking her muzzle, she leans in and runs her wet tongue along your shaft[smn] with a needy whine.  She laps across [itthemm], causing your [cock of player] penis[esmn] to rise to full hardness on [itstheirm] own.  Soon she's bobbing her muzzle over [itthemm], lapping up the precum that drools out down [itstheir] warm flesh.


This will yield two versions, one with the singular pronouns/adjectives while the other the plural ones, depending on whether the player has one or more cocks. While this example's fairly basic, it becomes more useful when you've got multiple if clauses based on other characteristics or factors.
User avatar
TigerStripes
 
Posts: 592
Joined: Mon Dec 09, 2013 4:39 pm

No/Full WS

Postby TigerStripes » Tue Dec 10, 2013 8:04 pm

ORIGINALLY POSTED: July 13/2013
Similar to the toggle for More/Less Anal, a toggle's being added for WS content to allow players to adjust the amount of watersports content they encounter to their tastes.

First off, are you required to use it?
As with More/Less Anal, you are not required to use it and should not feel obligated to put WS stuff in anything you make because of this. But if you want to, this will allow you to gate it so players who have little or no interest in it don't see those scenes. If you're not into it, don't feel you need to toss it in - WS content should be fairly uncommon in the game, even for those wanting Full WS.

Why 'No WS' and 'Full WS' this time?
Because piss play is a less common occurrence in the game and (in most cases) separate from the act of sex going on, it is much easier to provide no or full access to it. Similarly, since simpler to imagine no one taking an interest in WS than no one wanting/forcing anal sex, it doesn't seem illogical to remove it.

What this means for you?
Because the player can now give an indication of whether they'd like those rare WS scenes or not, you are left free to include or expand upon WS scenes in ways you might not have felt comfortable doing before out of desire to not alienate uninterested players. If you have a scene in mind were a defeated player is subjected to piss play, but are worried about displeasing players who don't enjoy such content, you can either block it to those set for No WS (WSlevel = 1) or a requirement for 'Full WS' (WSlevel = 3), depending on whether you want the mid-road, average player to get that scene as well. As with More/Less Anal, you may have the frequency with which this scene can occur be influenced by whether the player has a WSlevel of 2 or 3. Similarly, you can choose to go into additional detail for WS scenes if a player's WSlevel is 3. That way, the players who are eager for WS stuff can see an in-depth, detailed scene, while those who aren't as keen on it can get a basic scene or a quick mention that it happens without further detail. As with More/Less Anal, use your own discretion... with the following restriction:

In all cases of WS content, a WSlevel of 1 should prevent it from occurring.

What's different this time with implementation?
For simpler and speedier usage, No/Full WS will only use a variable (WSlevel), eliminating the feat element from the system. The reason for this is that text comparisons are actually much slower than number comparisons, so it causes a delay to scan through a player's feats trying to find a match. This becomes increasingly an issue as a player gains more feats. This delay compounds into the other elements which require checking if a player has a particular feat, as there's an additional feat to compare each time. The breakdown this time goes as such:
No WS - WSlevel = 1
Standard (Low WS) - WSlevel = 2
Full WS - WSlevel = 3

Can I get some implementation examples?
To check if the player is set as 'No WS':
Code: Select all
    if WSlevel is 1:

To check if the player is set as 'Full WS':

Code: Select all
    if WSlevel is 3:

Something those with No WS shouldn't see:

Code: Select all
    if WSlevel is not 1:

Something those with Full WS may randomly get:

Code: Select all
    if WSlevel is 3 and a random chance of 1 in 3 succeeds:

Something that will occur more frequently for Full WS:

Code: Select all
    let WSchance be 2;
    if WSlevel is 3, increase WSchance by 2;
    if WSlevel is 1, now WSchance is 0;
    if a random chance of WSchance in 10 succeeds:

or

Code: Select all
    let WSchance be 2;
    if WSlevel is 3, increase WSchance by 2;
    if a random chance of WSchance in 10 succeeds and WSlevel is not 1:

Another way to make it more frequent:

Code: Select all
    if WSlevel is not 1 and ( a random chance of 1 in 5 succeeds or ( WSlevel is 3 and a random chance of 1 in 3 succeeds ) ):

Something those with Full WS get always, Standard gets sometimes and No WS never gets:

Code: Select all
    if (WSlevel is 3 or a random chance of 1 in 3 succeeds ) and WSlevel is not 1:

Slipping additional WS play into a scene for those with Full WS:

Code: Select all
    say "This is some sexy stuff going on.  Oh my god, it is so hot.  And then they go and [if WSlevel is 3]start pissing on you on top of it.  They do that for a while before switching[otherwise]switch[end if] to do some other kinky stuff.  Blam!  Sticky mess!";

Skipping an additional WS bit in a scene for those with No WS:

Code: Select all
    say "We have some oral sex action going on here that just finished up.  The creature's pulls its cock out of your mouth and [if WSlevel is not 1]pisses across your face before wiping[otherwise]wipes[end if] its sticky member across your cheeks.";

You can take the above, mix and match them or include them as part of other checks to create even more variety.

As with More/Less Anal, these and many other creative possibilities abound with stuff like special 'Easter Egg' scenes, opportunities to let more players enjoy your creations, vehicles for special customizations to scenes, opportunities for new characterization from NPCs or creatures and many others. You can see more examples of how More/Less Anal has been used in the past to see other ways this feature can be similarly implemented. As with all things, this is another optional tool in your creative kit to let you expand the range of content you can provide.
User avatar
TigerStripes
 
Posts: 592
Joined: Mon Dec 09, 2013 4:39 pm

Next

Return to Dev Chat

Who is online

Users browsing this forum: No registered users and 11 guests