Speech: Speakers

Section 4.C.1.C

This subsection details methods of setting how your speakers and their text windows are displayed, the different ways in which you may edit and customize them, and examples of how these utilities may be used.


Manually Setting a Speaker

Sometimes you may want to force certain speakers to tag in during dialogue without assigning any lines of speech to them yet. This may be because you want something to happen while they are on screen, but before they actually speak any lines. To do this, you would use the "setSpeaker" Command Key.

For example, perhaps you want to set a scenario where the opposing trainer slides on screen to begin speaking, but before they actually say any lines, the battle music changes to indicate that now things are getting "serious." This may look something like this:

"AfterLastSwitchIn_foe" => {
  "setSpeaker" => :Self,
  "changeBGM"  => ["Battle Elite", 1],
  "speech"     => "No more playing around!"
}

In this scenario, after the opponent sends out their final Pokemon, they will slide on screen and begin a cinematic speech event. However, the text entered with the "speech" Command Key will only be displayed after the battle music fades out and changes. It's a small thing, but little flourishes like this can be accomplished by utilizing the "setSpeaker" key.

If you ever want to hide the sprite of the current speaker, but don't want to exit entirely from the speech event, you can accomplish this by setting this key to :Hide, instead.


Bystander Speakers

However, this is by no means the extent of the usefulness of this Command Key. This can also be used to manually set entirely custom speakers who aren't even participating in this battle. For example, let's say you're battling some Team Rocket grunts, and you want the Rocket Boss to slide in to speak as if he's watching this battle unfold in the background. Typically, this wouldn't be possible since you can only set speakers with indexes of existing battlers. However, with the "setSpeaker" rule you aren't limited to battler indexes. You can manually set any trainer sprite to appear on screen that you desire. To accomplish this, all you need to do is set the ID of the specific trainer type you want to use as a speaker, like so:

"RoundStartCommand_foe" => {
  "setSpeaker" => :ROCKETBOSS,
  "speech"     => ["Go, minions!", "Teach this child some manners!"]
}

In this scenario, the sprite used for the :ROCKETBOSS trainer type will appear on screen to speak. This can be done with any trainer type. You'll notice however, that the display name for this speaker will be the generic name for the trainer class itself, rather than an individual trainer. What if you wanted to set a specific name for a character, rather than using this generic class name? This can be done by using the "editWindow" Command Key. I'll go into more detail about this in the "Editing Speaker Windows" section further down.


Pokemon Speakers

As explained above, it's entirely possible to have bystanders slide on screen to speak who aren't even participating in battle. However, this isn't only limited to trainers. You can also set any Pokemon species you want to be a speaker as well. This has more niche uses, since Pokemon typically don't speak, but there may be situations where you may want to utilize this feature. The way you set this is identical to how you set trainers. All that you have to do is set the species ID for the Pokemon you'd like to set as a speaker, like so:

"RoundStartCommand_foe" => {
  "setSpeaker" => :MEWTWO,
  "speech"     => "My clone army will not fall to your inferior originals!"
}

This example is inspired by Pokemon: The First Movie where Mewtwo challenges trainers with his genetically enhanced super clones. Let's say that the player is battling a wild Charizard "super clone". In this scenario, Mewtwo will slide on screen at the start of the battle to say this line of speech, even though Mewtwo itself isn't participating in this battle.

Unlike with trainers however, individual species can often have a variety of sprites based on things like their form, gender, or shinyness. Because of this, you may enter these attributes in an array in this same order to customize the specific sprite of the species that should appear. For example:

"RoundStartCommand_foe" => {
  "setSpeaker" => [:CHERRIM, 1, 1, true],
  "speech"     => "Cherr!"
}

In this example, Cherrim is set as the speaker. However, several of its attributes have been set to customize the specific sprite that should be displayed. Its form has been set to 1 (Sunshine form), as well as its gender (female). As the last entry, a boolean is set to determine whether this should be a shiny sprite or not. If no boolean is included, it is assumed to be false by default. Note that setting the Pokemon's gender also changes the default windowskin it uses for speech, so this is still relevant to set even if the species itself doesn't have any visual gender differences. If no gender is set, then its gender will be determined from the gender ratio of the species itself. For example, Chansey speakers will always be female, since Chansey itself is a female-only species. For species without a set gender, this is randomly determined.

If you'd like to set a custom name for this Pokemon speaker, this can be done by using the "editWindow" Command Key. I'll go into more detail about this in the "Editing Speaker Windows" section further down.


