Examples: Trainer Battles

Section 5.B

Trainer Battle Example # 1

The example below demonstrates a 1v1 quiz battle vs Gym Leader Opal, as she appeared in Pokemon Sword & Shield. In this battle, the following rule is set:

  • "midbattleScript" is used to set a script to use for this battle which does the following:

    • At the end of the first round, Opal quizes the player on what her nickname is. If the player guesses right, their Pokemon's Speed is increased by 2 stages. If the player guesses wrong, their Pokemon's Speed is decreased by 2 stages.

    • At the end of the third round, Opal quizes the player on her favorite color. If the player guesses right, their Pokemon's defenses are increased by 2 stages. If the player guesses wrong, their Pokemon's defenses are decreased by 2 stages.

    • At the end of the fifth round, Opal quizes the player on her age. If the player guesses the answer she wants to hear, their Pokemon's offenses are increased by 2 stages. If the player guesses wrong, their Pokemon's offenses are decreased by 2 stages.

    • Before Opal speaks a message prior to sending out her final Pokemon.

setBattleRule("midbattleScript", {
  "RoundEnd_1_foe" => {
    "setChoices" => [:nickname, 2, {
                      "The magic-user" => "Bzzt! Too bad!",
                      "The wizard"     => "Ding ding ding! Congratulations, you're correct."
                    }],
    "speech"     => ["Question!", "You...\nDo you know my nickname?", :Choices]
  },
  "ChoiceRight_nickname" => {
    "setBattler"   => :Opposing,
    "battlerStats" => [:SPEED, 2]
  },
  "ChoiceWrong_nickname" => {
    "setBattler"   => :Opposing,
    "battlerStats" => [:SPEED, -2]
  },
  "RoundEnd_3_foe" => {
    "setChoices" => [:color, 2, {
                      "Pink"   => "That's what I like to see in other people, but it's not what I like for myself.",
                      "Purple" => "Yes, a nice, deep purple...\nTruly grand, don't you think?"
                    }],
    "speech"     => ["Question!", "What is my favorite color?", :Choices]
  },
  "ChoiceRight_color" => {
    "setBattler"   => :Opposing,
    "battlerStats" => [:DEFENSE, 2, :SPECIAL_DEFENSE, 2]
  },
  "ChoiceWrong_color" => {
    "setBattler"   => :Opposing,
    "battlerStats" => [:DEFENSE, -2, :SPECIAL_DEFENSE, -2]
  },
  "RoundEnd_5_foe" => {
    "setChoices" => [:age, 1, {
                      "16 years old" => "Hah!\nI like your answer!",
                      "88 years old" => "Well, you're not wrong. But you could've been a little more sensitive."
                    }],
    "speech"     => ["Question!", "All righty then... How old am I?", :Choices]
  },
  "ChoiceRight_age" => {
    "setBattler"   => :Opposing,
    "battlerStats" => [:ATTACK, 2, :SPECIAL_ATTACK, 2]
  },
  "ChoiceWrong_age" => {
    "setBattler"   => :Opposing,
    "battlerStats" => [:ATTACK, -2, :SPECIAL_ATTACK, -2]
  },
  "BeforeLastSwitchIn_foe" => "My morning tea is finally kicking in, and not a moment too soon!"
})
TrainerBattle.start(:LEADER_Opal, "Opal")

Trainer Battle Example # 2

The example below demonstrates a 1v1 battle vs a Team Rocket grunt who is blocking the exit of a collapsing cave. In this battle, the following rules are set:

  • "canLose" is used to allow the player to continue even if they lose the battle.

  • "victoryBGM" is used to set no victory music to play if you win this battle.

  • "battleIntroText" is used to customize the intro text at the start of the battle.

  • "opponentLoseText" is used to set custom lose text for this trainer when you beat them.

  • "midbattleScript" is used to set a script to use for this battle which does the following:

    • Informs the player at the start of the battle that the cave is collapsing and they have a limited number of turns to win the battle.

    • Plays a sound effect and displays a message at the end of each turn to indicate the cave is in the midst of collapsing.

    • When the HP of the opponent's final Pokemon is low, they will stand their ground to recover some HP, and increase both of their defenses by two stages.

    • At the end of the second round, a falling rock falls on your Pokemon's head, dealing damage to them and causing confusion.

    • At the end of the third round, a message is displayed indicating that the player is almost out of time.

    • At the end of the fourth round, the player has run out of time and is forced to recall their Pokemon and flee the battle to escape the cave.

    • Upon the player forfeiting the match, the opponent will speak a message taunting the player.

setBattleRule("canLose")
setBattleRule("victoryBGM", "")
setBattleRule("battleIntroText", "{1} blocks your escape!")
setBattleRule("opponentLoseText", "H-hey wait! Don't abandon me in here...")
setBattleRule("midbattleScript", {
  "RoundStartCommand_1_foe" => {
    "playSE"  => "Mining collapse",
    "text_A"  => "The cave ceiling begins to crumble down all around you!",
    "speech"  => ["I am not letting you escape!", "I don't care if this whole cave collapses down on the both of us...haha!"],
    "text_B"  => "Defeat your opponent before time runs out!"
  },
  "RoundEnd_player_repeat" => {
    "playSE" => "Mining collapse",
    "text"   => "The cave continues to collapse all around you!"
  },
  "RoundEnd_2_player" => {
    "text"          => "{1} was struck on the head by a falling rock!",
    "playAnim"      => [:ROCKSMASH, :Opposing, :Self],
    "battlerHP"     => -4,
    "battlerStatus" => :CONFUSED
  },
  "RoundEnd_3_player" => {
    "text" => ["You're running out of time!", "You need to escape immediately!"]
  },
  "RoundEnd_4_player" => {
    "text_A"    => "You failed to defeat your opponent in time!",
    "playAnim"  => ["Recall", :Self],
    "text_B"    => "You were forced to flee the battle!",
    "playSE"    => "Battle flee",
    "endBattle" => 3
  },
  "LastTargetHPLow_foe" => {
    "speech"       => "My {1} will never give up!",
    "endSpeech"    => true,
    "playAnim"     => [:BULKUP, :Self],
    "playCry"      => :Self,
    "battlerHP"    => [2, "{1} is standing its ground!"],
    "battlerStats" => [:DEFENSE, 2, :SPECIAL_DEFENSE, 2]
  },
  "BattleEndForfeit" => "Haha...you'll never make it out alive!"
})
TrainerBattle.start(:TEAMROCKET_M, "Grunt", 1)

Last updated