• Do not use Discord to host any images you post, these links expire quickly! You can learn how to add images to your posts here.
  • Eevee Expo's webhost has been having technical issues since Nov. 20th and you might be unable to connect to our site. Staff are also facing issues connecting, so please send a DM to Cat on-site or through Discord directly for faster service!
Player Pronouns (alt)

v20.1 Player Pronouns (alt) N/A

This resource pertains to version 20.1 of Pokémon Essentials.
Pokémon Essentials Version
v20.1 ➖
Pronouns PC.gif
Custom.gif
Okay, so, first and foremost, the differences between this resource and Fiona's! You should know that, even though Fiona's was developed in 17.2, it's still perfectly compatible with 18.1, so you do have options!
  • Fiona's resource doesn't have an option for custom pronouns, this one does
  • Fiona's resource also doesn't account for the verb difference of "he is" vs "they are", this one does
  • Fiona's resource has eleven pre-set pronouns, I condensed this one to He/Him, She/Her, They/Them, and Custom.
  • Fiona's message calls are abbreviated based on the function- for example, "He/She/They" gets called by "Pps", player pronouns subjective. I personally find that a little hard to remember, so I tried to make the calls just the word- \he is "he/she/they", \hes is "he is/she is/they are", etc.
    • But, if this is a deal-breaker for you, I'm pretty sure you can easily change the message calls in Fiona's to make it easier for you
  • Fiona's is backwards-compatible with v17, I'm pretty sure this one will only work on v18 and higher.
    • NOTE: The v20 script is NOT compatible with v18-v19. Make sure you grab the right one!

If you still want to use this one, just paste this into a new script section above Main!
Ruby:
Expand Collapse Copy
class Player
  attr_accessor :they
  attr_accessor :them
  attr_accessor :their
  attr_accessor :theirs
  attr_accessor :themself
  attr_accessor :is
  attr_accessor :conjugation
  attr_accessor :person
end

def useIs
  return $player.is
end


def pronounsHim
    $player.they              = "he"
    $player.them              = "him"
    $player.their             = "his"
    $player.theirs            = "his"
    $player.themself          = "himself"
    $player.is                = true
    $player.conjugation       = "o"
end

def pronounsHer
    $player.they              = "she"
    $player.them              = "her"
    $player.their             = "her"
    $player.theirs            = "hers"
    $player.themself          = "herself"
    $player.is                = true
    $player.conjugation       = "a"
end

def pronounsThey
    $player.they              = "they"
    $player.them              = "them"
    $player.their             = "their"
    $player.theirs            = "theirs"
    $player.themself          = "themself"
    $player.is                = false
    $player.conjugation       = "o"
end


def pronounsIt
    $player.they              = "it"
    $player.them              = "it"
    $player.their             = "its"
    $player.theirs            = "its"
    $player.themself          = "itself"
    $player.is                = true
    $player.conjugation       = "o"
end

def pronounsCustom
  pronoun = ""
  pronoun = pbMessageFreeText(_INTL("He/She/They"),"",false,8)
  $player.they     = pronoun
  pronoun = pbMessageFreeText(_INTL("Him/Her/Them"),"",false,8)
  $player.them     = pronoun
  pronoun = pbMessageFreeText(_INTL("His/Her/Their"),"",false,8)
  $player.their    = pronoun
  pronoun = pbMessageFreeText(_INTL("His/Hers/Theirs"),"",false,8)
  $player.theirs   = pronoun
  pronoun = pbMessageFreeText(_INTL("Himself/Herself/Theirself"),"",false,8)
  $player.themself = pronoun
  $player.conjugation = "o"
  #===============================##
  # Spanish translation needs proper adjective (and occasionally noun) endings too
  #===============================##
  if $PokemonSystem.language == 1 # Spanish
    pronoun = pbMessageFreeText(_INTL("¿Qué usa para terminar adjetivos, como el \"o\" en \"alto\"?"),
                                  "",false,2)
    $player.conjugation = pronoun
  end
  #===============================##
  command = 0
  loop do
    command = pbMessage(_INTL("{1} is or {1} are?",$player.they),[
       _INTL("{1} is",$player.they),
       _INTL("{1} are",$player.they)
       ],-1,nil,command)
    case command
    when 0;
      $player.is = true
      break
    when 1;
      $player.is = false
      break
    end
  end
