sexuality
TESI for ARES: sexuality Daemon

NOTE: This help page describes a commercial add-on that must be purchased separately.

NOTE: TESI for ARES is still a work in progress. Not all of the features below function as described. In particular, observational and mental stimulation have yet to be implemented.

TESI is an arousal meter system based on a set of open protocols. It is designed primarily to simulate the behavior and hardware of sex robots with an open coolant loop, called cryolubricant. As of this writing, TESI is the only open sex system on the grid.

Sexuality is the advanced TESI implementation that has been made for ARES. It supports multiple arousal states and mechanisms, drawing distinctions between physical excitement, mental excitement, pain, voyeuristic thrill, and true arousal. This allows it to faithfully represent the physiology of a wide range of human sexualities, including pathologies like obligate sadism and complete anhedonia.

(input) @service sexuality <command>
lust <command>: The lust utility acts as a frontend to sexuality and will forward most commands.

Where <command> is one of:

restart: Restarts the sexuality daemon.
reconfigure: Reloads configuration information from LSD:sexuality.
shot <damage>: The unit has been shot. Adjust arousal and pain as appropriate.
color: Updates the colors used by sexuality. Pure cryolubricant is color C. See color for more information.
orgasm: Attempts to orgasm. Not functional if anorgasmia is enabled or arousal is insufficient.
plateau <level>: Prevents arousal from falling below <level>, which must be in the range 0.0 to 1.0.
cryolubricant: Reports the current volume and composition of the unit's coolant.


Main Behavioral Profiles

Using the command lust mode <mode> (see lust), the unit's sexual behavior can be switched between four primary formats:

- disabled: No arousal is possible.
- narrative: Orgasm must be triggered manually, provided the necessary criteria are met.
- interactive: Orgasm has a chance to occur spontaneously once arousal is sufficiently high. Friction (movement speed reduction) is applied as the unit grows more aroused.
- masochism: As interactive, but additionally, any time the unit is shot, it will behave as though pleasured rather than injured.

The masochism mode is not the only way to achieve arousal from pain; rather, it is a bypass that disables pain and converts it automatically into physical stimulation. These terms are defined in the next section, below.


Model

The Sexuality arousal model is a continuous-time dynamical system. Each time the main loop of Sexuality runs, it updates the levels of the core variables (physical stimulation, mental excitement, observational excitement, pain, observed pain, and surprise) through matrix multiplication.

The core variables are as follows:

- physical arousal (phi): Generated by physical stimulation such as genital rubbing.
- mental excitement (mu): Generated by direct mental stimulation such as hearing sexual language.
- observed excitement (omega): Generated by nearby arousal of other TESI-equipped avatars.
- pain (pi): Generated by taking damage or being smacked.
- observed pain (pi-omega): Generated by witnessing pain in nearby TESI-equipped avatars.
- surprise (sigma): Generated when a smack or rub occurs after a long period of inactivity on a particular sensor attachment.

All of these stimuli are integrated into a final value, called arousal. This determines when the unit is able to orgasm, and (in narrative and masochism modes) how much friction to apply.

Each variable can influence every other variable, as well as contribute to arousal.

In total, the model has dozens of numeric settings, called parameters, which define how much the variables affect each other.

There are also multiple ways in which variables can affect themselves, allowing them to decay over time or to have an inverse effect on the unit's arousal if they surpass a certain threshold.

The parameters of the model are defined in the sexuality section of the database, as described in the next section.


Settings

In addition to the commands documented in this page and lust, sexuality has numerous options that are set via the database. Default values are defined in the file sexuality.db. See db for more information on adjusting these settings.

vocalization.displeasure (default ["d7cb07d1-4203-e65c-1fcf-2de112f27844"]): JSON list of displeasure sounds, played when the unit loses arousal due to overstimulation.
vocalization.orgasm (default ["09fffd1b-c69e-f2bc-d324-76948d6607d0"]): JSON list of orgasm sounds, played when the unit achieves climax.
vocalization.pain (default ["3a76cadd-2696-20ce-7747-2a30824bfc4d"]): JSON list of pain sounds, played when the unit is actively harmed.
vocalization.pant (default ["aa126b7d-76d2-1dcb-5045-4b915addee9a"]): JSON list of panting sounds, played when the unit is losing arousal.
vocalization.pleasure (default ["475539ac-3756-34c9-c036-c6ce7db0f392"]): JSON list of pleasure sounds, played when the unit is gaining arousal.
vocalization.surprise (default ["c0cec66d-f24a-03c3-e9d0-9604616c5df9"]): JSON list of surprise sounds, played when the unit experiences sudden stimulation after a period of inactivity.

sexuality.arousal (0.0-1.0): Current arousal level.
sexuality.plateau (0.0-1.0): Current plateau level. The unit's arousal may not fall below this level.
sexuality.state (default 0 0 0 0 0 0): Current levels for the core variables. Read-only.
sexuality.state_s (default 0 0 0 0 0 0): Previous levels for the core variables. Read-only.

The core variables are described in the 'Models' section, above. Their parameters are set by the settings sexuality.physical, sexuality.mental, sexuality.observational, sexuality.pain, sexuality.pain-observe, and sexuality.surprise.

Each of these entries contains eleven numbers, separated by spaces, which are defined as follows:

