Gamebook - character pronouns. Male, Female and Non-Binary

Tsurara Isana
12 Feb 2021, 19:29hello, I'm creating a gamebook with custom player pronouns because i want it to feel a little bit more personal to the one reading the story.
how do i set more than two character pronouns and have them take effect in a gamebook?
like for males, throughout the story/game the player will be referenced with he/him/his.
for females the player will be referenced with she/ her/hers
and as for the third pronoun, for non-binary characters they would be referenced with they/them/their.
is there a way I could make that work?
mrangel
12 Feb 2021, 19:51I suspect the easiest way would be to have a separate attribute for each pronoun. For example, if you have a page where the player chooses, the male option would lead to a page with the script:
player.heshe = "he"
player.himher = "him"
player.hisher = "his"
player.hishers = "his"
and so on. Then you can just include {player.heshe}
in the text later in the game, and it will be replaced as appropriate.
I believe the text adventure mode does this with attributes named gender
, article
, and possessive
; but I think names like heshe make it easier to remember which one you want in a given situation.
An alternative would be setting one attribute for 'gender', but add a couple of functions to the text processor in the start script. The scriptdictionary game.textprocessorcommands
contains a bunch of different functions; you could add your own code there to generate different text based on the player's gender. But I suspect this would be overkill in a game where you're only using it for one character,
jmnevil54
12 Feb 2021, 23:28I created a function called gname.
It goes like this:
msg ("What's your name?")
get input {
is_command = false
foreach (cmd, ScopeCommands()) {
if (IsRegexMatch (cmd.pattern, result)) {
is_command = true
}
}
if (is_command) {
msg ("Is that so? Okay, then.")
player.alias = "Gold"
MoveObject (player, room)
}
else {
player.alias = result
msg ("What is your gender?")
get input {
is_command = false
foreach (cmd, ScopeCommands()) {
if (IsRegexMatch (cmd.pattern, result)) {
is_command = true
}
}
if (is_command) {
msg ("Is that so? Okay, then.")
MoveObject (player, room)
}
else {
player.gender1 = result
msg ("Just to be safe, what pronouns do you want?")
pronouns = Split("Boy;Girl;Neutral;Surprise Me", ";")
ShowMenu ("Pronouns", pronouns, true) {
switch (result) {
case ("Boy") {
player.gender = "he"
player.article = "him"
player.possesive = "his"
}
case ("Girl") {
player.gender = "she"
player.article = "her"
player.possesive = "her"
}
case ("Neutral") {
player.gender = "they"
player.article = "them"
player.possesive = "their"
}
case ("Surprise Me") {
roll = GetRandomInt(1,3)
if (roll = 1) {
player.gender = "he"
player.article = "him"
player.possesive = "his"
}
if (roll = 2) {
player.gender = "she"
player.article = "her"
player.possesive = "her"
}
if (roll = 3) {
player.gender = "they"
player.article = "them"
player.possesive = "their"
}
}
}
}
msg ("Press any key or type \"mobile user\" or \"phone user\" to continue.")
wait {
MoveObject (player, room)
}
}
}
}
}