end


def pronounsPerson(base)
  $player.person = base
  command = 0
  loop do
    command = pbMessage(_INTL("I am a..."),[
       _INTL("{1}",base),
       _INTL("person"),
       _INTL("(custom)"),
       ],-1,nil,command)
    case command
    when 0;
      $player.person = base
      break
    when 1;
      $player.person = "person"
      break
    when 2;
      $player.person = pbMessageFreeText(_INTL("I am a..."),"",false,8)
      break
    end
  end
 
end


def pbPronouns
  command = 0
  loop do
    command = pbMessage(_INTL("Update pronouns?"),[
       _INTL("He/Him"),
       _INTL("She/Her"),
       _INTL("They/Them"),
       _INTL("It/Its"),
       _INTL("Custom"),
       _INTL("Exit")
       ],-1,nil,command)
    case command
    when 0;
      pronounsHim
      pronounsPerson("man")
      pbMessage(_INTL("Updated to {1} / {2}.",$player.they,$player.them))
      break
    when 1;
      pronounsHer
      pronounsPerson("woman")
      pbMessage(_INTL("Updated to {1} / {2}.",$player.they,$player.them))
      break
    when 2;
      pronounsThey
      pronounsPerson("trainer")
      pbMessage(_INTL("Updated to {1} / {2}.",$player.they,$player.them))
      break
    when 3;
      pronounsIt
      pronounsPerson("trainer")
      pbMessage(_INTL("Updated to {1} / {2}.",$player.they,$player.them))
      break
    when 4;
      pronounsCustom
      pronounsPerson("trainer")
      pbMessage(_INTL("Updated to {1} / {2}.",$player.they,$player.them))
      break
      else; break
    end
  end
end

def pbTrainerPCMenu
  command = 0
  loop do
    command = pbMessage(_INTL("What do you want to do?"),
                        [_INTL("Item Storage"),
                         _INTL("Mailbox"),
                         _INTL("Pronouns"),
                         _INTL("Turn Off")], -1, nil, command)
    case command
    when 0 then pbPCItemStorage
    when 1 then pbPCMailbox
    when 2 then pbPronouns
    else        break
    end
  end
end

   unless Kernel.respond_to?(:pbMessageDisplay_Old)
      alias pbMessageDisplay_Old pbMessageDisplay
      def pbMessageDisplay(*args)
        if $player
          if $player.themself
            if $player.is==true
              args[1].gsub!(/\\hes/i,_INTL("{1}'s",$player.they.downcase))
              args[1].gsub!(/\\uheis/i,_INTL("{1} is",$player.they.capitalize))
              args[1].gsub!(/\\heis/i,_INTL("{1} is",$player.they.downcase))
              args[1].gsub!(/\\uhes/i,_INTL("{1}'s",$player.they.capitalize))
            end
            if $player.is==false
              args[1].gsub!(/\\hes/i,_INTL("{1}'re",$player.they.downcase))
              args[1].gsub!(/\\heis/i,_INTL("{1} are",$player.they.downcase))
              args[1].gsub!(/\\uhes/i,_INTL("{1}'re",$player.they.capitalize))
              args[1].gsub!(/\\uheis/i,_INTL("{1} are",$player.they.capitalize))
            end
          args[1].gsub!(/\\he/i,$player.they.downcase)
          args[1].gsub!(/\\uhe/i,$player.they.capitalize)
          args[1].gsub!(/\\him/i,$player.them.downcase)
          args[1].gsub!(/\\uhim/i,$player.them.capitalize)
          args[1].gsub!(/\\his/i,$player.their.downcase)
          args[1].gsub!(/\\uhis/i,$player.their.capitalize)
          args[1].gsub!(/\\hrs/i,$player.theirs.downcase)
          args[1].gsub!(/\\uhrs/i,$player.theirs.capitalize)
          args[1].gsub!(/\\slf/i,$player.themself.downcase)
          args[1].gsub!(/\\uslf/i,$player.themself.capitalize)
          args[1].gsub!(/\\oa/o,$player.conjugation.downcase)
          args[1].gsub!(/\\man/i,$player.person.downcase)
          args[1].gsub!(/\\uman/i,$player.person.capitalize)
        end
      end
        return pbMessageDisplay_Old(*args)
      end
