Chastity devices
Module ID: CHASTITY
Description:
Lockable chastity cages, belts and plates, ported from Ratwood-2.0 (less their spiked ones) and rebuilt on Nova's
lewd slots, plus chrome and industrial station designs. A device goes into the penis or vagina slot through the
interaction menu like any toy, and needs the wearer's "Chastity devices" preference.
While worn, a device:
- closes genitals off: interactions that need them are refused and no other toy fits them, and a caged penis
can't make a bulge;
- draws in place of the genital it sits over, through
device_state on the genital's bodypart overlay, so it shows,
hides under clothes and underwear, and layers exactly as that genital would. Full belts and plates also cover the
testicles;
- sends the wearer internal-monologue flavour text now and then while they're aroused, and when a partner does
something lewd to them.
Each device comes with its key tucked inside (use the device in hand to slide it out); the key locks and unlocks it
on the wearer or in hand, like Nova's collar keys. A screwdriver on the wearer's groin can pick a locked device open,
breaking its lock, unless the wearer set "Chastity: key only". The cursed device has no keyhole: it clamps shut
when fitted and only a bible or null rod pressed to it lets it off.
Interactions can require self_caged/target_caged (penis closed off) or self_belted/target_belted (vagina
closed off), and use %USER_DEVICE%/%TARGET_DEVICE% for the device's name.
Flavour text is server-owned at config/nova/chastity.json (under the configured directory when
-config is used). It is ignored by Git and is not included in the repository. The JSON object maps
bank names to nonempty arrays of strings, using the same banks as the original text file. Without
this optional file, devices work normally and send no flavour messages. A supplied file must contain
the banks used by the devices; the normal string loader validates their presence and caches them for
the process, so text edits take effect on the next process start.
On TGS, install it in Configuration/GameStaticFiles/config/nova/chastity.json; the live game's
config directory links there, so the file persists across builds. When migrating an existing server,
copy and verify the text there before deploying the updated loader. Keep the old build's file available
until that build has stopped using strings/aphelion/chastity.json.
Credits:
Device sprites and flavour text: Ratwood-2.0 contributors (modular/icons/obj/lewd/chastity*.dmi,
modular/code/game/objects/items/lewd/chastity/strings/). Worn sprites refitted to our bodies. |