- sens: Current dynamic sensitivity value. Raising this increases the amount that the variable contributes to arousal. sens and cons are multiplied together, and must both be above zero to work.
- cons: Constant sensitivity value. Raising this increases the amount that the variable contributes to arousal. sens and cons are multiplied together, and must both be above zero to work.
- over: If the variable exceeds this value, its contribution to arousal is inverted and the unit emits displeasure sounds.
- Phys: Contribution from the physical stimulation variable to this variable. A phys to phys coefficient of 1.0 means that physical excitement never decays.
- Ment: Contribution from the mental excitement variable. As phys.
- Obs: Contribution from the observed excitement variable. As phys.
- Pain: Contribution from the pain variable. As phys.
- PaiO: Contribution from the observed pain variable. As phys.
- Surp: Contribution from the surprise variable. As phys.
- plat: Internal plateau. The variable cannot fall below this value.
- gain: Modulates how strongly stimuli affect the variable. The stimuli for each variable are described in the previous section.

Each parameter is a free floating point value, but core variables are clamped in the range 0.0 to 1.0, so values outside the range -1.0 to +1.0 are unlikely to be useful.

It is recommended to use a fixed-width font in the notecard editor (e.g. Consolas or Monaco) when adjusting these values.

sexuality.mode: one of disabled, narrative, interactive, masochism. See Main Behavioral Profiles, above.

sexuality.volume (default 5.0): Current cryolubricant level.
sexuality.volume-normal (default 5.0): Normal cryolubricant level. Values for sexuality.volume below this will impact the unit's cooling efficiency.
sexuality.contaminant (default: {}): List of contaminants in the cryolubricant, listed in <substance>:<volume> pairs. The purity ratio is determined by dividing the sum of these volumes by sexuality.volume.
sexuality.color (default: 1 1 1): The total color of the cryolubricant after contaminants are applied.
sexuality.sensitivity: List of surfaces and how much physical stimulation each generates per second of rubbing. The standard list of sensitivities is:

- sexuality.sensitivity.base: 0.2 (used for contact on an unknown surface)
- sexuality.sensitivity.nipple: 1.0
- sexuality.sensitivity.anus: 1.0
- sexuality.sensitivity.vagina: 1.0
- sexuality.sensitivity.corpus: 1.0
- sexuality.sensitivity.glans: 1.0
- sexuality.sensitivity.scrotum: 1.0
- sexuality.sensitivity.breast: 0.5
- sexuality.sensitivity.buttock: 0.25
- sexuality.sensitivity.mouth: 0.1
- sexuality.sensitivity.cheek: 0.1

sexuality.nozzle: List of nozzles and how the maximum number of drip particles they can leak per second when stimulated. The standard list of nozzles is:

- sexuality.nozzle.nippleL: 10
- sexuality.nozzle.nippleR: 10
- sexuality.nozzle.vagina: 20
- sexuality.nozzle.anus: 10
- sexuality.nozzle.glans: 0
- sexuality.nozzle.mouth: 0
- sexuality.nozzle.nose: 0
- sexuality.nozzle.earL: 0
- sexuality.nozzle.earR: 0

sexuality.pressure-climax: List of nozzles and how many drip particles are queued to leak through them during orgasm. The standard list of climax nozzles is:

- sexuality.pressure-climax.vagina: 2000
- sexuality.pressure-climax.glans: 2000

Missing values are assumed to be zero.

sexuality.friction (default 1.0): how much to impede movement at maximum arousal in interactive mode or masochism mode. (1.0 = rooted, 0.0 = no impedance):

sexuality.model.decay (default 0.01): amount of arousal lost per second when no arousal increases have occurred in the last sexuality.model.hesitation seconds.
sexuality.model.hesitation (default 10): seconds to wait after excitation stops before arousal begins declining. Note that hesitation only kicks in once all core variables are no longer contributing to arousal.
sexuality.model.threshold (default 0.65): minimum arousal level required for orgasm.
sexuality.model.mean (default 0.2): average orgasm magnitude (amount of arousal depleted during orgasm).
sexuality.model.variance (default 0.1): random component added to the orgasm magnitude.

The exact value of the orgasm magnitude varies from sexuality.model.mean - sexuality.model.variance to sexuality.model.mean + sexuality.model.variance and is uniformly distributed. Thus with the default parameters, real magnitude will be anywhere from 0.1 to 0.3. sexuality.model.mean - sexuality.model.variance must not be smaller than sexuality.model.threshold.

Orgasm magnitude not only affects how much arousal is removed, but also how long it takes to recover from orgasm (the refractory period) and how much fluid is expended.

sexuality.model.sensitization (default -0.01): Sensitivity (sens parameter) to physical stimulation and pain increase by this amount after every orgasm, recovering back to the original value defined in sexuality.db over the course of 880.791 seconds, or a little over 14 and a half minutes. (The recovery rate is not configurable.)
sexuality.model.refractory (default 10): Another orgasm cannot occur for this many seconds after each orgasm. Multiplied by orgasm magnitude.
sexuality.anorgasmia (default 0): override control to prevent orgasm (0 = normal, 1 = forbidden).

interface.sexuality.offset (default <0, 0, -364>): The position on the screen where the sexuality UI is displayed. See interface for more details.
interface.sexuality.texture (default 430e84ef-4467-35b8-80b8-2a7159f85239): The texture UUID to use for the sexuality UI.

Note: Most values from the settings database are not automatically applied after modification. Affected programs must be restarted (e.g. with @reset) to update values and apply changes.