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

hello, 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?


I 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,


I 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)
        }
      }
    }
  }
}

This topic is now closed. Topics are closed after 60 days of inactivity.

Support

Forums