end
Ruby:
Expand Collapse Copy
module Tech_Pronouns
  attr_accessor :they
  attr_accessor :them
  attr_accessor :their
  attr_accessor :theirs
  attr_accessor :themself
  attr_accessor :is
  attr_accessor :conjugation
  attr_accessor :person
 
    @they              = "they"
    @them              = "them"
    @their             = "their"
    @theirs            = "theirs"
    @themself          = "themself"
    @is                = false
    @conjugation       = ""
    @person            = "person"
 
end


class Player
  include Tech_Pronouns
end

def useIs
  return $Trainer.is
end


def pronounsHim
    $Trainer.they              = "he"
    $Trainer.them              = "him"
    $Trainer.their             = "his"
    $Trainer.theirs            = "his"
    $Trainer.themself          = "himself"
    $Trainer.is                = true
    $Trainer.conjugation       = "o"
end

def pronounsHer
    $Trainer.they              = "she"
    $Trainer.them              = "her"
    $Trainer.their             = "her"
    $Trainer.theirs            = "hers"
    $Trainer.themself          = "herself"
    $Trainer.is                = true
    $Trainer.conjugation       = "a"
end

def pronounsThey
    $Trainer.they              = "they"
    $Trainer.them              = "them"
    $Trainer.their             = "their"
    $Trainer.theirs            = "theirs"
    $Trainer.themself          = "themself"
    $Trainer.is                = false
    $Trainer.conjugation       = "o"
end


def pronounsIt
    $Trainer.they              = "it"
    $Trainer.them              = "it"
    $Trainer.their             = "its"
    $Trainer.theirs            = "its"
    $Trainer.themself          = "itself"
    $Trainer.is                = true
    $Trainer.conjugation       = "o"
end

def pronounsCustom
  pronoun = ""
  pronoun = pbMessageFreeText(_INTL("He/She/They"),"",false,8)
  $Trainer.they     = pronoun
  pronoun = pbMessageFreeText(_INTL("Him/Her/Them"),"",false,8)
  $Trainer.them     = pronoun
  pronoun = pbMessageFreeText(_INTL("His/Her/Their"),"",false,8)
  $Trainer.their    = pronoun
  pronoun = pbMessageFreeText(_INTL("His/Hers/Theirs"),"",false,8)
  $Trainer.theirs   = pronoun
  pronoun = pbMessageFreeText(_INTL("Himself/Herself/Theirself"),"",false,8)
  $Trainer.themself = pronoun
  $Trainer.conjugation = "o"
  #===============================##
  # Spanish translation needs proper adjective (and occasionally noun) endings too
  #===============================##
  if $PokemonSystem.language == 1 # Spanish
    pronoun = pbMessageFreeText(_INTL("¿Qué usa para terminar adjetivos, como el \"o\" en \"alto\"?"),
                                  "",false,2)
    $Trainer.conjugation = pronoun
  end
  #===============================##
  command = 0
  loop do
    command = pbMessage(_INTL("{1} is or {1} are?",$Trainer.they),[
       _INTL("{1} is",$Trainer.they),
       _INTL("{1} are",$Trainer.they)
       ],-1,nil,command)
    case command
    when 0;
      $Trainer.is = true
      break
    when 1;
      $Trainer.is = false
      break
    end
  end
end


def pronounsPerson(base)
  $Trainer.person = base
  command = 0
  loop do
    command = pbMessage(_INTL("I am a..."),[
       _INTL("{1}",base),
       _INTL("person"),
       _INTL("(custom)"),
       ],-1,nil,command)
    case command
    when 0;
      $Trainer.person = base
      break
    when 1;
      $Trainer.person = "person"
      break
    when 2;
      $Trainer.person = pbMessageFreeText(_INTL("I am a..."),"",false,8)
      break
    end
  end
 
end


