Conditions
How to have your character see the state of the game and opponents
Each case can have an arbitrary number of conditions. In the behaviour.xml file, these are combined in <condition>
elements, which are represented in the CE as colored boxes.
A condition element specifies how many among all players (including the character themselves, the subject), the opponents, the opponents except the target (the "Also Playing" players), etc. (called the role) must satisfy the combination of conditions. For example, you can specify that there have to be between 2 and 3 female opponents, each having between 1 and 2 layers of clothing left.
If the same type of condition needs to be applied more than once, for example the subject themselves having said two different markers, you have to use multiple condition elements.
Conditions will be grouped below according to which of the dropdown menus inside the condition boxes they appear in. There are also shortcuts for most common combinations of roles and conditions, as well as variable tests, in the menus at the top of the condition tabs.
In addition to conditions, there are variable tests, which do not get colored boxes in the CE, and which are mainly found in the main Game, Player, and Clothing menus. See the variables page for information on those.
Roles
Value | CE Name | CE Color | Meaning |
---|---|---|---|
(none) | Anyone | Purple | Counts all players at the table, including the subject character. |
target |
Target | Brown | Counts only the current target. Since there can at most be one target, the CE does not show any Count boxes in this case, but instead a Not checkbox, which generates a 0 count. |
opp |
Opponent | Blue | Counts all players except the subject character. |
other |
Also Playing | Blue | Counts all players except the target (if any) and the subject character. |
self |
Self | Green | Counts only the subject themselves. Like with Target, the CE only displays a Not checkbox. |
winner |
Winner | Grey | Counts the winner of the most recent hand. Note that unlike target , this is always valid after the first hand has been revealed (unless a tie). |
Non-player conditions
There is one special condition that is not associated with any player and is found in the Game menu despite not being a variable test.
XML Attribute | CE Name | Types Accepted | Description |
---|---|---|---|
totalRounds |
Game > Total Rounds | Interval | Checks the total number of game rounds completed so far. The value is incremented when the cards are dealt (including after a tie), just after the Dealing Cards situation, and is -1 before the first hand is dealt. |
Matching a specific character
The character
attribute of the <condition>
element specifies a particular character that has to be the target, or just present. The character ID is the same as the folder name. The human player also has an ID: human
.
It is possible for multiple clones of the same character to be present at the same time: Certain preset tables, e.g. the Full Moon table, feature
Dialogue Conditions
These conditions check markers, dialogue text, and poses. Usually, because markers and poses are character specific, they are combined with a character
, but this is not necessary.
XML Attribute | CE Name | Types Accepted | Description |
---|---|---|---|
saidMarker |
Said Marker | Marker[-operator-value] | Checks the value a given marker has previously been set to. It is possible to specify a comparison operator and a target value. Otherwise, the condition is fulfilled if the marker has been set to any non-zero value. |
notSaidMarker |
Not Said Marker | Marker | Checks that a given marker has not been set. |
sayingMarker |
Saying Marker | Marker[-operator-value] | Checks that a marker is being set by a character's current line of dialogue. |
saying |
Saying Text | String | Checks that a character's current line of dialogue contains specific text. The comparison is done before variable substitutions, is case insensitive and ignores formatting. |
said |
(TBD) | String[-operator-value] | Checks how many times a character's previously said dialogue contains specific text. The comparison is done before variable substitutions, is case insensitive and ignores formatting. |
pose |
Pose | Pose name | Checks that a character's current line of dialogue uses a pose with a specific name. The pose name excludes the stage prefix and filename extension. |
Volatile Conditions
The conditions above that check the current line are called volatile. They have the special property that although character dialogue is mainly updated from left to right, they allow reacting to dialoge from characters to the right. The way this works is that after the initial round of updates, there are additional rounds of updates that only considers cases with such volatile conditions. If, due to the markers, poses, and/or text of the characters to the right, a higher priority case is found, it replaces the original one, recording such markers, poses, and/or text, or lack thereof, as volatile dependencies. Up to three such rounds can happen, with the restriction that a line that another character depends on in this way cannot be replaced.
Saying and Said Markers
Generally, marker values set in a previous phase are "said" and can be tested with saidMarker
/notSaidMarker
, whereas markers being set/changed in the current phase are not yet "said", and can be tested only with sayingMarker
. The AI card swap phase is an exception, however, because it happens sequentially (even if you set the AI turn time to instant). There, each character's Swapping Cards and Hand (as well as Masturbating, for eliminated players) lines are committed in turn, but the Hand lines are still considered current until the end of the phase. This means that markers set by Swapping Cards and Hand lines of players to the left can be tested with both saidMarker
and sayingMarker
. Only after all characters have swapped cards does the above volatile update happen. If at that point a character to the left reacts to a character to the right, they will get an extra line of dialogue played. Keep in mind that this can yield too little time to read the first line of dialogue.
Game Conditions
These conditions check certain aspects of the state of the poker game.
XML Attribute | CE Name | Types Accepted | Description |
---|---|---|---|
consecutiveLosses |
Consecutive Losses | Interval | Checks the number of times a player has lost in a row, including the current round (updated in the Reveal Phase, so the current loser has one or more consecutive losses, the others zero. In other words, this is only meaningful with Target and Self. In case of a tie, consecutive losses are not reset. |
hand |
Has Hand | Name of type of hand | Checks the type of hand a player has, from High Card to Royal Flush. It is possible to check the hands of other players before the Reveal phase (but, without tricks with volatile conditions, only those to the left, there should be a good excuse for doing so, and it can't be used to change your character's intelligence for the current round). |
Metadata Conditions
XML Attribute | CE Name | Types Accepted | Description |
---|---|---|---|
gender |
Gender | "male" or "female" | Checks a player's gender. |
tag |
Tag | Tag name | Checks that a player has a given tag. |
startingLayers |
Starting Layers | Interval | Checks that a player started with a number of layers within a given range. |
Using tags to target the human player and/or their gender is deprecated.
Status Conditions
XML Attribute | CE Name | Types Accepted | Description |
---|---|---|---|
status |
Status | Status (see below) | Checks that a player's state of undress matches, or doesn't match, a predefined criterion. |
stage |
Stage | Interval | Checks a player's current stage. The stage number is incremented each time a player strips, when they start masturbating, and when they finish. |
layers |
Remaining Layers | Interval | Checks a player's remaining number of layers. Unlike the stage, this is not decremented when the player starts masturbating (it does not become negative). |
timeInStage |
Time in Stage | Interval | Checks the number of rounds a player has been in the same stage, i.e. not lost a hand. This value is incremented at the end of each round, after the loser of the round is done stripping or has started masturbating, at which point said loser's Time in Stage is 0. When the game is over, it's incremented after every four clicks of the button (after the dialogue update when it goes back from "Wait..." to "Wait"). To make it a bit more useful when a player finishes masturbating, it's not reset to 0 until just after the Finished cases have played. |
Definitions of Statuses
Value | CE Name | Meaning |
---|---|---|
lost_some |
Lost something | Has lost at least one layer, i.e. stage > 0. |
mostly_clothed |
Lost only accessories | Has only lost accessories, and is decent (see next item). |
decent |
Still covered by major articles | Started with major articles on both the upper and lower part of the body, and has not lost a major article. |
exposed |
Chest and/or crotch visible | Either chest_visible or crotch_visible , or both. |
chest_visible |
Chest visible | Has removed an important article from the upper part of the body, or, if none exists, has removed all major articles. |
crotch_visible |
Crotch visible | Has removed an important article from the lower part of the body, or, if none exists, has removed all major articles. |
topless |
Topless (not naked) | chest_visible but not crotch_visible . |
bottomless |
Bottomless (not naked) | crotch_visible but not chest_visible . |
naked |
Naked (fully exposed) | Both chest_visible and crotch_visible , but may still have layers left. |
lost_all |
Lost all layers | Has 0 layers left. |
alive |
Still in the game | Not out; has not started masturbating. The negation of this is the same as Masturbating or Finished Masturbating. |
masturbating |
Masturbating | Is about to start masturbating or is in the masturbating stage (number of layers + 1). |
finished |
Finished masturbating | Is in the finished stage (number of layers + 2). |
Obviously, statuses are not generally mutually exclusive. Note in particular that exposed
through lost_all
are all still true when a player is out.
Stage and Status transitions
When a player strips, the stage change and all the associated updates happen between the Stripping and After Stripping phases. As the default text for the After Stripping situation says, "this is the start of a new stage". Note that this means that you'll need to use different status conditions in "Will Be Visible" cases vs. "Is Visible" ones.
Time in Stage is actually set to -1 at this point, so that it becomes 0 after the end of the round.
When a player starts masturbating, things are not quite as consistent, but as with Must Strip, nothing has happened yet in the Must Masturbate situation. In particular, the number of players Still in the game is still the same.
The stage transition happens after Start Masturbating (which mostly corresponds to Stripping), but the player's out
flag is set before that. This means that status
does not match stage
in the Start Masturbating situation.
Variable Tests
Variable Test conditions check to see if a variable (such as ~clothing~
or ~name~
) has a certain value.
Variable tests can be added by selecting Game > Variable Test (+) in the conditions editor.
Many new variables have been added that are intended to be used with variable tests; in certain cases, they can act as more flexible substitutes for existing simple conditions (below).
A case can have any number of variable tests attached.
Tests with the following variables have special shortcuts within the CE (as of version 3.5):
Variable Tested | CE Name | Description |
---|---|---|
~background~ |
Game > Background | What background has been selected? |
~background.location~ |
Game > Inside/Outside | Does the current background depict an indoors or an outdoors setting? |
~clothing.position~ |
Clothing > Clothing Position | What type of clothing is currently being removed (e.g. upper , lower , both , etc.)? |