Editing Speaker Sprites

Sometimes you may want to edit a speaker in some way while they are in the middle of speaking, instead of setting a new speaker to be swapped in. This can be handled with the "editSpeaker" Command Key. For example, let's say you want to change a speaker while they are on screen to reveal their true identity...

"BattleEndWin" => {
  "speech_A"    => ["Alright! You got me!", "I'm actually a..."],
  "editSpeaker" => :TEAMROCKET_M,
  "speech_B"    => "..spy for Team Rocket!"
}

In this example, after the player wins the battle and the trainer slides on screen to say their lose text, this speech event will trigger where they reveal their true identity as a member of Team Rocket. The speaker sprite will instantly update instead of sliding off screen. You can use this to instantly update the speaker's sprite. The way this is handled functions identically to the way you would set up the arguments for the "setSpeaker" key. The only difference here is that "setSpeaker" sets the appearance of the next speaker, while "editSpeaker" changes the appearance of the current speaker.

Another way which you may use this is to set different "frames" of the same speaker to display some quasi-animations. This can only be done if you have several different sprites of the same speaker. You can use this to emphasize emotions or just add a little extra flair to your speaker's speech.

"RoundStartCommand_foe" => {
  "speech_A"      => "You're going down, this time!",
  "editSpeaker_A" => :RIVAL2,
  "speech_B"      => "I'll beat you without even breaking a sweat!",
  "editSpeaker_B" => :RIVAL1,
  "speech_C"      => "Good luck! You're gonna need it!"
}

Editing Speaker Windows

You may also edit a speaker's message boxes independently from the speaker themselves. For example, let's say you want to change a speaker's name or windowskin in the middle of their dialogue, without changing the current speaker at all. This can be accomplished by using the "editWindow" Command Key. Here's an example:

"BattleEndWin" => {
  "speech_A"   => "I...lost. I guess I'm no longer champion...",
  "editWindow" => "Former Champion",
  "speech_B"   => "That title now belongs to you."
}

Here, the champion speaks upon the player defeating him and relinquishes his title. The "editWindow" key is used to change the speaker's name to "Former Champion" to indicate they no longer hold the title. If you'd also like to edit the windowskin used, you can enter this as an array with the second item in the array being the file name of the windowskin you'd like to use.

Note that if you simply want to change the "gender" of the windowskin used, you can input numbers instead of file names. If you want to use the blue boarder windowskin typically used for male speech, you can just input 0. For the red boarder windowskin typically used for female speech, you can just input 1. Any other number you enter will give you the windowskin used for genderless speech.

If you would ever like to hide the speaker's text boxes entirely for some reason, then this can also be accomplished by setting "editWindow" to the symbol :Hide. If you'd like the text boxes to reappear, then you may set this to the symbol :Show.

You can combine the use of the "editWindow" and "setSpeaker"/"editSpeaker" Command Keys to fully customize your speakers. Lets return to a few of the earlier examples in this subsection and combine these keys to full effect.

"RoundStartCommand_foe" => {
  "setSpeaker" => :ROCKETBOSS, 
  "editWindow" => ["Giovanni", "speech hgss 10"],
  "speech"     => ["Go, minions!", "Teach this child some manners!"]
}

Going back to this example with the Rocket Boss used earlier, we can now update this to include a custom name and windowskin for this speaker.

If you want to edit the speaker's windowskin, but you don't want to edit their name, then you can do this by simply setting the name entry to nil. Doing so will keep the speaker's default name while still setting a custom windowskin. Let's return to the very first example found on this page and edit its windowskin to demonstrate this:

"AfterLastSwitchIn_foe" => {
  "setSpeaker" => :Self,
  "editWindow" => [nil, "choice 24"],
  "changeBGM"  => ["Battle Elite", 1],
  "speech"     => "No more playing around!"
}

You can edit the windows of any speaker, even ones who don't appear on screen, such as the player. This can be used as a way of implying there are off-screen speakers who are supporting you during the battle by changing the player's name and/or windowskin.

"RoundEnd_player_1" => {
  "setSpeaker" => :Self, 
  "editWindow" => ["Prof. Oak", 0],
  "speech"     => "Quite impressive, \\PN!"
}

In this example, we've set the speaker as the player, but edited the window so that it appears as if Proffessor Oak is commenting on the player's performance from off screen.

Last updated