def pbPronouns
  command = 0
  loop do
    command = pbMessage(_INTL("Update pronouns?"),[
       _INTL("He/Him"),
       _INTL("She/Her"),
       _INTL("They/Them"),
       _INTL("It/Its"),
       _INTL("Custom"),
       _INTL("Exit")
       ],-1,nil,command)
    case command
    when 0;
      pronounsHim
      pronounsPerson("man")
      pbMessage(_INTL("Updated to {1} / {2}.",$Trainer.they,$Trainer.them))
      break
    when 1;
      pronounsHer
      pronounsPerson("woman")
      pbMessage(_INTL("Updated to {1} / {2}.",$Trainer.they,$Trainer.them))
      break
    when 2;
      pronounsThey
      pronounsPerson("trainer")
      pbMessage(_INTL("Updated to {1} / {2}.",$Trainer.they,$Trainer.them))
      break
    when 3;
      pronounsIt
      pronounsPerson("trainer")
      pbMessage(_INTL("Updated to {1} / {2}.",$Trainer.they,$Trainer.them))
      break
    when 4;
      pronounsCustom
      pronounsPerson("trainer")
      pbMessage(_INTL("Updated to {1} / {2}.",$Trainer.they,$Trainer.them))
      break
      else; break
    end
  end
end


def pbTrainerPCMenu
  command = 0
  loop do
    command = pbMessage(_INTL("What do you want to do?"),[
       _INTL("Item Storage"),
       _INTL("Mailbox"),
       _INTL("Pronouns"),
       _INTL("Turn Off")
       ],-1,nil,command)
    case command
    when 0; pbPCItemStorage
    when 1; pbPCMailbox
    when 2; pbPronouns
    else; break
    end
  end
end

   unless Kernel.respond_to?(:pbMessageDisplay_Old)
      alias pbMessageDisplay_Old pbMessageDisplay
      def pbMessageDisplay(*args)
        if $Trainer
          if $Trainer.themself
            if $Trainer.is==true
              args[1].gsub!(/\\hes/i,_INTL("{1}'s",$Trainer.they.downcase))
              args[1].gsub!(/\\uheis/i,_INTL("{1} is",$Trainer.they.capitalize))
              args[1].gsub!(/\\heis/i,_INTL("{1} is",$Trainer.they.downcase))
              args[1].gsub!(/\\uhes/i,_INTL("{1}'s",$Trainer.they.capitalize))
            end
            if $Trainer.is==false
              args[1].gsub!(/\\hes/i,_INTL("{1}'re",$Trainer.they.downcase))
              args[1].gsub!(/\\heis/i,_INTL("{1} are",$Trainer.they.downcase))
              args[1].gsub!(/\\uhes/i,_INTL("{1}'re",$Trainer.they.capitalize))
              args[1].gsub!(/\\uheis/i,_INTL("{1} are",$Trainer.they.capitalize))
            end
          args[1].gsub!(/\\he/i,$Trainer.they.downcase)
          args[1].gsub!(/\\uhe/i,$Trainer.they.capitalize)
          args[1].gsub!(/\\him/i,$Trainer.them.downcase)
          args[1].gsub!(/\\uhim/i,$Trainer.them.capitalize)
          args[1].gsub!(/\\his/i,$Trainer.their.downcase)
          args[1].gsub!(/\\uhis/i,$Trainer.their.capitalize)
          args[1].gsub!(/\\hrs/i,$Trainer.theirs.downcase)
          args[1].gsub!(/\\uhrs/i,$Trainer.theirs.capitalize)
          args[1].gsub!(/\\slf/i,$Trainer.themself.downcase)
          args[1].gsub!(/\\uslf/i,$Trainer.themself.capitalize)
          args[1].gsub!(/\\oa/o,$Trainer.conjugation.downcase)
          args[1].gsub!(/\\man/i,$Trainer.person.downcase)
          args[1].gsub!(/\\uman/i,$Trainer.person.capitalize)
        end
      end
        return pbMessageDisplay_Old(*args)
      end
end

If you're using a version earlier than v19, change class Player to class PokeBattle_Trainer at the top!

Note that this does also change the User's PC script- if you plan on making further changes to that, you can either edit it from here or just copy my changes into PScreen_PC and work from there!

