Skip to content

Pronouns

Status: read + display only (MVP). There is currently no in-game control for a player (or your mod) to let someone change a pronoun through a Core-provided UI — only to read the current one and set it programmatically. If your mod wants to offer pronoun editing, you're building that UI yourself against setPronoun() below; Core doesn't provide one yet.

Reading the current pronoun in your own prose

Use the (bmft_pronoun:) macro from your own Twee content instead of hardcoding "she/he" — including the subject pronoun itself, not just object/possessive:

twee
($caps:(bmft_pronoun:"subject")) looks (bmft_pronoun:"possessive") way and grins.
-> renders: "She looks her way and grins." or "He looks his way and grins.",
   depending on the current pronoun.

(bmft_pronoun:) always returns lowercase ("she", "his", ...), same as the base game's own pronoun-adjacent text — wrap it in ($caps:...) (the base game's own capitalization macro, project/twee/10-systems/utility/create utility macros.twee:168) any time it starts a sentence, the same way you'd capitalize any other variable-driven sentence opener.

part is one of "subject" (he/she/they), "object" (him/her/them), or "possessive" (his/her/their).

This always works — it's always registered, and if pronoun tracking is turned off inside Core, it silently returns plain base-game-standard he/him/his or she/her/her (matching whatever the base game's own (is_fem:)/(is_male:) would already show) instead of whatever custom value might otherwise apply. You never get an "unknown macro" error and never need to check anything first.

Reading a pronoun from your own JS

js
const subject = window.BMFT.Identity.pronounText("subject");

Same macro, same fallback guarantee, callable directly from JS if you're not in a Twee passage.

Whose pronoun, exactly

The pronoun (bmft_pronoun:) returns is always the player character's currently active one — whichever pill is active (or the player's base gender, if none is) — not a specific NPC's. There is currently no per-NPC equivalent; this system only tracks the player character.

Setting a pronoun programmatically

js
window.BMFT.Identity.setPronoun("Base Gender", "they_them");
  • First argument is a dictionary key: BMFT.Identity.BASE_GENDER_KEY (the constant, equal to the string "Base Gender") for the player's real-gender pronoun, or a specific pill's id string to override that one pill's pronoun independently.
  • Second argument is one of "he_him", "she_her", "they_them" — throws if you pass anything else (a real caller mistake, not a state you should ever see in normal use).
  • Has no effect on what (bmft_pronoun:) displays if the pronoun feature is currently disabled inside Core — the write still happens (so it's there once re-enabled), but reads ignore it until then, per the fallback guarantee above.

What to check after using this

  • If you're calling this from Twee content, run validate_mod against your mod (the X-Lifestyle MCP validate_mod tool if you have it, or Core's own mcp/CLAUDE.md-documented process) to confirm (bmft_pronoun:) resolves as a real macro.
  • There's nothing else to verify on your end — you don't need to check whether the pronoun feature is enabled before calling any of the above; that's handled for you.

Zlib Licensed