Skip to content

Specification

Eduardo Correia edited this page Jul 5, 2021 · 4 revisions

Specification

Header

When making a PokéBattle program, you must start by naming all of the pokémon and trainers in the battle. No two pokémon can have the same name. Use the following header:

Trainer 1: *trainer*
    *pokémon*
    *pokémon*
    *pokémon*
    *pokémon*
    *pokémon*
    *pokémon*
Trainer 2: *trainer*
    *pokémon*
    *pokémon*
    *pokémon*
    *pokémon*
    *pokémon*
    *pokémon*
 
Battle Start!

Turn 0:
    *trainer*: *pokémon* Go!
    *trainer*: *pokémon* Go!

The pokémon listed with Turn 0 are the starting Active pokémon.

Note: Indentation and line breaks are not taken into account and are included for easy readability.

Footer

At the end of the program, you must include the following footer:

Battle End!
Winner: *trainer*

Name whichever trainer you want as the winner; it doesn't matter.

Pokémon

Variables

Each pokémon stores a single variable. This variable is the pokémon's HP. Each pokémon starts the battle/program with 5 HP.

There is no maximum or minimum HP.

Being at 0 or less HP has no special effect.

Pokémon Count and Names

There are two versions of PokéBattle: Strict and Open.

In Strict PokéBattle, each trainer can only have 6 pokémon and they must all be existing pokémon from canon.

In Open PokéBattle, each trainer can have any number of pokémon and they can have any name.

In both modes, no pokémon name is allowed to be used on both teams.

Pokémon and Moves

There are no limits regarding which pokémon can use which moves.

Syntax

All commands must be done in the following format:

Turn 1:
    *command*
    *command*
 
Turn 2:
    *command*
    *command*
 
Turn 3:
    *command*
    *command*
 
Turn 4:
    *command*
    *command*

Each of the two commands in a turn must be from different trainers. The order may change freely between turns.

A move is from a trainer if:

  • Starts with the trainers name, or
  • Starts with the trainers active pokémon.

Commands/Moves

Nothing

Does nothing.

<trainer> tried to run away! You can't run from a trainer battle!
<pokémon> flinches!
<pokémon> uses Splash!

Damage

Rreduce the HP of the opposing active pokémon by the level of the move.

<pokémon> uses <move>!
  • Level 2: Tackle, Ember, Vine Whip, Water Gun, Thunder Shock, Rock Throw, Confusion, Mach Punch, Wing Attack, Powder Snow.
  • Level 4: Body Slam, Flamethrower, Razor Leaf, Hydro Pump, Thunderbolt, Earthquake, Psychic, High Jump Kick, Fly, Ice Beam.

As an additional effect, you can add either of these tags after the command:

  • "It's super effective!": the level of the move is doubled.
  • "It's not very effective.": the level of the move is halved.

Math Damage:

Reduce the HP of the opposing pokémon by the HP of the user.

<pokémon> uses <move>!

Moves: Hyper Beam, Dragon Rage.

OHKO

Set the HP of the opposing pokémon to zero.

<pokémon> uses <move>!

Moves: Fissure, Guillotine, Sheer Cold.

Heal

Increase the HP of the trainer's active pokémon by the level of the item.

<trainer> uses <item>!
  • Level 1: Potion.
  • Level 2: Super Potion.
  • Level 4: Hyper Potion.
  • Level 8: Max Potion.

Leech

Increase the users HP by the HP of the opposing pokémon.

<pokémon> uses <move>!

Moves: Absorb, Leech Life.

Sync

Set the users HP to the HP of the opposing pokémon)

<pokémon> uses <move>!

Moves: Skill Swap, Heart Swap.

Switch

Change the trainer's active pokémon to the pokémon named.

<trainer>: That's enough! Go <new_pokémon>!

Status

Inflict a status condition if the HP totals are right.

<pokémon> uses <move>!
  • Freeze: Blizzard
  • Paralyze: Thunder Wave
  • Sleep: Sing

Each condition only works if the HP totals are right:

  • Freeze requires the two active pokémon to have matching HP totals.
  • Paralyze requires the two active pokémon to have non-matching HP totals.
  • Sleep requires the opposing active pokémon to have less HP than the pokémon "using" the move.

If a status condition is inflicted, the next command is skipped.

Jump

Jumps code execution to the start of the numbered turn.

<trainer> thinks about turn <number>.

Output

Outputs the HP of the user to the screen

<pokémon> uses <move>!
  • ASCII: Swords Dance
  • Integer: Barrier

The data requested depends on which move was used:

  • ASCII takes in an ASCII character and uses its encoding value.
  • Integer takes in an integer and uses it.

Input

Sets the HP of the opposing pokémon to an input.

<pokémon> uses <move>!
  • ASCII: Growl
  • Integer: Lear

The data requested depends on which move was used:

  • ASCII takes in an ASCII character and uses its encoding value.
  • Integer takes in an integer and uses it.