This originally involved changing a few script sections, and I left that here for posterity.
First we're going to go to PokeBattle_Trainer! Locate this part at the top:
Ruby:
Expand Collapse Copy
class PokeBattle_Trainer
  attr_accessor :name
  attr_accessor :id
  attr_writer   :metaID
  attr_accessor :trainertype
  attr_writer   :outfit
  attr_accessor :badges
  attr_reader   :money
  attr_accessor :seen
  attr_accessor :owned
  attr_accessor :formseen
  attr_accessor :formlastseen
  attr_accessor :shadowcaught
  attr_accessor :party
  attr_accessor :pokedex    # Whether the Pokédex was obtained
  attr_accessor :pokegear   # Whether the Pokégear was obtained
  attr_writer   :language

Right below that, add
Ruby:
Expand Collapse Copy
  #pronouns
  attr_accessor :they
  attr_accessor :them
  attr_accessor :their
  attr_accessor :theirs
  attr_accessor :themself
  attr_accessor :is

PokeBattle_Trainer defines the different attributes the player can have- outfits, badges, language, name, etc. This is adding a set of pronouns as their own attribute.

In that same script, scroll to the bottom and find
Ruby:
Expand Collapse Copy
  def initialize(name,trainertype)
    @name              = name
    @language          = pbGetLanguage
    @trainertype       = trainertype
    @id                = rand(256)
    @id                |= rand(256)<<8
    @id                |= rand(256)<<16
    @id                |= rand(256)<<24
    @metaID            = 0
    @outfit            = 0
    @pokegear          = false
    @pokedex           = false
    clearPokedex
    @shadowcaught      = []
    for i in 1..PBSpecies.maxValue
      @shadowcaught[i] = false
    end
    @badges            = []
    for i in 0...8
      @badges[i]       = false
    end
    @money             = INITIAL_MONEY
    @party             = []

Below that, add
Ruby:
Expand Collapse Copy
    #pronouns
    @they              = "they"
    @them              = "them"
    @their             = "their"
    @theirs            = "theirs"
    @themself          = "themself"
    @is                = false

This section is for setting up the default attributes when a new player character is created. We need something coded in to prevent some errors in the Message script further down the line, so we put this in for now and give the player the option to change it later.


Now, go into PSystem_Utilities and find this:

Ruby:
Expand Collapse Copy
def getRandomName(maxLength=100)
  return getRandomNameEx(2,nil,nil,maxLength)
end

Below that, add this:
Ruby:
Expand Collapse Copy
#pronouns
def pronounsHim
    $Trainer.they              = "he"
    $Trainer.them              = "him"
    $Trainer.their             = "his"
    $Trainer.theirs            = "his"
    $Trainer.themself          = "himself"
    $Trainer.is                = true
end

def pronounsHer
    $Trainer.they              = "she"
    $Trainer.them              = "her"
    $Trainer.their             = "her"
    $Trainer.theirs            = "hers"
    $Trainer.themself          = "herself"
    $Trainer.is                = true
end

def pronounsThey
    $Trainer.they              = "they"
    $Trainer.them              = "them"
    $Trainer.their             = "their"
    $Trainer.theirs            = "theirs"
    $Trainer.themself          = "themself"
    $Trainer.is                = false
end


def pronounsCustom
  pronoun = ""
  pronoun = pbMessageFreeText(_INTL("He/She/They"),"",false,8)
  $Trainer.they     = pronoun
  pronoun = pbMessageFreeText(_INTL("Him/Her/Them"),"",false,8)
  $Trainer.them     = pronoun
  pronoun = pbMessageFreeText(_INTL("His/Her/Their"),"",false,8)
  $Trainer.their    = pronoun
  pronoun = pbMessageFreeText(_INTL("His/Hers/Theirs"),"",false,8)
  $Trainer.theirs   = pronoun
  pronoun = pbMessageFreeText(_INTL("Himself/Herself/Theirself"),"",false,8)
  $Trainer.themself = pronoun
  command = 0
  loop do
    command = pbMessage(_INTL("{1} is or {1} are?",$Trainer.they),[
       _INTL("{1} is",$Trainer.they),
       _INTL("{1} are",$Trainer.they)
       ],-1,nil,command)
    case command
    when 0;
      $Trainer.is = true
      break
    when 1;
      $Trainer.is = false
      break
    end
  end
