{
  "guide": "pokemon-heartgold-soulsilver",
  "generated": "2026-07-10",
  "source_repository": "pret/pokeheartgold",
  "source_commit": "814275e4392cc21eef45a04e6dc8d980010ca2b7",
  "asset_fallback": "Pokémon Showdown trainer sprite index",
  "asset_fallback_url": "https://play.pokemonshowdown.com/sprites/trainers/",
  "note": "The current pret/pokeheartgold checkout does not expose the trainer front-sprite archive. Matching 80x80 battle sprites are cached from Pokémon Showdown and labeled as fallback assets. Classes without a trustworthy match use an explicit source-indexed SVG marker, never a fabricated battle sprite.",
  "trainer_count": 129,
  "sprite_count": 117,
  "marker_count": 12,
  "trainers": [
    {
      "class_id": 0,
      "trainer_class": "TRAINERCLASS_PKMN_TRAINER_ETHAN",
      "display_name": "Pokémon Trainer Ethan",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/pkmn-trainer-ethan.png",
      "usage_type": "Player character",
      "alt_text": "Pokémon Trainer Ethan trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/ethan.png"
    },
    {
      "class_id": 1,
      "trainer_class": "TRAINERCLASS_PKMN_TRAINER_LYRA",
      "display_name": "Pokémon Trainer Lyra",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/pkmn-trainer-lyra.png",
      "usage_type": "Player character",
      "alt_text": "Pokémon Trainer Lyra trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/lyra.png"
    },
    {
      "class_id": 2,
      "trainer_class": "TRAINERCLASS_YOUNGSTER",
      "display_name": "Youngster",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/youngster.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Youngster trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/youngster.png"
    },
    {
      "class_id": 3,
      "trainer_class": "TRAINERCLASS_LASS",
      "display_name": "Lass",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/lass.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Lass trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/lass.png"
    },
    {
      "class_id": 4,
      "trainer_class": "TRAINERCLASS_CAMPER",
      "display_name": "Camper",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/camper.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Camper trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/camper.png"
    },
    {
      "class_id": 5,
      "trainer_class": "TRAINERCLASS_PICNICKER",
      "display_name": "Picnicker",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/picnicker.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Picnicker trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/picnicker.png"
    },
    {
      "class_id": 6,
      "trainer_class": "TRAINERCLASS_BUG_CATCHER",
      "display_name": "Bug Catcher",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/bug-catcher.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Bug Catcher trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/bugcatcher.png"
    },
    {
      "class_id": 7,
      "trainer_class": "TRAINERCLASS_AROMA_LADY",
      "display_name": "Aroma Lady",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/aroma-lady.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Aroma Lady trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/aromalady.png"
    },
    {
      "class_id": 8,
      "trainer_class": "TRAINERCLASS_TWINS",
      "display_name": "Twins",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/twins.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Twins trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/twins.png"
    },
    {
      "class_id": 9,
      "trainer_class": "TRAINERCLASS_HIKER",
      "display_name": "Hiker",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/hiker.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Hiker trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/hiker.png"
    },
    {
      "class_id": 10,
      "trainer_class": "TRAINERCLASS_BATTLE_GIRL",
      "display_name": "Battle Girl",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/battle-girl.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Battle Girl trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/battlegirl.png"
    },
    {
      "class_id": 11,
      "trainer_class": "TRAINERCLASS_FISHERMAN",
      "display_name": "Fisherman",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/fisherman.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Fisherman trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/fisherman.png"
    },
    {
      "class_id": 12,
      "trainer_class": "TRAINERCLASS_CYCLIST_M",
      "display_name": "Cyclist M",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/cyclist-m.svg",
      "usage_type": "Regular trainer class",
      "alt_text": "Cyclist M HGSS trainer class marker",
      "source_type": "source-indexed-class-marker",
      "source_url": null
    },
    {
      "class_id": 13,
      "trainer_class": "TRAINERCLASS_CYCLIST_F",
      "display_name": "Cyclist F",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/cyclist-f.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Cyclist F trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/cyclistf.png"
    },
    {
      "class_id": 14,
      "trainer_class": "TRAINERCLASS_BLACK_BELT",
      "display_name": "Black Belt",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/black-belt.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Black Belt trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/blackbelt.png"
    },
    {
      "class_id": 15,
      "trainer_class": "TRAINERCLASS_ARTIST",
      "display_name": "Artist",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/artist.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Artist trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/artist.png"
    },
    {
      "class_id": 16,
      "trainer_class": "TRAINERCLASS_PKMN_BREEDER_M",
      "display_name": "Pokémon Breeder M",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/pkmn-breeder-m.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Pokémon Breeder M trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/pokemonbreeder.png"
    },
    {
      "class_id": 17,
      "trainer_class": "TRAINERCLASS_PKMN_BREEDER_F",
      "display_name": "Pokémon Breeder F",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/pkmn-breeder-f.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Pokémon Breeder F trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/pokemonbreederf.png"
    },
    {
      "class_id": 18,
      "trainer_class": "TRAINERCLASS_COWGIRL",
      "display_name": "Cowgirl",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/cowgirl.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Cowgirl trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/cowgirl.png"
    },
    {
      "class_id": 19,
      "trainer_class": "TRAINERCLASS_JOGGER",
      "display_name": "Jogger",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/jogger.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Jogger trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/jogger.png"
    },
    {
      "class_id": 20,
      "trainer_class": "TRAINERCLASS_POKEFAN_M",
      "display_name": "Pokefan M",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/pokefan-m.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Pokefan M trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/pokefan.png"
    },
    {
      "class_id": 21,
      "trainer_class": "TRAINERCLASS_POKEFAN",
      "display_name": "Pokefan",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/pokefan.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Pokefan trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/pokefanf.png"
    },
    {
      "class_id": 22,
      "trainer_class": "TRAINERCLASS_POKE_KID",
      "display_name": "Poké Kid",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/poke-kid.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Poké Kid trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/pokekid.png"
    },
    {
      "class_id": 23,
      "trainer_class": "TRAINERCLASS_RIVAL",
      "display_name": "Rival",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/rival.png",
      "usage_type": "Rival",
      "alt_text": "Rival trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/silver.png"
    },
    {
      "class_id": 24,
      "trainer_class": "TRAINERCLASS_ACE_TRAINER_M",
      "display_name": "Ace Trainer M",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/ace-trainer-m.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Ace Trainer M trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/acetrainer.png"
    },
    {
      "class_id": 25,
      "trainer_class": "TRAINERCLASS_ACE_TRAINER_F",
      "display_name": "Ace Trainer F",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/ace-trainer-f.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Ace Trainer F trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/acetrainerf.png"
    },
    {
      "class_id": 26,
      "trainer_class": "TRAINERCLASS_WAITRESS",
      "display_name": "Waitress",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/waitress.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Waitress trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/waitress.png"
    },
    {
      "class_id": 27,
      "trainer_class": "TRAINERCLASS_VETERAN",
      "display_name": "Veteran",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/veteran.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Veteran trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/veteran.png"
    },
    {
      "class_id": 28,
      "trainer_class": "TRAINERCLASS_NINJA_BOY",
      "display_name": "Ninja Boy",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/ninja-boy.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Ninja Boy trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/ninjaboy.png"
    },
    {
      "class_id": 29,
      "trainer_class": "TRAINERCLASS_DRAGON_TAMER",
      "display_name": "Dragon Tamer",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/dragon-tamer.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Dragon Tamer trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/dragontamer.png"
    },
    {
      "class_id": 30,
      "trainer_class": "TRAINERCLASS_BIRD_KEEPER",
      "display_name": "Bird Keeper",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/bird-keeper.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Bird Keeper trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/birdkeeper.png"
    },
    {
      "class_id": 31,
      "trainer_class": "TRAINERCLASS_JUGGLER",
      "display_name": "Juggler",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/juggler.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Juggler trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/juggler.png"
    },
    {
      "class_id": 32,
      "trainer_class": "TRAINERCLASS_RICH_BOY",
      "display_name": "Rich Boy",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/rich-boy.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Rich Boy trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/richboy.png"
    },
    {
      "class_id": 33,
      "trainer_class": "TRAINERCLASS_LADY",
      "display_name": "Lady",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/lady.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Lady trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/lady.png"
    },
    {
      "class_id": 34,
      "trainer_class": "TRAINERCLASS_GENTLEMAN",
      "display_name": "Gentleman",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/gentleman.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Gentleman trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/gentleman.png"
    },
    {
      "class_id": 35,
      "trainer_class": "TRAINERCLASS_SOCIALITE",
      "display_name": "Socialite",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/socialite.svg",
      "usage_type": "Regular trainer class",
      "alt_text": "Socialite HGSS trainer class marker",
      "source_type": "source-indexed-class-marker",
      "source_url": null
    },
    {
      "class_id": 36,
      "trainer_class": "TRAINERCLASS_BEAUTY",
      "display_name": "Beauty",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/beauty.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Beauty trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/beauty.png"
    },
    {
      "class_id": 37,
      "trainer_class": "TRAINERCLASS_COLLECTOR",
      "display_name": "Collector",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/collector.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Collector trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/collector.png"
    },
    {
      "class_id": 38,
      "trainer_class": "TRAINERCLASS_POLICEMAN",
      "display_name": "Policeman",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/policeman.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Policeman trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/policeman.png"
    },
    {
      "class_id": 39,
      "trainer_class": "TRAINERCLASS_PKMN_RANGER_M",
      "display_name": "Pokémon Ranger M",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/pkmn-ranger-m.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Pokémon Ranger M trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/pokemonranger.png"
    },
    {
      "class_id": 40,
      "trainer_class": "TRAINERCLASS_PKMN_RANGER_F",
      "display_name": "Pokémon Ranger F",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/pkmn-ranger-f.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Pokémon Ranger F trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/pokemonrangerf.png"
    },
    {
      "class_id": 41,
      "trainer_class": "TRAINERCLASS_SCIENTIST",
      "display_name": "Scientist",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/scientist.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Scientist trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/scientist.png"
    },
    {
      "class_id": 42,
      "trainer_class": "TRAINERCLASS_SWIMMER_M",
      "display_name": "Swimmer M",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/swimmer-m.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Swimmer M trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/swimmer.png"
    },
    {
      "class_id": 43,
      "trainer_class": "TRAINERCLASS_SWIMMER_F",
      "display_name": "Swimmer F",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/swimmer-f.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Swimmer F trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/swimmerf.png"
    },
    {
      "class_id": 44,
      "trainer_class": "TRAINERCLASS_TUBER_M",
      "display_name": "Tuber M",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/tuber-m.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Tuber M trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/tuber.png"
    },
    {
      "class_id": 45,
      "trainer_class": "TRAINERCLASS_TUBER_F",
      "display_name": "Tuber F",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/tuber-f.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Tuber F trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/tuberf.png"
    },
    {
      "class_id": 46,
      "trainer_class": "TRAINERCLASS_SAILOR",
      "display_name": "Sailor",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/sailor.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Sailor trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/sailor.png"
    },
    {
      "class_id": 47,
      "trainer_class": "TRAINERCLASS_KIMONO_GIRL",
      "display_name": "Kimono Girl",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/kimono-girl.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Kimono Girl trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/kimonogirl.png"
    },
    {
      "class_id": 48,
      "trainer_class": "TRAINERCLASS_RUIN_MANIAC",
      "display_name": "Ruin Maniac",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/ruin-maniac.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Ruin Maniac trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/ruinmaniac.png"
    },
    {
      "class_id": 49,
      "trainer_class": "TRAINERCLASS_PSYCHIC_M",
      "display_name": "Psychic M",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/psychic-m.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Psychic M trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/psychic.png"
    },
    {
      "class_id": 50,
      "trainer_class": "TRAINERCLASS_PSYCHIC_F",
      "display_name": "Psychic F",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/psychic-f.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Psychic F trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/psychicf.png"
    },
    {
      "class_id": 51,
      "trainer_class": "TRAINERCLASS_PI",
      "display_name": "Pi",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/pi.svg",
      "usage_type": "Regular trainer class",
      "alt_text": "Pi HGSS trainer class marker",
      "source_type": "source-indexed-class-marker",
      "source_url": null
    },
    {
      "class_id": 52,
      "trainer_class": "TRAINERCLASS_GUITARIST",
      "display_name": "Guitarist",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/guitarist.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Guitarist trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/guitarist.png"
    },
    {
      "class_id": 53,
      "trainer_class": "TRAINERCLASS_ACE_TRAINER_M_GS",
      "display_name": "Ace Trainer M GS",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/ace-trainer-m-gs.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Ace Trainer M GS trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/acetrainer.png"
    },
    {
      "class_id": 54,
      "trainer_class": "TRAINERCLASS_ACE_TRAINER_F_GS",
      "display_name": "Ace Trainer F GS",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/ace-trainer-f-gs.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Ace Trainer F GS trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/acetrainerf.png"
    },
    {
      "class_id": 55,
      "trainer_class": "TRAINERCLASS_TEAM_ROCKET",
      "display_name": "Team Rocket",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/team-rocket.png",
      "usage_type": "Team Rocket",
      "alt_text": "Team Rocket trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/rocketgrunt.png"
    },
    {
      "class_id": 56,
      "trainer_class": "TRAINERCLASS_SKIER",
      "display_name": "Skier",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/skier.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Skier trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/skier.png"
    },
    {
      "class_id": 57,
      "trainer_class": "TRAINERCLASS_ROUGHNECK",
      "display_name": "Roughneck",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/roughneck.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Roughneck trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/roughneck.png"
    },
    {
      "class_id": 58,
      "trainer_class": "TRAINERCLASS_CLOWN",
      "display_name": "Clown",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/clown.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Clown trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/clown.png"
    },
    {
      "class_id": 59,
      "trainer_class": "TRAINERCLASS_WORKER",
      "display_name": "Worker",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/worker.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Worker trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/worker.png"
    },
    {
      "class_id": 60,
      "trainer_class": "TRAINERCLASS_SCHOOL_KID_M",
      "display_name": "School Kid M",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/school-kid-m.png",
      "usage_type": "Regular trainer class",
      "alt_text": "School Kid M trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/schoolkid.png"
    },
    {
      "class_id": 61,
      "trainer_class": "TRAINERCLASS_SCHOOL_KID_F",
      "display_name": "School Kid F",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/school-kid-f.png",
      "usage_type": "Regular trainer class",
      "alt_text": "School Kid F trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/schoolkidf.png"
    },
    {
      "class_id": 62,
      "trainer_class": "TRAINERCLASS_TEAM_ROCKET_F",
      "display_name": "Team Rocket F",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/team-rocket-f.png",
      "usage_type": "Team Rocket",
      "alt_text": "Team Rocket F trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/rocketgruntf.png"
    },
    {
      "class_id": 63,
      "trainer_class": "TRAINERCLASS_BURGLAR",
      "display_name": "Burglar",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/burglar.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Burglar trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/burglar.png"
    },
    {
      "class_id": 64,
      "trainer_class": "TRAINERCLASS_FIREBREATHER",
      "display_name": "Firebreather",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/firebreather.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Firebreather trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/firebreather.png"
    },
    {
      "class_id": 65,
      "trainer_class": "TRAINERCLASS_BIKER",
      "display_name": "Biker",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/biker.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Biker trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/biker.png"
    },
    {
      "class_id": 66,
      "trainer_class": "TRAINERCLASS_LEADER_FALKNER",
      "display_name": "Leader Falkner",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/leader-falkner.png",
      "usage_type": "Gym Leader",
      "alt_text": "Leader Falkner trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/falkner.png"
    },
    {
      "class_id": 67,
      "trainer_class": "TRAINERCLASS_LEADER_BUGSY",
      "display_name": "Leader Bugsy",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/leader-bugsy.png",
      "usage_type": "Gym Leader",
      "alt_text": "Leader Bugsy trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/bugsy.png"
    },
    {
      "class_id": 68,
      "trainer_class": "TRAINERCLASS_POKE_MANIAC",
      "display_name": "Poké Maniac",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/poke-maniac.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Poké Maniac trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/pokemaniac.png"
    },
    {
      "class_id": 69,
      "trainer_class": "TRAINERCLASS_BIRD_KEEPER_GS",
      "display_name": "Bird Keeper GS",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/bird-keeper-gs.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Bird Keeper GS trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/birdkeeper.png"
    },
    {
      "class_id": 70,
      "trainer_class": "TRAINERCLASS_LEADER_WHITNEY",
      "display_name": "Leader Whitney",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/leader-whitney.png",
      "usage_type": "Gym Leader",
      "alt_text": "Leader Whitney trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/whitney.png"
    },
    {
      "class_id": 71,
      "trainer_class": "TRAINERCLASS_RANCHER",
      "display_name": "Rancher",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/rancher.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Rancher trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/rancher.png"
    },
    {
      "class_id": 72,
      "trainer_class": "TRAINERCLASS_LEADER_MORTY",
      "display_name": "Leader Morty",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/leader-morty.png",
      "usage_type": "Gym Leader",
      "alt_text": "Leader Morty trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/morty.png"
    },
    {
      "class_id": 73,
      "trainer_class": "TRAINERCLASS_LEADER_PRYCE",
      "display_name": "Leader Pryce",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/leader-pryce.png",
      "usage_type": "Gym Leader",
      "alt_text": "Leader Pryce trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/pryce.png"
    },
    {
      "class_id": 74,
      "trainer_class": "TRAINERCLASS_LEADER_JASMINE",
      "display_name": "Leader Jasmine",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/leader-jasmine.png",
      "usage_type": "Gym Leader",
      "alt_text": "Leader Jasmine trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/jasmine.png"
    },
    {
      "class_id": 75,
      "trainer_class": "TRAINERCLASS_LEADER_CHUCK",
      "display_name": "Leader Chuck",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/leader-chuck.png",
      "usage_type": "Gym Leader",
      "alt_text": "Leader Chuck trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/chuck.png"
    },
    {
      "class_id": 76,
      "trainer_class": "TRAINERCLASS_LEADER_CLAIR",
      "display_name": "Leader Clair",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/leader-clair.png",
      "usage_type": "Gym Leader",
      "alt_text": "Leader Clair trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/clair.png"
    },
    {
      "class_id": 77,
      "trainer_class": "TRAINERCLASS_TEACHER",
      "display_name": "Teacher",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/teacher.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Teacher trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/teacher.png"
    },
    {
      "class_id": 78,
      "trainer_class": "TRAINERCLASS_SUPER_NERD",
      "display_name": "Super Nerd",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/super-nerd.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Super Nerd trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/supernerd.png"
    },
    {
      "class_id": 79,
      "trainer_class": "TRAINERCLASS_SAGE",
      "display_name": "Sage",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/sage.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Sage trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/sage.png"
    },
    {
      "class_id": 80,
      "trainer_class": "TRAINERCLASS_PARASOL_LADY",
      "display_name": "Parasol Lady",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/parasol-lady.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Parasol Lady trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/parasollady.png"
    },
    {
      "class_id": 81,
      "trainer_class": "TRAINERCLASS_WAITER",
      "display_name": "Waiter",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/waiter.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Waiter trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/waiter.png"
    },
    {
      "class_id": 82,
      "trainer_class": "TRAINERCLASS_MEDIUM",
      "display_name": "Medium",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/medium.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Medium trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/medium.png"
    },
    {
      "class_id": 83,
      "trainer_class": "TRAINERCLASS_CAMERAMAN",
      "display_name": "Cameraman",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/cameraman.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Cameraman trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/cameraman.png"
    },
    {
      "class_id": 84,
      "trainer_class": "TRAINERCLASS_REPORTER",
      "display_name": "Reporter",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/reporter.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Reporter trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/reporter.png"
    },
    {
      "class_id": 85,
      "trainer_class": "TRAINERCLASS_IDOL",
      "display_name": "Idol",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/idol.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Idol trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/idol.png"
    },
    {
      "class_id": 86,
      "trainer_class": "TRAINERCLASS_CHAMPION",
      "display_name": "Champion",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/champion.png",
      "usage_type": "Champion or final boss",
      "alt_text": "Champion trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/lance.png"
    },
    {
      "class_id": 87,
      "trainer_class": "TRAINERCLASS_ELITE_FOUR_WILL",
      "display_name": "Elite Four Will",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/elite-four-will.png",
      "usage_type": "Elite Four",
      "alt_text": "Elite Four Will trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/will.png"
    },
    {
      "class_id": 88,
      "trainer_class": "TRAINERCLASS_ELITE_FOUR_KAREN",
      "display_name": "Elite Four Karen",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/elite-four-karen.png",
      "usage_type": "Elite Four",
      "alt_text": "Elite Four Karen trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/karen.png"
    },
    {
      "class_id": 89,
      "trainer_class": "TRAINERCLASS_ELITE_FOUR_KOGA",
      "display_name": "Elite Four Koga",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/elite-four-koga.png",
      "usage_type": "Elite Four",
      "alt_text": "Elite Four Koga trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/koga.png"
    },
    {
      "class_id": 90,
      "trainer_class": "TRAINERCLASS_PKMN_TRAINER_CHERYL",
      "display_name": "Pokémon Trainer Cheryl",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/pkmn-trainer-cheryl.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Pokémon Trainer Cheryl trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/cheryl.png"
    },
    {
      "class_id": 91,
      "trainer_class": "TRAINERCLASS_PKMN_TRAINER_RILEY",
      "display_name": "Pokémon Trainer Riley",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/pkmn-trainer-riley.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Pokémon Trainer Riley trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/riley.png"
    },
    {
      "class_id": 92,
      "trainer_class": "TRAINERCLASS_PKMN_TRAINER_BUCK",
      "display_name": "Pokémon Trainer Buck",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/pkmn-trainer-buck.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Pokémon Trainer Buck trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/buck.png"
    },
    {
      "class_id": 93,
      "trainer_class": "TRAINERCLASS_PKMN_TRAINER_MIRA",
      "display_name": "Pokémon Trainer Mira",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/pkmn-trainer-mira.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Pokémon Trainer Mira trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/mira.png"
    },
    {
      "class_id": 94,
      "trainer_class": "TRAINERCLASS_PKMN_TRAINER_MARLEY",
      "display_name": "Pokémon Trainer Marley",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/pkmn-trainer-marley.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Pokémon Trainer Marley trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/marley.png"
    },
    {
      "class_id": 95,
      "trainer_class": "TRAINERCLASS_PKMN_TRAINER_FTR_LUCAS",
      "display_name": "Pokémon Trainer Ftr Lucas",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/pkmn-trainer-ftr-lucas.svg",
      "usage_type": "Regular trainer class",
      "alt_text": "Pokémon Trainer Ftr Lucas HGSS trainer class marker",
      "source_type": "source-indexed-class-marker",
      "source_url": null
    },
    {
      "class_id": 96,
      "trainer_class": "TRAINERCLASS_PKMN_TRAINER_FTR_DAWN",
      "display_name": "Pokémon Trainer Ftr Dawn",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/pkmn-trainer-ftr-dawn.svg",
      "usage_type": "Regular trainer class",
      "alt_text": "Pokémon Trainer Ftr Dawn HGSS trainer class marker",
      "source_type": "source-indexed-class-marker",
      "source_url": null
    },
    {
      "class_id": 97,
      "trainer_class": "TRAINERCLASS_TOWER_TYCOON",
      "display_name": "Tower Tycoon",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/tower-tycoon.png",
      "usage_type": "Frontier Brain",
      "alt_text": "Tower Tycoon trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/palmer.png"
    },
    {
      "class_id": 98,
      "trainer_class": "TRAINERCLASS_LEADER_BROCK",
      "display_name": "Leader Brock",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/leader-brock.png",
      "usage_type": "Gym Leader",
      "alt_text": "Leader Brock trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/brock.png"
    },
    {
      "class_id": 99,
      "trainer_class": "TRAINERCLASS_HALL_MATRON",
      "display_name": "Hall Matron",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/hall-matron.png",
      "usage_type": "Frontier Brain",
      "alt_text": "Hall Matron trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/argenta.png"
    },
    {
      "class_id": 100,
      "trainer_class": "TRAINERCLASS_FACTORY_HEAD",
      "display_name": "Factory Head",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/factory-head.png",
      "usage_type": "Frontier Brain",
      "alt_text": "Factory Head trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/thorton.png"
    },
    {
      "class_id": 101,
      "trainer_class": "TRAINERCLASS_ARCADE_STAR",
      "display_name": "Arcade Star",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/arcade-star.png",
      "usage_type": "Frontier Brain",
      "alt_text": "Arcade Star trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/dahlia.png"
    },
    {
      "class_id": 102,
      "trainer_class": "TRAINERCLASS_CASTLE_VALET",
      "display_name": "Castle Valet",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/castle-valet.png",
      "usage_type": "Frontier Brain",
      "alt_text": "Castle Valet trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/darach.png"
    },
    {
      "class_id": 103,
      "trainer_class": "TRAINERCLASS_LEADER_MISTY",
      "display_name": "Leader Misty",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/leader-misty.png",
      "usage_type": "Gym Leader",
      "alt_text": "Leader Misty trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/misty.png"
    },
    {
      "class_id": 104,
      "trainer_class": "TRAINERCLASS_LEADER_LT_SURGE",
      "display_name": "Leader Lt Surge",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/leader-lt-surge.png",
      "usage_type": "Gym Leader",
      "alt_text": "Leader Lt Surge trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/ltsurge.png"
    },
    {
      "class_id": 105,
      "trainer_class": "TRAINERCLASS_LEADER_ERIKA",
      "display_name": "Leader Erika",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/leader-erika.png",
      "usage_type": "Gym Leader",
      "alt_text": "Leader Erika trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/erika.png"
    },
    {
      "class_id": 106,
      "trainer_class": "TRAINERCLASS_LEADER_JANINE",
      "display_name": "Leader Janine",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/leader-janine.png",
      "usage_type": "Gym Leader",
      "alt_text": "Leader Janine trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/janine.png"
    },
    {
      "class_id": 107,
      "trainer_class": "TRAINERCLASS_LEADER_SABRINA",
      "display_name": "Leader Sabrina",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/leader-sabrina.png",
      "usage_type": "Gym Leader",
      "alt_text": "Leader Sabrina trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/sabrina.png"
    },
    {
      "class_id": 108,
      "trainer_class": "TRAINERCLASS_LEADER_BLAINE",
      "display_name": "Leader Blaine",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/leader-blaine.png",
      "usage_type": "Gym Leader",
      "alt_text": "Leader Blaine trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/blaine.png"
    },
    {
      "class_id": 109,
      "trainer_class": "TRAINERCLASS_PKMN_TRAINER_RED",
      "display_name": "Pokémon Trainer Red",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/pkmn-trainer-red.png",
      "usage_type": "Champion or final boss",
      "alt_text": "Pokémon Trainer Red trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/red.png"
    },
    {
      "class_id": 110,
      "trainer_class": "TRAINERCLASS_LEADER_BLUE",
      "display_name": "Leader Blue",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/leader-blue.png",
      "usage_type": "Gym Leader",
      "alt_text": "Leader Blue trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/blue.png"
    },
    {
      "class_id": 111,
      "trainer_class": "TRAINERCLASS_ELDER",
      "display_name": "Elder",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/elder.svg",
      "usage_type": "Regular trainer class",
      "alt_text": "Elder HGSS trainer class marker",
      "source_type": "source-indexed-class-marker",
      "source_url": null
    },
    {
      "class_id": 112,
      "trainer_class": "TRAINERCLASS_ELITE_FOUR_BRUNO",
      "display_name": "Elite Four Bruno",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/elite-four-bruno.png",
      "usage_type": "Elite Four",
      "alt_text": "Elite Four Bruno trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/bruno.png"
    },
    {
      "class_id": 113,
      "trainer_class": "TRAINERCLASS_SCIENTIST_GS",
      "display_name": "Scientist GS",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/scientist-gs.svg",
      "usage_type": "Regular trainer class",
      "alt_text": "Scientist GS HGSS trainer class marker",
      "source_type": "source-indexed-class-marker",
      "source_url": null
    },
    {
      "class_id": 114,
      "trainer_class": "TRAINERCLASS_EXECUTIVE_ARIANA",
      "display_name": "Executive Ariana",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/executive-ariana.png",
      "usage_type": "Team Rocket",
      "alt_text": "Executive Ariana trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/ariana.png"
    },
    {
      "class_id": 115,
      "trainer_class": "TRAINERCLASS_BOARDER",
      "display_name": "Boarder",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/boarder.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Boarder trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/boarder.png"
    },
    {
      "class_id": 116,
      "trainer_class": "TRAINERCLASS_EXECUTIVE_ARCHER",
      "display_name": "Executive Archer",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/executive-archer.png",
      "usage_type": "Team Rocket",
      "alt_text": "Executive Archer trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/archer.png"
    },
    {
      "class_id": 117,
      "trainer_class": "TRAINERCLASS_EXECUTIVE_PROTON",
      "display_name": "Executive Proton",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/executive-proton.png",
      "usage_type": "Team Rocket",
      "alt_text": "Executive Proton trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/proton.png"
    },
    {
      "class_id": 118,
      "trainer_class": "TRAINERCLASS_EXECUTIVE_PETREL",
      "display_name": "Executive Petrel",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/executive-petrel.png",
      "usage_type": "Team Rocket",
      "alt_text": "Executive Petrel trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/petrel.png"
    },
    {
      "class_id": 119,
      "trainer_class": "TRAINERCLASS_PASSERBY",
      "display_name": "Passerby",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/passerby.svg",
      "usage_type": "Regular trainer class",
      "alt_text": "Passerby HGSS trainer class marker",
      "source_type": "source-indexed-class-marker",
      "source_url": null
    },
    {
      "class_id": 120,
      "trainer_class": "TRAINERCLASS_MYSTERY_MAN",
      "display_name": "Mystery Man",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/mystery-man.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Mystery Man trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/eusine.png"
    },
    {
      "class_id": 121,
      "trainer_class": "TRAINERCLASS_DOUBLE_TEAM",
      "display_name": "Double Team",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/double-team.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Double Team trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/doubleteam.png"
    },
    {
      "class_id": 122,
      "trainer_class": "TRAINERCLASS_YOUNG_COUPLE",
      "display_name": "Young Couple",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/young-couple.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Young Couple trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/youngcouple.png"
    },
    {
      "class_id": 123,
      "trainer_class": "TRAINERCLASS_PKMN_TRAINER_LANCE",
      "display_name": "Pokémon Trainer Lance",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/pkmn-trainer-lance.png",
      "usage_type": "Regular trainer class",
      "alt_text": "Pokémon Trainer Lance trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/lance.png"
    },
    {
      "class_id": 124,
      "trainer_class": "TRAINERCLASS_ROCKET_BOSS",
      "display_name": "Rocket Boss",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/rocket-boss.png",
      "usage_type": "Team Rocket",
      "alt_text": "Rocket Boss trainer battle sprite",
      "source_type": "fallback-battle-sprite",
      "source_url": "https://play.pokemonshowdown.com/sprites/trainers/giovanni.png"
    },
    {
      "class_id": 125,
      "trainer_class": "TRAINERCLASS_PKMN_TRAINER_LUCAS_DP",
      "display_name": "Pokémon Trainer Lucas Dp",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/pkmn-trainer-lucas-dp.svg",
      "usage_type": "Regular trainer class",
      "alt_text": "Pokémon Trainer Lucas Dp HGSS trainer class marker",
      "source_type": "source-indexed-class-marker",
      "source_url": null
    },
    {
      "class_id": 126,
      "trainer_class": "TRAINERCLASS_PKMN_TRAINER_DAWN_DP",
      "display_name": "Pokémon Trainer Dawn Dp",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/pkmn-trainer-dawn-dp.svg",
      "usage_type": "Regular trainer class",
      "alt_text": "Pokémon Trainer Dawn Dp HGSS trainer class marker",
      "source_type": "source-indexed-class-marker",
      "source_url": null
    },
    {
      "class_id": 127,
      "trainer_class": "TRAINERCLASS_PKMN_TRAINER_LUCAS_PT",
      "display_name": "Pokémon Trainer Lucas Pt",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/pkmn-trainer-lucas-pt.svg",
      "usage_type": "Regular trainer class",
      "alt_text": "Pokémon Trainer Lucas Pt HGSS trainer class marker",
      "source_type": "source-indexed-class-marker",
      "source_url": null
    },
    {
      "class_id": 128,
      "trainer_class": "TRAINERCLASS_PKMN_TRAINER_DAWN_PT",
      "display_name": "Pokémon Trainer Dawn Pt",
      "asset_filename": "/assets/pokemon-heartgold-soulsilver/trainers/pkmn-trainer-dawn-pt.svg",
      "usage_type": "Regular trainer class",
      "alt_text": "Pokémon Trainer Dawn Pt HGSS trainer class marker",
      "source_type": "source-indexed-class-marker",
      "source_url": null
    }
  ]
}
