Namespace: Grammar

Grammar

The Grammar module allows one piece of text to be written so that it can display the correct pronoun reference and verb tense regardless of the current viewpoint character or gender of the subject or direct object.

Eg: "He has blond hair."/"She has blonde hair."/"They have blond hair."/"It has blond hair."/"You have blond hair.".

A bit complicated, but massively useful for status displays and and other such revisited passages in stories with multiple viewpoint characters and/or gender TF.

Note: As much as referring to a singular someone of indeterminate gender with a plural pronoun makes me cringe grammatically, it is still needed for the androgynous middle stage of a slow-TF, IMO, as referring to someone as "it" seems unintentionally dehumanizing, and the third-person plural seems to have come into common usage for this case, even if it is grammatically incorrect...


Macros

Each macro has both a lowercase and an uppercase version. The uppercase version produces the same output as the lowercase version, just with the first character capitalized.

The first argument to each macro is the persistence id of the PersistentObject to which the pronoun should refer. If you omit this argument (or pass a falsy value instead), the macro will instead use the value of the _pronounSubject SugarCube temporary variable as the persistence id to which the pronoun should refer.


Subjective Form

<<youHeSheIt [pronounSubject] [pluralVerb [singularVerb]]>>
<<YouHeSheIt [pronounSubject] [pluralVerb [singularVerb]]>>

Outputs a subjective pronoun based on the .gender field of the pronounSubject (or the contents of the _pronounSubject SugarCube variable, see above).

  • If the pronounSubject is the same as the persistence id stored in the $viewpointCharacter SugarCube variable, a singular second-person subjective pronoun will be output (you).
  • If the .gender field is "male" or "female", a male or female third-person singular subjective pronoun will be output (he/she).
  • If the .gender field is "andro", then a third-person plural subjective pronoun will be output (they).
  • Otherwise, if the .gender field is "neuter", undefined, or evaluates to a falsy value, then a neuter third-person singular subjective pronoun will be output (it).

Optionally, you may pass a plural verb form as the second argument, to be printed after the pronoun. If the pronoun is "he", "she", or "it", an "s" will be appended to the verb.

For verbs whose singular form is more complicated than just appending "s", you may pass the singular form as the third argument.

<<YouHeSheIt "Shay" "jump">> on the trampoline.  
// "You jump on the trampoline."  
// "He jumps on the trampoline."  
// "She jumps on the trampoline."  
// "They jump on the trampoline."  
// "It jumps on the trampoline."

<<set _pronounSubject = "Shay">>  
<<YouHeSheIt null "have" "has">> messy black hair that comes down to about <<yourHisHerIts>> chin.  
// "You have messy black hair that comes down to about your chin."  
// "He has messy black hair that comes down to about his chin."  
// "She has messy black hair that comes down to about her chin."  
// "They have messy black hair that comes down to about their chin."  
// "It has messy black hair that comes down to about its chin."

Objective Form

<<youHimHerIt [pronounSubject]>>
<<YouHimHerIt [pronounSubject]>>

Outputs an objective pronoun based on the .gender field of the pronounSubject (or the contents of the _pronounSubject SugarCube variable, see above).

  • If the pronounSubject is the same as the persistence id stored in the $viewpointCharacter SugarCube variable, a singular second-person objective pronoun will be output (you).
  • If the .gender field is "male" or "female", a male or female third-person singular objective pronoun will be output (him/her).
  • If the .gender field is "andro", then a third-person plural objective pronoun will be output (them).
  • Otherwise, if the .gender field is "neuter", undefined, or evaluates to a falsy value, then a neuter third-person singular objective pronoun will be output (it).
The tennis racket belongs to <<youHimHerIt "Shay">>.  
// The tennis racket belongs to you.  
// The tennis racket belongs to him.  
// The tennis racket belongs to her.  
// The tennis racket belongs to them.  
// The tennis racket belongs to it.  

Possessive Adjective Form

<<yourHisHerIts [pronounSubject]gt;>
<<YourHisHerIts [pronounSubject]>>

Outputs a possessive adjective pronoun based on the .gender field of the pronounSubject (or the contents of the _pronounSubject SugarCube variable, see above).

  • If the pronounSubject is the same as the persistence id stored in the $viewpointCharacter SugarCube variable, a singular second-person possessive adjective pronoun will be output (your).
  • If the .gender field is "male" or "female", a male or female third-person singular possessive adjective pronoun will be output (his/her).
  • If the .gender field is "andro", then a third-person plural possessive adjective pronoun will be output (their).
  • Otherwise, if the .gender field is "neuter", undefined, or evaluates to a falsy value, then a neuter third-person singular possessive adjective pronoun will be output (its).