end
This sets up commands that will set the attributes we defined with the respective pronouns. Technically, you could just write these all out in an event, but it's much easier to have just one line of text for the code.

Now go into Messages and find this:
Ruby:
Expand Collapse Copy
  text.gsub!(/\\pg/i,"\\r") if $Trainer && $Trainer.female?
  text.gsub!(/\\pog/i,"\\r") if $Trainer && $Trainer.male?
  text.gsub!(/\\pog/i,"\\b") if $Trainer && $Trainer.female?
  text.gsub!(/\\pg/i,"")
  text.gsub!(/\\pog/i,"")
  text.gsub!(/\\b/i,"<c3=3050C8,D0D0C8>")
  text.gsub!(/\\r/i,"<c3=E00808,D0D0C8>")

Below that, add
Ruby:
Expand Collapse Copy
  text.gsub!(/\\hes/i,_INTL("{1}'s",$Trainer.they.downcase))  if $Trainer && $Trainer.is==true
  text.gsub!(/\\hes/i,_INTL("{1}'re",$Trainer.they.downcase))  if $Trainer && $Trainer.is==false
  text.gsub!(/\\heis/i,_INTL("{1} is",$Trainer.they.downcase))  if $Trainer && $Trainer.is==true
  text.gsub!(/\\heis/i,_INTL("{1} are",$Trainer.they.downcase))  if $Trainer && $Trainer.is==false
  text.gsub!(/\\uhes/i,_INTL("{1}'s",$Trainer.they.capitalize))  if $Trainer && $Trainer.is==true
  text.gsub!(/\\uhes/i,_INTL("{1}'re",$Trainer.they.capitalize))  if $Trainer && $Trainer.is==false
  text.gsub!(/\\uheis/i,_INTL("{1} is",$Trainer.they.capitalize))  if $Trainer && $Trainer.is==true
  text.gsub!(/\\uheis/i,_INTL("{1} are",$Trainer.they.capitalize))  if $Trainer && $Trainer.is==false
  text.gsub!(/\\he/i,$Trainer.they.downcase)  if $Trainer
  text.gsub!(/\\uhe/i,$Trainer.they.capitalize)  if $Trainer
  text.gsub!(/\\him/i,$Trainer.them.downcase)  if $Trainer
  text.gsub!(/\\uhim/i,$Trainer.them.capitalize)  if $Trainer
  text.gsub!(/\\his/i,$Trainer.their.downcase)  if $Trainer
  text.gsub!(/\\uhis/i,$Trainer.their.capitalize)  if $Trainer
  text.gsub!(/\\hrs/i,$Trainer.theirs.downcase)  if $Trainer
  text.gsub!(/\\uhrs/i,$Trainer.theirs.capitalize)  if $Trainer
  text.gsub!(/\\slf/i,$Trainer.themself.downcase)  if $Trainer
  text.gsub!(/\\uslf/i,$Trainer.themself.capitalize)  if $Trainer
This is creating those little message calls we use!

text.gsub!(/\\slf/i,$Trainer.themself.downcase) if $Trainer
  • \slf is what the dev will put in to call this
  • $Trainer.themself is what's being called
  • .downcase is just what I used here to ensure that there's a lowercase and capitalized version for each pronoun,
  • if $Trainer tells the game not to make this until there's a player character defined, to prevent error messages!


Optional- if you'd like an easy script for changing pronouns at the PC, go into PScreen_PC. Find this:
Ruby:
Expand Collapse Copy
def pbTrainerPCMenu
  command = 0
  loop do
    command = pbMessage(_INTL("What do you want to do?"),[
       _INTL("Item Storage"),
       _INTL("Mailbox"),
       _INTL("Turn Off")
       ],-1,nil,command)
    case command
    when 0; pbPCItemStorage
    when 1; pbPCMailbox
    else; break
    end
  end
end
Change it to:
Ruby:
Expand Collapse Copy
#pronouns
def pbTrainerPCMenu
  command = 0
  loop do
    command = pbMessage(_INTL("What do you want to do?"),[
       _INTL("Item Storage"),
       _INTL("Mailbox"),
       _INTL("Pronouns"),
       _INTL("Turn Off")
       ],-1,nil,command)
    case command
    when 0; pbPCItemStorage
    when 1; pbPCMailbox
    when 2; pbPronouns
    else; break
    end
  end
