Participant numbers begin at 1. Participant 1 is always the JOI using the Item action or Boop. When a participant function receives no numbers, it checks every participant.
Gender
gender(gender, participant1, participant2...)
Returns true when every selected participant matches WOMAN, MAN, or NON_BINARY.
gender("WOMAN", 1, 2)
Gender shortcuts
woman(participant1, participant2...)
man(participant1, participant2...)
nonbinary(participant1, participant2...)
Each shortcut returns true when every selected participant matches that gender. With no indexes, it checks everyone.
Body
genitals(value, participant1, participant2...)
Supported values are PUSSY, COCK, BOTH, FLUID, and NONE.
When checking PUSSY, participants with PUSSY, BOTH, or FLUID match. When checking COCK, participants with COCK, BOTH, or FLUID match. Other values require an exact match.
Body shortcuts
pussy(participant1, participant2...)
cock(participant1, participant2...)
These use the inclusive matching behavior described above.
Sexuality
sexuality(value1, value2..., participant1, participant2...)
Returns true when every selected participant has all requested sexuality values.
sexuality("BI", "POLY", 1, 2)
anySexuality(value1, value2..., participant1, participant2...)
Returns true when every selected participant has at least one of the requested values.
Supported values:
STRAIGHT, GAY, LES, BI, BI_CURIOUS, POLY, ASEXUAL, DEMI, PAN, QUEER, ARO, ANDRO, SKO, QUEST
Participant indexes must come after the sexuality values.
Sexuality shortcuts
straight(participant1, participant2...)
gay(participant1, participant2...)
lesbian(participant1, participant2...)
bi(participant1, participant2...)
gay() matches GAY or LES. lesbian() matches LES. The other shortcuts match their same-named value.
Gender identity
genderIdentity(value1, value2..., participant1, participant2...)
Returns true when every selected participant has all requested identities.
anyGenderIdentity(value1, value2..., participant1, participant2...)
Returns true when every selected participant has at least one requested identity.
Supported values:
AGENDER, ANDROGYNE, ANDROGYNOUS, BIGENDER, FTM, GENDERQUEER, QUESTION, NONCON, VARIANT, MTF, NEUTROIS, TRANS, TRANSGENDER, TRANSSEXUAL, PAN
Identity shortcut
trans(participant1, participant2...)
Matches TRANS, TRANSGENDER, or TRANSSEXUAL.
Pronouns
Pronouns on Joi
Every Joi provides these lowercase string properties:
ACTOR.they
ACTOR.them
ACTOR.their
ACTOR.theirs
ACTOR.themselves
ACTOR.is
ACTOR.was
ACTOR.has
ACTOR.does
They are available on all Joi values, including selected JOIs and Seat.joi.
Pronoun values
Pronoun::fromGender(gender)
Pronoun::of(participantOrJoiOrSeat)
Pronoun::fromGender() accepts "WOMAN", "MAN", or "NON_BINARY". Pronoun::of() accepts one participant number, Joi, or Seat; an explicit participant number must exist.
Both functions return a Pronoun with the same pronoun and agreement properties exposed by Joi:
| Property | Woman | Man | Non-binary |
|---|---|---|---|
they | she | he | they |
them | her | him | them |
their | her | his | their |
theirs | hers | his | theirs |
themselves | herself | himself | themselves |
is | is | is | are |
was | was | was | were |
has | has | has | have |
does | does | does | do |
Use agree(singular, plural) for other verbs:
let p = Pronoun::of(2);
let attempt = p.agree("tries", "try");
text "{p.they} {attempt} again.";
Standalone helpers
they(participant)
them(participant)
their(participant)
theirs(participant)
themselves(participant)
Each helper defaults to participant 1.
| Helper | Woman | Man | Non-binary or unknown |
|---|---|---|---|
they() | she | he | they |
them() | her | him | them |
their() | her | his | their |
theirs() | hers | his | theirs |
themselves() | herself | himself | themselves |
count()
count()
count(match, participant1, participant2...)
With no arguments, returns the total participant count. With a match string, returns how many selected participants match.
Simple matches:
woman, man, nonbinary, pussy, cock, straight, gay, lesbian, bi, trans
Structured matches:
count("genitals:BOTH")
count("sexuality:BI,POLY")
count("genderIdentity:TRANS,FTM")
The optional participant indexes follow the match string.
any()
any(match, participant1, participant2...)
Returns true when at least one selected participant matches. It accepts the same match strings as count().
count() == 3 and count("man") == 2 and any("woman")
Missing participants
Configure the action’s minimum participant count for every number your code requires. Direct plural checks return false when a requested participant does not exist. Lore functions report an error for a missing participant number.