<<set _pronounSubject = "Shay">>  
<<YourHisHerIts>> tennis racket is broken.  
// Your tennis racket is broken.  
// His tennis racket is broken.  
// Her tennis racket is broken.  
// Their tennis racket is broken.  
// Its tennis racket is broken.  

Absolute Possessive Form

<<yoursHisHersIts [pronounSubject]gt;>
<<YoursHisHersIts [pronounSubject]>>

Outputs an absolute possessive pronoun based on the .gender field of the pronounSubject (or the contents of the _pronounSubject SugarCube variable, see above).

  • If the pronounSubject is the same as the persistence id stored in the $viewpointCharacter SugarCube variable, a singular second-person absolute possessive pronoun will be output (yours).
  • If the .gender field is "male" or "female", a male or female third-person singular absolute possessive pronoun will be output (his/hers).
  • If the .gender field is "andro", then a third-person plural absolute possessive pronoun will be output (theirs).
  • Otherwise, if the .gender field is "neuter", undefined, or evaluates to a falsy value, then a neuter third-person singular absolute possessive pronoun will be output (its).
The tennis racket is <<yoursHisHersIts "Shay">>.  
// The tennis racket is yours.  
// The tennis racket is his.  
// The tennis racket is hers.  
// The tennis racket is theirs.  
// The tennis racket is its.  

Reflexive/Intensive Form

<<yourselfHimselfHerselfItself [pronounSubject]gt;>
<<YourselfHimselfHerselfItself [pronounSubject]>>

Outputs a reflexive/intensive pronoun based on the .gender field of the pronounSubject (or the contents of the _pronounSubject SugarCube variable, see above).

  • If the pronounSubject is the same as the persistence id stored in the $viewpointCharacter SugarCube variable, a singular second-person reflexive/intensive pronoun will be output (yourself).
  • If the .gender field is "male" or "female", a male or female third-person singular reflexive/intensive pronoun will be output (himself/herself).
  • If the .gender field is "andro", then a third-person plural reflexive/intensive pronoun will be output (themselves).
  • Otherwise, if the .gender field is "neuter", undefined, or evaluates to a falsy value, then a neuter third-person singular reflexive/intensive pronoun will be output (itself).
<<set _pronounSubject = "Shay">>  
<<YouHeSheIt>> broke the tennis racket <<yourselfHimselfHerselfItself>>.  
// You broke the tennis racket yourself.  
// He broke the tennis racket himself.  
// She broke the tennis racket herself.  
// They broke the tennis racket themselves.  
// It broke the tennis racket itself.  

Source:

Example

:: Character - Brandi
\
\<<set _pronounSubject = "Brandi">>\
\
<<if !$bodySwapped>>\
	<<if $viewpointCharacter == "Shay">>\
		Your (fraternal) twin sister.  She escaped the womb twenty-eight minutes ahead of you, and has been harassing you ever since.
	<</if>>\
	
	<<YouHeSheIt null are is>> 5'3", with straight black hair that comes down to the middle of <<yourHisHerIts>> back.  <<YourHisHerIts>> eyes are green, a striking contrast with <<yourHisHerIts>> dark hair.  <<YouHeSheIt "" have has>> pert B-cub breasts, gently curving hips, and a lithe well-toned body.  
			
	<<YouHeSheIt "" are is>> wearing <<print obj(_pronounSubject).apparel>>.
<<else>>\
	<<if $viewpointCharacter == "Shay">>\
		Your (fraternal) twin sister.  She escaped the womb twenty-eight minutes ahead of you, and has been harassing you ever since.  And now she's stolen your body!!!
	<</if>>\
	<<YouHeSheIt null are is>> 5'7", with messy black hair that comes down to about <<yourHisHerIts>> chin.  <<YourHisHerIts>> eyes are green, a striking contrast with <<yourHisHerIts>> dark hair.  <<YouHeSheIt "" have has>> a lithe, soft body, not very muscular.
		
	<<YouHeSheIt "" are is>> wearing <<print obj(_pronounSubject).apparel>>.
<</if>>\

Namespaces

Pronouns