end

And above that, put in this:
Ruby:
Expand Collapse Copy
#pronouns
def pbPronouns
  command = 0
  loop do
    command = pbMessage(_INTL("Update pronouns?"),[
       _INTL("He/Him"),
       _INTL("She/Her"),
       _INTL("They/Them"),
       _INTL("Custom"),
       _INTL("Exit")
       ],-1,nil,command)
    case command
    when 0;
      pronounsHim
      pbMessage(_INTL("Updated to {1} / {2}.",$Trainer.they,$Trainer.them))
      break
    when 1;
      pronounsHer
      pbMessage(_INTL("Updated to {1} / {2}.",$Trainer.they,$Trainer.them))
      break
    when 2;
      pronounsThey
      pbMessage(_INTL("Updated to {1} / {2}.",$Trainer.they,$Trainer.them))
      break
    when 3;
      pronounsCustom
      pbMessage(_INTL("Updated to {1} / {2}.",$Trainer.they,$Trainer.them))
      break
      else; break
    end
  end
end

And that's all there is to it!

Using the Script​

The calls are:
  • \he - he/she/they
  • \him - him/her/them
  • \his - his/her/their
  • \hrs - his/hers/theirs
  • \slf - himself/herself/theirself
  • \hes - he's/she's/they're
  • \heis - he is/she is/they are
  • \man - man/woman/person
  • \oa - o or a, for gendered adjectives like in Spanish
Add "u" after the slash for uppercase. (\uhe is "He" instead of "he")

This script can be added to already-released games, but existing saves for games using v18/v19 will encounter a problem with any messages, because of the lack of pronouns for them. I'd suggest having an event in a PMC that just ran pronounsThey, so you can run events with messages again, and then having the player change it for themselves at the PC. This doesn't seem to be an issue in v20 - I'm not sure if it's something that changed with Essentials itself or something about the script, I'll poke around with it.

Since I couldn't possibly account for every verb, I added a little check for verb conjugation! Let's say someone's telling a story about the player, and the text should say something like
"And then he walks over to her, and says..."

But if your player's using they, that'd be grammatically incorrect.
"And then they walks over to her, and says..."

Enter the useIs function! Make a conditional branch based on that- the text if it's true is for singular conjugation (He walks, he says, etc.), and if it's false is for plural conjugation. (They walk, they say, etc.)
1619579696133.png


Scripts that edit messages, like text fast-forward, may conflict with this script by overwriting changes to pbMessageDisplay. The solution to that will depend on how things are set up - you might get around it by aliasing pbMessageDisplay across each script (Marin explains aliasing here), by manually merging all the changes together, or just by rearranging the scripts so the game reads them in a certain order.

See also​

Westrah's Non-binary Support (or EzBound's for v19), to allow for different colors in trainer card, text colors, etc.​

Future goals​

  • Add honorifics like Mr./Ms., Sir/Ma'am
  • Add a way to save custom pronouns if the player selects pbCustom again
  • Add a way to have the player's gender text color changed
  • Add a way to have the trainer card color's changed
  • All-caps variables, for when you need to yell at the player
  • Set an array of pronouns, so you can have multiple sets without needing to manually switch it
  • Include options for renaming the player (while reflecting this in all owned Pokémon) and maybe even switching trainer class
Credits
-TechSkylander1518
-Fiona Summers (because I used her code to figure out how to make mine plug-and-play)
-Luke S.J. for the method alias help in Fiona's original code
-Astralneko for the adjective and man/woman/person additions
Author
TechSkylander1518
Views
5,051
First release
Last update

Ratings

3.00 star(s) 2 ratings

More resources from TechSkylander1518

Latest updates

  1. v20 Update

    Way-overdue update considering it was pretty must just replacing $Trainer with $player. (I also...
  2. Adjective update

    Adjective update courtesy of Astralneko! Also added in something similar to their method for...
  3. Little update!

    The transition to v19 is literally just changing one line, but while I was at it, I also threw...
Back
Top