diff --git a/dev_scripts/competitive_defines/rename_subfolders.py b/dev_scripts/competitive_defines/rename_subfolders.py index 5b818b5f7d..3b0177a9bd 100644 --- a/dev_scripts/competitive_defines/rename_subfolders.py +++ b/dev_scripts/competitive_defines/rename_subfolders.py @@ -1,21 +1,21 @@ -import glob -import re -import json -import os -import subprocess - -def rename_subdirs(rootDir, old, new): - for root, dirs, files in os.walk(rootDir): - for name in files: - originalName = os.path.join(root, name) - if root.endswith(old) and os.path.isfile(originalName): - newName = originalName.replace(old + '/', new + '/') - print(originalName + " -> " + newName) - if (not os.path.isdir(root.replace(old, '') + new)): - os.mkdir(root.replace(old, '') + new) - os.rename(originalName, newName) - -rename_subdirs("graphics/pokemon", '/alolan', "/alola") -rename_subdirs("graphics/pokemon", '/galarian', "/galar") -rename_subdirs("graphics/pokemon", '/hisuian', "/hisui") -rename_subdirs("graphics/pokemon", '/gigantamax', "/gmax") +import glob +import re +import json +import os +import subprocess + +def rename_subdirs(rootDir, old, new): + for root, dirs, files in os.walk(rootDir): + for name in files: + originalName = os.path.join(root, name) + if root.endswith(old) and os.path.isfile(originalName): + newName = originalName.replace(old + '/', new + '/') + print(originalName + " -> " + newName) + if (not os.path.isdir(root.replace(old, '') + new)): + os.mkdir(root.replace(old, '') + new) + os.rename(originalName, newName) + +rename_subdirs("graphics/pokemon", '/alolan', "/alola") +rename_subdirs("graphics/pokemon", '/galarian', "/galar") +rename_subdirs("graphics/pokemon", '/hisuian', "/hisui") +rename_subdirs("graphics/pokemon", '/gigantamax', "/gmax") diff --git a/dev_scripts/followers/extract_sprites.py b/dev_scripts/followers/extract_sprites.py index 32e21aaa52..0e12a83a47 100644 --- a/dev_scripts/followers/extract_sprites.py +++ b/dev_scripts/followers/extract_sprites.py @@ -1,110 +1,110 @@ -#!/usr/bin/env python3 -""" Extract sprites from HGSS follower spritesheets. """ -import os.path -import subprocess -import sys -from glob import glob - -import png - - -SPRITESHEETS = [('gen1.png', 15, 11, 1)] -output_dir = 'sprites' -index_to_name = {} -with open('names.txt', 'r') as f: - for line in f: - index, name = line.split(' ')[:2] - name = name.strip() - index_to_name[int(index)] = name.lower() -name_to_index = {v: k for k, v in index_to_name.items()} -PKMN_GRAPHICS = os.path.join('graphics', 'pokemon') - - -def extract_sprites(spritesheet): - path, width, height, offset = spritesheet - for y in range(height): - for x in range(width): - if x == 3 and y == 0 or x == 10 and y == 1: - continue - output_path = os.path.join(output_dir, f'{offset:03d}.png') - subprocess.run(['convert', '-extract', f'64x128+{x*(64+1)}+{y*(128+1)}', path, output_path], check=True) - offset += 1 - - -def stack_sprite(name, path): - joinp = os.path.join - frames = [joinp(path, 'down', name), joinp(path, 'down', 'frame2', name), - joinp(path, 'up', name), joinp(path, 'up', 'frame2', name), - joinp(path, 'left', name), joinp(path, 'left', 'frame2', name)] - output = joinp(path, name) - subprocess.run(['convert'] + frames + ['+append', output], check=True) - print(f'Stacked {output}') - -def canonicalize_names(): - for path in glob('overworld/**/*.png', recursive=True): - head, tail = os.path.split(path) - name, ext = os.path.splitext(tail) - try: - num = int(name) - except ValueError: - continue - new_name = f'{num:03d}' - new_path = os.path.join(head, new_name+ext) - os.rename(path, new_path) - print(path, '->', new_path) - -def closest_color(c, palette): - min_d = float('inf') - best = 0 - r1, g1, b1 = c - for i, (r2, g2, b2) in enumerate(palette[1:], 1): - # Color diff from https://stackoverflow.com/questions/1847092/given-an-rgb-value-what-would-be-the-best-way-to-find-the-closest-match-in-the-d - d = ((r2-r1)*0.30)**2 + ((g2-g1)*0.59)**2 + ((b2-b1)*0.11)**2 - if d < min_d: - min_d = d - best = i - return best - -def apply_palette(palette_file, input_file, output_file): # Apply one file's palette to another - plt = png.Reader(palette_file) - plt.read() - target_palette = tuple(c[:3] for c in plt.palette()) - inp = png.Reader(input_file) - w, h, rows, _ = inp.read() - src_palette = tuple(c[:3] for c in inp.palette()) - with open(output_file, 'wb') as f: - new_rows = [] - for row in rows: - new_rows.append([closest_color(src_palette[c], target_palette) if c else 0 for c in row]) - w = png.Writer(width=w, height=h, bitdepth=4, palette=target_palette) - w.write(f, new_rows) - -def paletteify(path, output_path=None): - output_path = output_path or path - joinp = os.path.join - _, tail = os.path.split(path) - species, _ = os.path.splitext(tail) - front = png.Reader(joinp(PKMN_GRAPHICS, species, 'anim_front.png')) - front.read() - target_palette = tuple(c[:3] for c in front.palette()) - r, g, b = target_palette[0] - color = f'rgb({r},{g},{b})' - # Strip alpha color - subprocess.run(['convert', path, '-background', color, '-alpha', 'remove', output_path], check=True) - apply_palette(joinp(PKMN_GRAPHICS, species, 'anim_front.png'), output_path, output_path) - -# Sprites from https://veekun.com/dex/downloads - -if __name__ == '__main__': - args = sys.argv[1:] - if args: - paletteify(args[0]) - else: - for path in sorted(glob('overworld/*.png')): - _, tail = os.path.split(path) - name, _ = os.path.splitext(tail) - output_path = os.path.join('graphics/object_events/pics/pokemon', f'{name}.png') - try: - paletteify(path, output_path) - except Exception as e: - print(name, e.__class__.__name__, e, file=sys.stderr) +#!/usr/bin/env python3 +""" Extract sprites from HGSS follower spritesheets. """ +import os.path +import subprocess +import sys +from glob import glob + +import png + + +SPRITESHEETS = [('gen1.png', 15, 11, 1)] +output_dir = 'sprites' +index_to_name = {} +with open('names.txt', 'r') as f: + for line in f: + index, name = line.split(' ')[:2] + name = name.strip() + index_to_name[int(index)] = name.lower() +name_to_index = {v: k for k, v in index_to_name.items()} +PKMN_GRAPHICS = os.path.join('graphics', 'pokemon') + + +def extract_sprites(spritesheet): + path, width, height, offset = spritesheet + for y in range(height): + for x in range(width): + if x == 3 and y == 0 or x == 10 and y == 1: + continue + output_path = os.path.join(output_dir, f'{offset:03d}.png') + subprocess.run(['convert', '-extract', f'64x128+{x*(64+1)}+{y*(128+1)}', path, output_path], check=True) + offset += 1 + + +def stack_sprite(name, path): + joinp = os.path.join + frames = [joinp(path, 'down', name), joinp(path, 'down', 'frame2', name), + joinp(path, 'up', name), joinp(path, 'up', 'frame2', name), + joinp(path, 'left', name), joinp(path, 'left', 'frame2', name)] + output = joinp(path, name) + subprocess.run(['convert'] + frames + ['+append', output], check=True) + print(f'Stacked {output}') + +def canonicalize_names(): + for path in glob('overworld/**/*.png', recursive=True): + head, tail = os.path.split(path) + name, ext = os.path.splitext(tail) + try: + num = int(name) + except ValueError: + continue + new_name = f'{num:03d}' + new_path = os.path.join(head, new_name+ext) + os.rename(path, new_path) + print(path, '->', new_path) + +def closest_color(c, palette): + min_d = float('inf') + best = 0 + r1, g1, b1 = c + for i, (r2, g2, b2) in enumerate(palette[1:], 1): + # Color diff from https://stackoverflow.com/questions/1847092/given-an-rgb-value-what-would-be-the-best-way-to-find-the-closest-match-in-the-d + d = ((r2-r1)*0.30)**2 + ((g2-g1)*0.59)**2 + ((b2-b1)*0.11)**2 + if d < min_d: + min_d = d + best = i + return best + +def apply_palette(palette_file, input_file, output_file): # Apply one file's palette to another + plt = png.Reader(palette_file) + plt.read() + target_palette = tuple(c[:3] for c in plt.palette()) + inp = png.Reader(input_file) + w, h, rows, _ = inp.read() + src_palette = tuple(c[:3] for c in inp.palette()) + with open(output_file, 'wb') as f: + new_rows = [] + for row in rows: + new_rows.append([closest_color(src_palette[c], target_palette) if c else 0 for c in row]) + w = png.Writer(width=w, height=h, bitdepth=4, palette=target_palette) + w.write(f, new_rows) + +def paletteify(path, output_path=None): + output_path = output_path or path + joinp = os.path.join + _, tail = os.path.split(path) + species, _ = os.path.splitext(tail) + front = png.Reader(joinp(PKMN_GRAPHICS, species, 'anim_front.png')) + front.read() + target_palette = tuple(c[:3] for c in front.palette()) + r, g, b = target_palette[0] + color = f'rgb({r},{g},{b})' + # Strip alpha color + subprocess.run(['convert', path, '-background', color, '-alpha', 'remove', output_path], check=True) + apply_palette(joinp(PKMN_GRAPHICS, species, 'anim_front.png'), output_path, output_path) + +# Sprites from https://veekun.com/dex/downloads + +if __name__ == '__main__': + args = sys.argv[1:] + if args: + paletteify(args[0]) + else: + for path in sorted(glob('overworld/*.png')): + _, tail = os.path.split(path) + name, _ = os.path.splitext(tail) + output_path = os.path.join('graphics/object_events/pics/pokemon', f'{name}.png') + try: + paletteify(path, output_path) + except Exception as e: + print(name, e.__class__.__name__, e, file=sys.stderr) diff --git a/dev_scripts/followers/follower_emotions.py b/dev_scripts/followers/follower_emotions.py index 5226348031..56ad95c132 100644 --- a/dev_scripts/followers/follower_emotions.py +++ b/dev_scripts/followers/follower_emotions.py @@ -1,50 +1,50 @@ -""" Processes & outputs follower emotion messages """ -import sys -import re -import textwrap - -blank_regex = re.compile(r'\(?_+\)?') - - -# Converts a series of message lines to a better format -def convert_messages(infile, outfile='emotions.txt'): - with open(infile, 'r') as f_in, open(outfile, 'w') as f_out: - for line in f_in: - line = line.rstrip('\n') - if line and line[0] == '-': - line = line[1:] - line = line.lstrip() - if not line: - continue - line = blank_regex.sub('{STR_VAR_1}', line) - if line[-1] not in ('.', '?', '!', ':'): - line += '.' - print(line) - f_out.write('\n' + line) - -# Prepares a string for field-message display, performing line-wrapping, etc -# Does not add a terminator, as this is done by _("") -def prepare_string(s): - lines = textwrap.wrap(s, width=36) # Width of message window - s = lines[0] - for i, line in enumerate(lines[1:]): - ending = r'\p' if i % 2 else r'\n' - s += ending + line - return s - - -# Exports up to n messages in C format to outfile -def export_messages(infile, outfile, n=None, indent=0, start=0): - with open(infile, 'r') as f_in: - lines = f_in.readlines() - if n is not None: - lines = lines[:n] - with open(outfile, 'w') as f_out: - codelines = [' '*indent + f'static const u8 sCondMsg{start+i:02d}[] = _("{prepare_string(s)}");' for i, s in enumerate(lines)] - f_out.write('\n'.join(codelines)) - print(f'{len(lines)} lines written') - return len(lines) - - -if __name__ == '__main__': - export_messages('emotions.txt', 'emotions.h', n=1, start=7) +""" Processes & outputs follower emotion messages """ +import sys +import re +import textwrap + +blank_regex = re.compile(r'\(?_+\)?') + + +# Converts a series of message lines to a better format +def convert_messages(infile, outfile='emotions.txt'): + with open(infile, 'r') as f_in, open(outfile, 'w') as f_out: + for line in f_in: + line = line.rstrip('\n') + if line and line[0] == '-': + line = line[1:] + line = line.lstrip() + if not line: + continue + line = blank_regex.sub('{STR_VAR_1}', line) + if line[-1] not in ('.', '?', '!', ':'): + line += '.' + print(line) + f_out.write('\n' + line) + +# Prepares a string for field-message display, performing line-wrapping, etc +# Does not add a terminator, as this is done by _("") +def prepare_string(s): + lines = textwrap.wrap(s, width=36) # Width of message window + s = lines[0] + for i, line in enumerate(lines[1:]): + ending = r'\p' if i % 2 else r'\n' + s += ending + line + return s + + +# Exports up to n messages in C format to outfile +def export_messages(infile, outfile, n=None, indent=0, start=0): + with open(infile, 'r') as f_in: + lines = f_in.readlines() + if n is not None: + lines = lines[:n] + with open(outfile, 'w') as f_out: + codelines = [' '*indent + f'static const u8 sCondMsg{start+i:02d}[] = _("{prepare_string(s)}");' for i, s in enumerate(lines)] + f_out.write('\n'.join(codelines)) + print(f'{len(lines)} lines written') + return len(lines) + + +if __name__ == '__main__': + export_messages('emotions.txt', 'emotions.h', n=1, start=7) diff --git a/dev_scripts/followers/front_palette.py b/dev_scripts/followers/front_palette.py index e16521dbc0..d0486ba51d 100644 --- a/dev_scripts/followers/front_palette.py +++ b/dev_scripts/followers/front_palette.py @@ -1,77 +1,77 @@ -#!/usr/bin/env python3 -""" Extract sprites from HGSS follower spritesheets. """ -import os.path -from os.path import join as joinp -import subprocess -import sys -from glob import glob - -import png -from tqdm import tqdm - -import shutil - -def stack_sprite(name, path): - frames = [joinp(path, 'down', name), joinp(path, 'down', 'frame2', name), - joinp(path, 'up', name), joinp(path, 'up', 'frame2', name), - joinp(path, 'left', name), joinp(path, 'left', 'frame2', name)] - output = joinp(path, name) - subprocess.run(['convert'] + frames + ['+append', output], check=True) - print(f'Stacked {output}') - -def closest_color(c, palette): - min_d = float('inf') - best = 0 - r1, g1, b1 = c - for i, (r2, g2, b2) in enumerate(palette[1:], 1): - # Color diff from https://stackoverflow.com/questions/1847092/given-an-rgb-value-what-would-be-the-best-way-to-find-the-closest-match-in-the-d - d = ((r2-r1)*0.30)**2 + ((g2-g1)*0.59)**2 + ((b2-b1)*0.11)**2 - if d < min_d: - min_d = d - best = i - return best - -def apply_palette(palette_file, input_file, output_file): # Apply one file's palette to another - plt = png.Reader(palette_file) - plt.read() - target_palette = tuple(c[:3] for c in plt.palette()) - inp = png.Reader(input_file) - w, h, rows, info = inp.read() - src_palette = tuple(c[:3] for c in inp.palette()) - new_rows = [[closest_color(src_palette[c][:3], target_palette) if c else 0 for c in row] for row in rows] - with open(output_file, 'wb') as f: - w = png.Writer(width=w, height=h, bitdepth=4, palette=target_palette) - w.write(f, new_rows) - -# Sprites from https://veekun.com/dex/downloads - -def apply_front_palettes(ow_dir, project_root=''): - mon_graphics = joinp(project_root, 'graphics', 'pokemon') - for x in os.walk(ow_dir): - current_dir = x[0] - sub_dir = current_dir[len(ow_dir) + 1:1000] - t = tqdm(sorted(glob(joinp(current_dir, '*.png')))) - spaces = 0 - for path in t: - name, _ = os.path.splitext(os.path.basename(path)) - name = joinp(sub_dir, name) - # old_path = joinp(project_root, 'graphics', 'object_events', 'pics', 'pokemon', f'{name}.png') - # new_path = joinp(project_root, 'graphics', 'object_events', 'pics', 'pokemon', name, 'follower.png') - # os.mkdir(joinp(project_root, 'graphics', 'object_events', 'pics', 'pokemon', name)) - # shutil.move(old_path, new_path) - spaces = min(max(len(name), spaces), 10) - t.set_description(name + ' '*(spaces-len(name))) - output_path = joinp(project_root, 'graphics', 'object_events', 'pics', 'pokemon', f'{name}.png') - palette_path = joinp(mon_graphics, name, 'anim_front.png') - try: - apply_palette(palette_path, path, output_path) - except Exception as e: - palette_path = joinp(mon_graphics, name, 'front.png') - try: - apply_palette(palette_path, path, output_path) - except Exception as e2: - t.write(f'{name}: {e2.__class__.__name__}: {e2}', file=sys.stderr) - - -if __name__ == '__main__': - apply_front_palettes('graphics/object_events/pics/pokemon') +#!/usr/bin/env python3 +""" Extract sprites from HGSS follower spritesheets. """ +import os.path +from os.path import join as joinp +import subprocess +import sys +from glob import glob + +import png +from tqdm import tqdm + +import shutil + +def stack_sprite(name, path): + frames = [joinp(path, 'down', name), joinp(path, 'down', 'frame2', name), + joinp(path, 'up', name), joinp(path, 'up', 'frame2', name), + joinp(path, 'left', name), joinp(path, 'left', 'frame2', name)] + output = joinp(path, name) + subprocess.run(['convert'] + frames + ['+append', output], check=True) + print(f'Stacked {output}') + +def closest_color(c, palette): + min_d = float('inf') + best = 0 + r1, g1, b1 = c + for i, (r2, g2, b2) in enumerate(palette[1:], 1): + # Color diff from https://stackoverflow.com/questions/1847092/given-an-rgb-value-what-would-be-the-best-way-to-find-the-closest-match-in-the-d + d = ((r2-r1)*0.30)**2 + ((g2-g1)*0.59)**2 + ((b2-b1)*0.11)**2 + if d < min_d: + min_d = d + best = i + return best + +def apply_palette(palette_file, input_file, output_file): # Apply one file's palette to another + plt = png.Reader(palette_file) + plt.read() + target_palette = tuple(c[:3] for c in plt.palette()) + inp = png.Reader(input_file) + w, h, rows, info = inp.read() + src_palette = tuple(c[:3] for c in inp.palette()) + new_rows = [[closest_color(src_palette[c][:3], target_palette) if c else 0 for c in row] for row in rows] + with open(output_file, 'wb') as f: + w = png.Writer(width=w, height=h, bitdepth=4, palette=target_palette) + w.write(f, new_rows) + +# Sprites from https://veekun.com/dex/downloads + +def apply_front_palettes(ow_dir, project_root=''): + mon_graphics = joinp(project_root, 'graphics', 'pokemon') + for x in os.walk(ow_dir): + current_dir = x[0] + sub_dir = current_dir[len(ow_dir) + 1:1000] + t = tqdm(sorted(glob(joinp(current_dir, '*.png')))) + spaces = 0 + for path in t: + name, _ = os.path.splitext(os.path.basename(path)) + name = joinp(sub_dir, name) + # old_path = joinp(project_root, 'graphics', 'object_events', 'pics', 'pokemon', f'{name}.png') + # new_path = joinp(project_root, 'graphics', 'object_events', 'pics', 'pokemon', name, 'follower.png') + # os.mkdir(joinp(project_root, 'graphics', 'object_events', 'pics', 'pokemon', name)) + # shutil.move(old_path, new_path) + spaces = min(max(len(name), spaces), 10) + t.set_description(name + ' '*(spaces-len(name))) + output_path = joinp(project_root, 'graphics', 'object_events', 'pics', 'pokemon', f'{name}.png') + palette_path = joinp(mon_graphics, name, 'anim_front.png') + try: + apply_palette(palette_path, path, output_path) + except Exception as e: + palette_path = joinp(mon_graphics, name, 'front.png') + try: + apply_palette(palette_path, path, output_path) + except Exception as e2: + t.write(f'{name}: {e2.__class__.__name__}: {e2}', file=sys.stderr) + + +if __name__ == '__main__': + apply_front_palettes('graphics/object_events/pics/pokemon') diff --git a/dev_scripts/followers/palette.py b/dev_scripts/followers/palette.py index 5fbcb48d4b..a5f926358a 100644 --- a/dev_scripts/followers/palette.py +++ b/dev_scripts/followers/palette.py @@ -1,26 +1,26 @@ -#!/usr/bin/python3 -""" Extract a GBA-compatible palette from a PNG. """ -import sys -import os.path -import png - -PAL_PRELUDE = 'JASC-PAL\n0100\n' - - -def extract_palette(path): - r = png.Reader(path) - r.read() - root, _ = os.path.splitext(path) - out_path = root + '.pal' - with open(out_path, 'w', newline='\r\n') as f: - f.write(PAL_PRELUDE) - colors = r.palette() - if len(colors) < 16: - colors += [(0, 0, 0) for _ in range(16-len(colors))] - f.write(f'{len(colors)}\n') - for r, g, b in colors: - f.write(f'{r} {g} {b}\n') - - -if __name__ == '__main__': - extract_palette(*sys.argv[1:]) +#!/usr/bin/python3 +""" Extract a GBA-compatible palette from a PNG. """ +import sys +import os.path +import png + +PAL_PRELUDE = 'JASC-PAL\n0100\n' + + +def extract_palette(path): + r = png.Reader(path) + r.read() + root, _ = os.path.splitext(path) + out_path = root + '.pal' + with open(out_path, 'w', newline='\r\n') as f: + f.write(PAL_PRELUDE) + colors = r.palette() + if len(colors) < 16: + colors += [(0, 0, 0) for _ in range(16-len(colors))] + f.write(f'{len(colors)}\n') + for r, g, b in colors: + f.write(f'{r} {g} {b}\n') + + +if __name__ == '__main__': + extract_palette(*sys.argv[1:]) diff --git a/dev_scripts/followers/rename_files_of_same_name.py b/dev_scripts/followers/rename_files_of_same_name.py index 5c963b6a80..e4a5560d16 100644 --- a/dev_scripts/followers/rename_files_of_same_name.py +++ b/dev_scripts/followers/rename_files_of_same_name.py @@ -1,24 +1,24 @@ -import glob -import re -import json -import os -import subprocess - -# THIS IS A TEMPORARY SCRIPT MADE TO RENAME FILES WITH THE "FOLLOWER" NAME TO "OVERWORLD", -# AS THESE GRAPHICS CAN ALSO BE USED OUTSIDE THE FOLLOWER FEATURE. -# -# I'M SAVING IT HERE IN CASE IT'S NEEDED SOMEWHERE IN THE FUTURE, THOUGH TWEAKING MIGHT BE NEEDED. -# - AsparagusEduardo - -def rename_files(dir, old, new): - for root, dirs, files in os.walk(dir): - for name in files: - if name.endswith(old): - originalName = os.path.join(root, name) - newName = originalName.replace(old, new) - print(originalName + " -> " + newName) - os.rename(originalName, newName) - -rename_files("graphics/pokemon", 'follower.png', "overworld.png") -rename_files("graphics/pokemon", 'follow_normal.pal', "overworld_normal.pal") -rename_files("graphics/pokemon", 'follow_shiny.pal', "overworld_shiny.pal") +import glob +import re +import json +import os +import subprocess + +# THIS IS A TEMPORARY SCRIPT MADE TO RENAME FILES WITH THE "FOLLOWER" NAME TO "OVERWORLD", +# AS THESE GRAPHICS CAN ALSO BE USED OUTSIDE THE FOLLOWER FEATURE. +# +# I'M SAVING IT HERE IN CASE IT'S NEEDED SOMEWHERE IN THE FUTURE, THOUGH TWEAKING MIGHT BE NEEDED. +# - AsparagusEduardo + +def rename_files(dir, old, new): + for root, dirs, files in os.walk(dir): + for name in files: + if name.endswith(old): + originalName = os.path.join(root, name) + newName = originalName.replace(old, new) + print(originalName + " -> " + newName) + os.rename(originalName, newName) + +rename_files("graphics/pokemon", 'follower.png', "overworld.png") +rename_files("graphics/pokemon", 'follow_normal.pal', "overworld_normal.pal") +rename_files("graphics/pokemon", 'follow_shiny.pal', "overworld_shiny.pal") diff --git a/dev_scripts/followers/rename_to_graphics_pokemon.py b/dev_scripts/followers/rename_to_graphics_pokemon.py index a89348ddb4..902048b399 100644 --- a/dev_scripts/followers/rename_to_graphics_pokemon.py +++ b/dev_scripts/followers/rename_to_graphics_pokemon.py @@ -1,64 +1,64 @@ -import glob -import re -import json -import os -import subprocess - -# THIS IS A TEMPORARY SCRIPT MADE TO MOVE EXISTING FOLLOWER GRAPHICS FROM A SINGLE DIRECTORY. -# IT TAKES FOLLOWER GRAPHICS FROM a 'followers' FOLDER IN THE ROOT FOLDER AND MOVES THEM BASED ON THEIR NAME. -# EG. 'followers/bulbasaur.png' WILL BE MOVED to 'graphics/pokemon/bulbasaur/follower.png'. -# -# I'M SAVING IT HERE IN CASE IT'S NEEDED SOMEWHERE IN THE FUTURE, THOUGH TWEAKING MIGHT BE NEEDED. -# - AsparagusEduardo - -def rellocate_follower_graphics(): - dict_out = {} - count = 0 - for pth in sorted(glob.glob('followers/*.png')): - name = pth.replace(".png", "").replace("followers/", "") - count+=1 - #if (count == 2): - # break - print(name) - newname = name - newname = newname.replace("_female", "/female") - newname = newname.replace("_hisuian", "/hisuian") - newname = newname.replace("_galarian", "/galarian") - newname = newname.replace("_origin", "/origin") - newname = newname.replace("_therian", "/therian") - newname = newname.replace("_east_sea", "/east_sea") - newname = newname.replace("_crowned", "/crowned") - - newname = newname.replace("arceus_", "arceus/") - newname = newname.replace("burmy_", "burmy/") - newname = newname.replace("basculin_", "basculin/") - newname = newname.replace("castform_", "castform/") - newname = newname.replace("calyrex_", "calyrex/") - newname = newname.replace("deerling_", "deerling/") - newname = newname.replace("deoxys_", "deoxys/") - newname = newname.replace("flabebe_", "flabebe/") - newname = newname.replace("floette_", "floette/") - newname = newname.replace("florges_", "florges/") - newname = newname.replace("furfrou_", "furfrou/") - newname = newname.replace("hoopa_", "hoopa/") - newname = newname.replace("lycanroc_", "lycanroc/") - newname = newname.replace("meloetta_", "meloetta/") - newname = newname.replace("necrozma_", "necrozma/") - newname = newname.replace("pichu_", "pichu/") - newname = newname.replace("rotom_", "rotom/") - newname = newname.replace("sawsbuck_", "sawsbuck/") - newname = newname.replace("toxtricity_", "toxtricity/") - newname = newname.replace("unown_", "unown/") - newname = newname.replace("ursaluna_", "ursaluna/") - newname = newname.replace("vivillon_", "vivillon/") - newname = newname.replace("wormadam_", "wormadam/") - - if (os.path.exists('followers/' + newname) == False): - os.mkdir('followers/' + newname) - os.rename('followers/' + name + '.png', 'followers/' + newname + '/follower.png') - #os.popen('cp followers/' + name + '.png followers/' + name + '/follower.png') - #os.remove('followers/' + name + '.png') - #print(pth) - #subprocess.run(["tools/gbagfx/gbagfx " + name +".png " + name + "_normal.pal'" + str(count) + "'"]) - -rellocate_follower_graphics() +import glob +import re +import json +import os +import subprocess + +# THIS IS A TEMPORARY SCRIPT MADE TO MOVE EXISTING FOLLOWER GRAPHICS FROM A SINGLE DIRECTORY. +# IT TAKES FOLLOWER GRAPHICS FROM a 'followers' FOLDER IN THE ROOT FOLDER AND MOVES THEM BASED ON THEIR NAME. +# EG. 'followers/bulbasaur.png' WILL BE MOVED to 'graphics/pokemon/bulbasaur/follower.png'. +# +# I'M SAVING IT HERE IN CASE IT'S NEEDED SOMEWHERE IN THE FUTURE, THOUGH TWEAKING MIGHT BE NEEDED. +# - AsparagusEduardo + +def rellocate_follower_graphics(): + dict_out = {} + count = 0 + for pth in sorted(glob.glob('followers/*.png')): + name = pth.replace(".png", "").replace("followers/", "") + count+=1 + #if (count == 2): + # break + print(name) + newname = name + newname = newname.replace("_female", "/female") + newname = newname.replace("_hisuian", "/hisuian") + newname = newname.replace("_galarian", "/galarian") + newname = newname.replace("_origin", "/origin") + newname = newname.replace("_therian", "/therian") + newname = newname.replace("_east_sea", "/east_sea") + newname = newname.replace("_crowned", "/crowned") + + newname = newname.replace("arceus_", "arceus/") + newname = newname.replace("burmy_", "burmy/") + newname = newname.replace("basculin_", "basculin/") + newname = newname.replace("castform_", "castform/") + newname = newname.replace("calyrex_", "calyrex/") + newname = newname.replace("deerling_", "deerling/") + newname = newname.replace("deoxys_", "deoxys/") + newname = newname.replace("flabebe_", "flabebe/") + newname = newname.replace("floette_", "floette/") + newname = newname.replace("florges_", "florges/") + newname = newname.replace("furfrou_", "furfrou/") + newname = newname.replace("hoopa_", "hoopa/") + newname = newname.replace("lycanroc_", "lycanroc/") + newname = newname.replace("meloetta_", "meloetta/") + newname = newname.replace("necrozma_", "necrozma/") + newname = newname.replace("pichu_", "pichu/") + newname = newname.replace("rotom_", "rotom/") + newname = newname.replace("sawsbuck_", "sawsbuck/") + newname = newname.replace("toxtricity_", "toxtricity/") + newname = newname.replace("unown_", "unown/") + newname = newname.replace("ursaluna_", "ursaluna/") + newname = newname.replace("vivillon_", "vivillon/") + newname = newname.replace("wormadam_", "wormadam/") + + if (os.path.exists('followers/' + newname) == False): + os.mkdir('followers/' + newname) + os.rename('followers/' + name + '.png', 'followers/' + newname + '/follower.png') + #os.popen('cp followers/' + name + '.png followers/' + name + '/follower.png') + #os.remove('followers/' + name + '.png') + #print(pth) + #subprocess.run(["tools/gbagfx/gbagfx " + name +".png " + name + "_normal.pal'" + str(count) + "'"]) + +rellocate_follower_graphics() diff --git a/dev_scripts/gba_gfx/delete_files_of_same_name.py b/dev_scripts/gba_gfx/delete_files_of_same_name.py index 1ff58cb8cf..75d92706b7 100644 --- a/dev_scripts/gba_gfx/delete_files_of_same_name.py +++ b/dev_scripts/gba_gfx/delete_files_of_same_name.py @@ -1,21 +1,21 @@ -import glob -import re -import json -import os -import subprocess - -# THIS IS A TEMPORARY SCRIPT MADE TO DELETE FILES WITH THE "footprint.png" NAME -# FROM THE "graphics/pokemon_old" folder, AS MOST OF THEM ALREADY EXISTED IN "graphics/pokemon". -# -# I'M SAVING IT HERE IN CASE IT'S NEEDED SOMEWHERE IN THE FUTURE, THOUGH TWEAKING MIGHT BE NEEDED. -# - AsparagusEduardo - -def rename_files(dir, filename): - for root, dirs, files in os.walk(dir): - for name in files: - if name.endswith(filename): - fullName = os.path.join(root, name) - print(fullName + " deleted.") - os.remove(fullName) - -rename_files("graphics/pokemon_old", 'footprint.png') +import glob +import re +import json +import os +import subprocess + +# THIS IS A TEMPORARY SCRIPT MADE TO DELETE FILES WITH THE "footprint.png" NAME +# FROM THE "graphics/pokemon_old" folder, AS MOST OF THEM ALREADY EXISTED IN "graphics/pokemon". +# +# I'M SAVING IT HERE IN CASE IT'S NEEDED SOMEWHERE IN THE FUTURE, THOUGH TWEAKING MIGHT BE NEEDED. +# - AsparagusEduardo + +def rename_files(dir, filename): + for root, dirs, files in os.walk(dir): + for name in files: + if name.endswith(filename): + fullName = os.path.join(root, name) + print(fullName + " deleted.") + os.remove(fullName) + +rename_files("graphics/pokemon_old", 'footprint.png') diff --git a/dev_scripts/gba_gfx/rename_files_of_same_name.py b/dev_scripts/gba_gfx/rename_files_of_same_name.py index cbee489de0..76ab0a75ff 100644 --- a/dev_scripts/gba_gfx/rename_files_of_same_name.py +++ b/dev_scripts/gba_gfx/rename_files_of_same_name.py @@ -1,22 +1,22 @@ -import glob -import re -import json -import os -import subprocess - -def rename_files(dirOld, dirNew, old, new): - for root, dirs, files in os.walk(dirOld): - for name in files: - if name.endswith(old): - originalName = os.path.join(root, name) - newName = originalName.replace(old, new) - newName = newName.replace(dirOld, dirNew) - print(originalName + " -> " + newName) - os.rename(originalName, newName) - -rename_files("graphics/pokemon_old", "graphics/pokemon", 'anim_front.png', "anim_front_gba.png") -rename_files("graphics/pokemon_old", "graphics/pokemon", 'normal.pal', "normal_gba.pal") -rename_files("graphics/pokemon_old", "graphics/pokemon", 'shiny.pal', "shiny_gba.pal") -rename_files("graphics/pokemon_old", "graphics/pokemon", 'back.png', "back_gba.png") -rename_files("graphics/pokemon_old", "graphics/pokemon", 'icon.png', "icon_gba.png") -rename_files("graphics/pokemon_old", "graphics/pokemon", 'footprint.png', "footprint_gba.png") +import glob +import re +import json +import os +import subprocess + +def rename_files(dirOld, dirNew, old, new): + for root, dirs, files in os.walk(dirOld): + for name in files: + if name.endswith(old): + originalName = os.path.join(root, name) + newName = originalName.replace(old, new) + newName = newName.replace(dirOld, dirNew) + print(originalName + " -> " + newName) + os.rename(originalName, newName) + +rename_files("graphics/pokemon_old", "graphics/pokemon", 'anim_front.png', "anim_front_gba.png") +rename_files("graphics/pokemon_old", "graphics/pokemon", 'normal.pal', "normal_gba.pal") +rename_files("graphics/pokemon_old", "graphics/pokemon", 'shiny.pal', "shiny_gba.pal") +rename_files("graphics/pokemon_old", "graphics/pokemon", 'back.png', "back_gba.png") +rename_files("graphics/pokemon_old", "graphics/pokemon", 'icon.png', "icon_gba.png") +rename_files("graphics/pokemon_old", "graphics/pokemon", 'footprint.png', "footprint_gba.png") diff --git a/docs/book.toml b/docs/book.toml index 3282d8c8e7..9bc05435f7 100644 --- a/docs/book.toml +++ b/docs/book.toml @@ -1,14 +1,14 @@ -[book] -language = "en" -multilingual = false -src = "." -title = "pokeemerald-expansion" - -[output.html] -git-repository-url = "https://github.com/rh-hideout/pokeemerald-expansion" -edit-url-template = "https://github.com/rh-hideout/pokeemerald-expansion/edit/master/docs/{path}" -site-url = "/pokeemerald-expansion/" - -[preprocessor.fix_links] -command = "python3 fix_links.py" -after = [ "links" ] +[book] +language = "en" +multilingual = false +src = "." +title = "pokeemerald-expansion" + +[output.html] +git-repository-url = "https://github.com/rh-hideout/pokeemerald-expansion" +edit-url-template = "https://github.com/rh-hideout/pokeemerald-expansion/edit/master/docs/{path}" +site-url = "/pokeemerald-expansion/" + +[preprocessor.fix_links] +command = "python3 fix_links.py" +after = [ "links" ] diff --git a/docs/fix_links.py b/docs/fix_links.py index 6e2eaec485..e5b7c09c62 100644 --- a/docs/fix_links.py +++ b/docs/fix_links.py @@ -1,51 +1,51 @@ -# workarounds to avoid changing current directory structure -# autolink logic based on https://github.com/zopieux/py-gfm/blob/fd7b33ed138d240d24dfb659acff7d4ce3f43745/gfm/autolink.py - -import json -import sys -import re - -URL_RE = re.compile( - r"(```(?s:.)+?```|`.+?`|<.+?>)|" - r"\b((?:(?i:ftp|https?)://|(?i:www)\d{0,3}[.])(?:[^\s()<>]+|" - r"\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()" - r"<>]+\)))*\)|[^\s`!()\[\]{};:" + r"'" + r'".,<>?«»“”‘’*]))' -) -PROTOCOL_RE = re.compile(r"^(?i:ftp|https?)://") - -ANCHOR_RE = re.compile(r"(\]\((?:[^)#]+\.md)?#)([^)]+\))") - -def handle_url(m): - code = m.group(1) - if code: - return code - href = m.group(2) - if not PROTOCOL_RE.match(href): - href = "http://%s" % href - return f'<{href}>' - -def handle_anchor(m): - page = m.group(1) - anchor = m.group(2) - return page + anchor.lower() - -def proc_items(items): - for item in items: - if 'Chapter' in item: - s = item['Chapter']['content'] - s = s.replace('](README.md)', '](./)') - s = s.replace('](/INSTALL.md', '](INSTALL.md') - s = s.replace('](docs/', '](') - s = URL_RE.sub(handle_url, s) - item['Chapter']['content'] = ANCHOR_RE.sub(handle_anchor, s) - proc_items(item['Chapter']['sub_items']) - -if __name__ == '__main__': - if len(sys.argv) > 1: - if sys.argv[1] == "supports": - sys.exit(0) - - context, book = json.load(sys.stdin) - proc_items(book['sections']) - - print(json.dumps(book)) +# workarounds to avoid changing current directory structure +# autolink logic based on https://github.com/zopieux/py-gfm/blob/fd7b33ed138d240d24dfb659acff7d4ce3f43745/gfm/autolink.py + +import json +import sys +import re + +URL_RE = re.compile( + r"(```(?s:.)+?```|`.+?`|<.+?>)|" + r"\b((?:(?i:ftp|https?)://|(?i:www)\d{0,3}[.])(?:[^\s()<>]+|" + r"\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()" + r"<>]+\)))*\)|[^\s`!()\[\]{};:" + r"'" + r'".,<>?«»“”‘’*]))' +) +PROTOCOL_RE = re.compile(r"^(?i:ftp|https?)://") + +ANCHOR_RE = re.compile(r"(\]\((?:[^)#]+\.md)?#)([^)]+\))") + +def handle_url(m): + code = m.group(1) + if code: + return code + href = m.group(2) + if not PROTOCOL_RE.match(href): + href = "http://%s" % href + return f'<{href}>' + +def handle_anchor(m): + page = m.group(1) + anchor = m.group(2) + return page + anchor.lower() + +def proc_items(items): + for item in items: + if 'Chapter' in item: + s = item['Chapter']['content'] + s = s.replace('](README.md)', '](./)') + s = s.replace('](/INSTALL.md', '](INSTALL.md') + s = s.replace('](docs/', '](') + s = URL_RE.sub(handle_url, s) + item['Chapter']['content'] = ANCHOR_RE.sub(handle_anchor, s) + proc_items(item['Chapter']['sub_items']) + +if __name__ == '__main__': + if len(sys.argv) > 1: + if sys.argv[1] == "supports": + sys.exit(0) + + context, book = json.load(sys.stdin) + proc_items(book['sections']) + + print(json.dumps(book)) diff --git a/graphics/battle_anims/backgrounds/new_electric_terrain.png b/graphics/battle_anims/backgrounds/new_electric_terrain.png index 5ad234b1d3..ce879d70fd 100644 Binary files a/graphics/battle_anims/backgrounds/new_electric_terrain.png and b/graphics/battle_anims/backgrounds/new_electric_terrain.png differ diff --git a/graphics/battle_anims/backgrounds/new_grassy_terrain.png b/graphics/battle_anims/backgrounds/new_grassy_terrain.png index ecc78fbaeb..209aacf933 100644 Binary files a/graphics/battle_anims/backgrounds/new_grassy_terrain.png and b/graphics/battle_anims/backgrounds/new_grassy_terrain.png differ diff --git a/graphics/battle_anims/backgrounds/new_misty_terrain.png b/graphics/battle_anims/backgrounds/new_misty_terrain.png index 5e46aa138e..64221b7aaa 100644 Binary files a/graphics/battle_anims/backgrounds/new_misty_terrain.png and b/graphics/battle_anims/backgrounds/new_misty_terrain.png differ diff --git a/graphics/battle_anims/backgrounds/new_psychic_terrain.png b/graphics/battle_anims/backgrounds/new_psychic_terrain.png index 93b54a5e94..259e6f4f6b 100644 Binary files a/graphics/battle_anims/backgrounds/new_psychic_terrain.png and b/graphics/battle_anims/backgrounds/new_psychic_terrain.png differ diff --git a/graphics/battle_anims/sprites/beam.png b/graphics/battle_anims/sprites/beam.png index cce0a23a4c..7bfe2bd4f6 100644 Binary files a/graphics/battle_anims/sprites/beam.png and b/graphics/battle_anims/sprites/beam.png differ diff --git a/graphics/battle_anims/sprites/blood_moon.png b/graphics/battle_anims/sprites/blood_moon.png index 014c7bd445..fbc2a6cb5c 100644 Binary files a/graphics/battle_anims/sprites/blood_moon.png and b/graphics/battle_anims/sprites/blood_moon.png differ diff --git a/graphics/battle_anims/sprites/purple_chain.png b/graphics/battle_anims/sprites/purple_chain.png index 8c46b34aeb..bc4944dd20 100644 Binary files a/graphics/battle_anims/sprites/purple_chain.png and b/graphics/battle_anims/sprites/purple_chain.png differ diff --git a/graphics/battle_anims/sprites/red_explosion.png b/graphics/battle_anims/sprites/red_explosion.png index 2c974db5c9..b74d5e0b76 100644 Binary files a/graphics/battle_anims/sprites/red_explosion.png and b/graphics/battle_anims/sprites/red_explosion.png differ diff --git a/graphics/battle_anims/sprites/spirit_shackle_arrow.png b/graphics/battle_anims/sprites/spirit_shackle_arrow.png index cc520e6b5d..0c0af91aa3 100644 Binary files a/graphics/battle_anims/sprites/spirit_shackle_arrow.png and b/graphics/battle_anims/sprites/spirit_shackle_arrow.png differ diff --git a/graphics/battle_anims/sprites/tera_crystal.png b/graphics/battle_anims/sprites/tera_crystal.png index e1c406a744..6391f48bfb 100644 Binary files a/graphics/battle_anims/sprites/tera_crystal.png and b/graphics/battle_anims/sprites/tera_crystal.png differ diff --git a/graphics/battle_interface/last_used_ball_r_cycle.png b/graphics/battle_interface/last_used_ball_r_cycle.png index 0a73148e15..8dd913575e 100644 Binary files a/graphics/battle_interface/last_used_ball_r_cycle.png and b/graphics/battle_interface/last_used_ball_r_cycle.png differ diff --git a/graphics/field_effects/pics/bug_tracks.png b/graphics/field_effects/pics/bug_tracks.png index b7062d253f..2fd284fe44 100644 Binary files a/graphics/field_effects/pics/bug_tracks.png and b/graphics/field_effects/pics/bug_tracks.png differ diff --git a/graphics/field_effects/pics/slither_tracks.png b/graphics/field_effects/pics/slither_tracks.png index 7c8247c344..268da256b5 100644 Binary files a/graphics/field_effects/pics/slither_tracks.png and b/graphics/field_effects/pics/slither_tracks.png differ diff --git a/graphics/field_effects/pics/spot_tracks.png b/graphics/field_effects/pics/spot_tracks.png index cd8c9c0cf4..fe565451e8 100644 Binary files a/graphics/field_effects/pics/spot_tracks.png and b/graphics/field_effects/pics/spot_tracks.png differ diff --git a/graphics/items/icons/aux_bottle.png b/graphics/items/icons/aux_bottle.png index 6f8033a6e0..7c93fd3fa7 100644 Binary files a/graphics/items/icons/aux_bottle.png and b/graphics/items/icons/aux_bottle.png differ diff --git a/graphics/items/icons/aux_powerguard.png b/graphics/items/icons/aux_powerguard.png index b6973df813..940a2b2ebc 100644 Binary files a/graphics/items/icons/aux_powerguard.png and b/graphics/items/icons/aux_powerguard.png differ diff --git a/graphics/items/icons/sceptilite.png b/graphics/items/icons/sceptilite.png index d68d90aebd..46d6c7c581 100644 Binary files a/graphics/items/icons/sceptilite.png and b/graphics/items/icons/sceptilite.png differ diff --git a/graphics/pokedex/hgss/tileset_menu1.png b/graphics/pokedex/hgss/tileset_menu1.png index 2d9de88e6d..17559a35a5 100644 Binary files a/graphics/pokedex/hgss/tileset_menu1.png and b/graphics/pokedex/hgss/tileset_menu1.png differ diff --git a/graphics/pokedex/hgss/tileset_menu2.png b/graphics/pokedex/hgss/tileset_menu2.png index 0c8d85aaab..da66169785 100644 Binary files a/graphics/pokedex/hgss/tileset_menu2.png and b/graphics/pokedex/hgss/tileset_menu2.png differ diff --git a/graphics/pokedex/hgss/tileset_menu3.png b/graphics/pokedex/hgss/tileset_menu3.png index e4b649c870..df62d5f4c8 100644 Binary files a/graphics/pokedex/hgss/tileset_menu3.png and b/graphics/pokedex/hgss/tileset_menu3.png differ diff --git a/ld_script_modern.ld b/ld_script_modern.ld index ee4713ab17..186b012f5c 100644 --- a/ld_script_modern.ld +++ b/ld_script_modern.ld @@ -1,188 +1,188 @@ -ENTRY(Start) - -gNumMusicPlayers = 4; -gMaxLines = 0; -gInitialMainCB2 = CB2_InitCopyrightScreenAfterBootup; - -MEMORY -{ - EWRAM (rwx) : ORIGIN = 0x2000000, LENGTH = 256K - IWRAM (rwx) : ORIGIN = 0x3000000, LENGTH = 32K - ROM (rx) : ORIGIN = 0x8000000, LENGTH = 32M -} - -SECTIONS { - - - .ewram ORIGIN(EWRAM) : AT (__ewram_lma) - ALIGN(4) - { - __ewram_start = .; - *(.ewram*) - . = ALIGN(4); - __ewram_end = .; - } > EWRAM - - .ewram.sbss (NOLOAD) : - ALIGN(4) - { - src/*.o(.sbss); - } > EWRAM - - .iwram ORIGIN(IWRAM) : AT (__iwram_lma) - ALIGN(4) - { - __iwram_start = .; - *(.iwram*); - . = ALIGN(4); - __iwram_end = .; - } > IWRAM - - .iwram.bss (NOLOAD) : - ALIGN(4) - { - src/*.o(.bss); - data/*.o(.bss); - *libc.a:*.o(.bss*); - *libnosys.a:*.o(.bss*); - - src/m4a.o(.bss.code); - - src/*.o(common_data); - src/*.o(COMMON); - *libc.a:*.o(COMMON); - *libnosys.a:*.o(COMMON); - } > IWRAM - - /* BEGIN ROM DATA */ - - .text ORIGIN(ROM) : - ALIGN(4) - { - src/rom_header.o(.text*); - src/rom_header_gf.o(.text.*); - src/rom_header_rhh.o(.text.*); - src/crt0.o(.text); - src/main.o(.text); - src/*.o(.text*); - asm/*.o(.text*); - } > ROM =0 - - script_data : - ALIGN(4) - { - data/*.o(script_data); - } > ROM =0 - - lib_text : - ALIGN(4) - { - src/libgcnmultiboot.o(.text); - src/m4a_1.o(.text); - src/m4a.o(.text); - src/agb_flash.o(.text); - src/agb_flash_1m.o(.text); - src/agb_flash_mx.o(.text); - src/siirtc.o(.text); - src/librfu_stwi.o(.text); - src/librfu_intr.o(.text); - src/librfu_rfu.o(.text); - src/librfu_sio32id.o(.text); - *libagbsyscall.a:*.o(.text*); - *libgcc.a:*.o(.text*); - *libc.a:*.o(.text*); - *libnosys.a:*.o(.text*); - src/libisagbprn.o(.text); - } > ROM =0 - - .rodata : - ALIGN(4) - { - src/*.o(.rodata*); - data/*.o(.rodata*); - } > ROM =0 - - song_data : - ALIGN(4) - { - sound/songs/*.o(.rodata); - } > ROM =0 - - lib_rodata : - SUBALIGN(4) - { - src/m4a.o(.rodata); - src/agb_flash.o(.rodata); - src/agb_flash_1m.o(.rodata); - src/agb_flash_mx.o(.rodata); - src/agb_flash_le.o(.rodata); - src/siirtc.o(.rodata); - src/librfu_rfu.o(.rodata); - src/librfu_sio32id.o(.rodata); - *libgcc.a:*.o(.rodata*); - *libc.a:*.o(.rodata*); - *libc.a:*.o(.data*); - src/libisagbprn.o(.rodata); - } > ROM =0 - - multiboot_data : - ALIGN(4) - { - data/multiboot_ereader.o(.rodata); - data/multiboot_berry_glitch_fix.o(.rodata); - data/multiboot_pokemon_colosseum.o(.rodata); - } > ROM =0 - - gfx_data : - ALIGN(4) - { - src/graphics.o(.rodata); - } > ROM =0 - - .data.iwram : - ALIGN(4) - { - __iwram_lma = .; - . = . + (__iwram_end - __iwram_start); - } > ROM = 0 - - .data.ewram : - ALIGN(4) - { - __ewram_lma = .; - . = . + (__ewram_end - __ewram_start); - } > ROM = 0 - - __rom_end = .; - - /* DWARF debug sections. - Symbols in the DWARF debugging sections are relative to the beginning - of the section so we begin them at 0. */ - - /* DWARF 1 */ - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - - /* GNU DWARF 1 extensions */ - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - - /* DWARF 1.1 and DWARF 2 */ - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - - /* DWARF 2 */ - .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - - /* Discard everything not specifically mentioned above. */ - /DISCARD/ : - { - *(*); - } -} +ENTRY(Start) + +gNumMusicPlayers = 4; +gMaxLines = 0; +gInitialMainCB2 = CB2_InitCopyrightScreenAfterBootup; + +MEMORY +{ + EWRAM (rwx) : ORIGIN = 0x2000000, LENGTH = 256K + IWRAM (rwx) : ORIGIN = 0x3000000, LENGTH = 32K + ROM (rx) : ORIGIN = 0x8000000, LENGTH = 32M +} + +SECTIONS { + + + .ewram ORIGIN(EWRAM) : AT (__ewram_lma) + ALIGN(4) + { + __ewram_start = .; + *(.ewram*) + . = ALIGN(4); + __ewram_end = .; + } > EWRAM + + .ewram.sbss (NOLOAD) : + ALIGN(4) + { + src/*.o(.sbss); + } > EWRAM + + .iwram ORIGIN(IWRAM) : AT (__iwram_lma) + ALIGN(4) + { + __iwram_start = .; + *(.iwram*); + . = ALIGN(4); + __iwram_end = .; + } > IWRAM + + .iwram.bss (NOLOAD) : + ALIGN(4) + { + src/*.o(.bss); + data/*.o(.bss); + *libc.a:*.o(.bss*); + *libnosys.a:*.o(.bss*); + + src/m4a.o(.bss.code); + + src/*.o(common_data); + src/*.o(COMMON); + *libc.a:*.o(COMMON); + *libnosys.a:*.o(COMMON); + } > IWRAM + + /* BEGIN ROM DATA */ + + .text ORIGIN(ROM) : + ALIGN(4) + { + src/rom_header.o(.text*); + src/rom_header_gf.o(.text.*); + src/rom_header_rhh.o(.text.*); + src/crt0.o(.text); + src/main.o(.text); + src/*.o(.text*); + asm/*.o(.text*); + } > ROM =0 + + script_data : + ALIGN(4) + { + data/*.o(script_data); + } > ROM =0 + + lib_text : + ALIGN(4) + { + src/libgcnmultiboot.o(.text); + src/m4a_1.o(.text); + src/m4a.o(.text); + src/agb_flash.o(.text); + src/agb_flash_1m.o(.text); + src/agb_flash_mx.o(.text); + src/siirtc.o(.text); + src/librfu_stwi.o(.text); + src/librfu_intr.o(.text); + src/librfu_rfu.o(.text); + src/librfu_sio32id.o(.text); + *libagbsyscall.a:*.o(.text*); + *libgcc.a:*.o(.text*); + *libc.a:*.o(.text*); + *libnosys.a:*.o(.text*); + src/libisagbprn.o(.text); + } > ROM =0 + + .rodata : + ALIGN(4) + { + src/*.o(.rodata*); + data/*.o(.rodata*); + } > ROM =0 + + song_data : + ALIGN(4) + { + sound/songs/*.o(.rodata); + } > ROM =0 + + lib_rodata : + SUBALIGN(4) + { + src/m4a.o(.rodata); + src/agb_flash.o(.rodata); + src/agb_flash_1m.o(.rodata); + src/agb_flash_mx.o(.rodata); + src/agb_flash_le.o(.rodata); + src/siirtc.o(.rodata); + src/librfu_rfu.o(.rodata); + src/librfu_sio32id.o(.rodata); + *libgcc.a:*.o(.rodata*); + *libc.a:*.o(.rodata*); + *libc.a:*.o(.data*); + src/libisagbprn.o(.rodata); + } > ROM =0 + + multiboot_data : + ALIGN(4) + { + data/multiboot_ereader.o(.rodata); + data/multiboot_berry_glitch_fix.o(.rodata); + data/multiboot_pokemon_colosseum.o(.rodata); + } > ROM =0 + + gfx_data : + ALIGN(4) + { + src/graphics.o(.rodata); + } > ROM =0 + + .data.iwram : + ALIGN(4) + { + __iwram_lma = .; + . = . + (__iwram_end - __iwram_start); + } > ROM = 0 + + .data.ewram : + ALIGN(4) + { + __ewram_lma = .; + . = . + (__ewram_end - __ewram_start); + } > ROM = 0 + + __rom_end = .; + + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + + /* Discard everything not specifically mentioned above. */ + /DISCARD/ : + { + *(*); + } +} diff --git a/ld_script_test.ld b/ld_script_test.ld index d279d6b4f6..c37c3a1b28 100644 --- a/ld_script_test.ld +++ b/ld_script_test.ld @@ -1,182 +1,182 @@ -ENTRY(Start) - -gNumMusicPlayers = 4; -gMaxLines = 0; -gInitialMainCB2 = CB2_TestRunner; - -MEMORY -{ - EWRAM (rwx) : ORIGIN = 0x2000000, LENGTH = 256K - IWRAM (rwx) : ORIGIN = 0x3000000, LENGTH = 32K - ROM (rx) : ORIGIN = 0x8000000, LENGTH = 32M -} - -SECTIONS { - - .ewram ORIGIN(EWRAM) : AT (__ewram_lma) - ALIGN(4) - { - __ewram_start = .; - *(.ewram*) - __ewram_end = .; - } > EWRAM - - .ewram.sbss (NOLOAD) : - ALIGN(4) - { - src/*.o(.sbss); - test/*.o(.sbss); - . = ALIGN(4); - } > EWRAM - - .iwram ORIGIN(IWRAM) : AT (__iwram_lma) - ALIGN(4) - { - __iwram_start = .; - *(.iwram*); - . = ALIGN(4); - __iwram_end = .; - } > IWRAM - - .iwram.bss (NOLOAD) : - ALIGN(4) - { - src/*.o(.bss); - data/*.o(.bss); - test/*.o(.bss); - *libc.a:*.o(.bss*); - *libgcc.a:*.o(.bss*); - *libnosys.a:*.o(.bss*); - - src/m4a.o(.bss.code); - - src/*.o(common_data); - src/*.o(COMMON); - data/*.o(COMMON); - test/*.o(COMMON); - *libc.a:sbrkr.o(COMMON); - } > IWRAM - - /* .persistent starts at 0x3007F00 */ - /* WARNING: This is the end of the IRQ stack, if there's too - * much data it WILL be overwritten. */ - - . = 0x03007F00; - .iwram.persistent (NOLOAD) : - ALIGN(4) - { - test/*.o(.persistent); - } > IWRAM - - /* BEGIN ROM DATA */ - . = 0x8000000; - - .text : - ALIGN(4) - { - src/rom_header.o(.text); - src/rom_header_gf.o(.text.*); - src/rom_header_rhh.o(.text.*); - src/*.o(.text); - } > ROM =0 - - script_data : - ALIGN(4) - { - data/*.o(script_data); - } > ROM =0 - - lib_text : - ALIGN(4) - { - *libagbsyscall.a:*.o(.text*); - *libgcc.a:*.o(.text*); - *libc.a:*.o(.text*); - *libnosys.a:*.o(.text*); - } > ROM =0 - - .rodata : - ALIGN(4) - { - src/*.o(.rodata*); - data/*.o(.rodata*); - } > ROM =0 - - song_data : - ALIGN(4) - { - sound/songs/*.o(.rodata); - } > ROM =0 - - lib_rodata : - SUBALIGN(4) - { - *libgcc.a:*.o(.rodata*); - *libc.a:*.o(.rodata*); - *libc.a:*.o(.data*); - src/libisagbprn.o(.rodata); - } > ROM =0 - - .data.iwram : - ALIGN(8) - { - __iwram_lma = .; - . = . + (__iwram_end - __iwram_start); - } > ROM = 0 - - .data.ewram : - ALIGN(4) - { - __ewram_lma = .; - . = . + (__ewram_end - __ewram_start); - } > ROM = 0 - - tests : - ALIGN(4) - { - __start_tests = .; - test/*.o(.tests); - __stop_tests = .; - test/*.o(.text); - test/*.o(.rodata*); - } > ROM =0 - - __rom_end = .; - - dacs 0x9FFC000 : - ALIGN(4) - { - test/*.o(.dacs); - } > ROM =0 - - /* DWARF debug sections. - Symbols in the DWARF debugging sections are relative to the beginning - of the section so we begin them at 0. */ - - /* DWARF 1 */ - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - - /* GNU DWARF 1 extensions */ - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - - /* DWARF 1.1 and DWARF 2 */ - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - - /* DWARF 2 */ - .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - - /* Discard everything not specifically mentioned above. */ - /DISCARD/ : - { - *(*); - } -} +ENTRY(Start) + +gNumMusicPlayers = 4; +gMaxLines = 0; +gInitialMainCB2 = CB2_TestRunner; + +MEMORY +{ + EWRAM (rwx) : ORIGIN = 0x2000000, LENGTH = 256K + IWRAM (rwx) : ORIGIN = 0x3000000, LENGTH = 32K + ROM (rx) : ORIGIN = 0x8000000, LENGTH = 32M +} + +SECTIONS { + + .ewram ORIGIN(EWRAM) : AT (__ewram_lma) + ALIGN(4) + { + __ewram_start = .; + *(.ewram*) + __ewram_end = .; + } > EWRAM + + .ewram.sbss (NOLOAD) : + ALIGN(4) + { + src/*.o(.sbss); + test/*.o(.sbss); + . = ALIGN(4); + } > EWRAM + + .iwram ORIGIN(IWRAM) : AT (__iwram_lma) + ALIGN(4) + { + __iwram_start = .; + *(.iwram*); + . = ALIGN(4); + __iwram_end = .; + } > IWRAM + + .iwram.bss (NOLOAD) : + ALIGN(4) + { + src/*.o(.bss); + data/*.o(.bss); + test/*.o(.bss); + *libc.a:*.o(.bss*); + *libgcc.a:*.o(.bss*); + *libnosys.a:*.o(.bss*); + + src/m4a.o(.bss.code); + + src/*.o(common_data); + src/*.o(COMMON); + data/*.o(COMMON); + test/*.o(COMMON); + *libc.a:sbrkr.o(COMMON); + } > IWRAM + + /* .persistent starts at 0x3007F00 */ + /* WARNING: This is the end of the IRQ stack, if there's too + * much data it WILL be overwritten. */ + + . = 0x03007F00; + .iwram.persistent (NOLOAD) : + ALIGN(4) + { + test/*.o(.persistent); + } > IWRAM + + /* BEGIN ROM DATA */ + . = 0x8000000; + + .text : + ALIGN(4) + { + src/rom_header.o(.text); + src/rom_header_gf.o(.text.*); + src/rom_header_rhh.o(.text.*); + src/*.o(.text); + } > ROM =0 + + script_data : + ALIGN(4) + { + data/*.o(script_data); + } > ROM =0 + + lib_text : + ALIGN(4) + { + *libagbsyscall.a:*.o(.text*); + *libgcc.a:*.o(.text*); + *libc.a:*.o(.text*); + *libnosys.a:*.o(.text*); + } > ROM =0 + + .rodata : + ALIGN(4) + { + src/*.o(.rodata*); + data/*.o(.rodata*); + } > ROM =0 + + song_data : + ALIGN(4) + { + sound/songs/*.o(.rodata); + } > ROM =0 + + lib_rodata : + SUBALIGN(4) + { + *libgcc.a:*.o(.rodata*); + *libc.a:*.o(.rodata*); + *libc.a:*.o(.data*); + src/libisagbprn.o(.rodata); + } > ROM =0 + + .data.iwram : + ALIGN(8) + { + __iwram_lma = .; + . = . + (__iwram_end - __iwram_start); + } > ROM = 0 + + .data.ewram : + ALIGN(4) + { + __ewram_lma = .; + . = . + (__ewram_end - __ewram_start); + } > ROM = 0 + + tests : + ALIGN(4) + { + __start_tests = .; + test/*.o(.tests); + __stop_tests = .; + test/*.o(.text); + test/*.o(.rodata*); + } > ROM =0 + + __rom_end = .; + + dacs 0x9FFC000 : + ALIGN(4) + { + test/*.o(.dacs); + } > ROM =0 + + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + + /* Discard everything not specifically mentioned above. */ + /DISCARD/ : + { + *(*); + } +} diff --git a/migration_scripts/1.11/consolidate_contest_opponent_filters.py b/migration_scripts/1.11/consolidate_contest_opponent_filters.py index 240152cea2..4179320cd6 100644 --- a/migration_scripts/1.11/consolidate_contest_opponent_filters.py +++ b/migration_scripts/1.11/consolidate_contest_opponent_filters.py @@ -1,45 +1,45 @@ -import glob -import re -import os - -if not os.path.exists("Makefile"): - print("Please run this script from your root folder.") - quit() - -# Read contest_opponents.h -for file in glob.glob('./src/data/contest_opponents.h'): - with open(file, 'r') as f: - source_content = f.read() - -# Extract party info from contest_opponents.h -source_pattern = re.compile(r'(\[CONTEST_OPPONENT_.*\])\s*=\s(CONTEST_FILTER_.*)*') -source_data = {} -for match in source_pattern.findall(source_content): - if len(match) == 2: - trainer_name, contest_filter = match - source_data[trainer_name] = (contest_filter) - -# Read contest_opponents.h content -for file in glob.glob('./src/data/contest_opponents.h'): - with open(file, 'r') as f: - destination_content = f.read() - -# Modify contest_opponents.h content -def add_filter_data(match): - trainer_name = match.group(1) - if trainer_name in source_data: - contest_filter = source_data[trainer_name] - print(f"Updating {trainer_name}: adding {contest_filter}") - #return f'{trainer_name} = {{\n .filter = {contest_filter}' - return f'{match.group(0)}\n .filter = {contest_filter}' - else: - return match.group(0) - -destination_pattern = re.compile(r'(\[CONTEST_OPPONENT_[A-Z_0-9]+\])\s*=\s*{') -modified_content = destination_pattern.sub(add_filter_data, destination_content) - -# Write the modified content back to contest_opponents.h -for file in glob.glob('./src/data/contest_opponents.h'): - with open(file, 'w') as f: - f.write(modified_content) - print("contest_opponents.h has been updated") +import glob +import re +import os + +if not os.path.exists("Makefile"): + print("Please run this script from your root folder.") + quit() + +# Read contest_opponents.h +for file in glob.glob('./src/data/contest_opponents.h'): + with open(file, 'r') as f: + source_content = f.read() + +# Extract party info from contest_opponents.h +source_pattern = re.compile(r'(\[CONTEST_OPPONENT_.*\])\s*=\s(CONTEST_FILTER_.*)*') +source_data = {} +for match in source_pattern.findall(source_content): + if len(match) == 2: + trainer_name, contest_filter = match + source_data[trainer_name] = (contest_filter) + +# Read contest_opponents.h content +for file in glob.glob('./src/data/contest_opponents.h'): + with open(file, 'r') as f: + destination_content = f.read() + +# Modify contest_opponents.h content +def add_filter_data(match): + trainer_name = match.group(1) + if trainer_name in source_data: + contest_filter = source_data[trainer_name] + print(f"Updating {trainer_name}: adding {contest_filter}") + #return f'{trainer_name} = {{\n .filter = {contest_filter}' + return f'{match.group(0)}\n .filter = {contest_filter}' + else: + return match.group(0) + +destination_pattern = re.compile(r'(\[CONTEST_OPPONENT_[A-Z_0-9]+\])\s*=\s*{') +modified_content = destination_pattern.sub(add_filter_data, destination_content) + +# Write the modified content back to contest_opponents.h +for file in glob.glob('./src/data/contest_opponents.h'): + with open(file, 'w') as f: + f.write(modified_content) + print("contest_opponents.h has been updated") diff --git a/migration_scripts/1.11/convert_battle_frontier_trainers.py b/migration_scripts/1.11/convert_battle_frontier_trainers.py index b218c79e31..0ef9bf3cd8 100644 --- a/migration_scripts/1.11/convert_battle_frontier_trainers.py +++ b/migration_scripts/1.11/convert_battle_frontier_trainers.py @@ -1,44 +1,44 @@ -import glob -import re -import os - -if not os.path.exists("Makefile"): - print("Please run this script from your root folder.") - quit() - -# Read battle_frontier_trainer_mons.h and extract the party information -for file in glob.glob('./src/data/battle_frontier/battle_frontier_trainer_mons.h'): - with open(file, 'r') as f: - source_content = f.read() - -# Extract party info from battle_frontier_trainer_mons.h -source_pattern = re.compile(r'gBattleFrontierTrainerMons_(.*)\[\]\s*=\s*\n\{\n\s*(FRONTIER.*)') -source_data = {} -for match in source_pattern.findall(source_content): - if len(match) == 2: - trainer_name, party_group = match - source_data[trainer_name] = (party_group) - -# Read battle_frontier_trainers.h content -for file in glob.glob('./src/data/battle_frontier/battle_frontier_trainers.h'): - with open(file, 'r') as f: - destination_content = f.read() - -# Modify battle_frontier_trainers.h content -def add_party_data(match): - trainer_name = match.group(1) - if trainer_name in source_data: - party_group = source_data[trainer_name] - print(f"Updating {trainer_name}: adding {party_group}") - return f'(const u16[]){{{party_group}}}' - else: - return match.group(0) - -destination_pattern = re.compile(r'gBattleFrontierTrainerMons_(.*)') -modified_content = destination_pattern.sub(add_party_data, destination_content) - -# Write the modified content back to battle_frontier_trainers.h -for file in glob.glob('./src/data/battle_frontier/battle_frontier_trainers.h'): - with open(file, 'w') as f: - f.write(modified_content) - print("battle_frontier_trainers.h has been updated") +import glob +import re +import os + +if not os.path.exists("Makefile"): + print("Please run this script from your root folder.") + quit() + +# Read battle_frontier_trainer_mons.h and extract the party information +for file in glob.glob('./src/data/battle_frontier/battle_frontier_trainer_mons.h'): + with open(file, 'r') as f: + source_content = f.read() + +# Extract party info from battle_frontier_trainer_mons.h +source_pattern = re.compile(r'gBattleFrontierTrainerMons_(.*)\[\]\s*=\s*\n\{\n\s*(FRONTIER.*)') +source_data = {} +for match in source_pattern.findall(source_content): + if len(match) == 2: + trainer_name, party_group = match + source_data[trainer_name] = (party_group) + +# Read battle_frontier_trainers.h content +for file in glob.glob('./src/data/battle_frontier/battle_frontier_trainers.h'): + with open(file, 'r') as f: + destination_content = f.read() + +# Modify battle_frontier_trainers.h content +def add_party_data(match): + trainer_name = match.group(1) + if trainer_name in source_data: + party_group = source_data[trainer_name] + print(f"Updating {trainer_name}: adding {party_group}") + return f'(const u16[]){{{party_group}}}' + else: + return match.group(0) + +destination_pattern = re.compile(r'gBattleFrontierTrainerMons_(.*)') +modified_content = destination_pattern.sub(add_party_data, destination_content) + +# Write the modified content back to battle_frontier_trainers.h +for file in glob.glob('./src/data/battle_frontier/battle_frontier_trainers.h'): + with open(file, 'w') as f: + f.write(modified_content) + print("battle_frontier_trainers.h has been updated") diff --git a/migration_scripts/1.8/item_ball_refactor.py b/migration_scripts/1.8/item_ball_refactor.py index 83d6f9f167..364a87d42d 100755 --- a/migration_scripts/1.8/item_ball_refactor.py +++ b/migration_scripts/1.8/item_ball_refactor.py @@ -1,85 +1,85 @@ -import glob -import re -import json -import os - -if not os.path.exists("Makefile"): - print("Please run this script from your root folder.") - quit() - -# scan incs -incs_to_check = glob.glob('./data/scripts/*.inc') # all .incs in the script folder -incs_to_check += glob.glob('./data/maps/*/scripts.inc') # all map scripts -pories_to_check = glob.glob('./data/scripts/*.pory') ## all .porys in the script folder -pories_to_check += glob.glob('./data/maps/*/scripts.pory') # all map scripts - -array = [] -array_pories = [] - -# make a list of which script corresponds to which item -for file in incs_to_check: - with open(file, "r") as f2: - raw = f2.read() - array += re.findall("(.*)::\n[ ]*finditem (.*)\n[ ]*end", raw) - -# since this doesn't catch poryscript-generated inc files, do the same for poryscript -for file in pories_to_check: - with open(file, "r") as f2: - raw = f2.read() - array_pories += re.findall("script ([\w]*)[ \n]*\{[ \n]*finditem\((.*)\)[ \n]*\}", raw) - -dict = {} -# poryscript values are prioritised because they would overwrite inc files anyway if different -for x in array_pories: - dict[x[0]] = x[1] -for x in array: - if not x[0] in dict: - dict[x[0]] = x[1] - -# apply changes to inc files -for map in glob.glob('./data/maps/*/map.json'): - with open(map, "r") as f2: - data = json.load(f2) - if not 'object_events' in data: - continue - for objevent in data['object_events']: - if objevent["script"] in dict: - objevent["trainer_sight_or_berry_tree_id"] = dict[objevent["script"]] - objevent["script"] = "Common_EventScript_FindItem" - with open(map, "w") as f2: - f2.write(json.dumps(data, indent=2) + "\n") - -# do another map search to find out which finditem scripts would somehow be still in use -still_in_use = [] -for map in glob.glob('./data/maps/*/map.json'): - with open(map, "r") as f2: - data = json.load(f2) - if not 'object_events' in data: - continue - for objevent in data['object_events']: - if objevent["script"] in dict and not objevent["script"] in still_in_use: - still_in_use.append(objevent["script"]) - -for x in list(dict.keys()): - if x in still_in_use: - del dict[x] - -# clean up scripts that are now no longer in use -for file in incs_to_check: - with open(file, "r") as f2: - raw = f2.read() - for unused in list(dict.keys()): - raw = re.sub("%s::\n[ ]*finditem (.*)\n[ ]*end\n*" % unused, "", raw) - with open(file, "w") as f2: - f2.write(raw) - -# also clean up pory files -for file in pories_to_check: - with open(file, "r") as f2: - raw = f2.read() - for unused in list(dict.keys()): - raw = re.sub("script %s[ \n]*\{[ \n]*finditem\((.*)\)[ \n]*\}[ \n]*" % unused, "", raw) - with open(file, "w") as f2: - f2.write(raw) - -print("Done!") +import glob +import re +import json +import os + +if not os.path.exists("Makefile"): + print("Please run this script from your root folder.") + quit() + +# scan incs +incs_to_check = glob.glob('./data/scripts/*.inc') # all .incs in the script folder +incs_to_check += glob.glob('./data/maps/*/scripts.inc') # all map scripts +pories_to_check = glob.glob('./data/scripts/*.pory') ## all .porys in the script folder +pories_to_check += glob.glob('./data/maps/*/scripts.pory') # all map scripts + +array = [] +array_pories = [] + +# make a list of which script corresponds to which item +for file in incs_to_check: + with open(file, "r") as f2: + raw = f2.read() + array += re.findall("(.*)::\n[ ]*finditem (.*)\n[ ]*end", raw) + +# since this doesn't catch poryscript-generated inc files, do the same for poryscript +for file in pories_to_check: + with open(file, "r") as f2: + raw = f2.read() + array_pories += re.findall("script ([\w]*)[ \n]*\{[ \n]*finditem\((.*)\)[ \n]*\}", raw) + +dict = {} +# poryscript values are prioritised because they would overwrite inc files anyway if different +for x in array_pories: + dict[x[0]] = x[1] +for x in array: + if not x[0] in dict: + dict[x[0]] = x[1] + +# apply changes to inc files +for map in glob.glob('./data/maps/*/map.json'): + with open(map, "r") as f2: + data = json.load(f2) + if not 'object_events' in data: + continue + for objevent in data['object_events']: + if objevent["script"] in dict: + objevent["trainer_sight_or_berry_tree_id"] = dict[objevent["script"]] + objevent["script"] = "Common_EventScript_FindItem" + with open(map, "w") as f2: + f2.write(json.dumps(data, indent=2) + "\n") + +# do another map search to find out which finditem scripts would somehow be still in use +still_in_use = [] +for map in glob.glob('./data/maps/*/map.json'): + with open(map, "r") as f2: + data = json.load(f2) + if not 'object_events' in data: + continue + for objevent in data['object_events']: + if objevent["script"] in dict and not objevent["script"] in still_in_use: + still_in_use.append(objevent["script"]) + +for x in list(dict.keys()): + if x in still_in_use: + del dict[x] + +# clean up scripts that are now no longer in use +for file in incs_to_check: + with open(file, "r") as f2: + raw = f2.read() + for unused in list(dict.keys()): + raw = re.sub("%s::\n[ ]*finditem (.*)\n[ ]*end\n*" % unused, "", raw) + with open(file, "w") as f2: + f2.write(raw) + +# also clean up pory files +for file in pories_to_check: + with open(file, "r") as f2: + raw = f2.read() + for unused in list(dict.keys()): + raw = re.sub("script %s[ \n]*\{[ \n]*finditem\((.*)\)[ \n]*\}[ \n]*" % unused, "", raw) + with open(file, "w") as f2: + f2.write(raw) + +print("Done!") diff --git a/migration_scripts/1.9/battle_frontier_convert_parties.py b/migration_scripts/1.9/battle_frontier_convert_parties.py index 83982bbe46..7a7a000d1b 100644 --- a/migration_scripts/1.9/battle_frontier_convert_parties.py +++ b/migration_scripts/1.9/battle_frontier_convert_parties.py @@ -1,62 +1,62 @@ -import re - -def battle_frontier_mons(data): - data = re.sub(re.escape(".itemTableId = BATTLE_FRONTIER_"), ".heldItem = ", data) - data = re.sub(re.escape("FacilityMon"), "TrainerMon", data) - data = re.sub(re.escape(".evSpread = 0,"), ".ev = NULL,", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 0),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 170, 170, 170, 0, 0),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 0),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SPEED,"), ".ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 0, 0),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(170, 170, 170, 0, 0, 0),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 170, 170, 0, 170, 0),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(170, 0, 0, 170, 170, 0),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(170, 0, 0, 170, 170, 0),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 170, 0),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE,"), ".ev = TRAINER_PARTY_EVS(0, 0, 170, 170, 170, 0),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE,"), ".ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,"), ".ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(102, 102, 102, 102, 0, 102),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 128, 128, 0, 128, 128),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE,"), ".ev = TRAINER_PARTY_EVS(0, 0, 170, 0, 170, 170),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(84, 84, 84, 84, 84, 84),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 128, 128, 128, 0, 128),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 170, 170, 0, 0, 170),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(102, 0, 102, 102, 102, 102),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 170, 0, 0, 170, 170),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(128, 0, 128, 0, 128, 128),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(128, 128, 128, 0, 0, 128),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(170, 0, 0, 170, 0, 170),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 0, 170),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE,"), ".ev = TRAINER_PARTY_EVS(0, 0, 170, 170, 0, 170),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(128, 0, 128, 128, 0, 128),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(170, 0, 0, 0, 170, 170),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 0, 170),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 0, 0, 0, 252, 252),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,"), ".ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(170, 0, 170, 170, 0, 0),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(170, 170, 0, 170, 0, 0),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0),", data) - data = re.sub(re.escape(".evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0),", data) - - return data - -with open('src/data/battle_frontier/battle_frontier_mons.h', 'r') as file: - data = file.read() -with open('src/data/battle_frontier/battle_frontier_mons.h', 'w') as file: - file.write(battle_frontier_mons(data)) - -with open('src/data/battle_frontier/battle_tent.h', 'r') as file: - data = file.read() -with open('src/data/battle_frontier/battle_tent.h', 'w') as file: - file.write(battle_frontier_mons(data)) +import re + +def battle_frontier_mons(data): + data = re.sub(re.escape(".itemTableId = BATTLE_FRONTIER_"), ".heldItem = ", data) + data = re.sub(re.escape("FacilityMon"), "TrainerMon", data) + data = re.sub(re.escape(".evSpread = 0,"), ".ev = NULL,", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 170, 170, 170, 0, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SPEED,"), ".ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 0, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(170, 170, 170, 0, 0, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 170, 170, 0, 170, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(170, 0, 0, 170, 170, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(170, 0, 0, 170, 170, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 170, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE,"), ".ev = TRAINER_PARTY_EVS(0, 0, 170, 170, 170, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE,"), ".ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,"), ".ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(102, 102, 102, 102, 0, 102),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 128, 128, 0, 128, 128),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE,"), ".ev = TRAINER_PARTY_EVS(0, 0, 170, 0, 170, 170),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(84, 84, 84, 84, 84, 84),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 128, 128, 128, 0, 128),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 170, 170, 0, 0, 170),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(102, 0, 102, 102, 102, 102),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 170, 0, 0, 170, 170),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(128, 0, 128, 0, 128, 128),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(128, 128, 128, 0, 0, 128),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(170, 0, 0, 170, 0, 170),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 0, 170),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE,"), ".ev = TRAINER_PARTY_EVS(0, 0, 170, 170, 0, 170),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(128, 0, 128, 128, 0, 128),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(170, 0, 0, 0, 170, 170),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 0, 170),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 0, 0, 0, 252, 252),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,"), ".ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(170, 0, 170, 170, 0, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(170, 170, 0, 170, 0, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0),", data) + + return data + +with open('src/data/battle_frontier/battle_frontier_mons.h', 'r') as file: + data = file.read() +with open('src/data/battle_frontier/battle_frontier_mons.h', 'w') as file: + file.write(battle_frontier_mons(data)) + +with open('src/data/battle_frontier/battle_tent.h', 'r') as file: + data = file.read() +with open('src/data/battle_frontier/battle_tent.h', 'w') as file: + file.write(battle_frontier_mons(data)) diff --git a/migration_scripts/1.9/convert_item_icons.py b/migration_scripts/1.9/convert_item_icons.py index abd2070fd1..8bd45a86ae 100644 --- a/migration_scripts/1.9/convert_item_icons.py +++ b/migration_scripts/1.9/convert_item_icons.py @@ -1,45 +1,45 @@ -import glob -import re -import os - -if not os.path.exists("Makefile"): - print("Please run this script from your root folder.") - quit() - -# Read item_icon_table.h and extract the icon and palette information -for file in glob.glob('./src/data/item_icon_table.h'): - with open(file, 'r') as f: - icon_table_content = f.read() - -# Extract item icon and palette data from item_icon_table.h -icon_table_pattern = re.compile(r'\[(ITEM_[A-Z_0-9]+)\]\s*=\s*\{([^,]+),\s*([^}]+)\}', re.MULTILINE) -icon_table_data = {} -for match in icon_table_pattern.findall(icon_table_content): - if len(match) == 3: - item_name, icon_pic, icon_palette = match - icon_table_data[item_name] = (icon_pic, icon_palette) - -# Read items.h content -for file in glob.glob('./src/data/items.h'): - with open(file, 'r') as f: - items_content = f.read() - -# Modify items.h content -def add_icon_data(match): - item_name = match.group(1) - item_content = match.group(2) - if item_name in icon_table_data: - icon_pic, icon_palette = icon_table_data[item_name] - print(f"Updating {item_name}: adding iconPic = {icon_pic}, iconPalette = {icon_palette}") - return f'[{item_name}] =\n {{{item_content} .iconPic = {icon_pic},\n .iconPalette = {icon_palette},\n }},' - else: - return match.group(0) - -item_pattern = re.compile(r'\[(ITEM_[A-Z_0-9]+)\]\s*=\s*\{([\s\S]*?)\},', re.DOTALL) -modified_items_content = item_pattern.sub(add_icon_data, items_content) - -# Write the modified content back to items.h -for file in glob.glob('./src/data/items.h'): - with open(file, 'w') as f: - f.write(modified_items_content) - print("items.h has been updated") +import glob +import re +import os + +if not os.path.exists("Makefile"): + print("Please run this script from your root folder.") + quit() + +# Read item_icon_table.h and extract the icon and palette information +for file in glob.glob('./src/data/item_icon_table.h'): + with open(file, 'r') as f: + icon_table_content = f.read() + +# Extract item icon and palette data from item_icon_table.h +icon_table_pattern = re.compile(r'\[(ITEM_[A-Z_0-9]+)\]\s*=\s*\{([^,]+),\s*([^}]+)\}', re.MULTILINE) +icon_table_data = {} +for match in icon_table_pattern.findall(icon_table_content): + if len(match) == 3: + item_name, icon_pic, icon_palette = match + icon_table_data[item_name] = (icon_pic, icon_palette) + +# Read items.h content +for file in glob.glob('./src/data/items.h'): + with open(file, 'r') as f: + items_content = f.read() + +# Modify items.h content +def add_icon_data(match): + item_name = match.group(1) + item_content = match.group(2) + if item_name in icon_table_data: + icon_pic, icon_palette = icon_table_data[item_name] + print(f"Updating {item_name}: adding iconPic = {icon_pic}, iconPalette = {icon_palette}") + return f'[{item_name}] =\n {{{item_content} .iconPic = {icon_pic},\n .iconPalette = {icon_palette},\n }},' + else: + return match.group(0) + +item_pattern = re.compile(r'\[(ITEM_[A-Z_0-9]+)\]\s*=\s*\{([\s\S]*?)\},', re.DOTALL) +modified_items_content = item_pattern.sub(add_icon_data, items_content) + +# Write the modified content back to items.h +for file in glob.glob('./src/data/items.h'): + with open(file, 'w') as f: + f.write(modified_items_content) + print("items.h has been updated") diff --git a/migration_scripts/1.9/convert_partner_parties.py b/migration_scripts/1.9/convert_partner_parties.py index e726dcc723..e2da91499a 100644 --- a/migration_scripts/1.9/convert_partner_parties.py +++ b/migration_scripts/1.9/convert_partner_parties.py @@ -1,319 +1,319 @@ -# If you have extra members in 'TrainerMon': -# 1. Add a regular expression which matches that member (e.g. 'shadow_definition'). -# 2. Match that regular expression in 'convert' and write into 'attributes' with the key that 'trainerproc' should parse. -# 3. Add the key used in 'attributes' to 'pokemon_attribute_order'. -# 4. Update 'trainerproc.c' to parse the new key. - -import re -import sys - -is_blank = re.compile(r'^[ \t]*(//.*)?$') - -begin_party_definition = re.compile(r'struct TrainerMon (\w+)\[\] =') -end_party_definition = re.compile(r'^};') -begin_pokemon_definition = re.compile(r'^ { *$') -end_pokemon_definition = re.compile(r'^ },? *$') -level_definition = re.compile(r'\.lvl = (\d+)') -species_definition = re.compile(r'\.species = SPECIES_(\w+)') -gender_definition = re.compile(r'\.gender = TRAINER_MON_(\w+)') -nickname_definition = re.compile(r'\.nickname = COMPOUND_STRING\("([^"]+)"\)') -item_definition = re.compile(r'\.heldItem = ITEM_(\w+)') -ball_definition = re.compile(r'\.ball = ITEM_(\w+)') -ability_definition = re.compile(r'\.ability = ABILITY_(\w+)') -friendship_definition = re.compile(r'\.friendship = (\d+)') -shiny_definition = re.compile(r'\.isShiny = (\w+)') -ivs_definition = re.compile(r'\.iv = TRAINER_PARTY_IVS\(([0-9 ]+),([0-9 ]+),([0-9 ]+),([0-9 ]+),([0-9 ]+),([0-9 ]+)\)') -evs_definition = re.compile(r'\.ev = TRAINER_PARTY_EVS\(([0-9 ]+),([0-9 ]+),([0-9 ]+),([0-9 ]+),([0-9 ]+),([0-9 ]+)\)') -moves_definition = re.compile(r'\.moves = \{([^}]+)\}') -move_definition = re.compile(r'MOVE_(\w+)') -nature_definition = re.compile(r'\.nature = NATURE_(\w+)') - -# NOTE: These are just for aesthetics, the Pokemon would still compile -# without them. -species_replacements = { - "CHIEN_PAO": "Chien-Pao", - "CHI_YU": "Chi-Yu", - "HAKAMO_O": "Hakamo-o", - "HO_OH": "Ho-Oh", - "JANGMO_O": "Jangmo-o", - "KOMMO_O": "Kommo-o", - "PORYGON_Z": "Porygon-Z", - "ROTOM_": "Rotom-", - "TING_LU": "Ting-Lu", - "TYPE_NULL": "Type: Null", - "WO_CHIEN": "Wo-Chien", - - "_ALOLAN": "-Alola", - "_AQUA_BREED": "-Aqua", - "_BATTLE_BOND": "-Bond", - "_BLAZE_BREED": "-Blaze", - "_CAP": "", - "_CLOAK": "", - "_COMBAT_BREED": "-Combat", - "_CROWED_SHIELD": "-Crowned", - "_CROWED_SWORD": "-Crowned", - "_DRIVE": "", - "_EAST_SEA": "-East", - "_FAMILY_OF_FOUR": "-Four", - "_FEMALE": "-F", - "_FLOWER": "", - "_GALARIAN": "-Galar", - "_GIGANTAMAX": "-Gmax", - "_HISUIAN": "-Hisui", - "_ICE_RIDER": "-Ice", - "_NOICE_FACE": "-Noice", - "_ORIGIN": "-Origin", - "_ORIGINAL_COLOR": "-Original", - "_PALDEAN": "-Paldea", - "_PLUMAGE": "", - "_POKE_BALL": "-Pokeball", - "_SHADOW_RIDER": "-Shadow", - "_STRIKE_STYLE": "-Style", - "_TOTEM": "-Totem", - "_ZEN_MODE": "-Zen", -} - -pokemon_attribute_order = ['Level', 'Ability', 'IVs', 'EVs', 'Happiness', 'Shiny', 'Ball'] - -class Pokemon: - def __init__(self): - self.nickname = None - self.species = None - self.gender = None - self.item = None - self.nature = None - self.attributes = {} - self.attributes['IVs'] = "0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe" - self.moves = [] - -def convert_parties(in_path, in_h): - party_identifier = None - party = None - pokemon = None - parties = {} - - for line_no, line in enumerate(in_h, 1): - try: - line = line[:-1] - if m := begin_party_definition.search(line): - if party: - raise Exception(f"unexpected start of party") - [identifier] = m.groups() - party_identifier = identifier - party = [] - elif end_party_definition.search(line): - if not party: - raise Exception(f"unexpected end of party") - parties[party_identifier] = party - party = None - elif begin_pokemon_definition.search(line): - if pokemon: - raise Exception(f"unexpected start of Pokemon") - pokemon = Pokemon() - elif end_pokemon_definition.search(line): - if not pokemon: - raise Exception(f"unexpected end of Pokemon") - else: - party.append(pokemon) - pokemon = None - elif m := level_definition.search(line): - [level] = m.groups() - pokemon.attributes['Level'] = level - elif m := species_definition.search(line): - [species_] = m.groups() - for match, replacement in species_replacements.items(): - species_ = species_.replace(match, replacement) - pokemon.species = species_.replace("_", " ").title() - elif m := gender_definition.search(line): - [gender_] = m.groups() - if gender_ == 'MALE': - pokemon.gender = 'M' - elif gender_ == 'FEMALE': - pokemon.gender = 'F' - else: - raise Exception(f"unknown gender: '{gender_}'") - elif m := nickname_definition.search(line): - [nickname] = m.groups() - pokemon.nickname = nickname - elif m := item_definition.search(line): - [item_] = m.groups() - pokemon.item = item_.replace("_", " ").title() - elif m := ball_definition.search(line): - [ball] = m.groups() - pokemon.attributes['Ball'] = ball.replace("_", " ").title() - elif m := ability_definition.search(line): - [ability] = m.groups() - pokemon.attributes['Ability'] = ability.replace("_", " ").title() - elif m := friendship_definition.search(line): - [friendship] = m.groups() - pokemon.attributes['Happiness'] = friendship - elif m := shiny_definition.search(line): - [shiny] = m.groups() - if shiny == 'TRUE': - pokemon.attributes['Shiny'] = 'Yes' - elif shiny == 'FALSE': - pokemon.attributes['Shiny'] = 'No' - else: - raise Exception(f"unknown isShiny: '{shiny}'") - elif m := ivs_definition.search(line): - [hp, attack, defense, speed, special_attack, special_defense] = [stat.strip() for stat in m.groups()] - stats = {"HP": hp, "Atk": attack, "Def": defense, "SpA": special_attack, "SpD": special_defense, "Spe": speed} - pokemon.attributes['IVs'] = ' / '.join(f"{value} {key}" for key, value in stats.items()) - elif m := evs_definition.search(line): - [hp, attack, defense, speed, special_attack, special_defense] = [stat.strip() for stat in m.groups()] - stats = {"HP": hp, "Atk": attack, "Def": defense, "SpA": special_attack, "SpD": special_defense, "Spe": speed} - pokemon.attributes['EVs'] = ' / '.join(f"{value} {key}" for key, value in stats.items() if value != '0') - elif m := moves_definition.search(line): - [moves_] = m.groups() - pokemon.moves = [move.replace("_", " ").title() for move in move_definition.findall(moves_) if move != "NONE"] - elif m := nature_definition.search(line): - [nature_] = m.groups() - pokemon.nature = nature_.replace("_", " ").title() - elif is_blank.search(line): - pass - else: - raise Exception(f"could not parse '{line.strip()}'") - except Exception as e: - print(f"{in_path}:{line_no}: {e}") - return parties - -is_trainer_skip = re.compile(r'(const struct Trainer gBattlePartners\[\] = \{)|(^ \{$)|(\.partySize =)|(\.party = NULL)|(\.mugshotEnabled = TRUE)|(\};)') - -begin_trainer_definition = re.compile(r' \[(PARTNER_\w+)\] =') -end_trainer_definition = re.compile(r' }') -trainer_class_definition = re.compile(r'\.trainerClass = TRAINER_CLASS_(\w+)') -encounter_music_gender_definition = re.compile(r'\.encounterMusic_gender = (F_TRAINER_FEMALE \| )?TRAINER_ENCOUNTER_MUSIC_(\w+)') -trainer_pic_definition = re.compile(r'\.trainerPic = TRAINER_BACK_PIC_(\w+)') -trainer_name_definition = re.compile(r'\.trainerName = _\("([^"]*)"\)') -trainer_items_definition = re.compile(r'\.items = \{([^}]*)\}') -trainer_item_definition = re.compile(r'ITEM_(\w+)') -trainer_ai_flags_definition = re.compile(r'\.aiFlags = (.*)') -trainer_ai_flag_definition = re.compile(r'AI_FLAG_(\w+)') -trainer_party_definition = re.compile(r'\.party = TRAINER_PARTY\((\w+)\)') -trainer_mugshot_definition = re.compile(r'\.mugshotColor = MUGSHOT_COLOR_(\w+)') -trainer_starting_status_definition = re.compile(r'\.startingStatus = STARTING_STATUS_(\w+)') - -class_fixups = { - "Rs": "RS", -} - -pic_fixups = { - "Rs": "RS", -} - -class Trainer: - def __init__(self, id_): - self.id = id_ - self.class_ = None - self.encounter_music = None - self.gender = None - self.pic = None - self.name = None - self.items = [] - self.ai_flags = None - self.mugshot = None - self.starting_status = None - self.party = None - -def convert_trainers(in_path, in_h, parties, out_party): - newlines = 0 - trainer = None - for line_no, line in enumerate(in_h, 1): - try: - line = line[:-1] - if m := begin_trainer_definition.search(line): - if trainer: - raise Exception(f"unexpected start of trainer") - [id_] = m.groups() - trainer = Trainer(id_) - elif m := trainer_class_definition.search(line): - [class_] = m.groups() - class_ = class_.replace("_", " ").title() - for match, replacement in class_fixups.items(): - class_ = class_.replace(match, replacement) - trainer.class_ = class_ - elif m := encounter_music_gender_definition.search(line): - [is_female, music] = m.groups() - trainer.gender = 'Female' if is_female else 'Male' - trainer.encounter_music = music.replace("_", " ").title() - elif m := trainer_pic_definition.search(line): - [pic] = m.groups() - pic = pic.replace("_", " ").title() - for match, replacement in pic_fixups.items(): - pic = pic.replace(match, replacement) - trainer.pic = pic - elif m := trainer_name_definition.search(line): - [name] = m.groups() - trainer.name = name - elif m := trainer_items_definition.search(line): - [items] = m.groups() - trainer.items = " / ".join(item.replace("_", " ").title() for item in trainer_item_definition.findall(items) if item != "NONE") - elif m := trainer_ai_flags_definition.search(line): - [ai_flags] = m.groups() - trainer.ai_flags = " / ".join(ai_flag.replace("_", " ").title() for ai_flag in trainer_ai_flag_definition.findall(ai_flags)) - elif m := trainer_mugshot_definition.search(line): - [color] = m.groups() - trainer.mugshot = color.title() - elif m := trainer_starting_status_definition.search(line): - [starting_status] = m.groups() - trainer.starting_status = starting_status.replace("_", " ").title() - elif m := trainer_party_definition.search(line): - [party] = m.groups() - trainer.party = parties[party] - elif end_trainer_definition.search(line): - if not trainer: - raise Exception(f"unexpected end of trainer") - while newlines > 0: - out_party.write(f"\n") - newlines -= 1 - newlines = 1 - out_party.write(f"=== {trainer.id} ===\n") - out_party.write(f"Name: {trainer.name}\n") - out_party.write(f"Class: {trainer.class_}\n") - out_party.write(f"Pic: {trainer.pic}\n") - out_party.write(f"Gender: {trainer.gender}\n") - out_party.write(f"Music: {trainer.encounter_music}\n") - if trainer.items: - out_party.write(f"Items: {trainer.items}\n") - if trainer.ai_flags: - out_party.write(f"AI: {trainer.ai_flags}\n") - if trainer.mugshot: - out_party.write(f"Mugshot: {trainer.mugshot}\n") - if trainer.starting_status: - out_party.write(f"Starting Status: {trainer.starting_status}\n") - if trainer.party: - for i, pokemon in enumerate(trainer.party): - out_party.write(f"\n") - if pokemon.nickname: - out_party.write(f"{pokemon.nickname} ({pokemon.species})") - else: - out_party.write(f"{pokemon.species}") - if pokemon.gender: - out_party.write(f" ({pokemon.gender})") - if pokemon.item and pokemon.item != 'None': - out_party.write(f" @ {pokemon.item}") - out_party.write(f"\n") - if pokemon.nature: - out_party.write(f"{pokemon.nature} Nature\n") - for key in pokemon_attribute_order: - if key in pokemon.attributes: - out_party.write(f"{key}: {pokemon.attributes[key]}\n") - for move in pokemon.moves: - out_party.write(f"- {move}\n") - trainer = None - elif is_blank.search(line) or is_trainer_skip.search(line): - pass - else: - raise Exception(f"could not parse '{line.strip()}'") - except Exception as e: - print(f"{in_path}:{line_no}: {e}") - -if __name__ == '__main__': - try: - [argv0, trainers_in_path, parties_in_path, out_path] = sys.argv - except: - print(f"usage: python3 {sys.argv[0]} ") - else: - with open(trainers_in_path, "r") as trainers_in_h, open(parties_in_path, "r") as parties_in_h, open(out_path, "w") as out_party: - parties = convert_parties(parties_in_path, parties_in_h) - trainers = convert_trainers(trainers_in_path, trainers_in_h, parties, out_party) +# If you have extra members in 'TrainerMon': +# 1. Add a regular expression which matches that member (e.g. 'shadow_definition'). +# 2. Match that regular expression in 'convert' and write into 'attributes' with the key that 'trainerproc' should parse. +# 3. Add the key used in 'attributes' to 'pokemon_attribute_order'. +# 4. Update 'trainerproc.c' to parse the new key. + +import re +import sys + +is_blank = re.compile(r'^[ \t]*(//.*)?$') + +begin_party_definition = re.compile(r'struct TrainerMon (\w+)\[\] =') +end_party_definition = re.compile(r'^};') +begin_pokemon_definition = re.compile(r'^ { *$') +end_pokemon_definition = re.compile(r'^ },? *$') +level_definition = re.compile(r'\.lvl = (\d+)') +species_definition = re.compile(r'\.species = SPECIES_(\w+)') +gender_definition = re.compile(r'\.gender = TRAINER_MON_(\w+)') +nickname_definition = re.compile(r'\.nickname = COMPOUND_STRING\("([^"]+)"\)') +item_definition = re.compile(r'\.heldItem = ITEM_(\w+)') +ball_definition = re.compile(r'\.ball = ITEM_(\w+)') +ability_definition = re.compile(r'\.ability = ABILITY_(\w+)') +friendship_definition = re.compile(r'\.friendship = (\d+)') +shiny_definition = re.compile(r'\.isShiny = (\w+)') +ivs_definition = re.compile(r'\.iv = TRAINER_PARTY_IVS\(([0-9 ]+),([0-9 ]+),([0-9 ]+),([0-9 ]+),([0-9 ]+),([0-9 ]+)\)') +evs_definition = re.compile(r'\.ev = TRAINER_PARTY_EVS\(([0-9 ]+),([0-9 ]+),([0-9 ]+),([0-9 ]+),([0-9 ]+),([0-9 ]+)\)') +moves_definition = re.compile(r'\.moves = \{([^}]+)\}') +move_definition = re.compile(r'MOVE_(\w+)') +nature_definition = re.compile(r'\.nature = NATURE_(\w+)') + +# NOTE: These are just for aesthetics, the Pokemon would still compile +# without them. +species_replacements = { + "CHIEN_PAO": "Chien-Pao", + "CHI_YU": "Chi-Yu", + "HAKAMO_O": "Hakamo-o", + "HO_OH": "Ho-Oh", + "JANGMO_O": "Jangmo-o", + "KOMMO_O": "Kommo-o", + "PORYGON_Z": "Porygon-Z", + "ROTOM_": "Rotom-", + "TING_LU": "Ting-Lu", + "TYPE_NULL": "Type: Null", + "WO_CHIEN": "Wo-Chien", + + "_ALOLAN": "-Alola", + "_AQUA_BREED": "-Aqua", + "_BATTLE_BOND": "-Bond", + "_BLAZE_BREED": "-Blaze", + "_CAP": "", + "_CLOAK": "", + "_COMBAT_BREED": "-Combat", + "_CROWED_SHIELD": "-Crowned", + "_CROWED_SWORD": "-Crowned", + "_DRIVE": "", + "_EAST_SEA": "-East", + "_FAMILY_OF_FOUR": "-Four", + "_FEMALE": "-F", + "_FLOWER": "", + "_GALARIAN": "-Galar", + "_GIGANTAMAX": "-Gmax", + "_HISUIAN": "-Hisui", + "_ICE_RIDER": "-Ice", + "_NOICE_FACE": "-Noice", + "_ORIGIN": "-Origin", + "_ORIGINAL_COLOR": "-Original", + "_PALDEAN": "-Paldea", + "_PLUMAGE": "", + "_POKE_BALL": "-Pokeball", + "_SHADOW_RIDER": "-Shadow", + "_STRIKE_STYLE": "-Style", + "_TOTEM": "-Totem", + "_ZEN_MODE": "-Zen", +} + +pokemon_attribute_order = ['Level', 'Ability', 'IVs', 'EVs', 'Happiness', 'Shiny', 'Ball'] + +class Pokemon: + def __init__(self): + self.nickname = None + self.species = None + self.gender = None + self.item = None + self.nature = None + self.attributes = {} + self.attributes['IVs'] = "0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe" + self.moves = [] + +def convert_parties(in_path, in_h): + party_identifier = None + party = None + pokemon = None + parties = {} + + for line_no, line in enumerate(in_h, 1): + try: + line = line[:-1] + if m := begin_party_definition.search(line): + if party: + raise Exception(f"unexpected start of party") + [identifier] = m.groups() + party_identifier = identifier + party = [] + elif end_party_definition.search(line): + if not party: + raise Exception(f"unexpected end of party") + parties[party_identifier] = party + party = None + elif begin_pokemon_definition.search(line): + if pokemon: + raise Exception(f"unexpected start of Pokemon") + pokemon = Pokemon() + elif end_pokemon_definition.search(line): + if not pokemon: + raise Exception(f"unexpected end of Pokemon") + else: + party.append(pokemon) + pokemon = None + elif m := level_definition.search(line): + [level] = m.groups() + pokemon.attributes['Level'] = level + elif m := species_definition.search(line): + [species_] = m.groups() + for match, replacement in species_replacements.items(): + species_ = species_.replace(match, replacement) + pokemon.species = species_.replace("_", " ").title() + elif m := gender_definition.search(line): + [gender_] = m.groups() + if gender_ == 'MALE': + pokemon.gender = 'M' + elif gender_ == 'FEMALE': + pokemon.gender = 'F' + else: + raise Exception(f"unknown gender: '{gender_}'") + elif m := nickname_definition.search(line): + [nickname] = m.groups() + pokemon.nickname = nickname + elif m := item_definition.search(line): + [item_] = m.groups() + pokemon.item = item_.replace("_", " ").title() + elif m := ball_definition.search(line): + [ball] = m.groups() + pokemon.attributes['Ball'] = ball.replace("_", " ").title() + elif m := ability_definition.search(line): + [ability] = m.groups() + pokemon.attributes['Ability'] = ability.replace("_", " ").title() + elif m := friendship_definition.search(line): + [friendship] = m.groups() + pokemon.attributes['Happiness'] = friendship + elif m := shiny_definition.search(line): + [shiny] = m.groups() + if shiny == 'TRUE': + pokemon.attributes['Shiny'] = 'Yes' + elif shiny == 'FALSE': + pokemon.attributes['Shiny'] = 'No' + else: + raise Exception(f"unknown isShiny: '{shiny}'") + elif m := ivs_definition.search(line): + [hp, attack, defense, speed, special_attack, special_defense] = [stat.strip() for stat in m.groups()] + stats = {"HP": hp, "Atk": attack, "Def": defense, "SpA": special_attack, "SpD": special_defense, "Spe": speed} + pokemon.attributes['IVs'] = ' / '.join(f"{value} {key}" for key, value in stats.items()) + elif m := evs_definition.search(line): + [hp, attack, defense, speed, special_attack, special_defense] = [stat.strip() for stat in m.groups()] + stats = {"HP": hp, "Atk": attack, "Def": defense, "SpA": special_attack, "SpD": special_defense, "Spe": speed} + pokemon.attributes['EVs'] = ' / '.join(f"{value} {key}" for key, value in stats.items() if value != '0') + elif m := moves_definition.search(line): + [moves_] = m.groups() + pokemon.moves = [move.replace("_", " ").title() for move in move_definition.findall(moves_) if move != "NONE"] + elif m := nature_definition.search(line): + [nature_] = m.groups() + pokemon.nature = nature_.replace("_", " ").title() + elif is_blank.search(line): + pass + else: + raise Exception(f"could not parse '{line.strip()}'") + except Exception as e: + print(f"{in_path}:{line_no}: {e}") + return parties + +is_trainer_skip = re.compile(r'(const struct Trainer gBattlePartners\[\] = \{)|(^ \{$)|(\.partySize =)|(\.party = NULL)|(\.mugshotEnabled = TRUE)|(\};)') + +begin_trainer_definition = re.compile(r' \[(PARTNER_\w+)\] =') +end_trainer_definition = re.compile(r' }') +trainer_class_definition = re.compile(r'\.trainerClass = TRAINER_CLASS_(\w+)') +encounter_music_gender_definition = re.compile(r'\.encounterMusic_gender = (F_TRAINER_FEMALE \| )?TRAINER_ENCOUNTER_MUSIC_(\w+)') +trainer_pic_definition = re.compile(r'\.trainerPic = TRAINER_BACK_PIC_(\w+)') +trainer_name_definition = re.compile(r'\.trainerName = _\("([^"]*)"\)') +trainer_items_definition = re.compile(r'\.items = \{([^}]*)\}') +trainer_item_definition = re.compile(r'ITEM_(\w+)') +trainer_ai_flags_definition = re.compile(r'\.aiFlags = (.*)') +trainer_ai_flag_definition = re.compile(r'AI_FLAG_(\w+)') +trainer_party_definition = re.compile(r'\.party = TRAINER_PARTY\((\w+)\)') +trainer_mugshot_definition = re.compile(r'\.mugshotColor = MUGSHOT_COLOR_(\w+)') +trainer_starting_status_definition = re.compile(r'\.startingStatus = STARTING_STATUS_(\w+)') + +class_fixups = { + "Rs": "RS", +} + +pic_fixups = { + "Rs": "RS", +} + +class Trainer: + def __init__(self, id_): + self.id = id_ + self.class_ = None + self.encounter_music = None + self.gender = None + self.pic = None + self.name = None + self.items = [] + self.ai_flags = None + self.mugshot = None + self.starting_status = None + self.party = None + +def convert_trainers(in_path, in_h, parties, out_party): + newlines = 0 + trainer = None + for line_no, line in enumerate(in_h, 1): + try: + line = line[:-1] + if m := begin_trainer_definition.search(line): + if trainer: + raise Exception(f"unexpected start of trainer") + [id_] = m.groups() + trainer = Trainer(id_) + elif m := trainer_class_definition.search(line): + [class_] = m.groups() + class_ = class_.replace("_", " ").title() + for match, replacement in class_fixups.items(): + class_ = class_.replace(match, replacement) + trainer.class_ = class_ + elif m := encounter_music_gender_definition.search(line): + [is_female, music] = m.groups() + trainer.gender = 'Female' if is_female else 'Male' + trainer.encounter_music = music.replace("_", " ").title() + elif m := trainer_pic_definition.search(line): + [pic] = m.groups() + pic = pic.replace("_", " ").title() + for match, replacement in pic_fixups.items(): + pic = pic.replace(match, replacement) + trainer.pic = pic + elif m := trainer_name_definition.search(line): + [name] = m.groups() + trainer.name = name + elif m := trainer_items_definition.search(line): + [items] = m.groups() + trainer.items = " / ".join(item.replace("_", " ").title() for item in trainer_item_definition.findall(items) if item != "NONE") + elif m := trainer_ai_flags_definition.search(line): + [ai_flags] = m.groups() + trainer.ai_flags = " / ".join(ai_flag.replace("_", " ").title() for ai_flag in trainer_ai_flag_definition.findall(ai_flags)) + elif m := trainer_mugshot_definition.search(line): + [color] = m.groups() + trainer.mugshot = color.title() + elif m := trainer_starting_status_definition.search(line): + [starting_status] = m.groups() + trainer.starting_status = starting_status.replace("_", " ").title() + elif m := trainer_party_definition.search(line): + [party] = m.groups() + trainer.party = parties[party] + elif end_trainer_definition.search(line): + if not trainer: + raise Exception(f"unexpected end of trainer") + while newlines > 0: + out_party.write(f"\n") + newlines -= 1 + newlines = 1 + out_party.write(f"=== {trainer.id} ===\n") + out_party.write(f"Name: {trainer.name}\n") + out_party.write(f"Class: {trainer.class_}\n") + out_party.write(f"Pic: {trainer.pic}\n") + out_party.write(f"Gender: {trainer.gender}\n") + out_party.write(f"Music: {trainer.encounter_music}\n") + if trainer.items: + out_party.write(f"Items: {trainer.items}\n") + if trainer.ai_flags: + out_party.write(f"AI: {trainer.ai_flags}\n") + if trainer.mugshot: + out_party.write(f"Mugshot: {trainer.mugshot}\n") + if trainer.starting_status: + out_party.write(f"Starting Status: {trainer.starting_status}\n") + if trainer.party: + for i, pokemon in enumerate(trainer.party): + out_party.write(f"\n") + if pokemon.nickname: + out_party.write(f"{pokemon.nickname} ({pokemon.species})") + else: + out_party.write(f"{pokemon.species}") + if pokemon.gender: + out_party.write(f" ({pokemon.gender})") + if pokemon.item and pokemon.item != 'None': + out_party.write(f" @ {pokemon.item}") + out_party.write(f"\n") + if pokemon.nature: + out_party.write(f"{pokemon.nature} Nature\n") + for key in pokemon_attribute_order: + if key in pokemon.attributes: + out_party.write(f"{key}: {pokemon.attributes[key]}\n") + for move in pokemon.moves: + out_party.write(f"- {move}\n") + trainer = None + elif is_blank.search(line) or is_trainer_skip.search(line): + pass + else: + raise Exception(f"could not parse '{line.strip()}'") + except Exception as e: + print(f"{in_path}:{line_no}: {e}") + +if __name__ == '__main__': + try: + [argv0, trainers_in_path, parties_in_path, out_path] = sys.argv + except: + print(f"usage: python3 {sys.argv[0]} ") + else: + with open(trainers_in_path, "r") as trainers_in_h, open(parties_in_path, "r") as parties_in_h, open(out_path, "w") as out_party: + parties = convert_parties(parties_in_path, parties_in_h) + trainers = convert_trainers(trainers_in_path, trainers_in_h, parties, out_party) diff --git a/migration_scripts/1.9/convert_trainer_parties.py b/migration_scripts/1.9/convert_trainer_parties.py index 463816c021..83c9376ae0 100644 --- a/migration_scripts/1.9/convert_trainer_parties.py +++ b/migration_scripts/1.9/convert_trainer_parties.py @@ -1,330 +1,330 @@ -# If you have extra members in 'TrainerMon': -# 1. Add a regular expression which matches that member (e.g. 'shadow_definition'). -# 2. Match that regular expression in 'convert' and write into 'attributes' with the key that 'trainerproc' should parse. -# 3. Add the key used in 'attributes' to 'pokemon_attribute_order'. -# 4. Update 'trainerproc.c' to parse the new key. - -import re -import sys - -is_blank = re.compile(r'^[ \t]*(//.*)?$') - -begin_party_definition = re.compile(r'struct TrainerMon (\w+)\[\] =') -end_party_definition = re.compile(r'^};') -begin_pokemon_definition = re.compile(r'^ { *$') -end_pokemon_definition = re.compile(r'^ },? *$') -level_definition = re.compile(r'\.lvl = (\d+)') -species_definition = re.compile(r'\.species = SPECIES_(\w+)') -gender_definition = re.compile(r'\.gender = TRAINER_MON_(\w+)') -nickname_definition = re.compile(r'\.nickname = COMPOUND_STRING\("([^"]+)"\)') -item_definition = re.compile(r'\.heldItem = ITEM_(\w+)') -ball_definition = re.compile(r'\.ball = ITEM_(\w+)') -ability_definition = re.compile(r'\.ability = ABILITY_(\w+)') -friendship_definition = re.compile(r'\.friendship = (\d+)') -shiny_definition = re.compile(r'\.isShiny = (\w+)') -ivs_definition = re.compile(r'\.iv = TRAINER_PARTY_IVS\(([0-9 ]+),([0-9 ]+),([0-9 ]+),([0-9 ]+),([0-9 ]+),([0-9 ]+)\)') -evs_definition = re.compile(r'\.ev = TRAINER_PARTY_EVS\(([0-9 ]+),([0-9 ]+),([0-9 ]+),([0-9 ]+),([0-9 ]+),([0-9 ]+)\)') -moves_definition = re.compile(r'\.moves = \{([^}]+)\}') -move_definition = re.compile(r'MOVE_(\w+)') -nature_definition = re.compile(r'\.nature = NATURE_(\w+)') - -# NOTE: These are just for aesthetics, the Pokemon would still compile -# without them. -species_replacements = { - "CHIEN_PAO": "Chien-Pao", - "CHI_YU": "Chi-Yu", - "HAKAMO_O": "Hakamo-o", - "HO_OH": "Ho-Oh", - "JANGMO_O": "Jangmo-o", - "KOMMO_O": "Kommo-o", - "PORYGON_Z": "Porygon-Z", - "ROTOM_": "Rotom-", - "TING_LU": "Ting-Lu", - "TYPE_NULL": "Type: Null", - "WO_CHIEN": "Wo-Chien", - - "_ALOLAN": "-Alola", - "_AQUA_BREED": "-Aqua", - "_BATTLE_BOND": "-Bond", - "_BLAZE_BREED": "-Blaze", - "_CAP": "", - "_CLOAK": "", - "_COMBAT_BREED": "-Combat", - "_CROWED_SHIELD": "-Crowned", - "_CROWED_SWORD": "-Crowned", - "_DRIVE": "", - "_EAST_SEA": "-East", - "_FAMILY_OF_FOUR": "-Four", - "_FEMALE": "-F", - "_FLOWER": "", - "_GALARIAN": "-Galar", - "_GIGANTAMAX": "-Gmax", - "_HISUIAN": "-Hisui", - "_ICE_RIDER": "-Ice", - "_NOICE_FACE": "-Noice", - "_ORIGIN": "-Origin", - "_ORIGINAL_COLOR": "-Original", - "_PALDEAN": "-Paldea", - "_PLUMAGE": "", - "_POKE_BALL": "-Pokeball", - "_SHADOW_RIDER": "-Shadow", - "_STRIKE_STYLE": "-Style", - "_TOTEM": "-Totem", - "_ZEN_MODE": "-Zen", -} - -pokemon_attribute_order = ['Level', 'Ability', 'IVs', 'EVs', 'Happiness', 'Shiny', 'Ball'] - -class Pokemon: - def __init__(self): - self.nickname = None - self.species = None - self.gender = None - self.item = None - self.nature = None - self.attributes = {} - self.attributes['IVs'] = "0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe" - self.moves = [] - -def convert_parties(in_path, in_h): - party_identifier = None - party = None - pokemon = None - parties = {} - - for line_no, line in enumerate(in_h, 1): - try: - line = line[:-1] - if m := begin_party_definition.search(line): - if party: - raise Exception(f"unexpected start of party") - [identifier] = m.groups() - party_identifier = identifier - party = [] - elif end_party_definition.search(line): - if not party: - raise Exception(f"unexpected end of party") - parties[party_identifier] = party - party = None - elif begin_pokemon_definition.search(line): - if pokemon: - raise Exception(f"unexpected start of Pokemon") - pokemon = Pokemon() - elif end_pokemon_definition.search(line): - if not pokemon: - raise Exception(f"unexpected end of Pokemon") - else: - party.append(pokemon) - pokemon = None - elif m := level_definition.search(line): - [level] = m.groups() - pokemon.attributes['Level'] = level - elif m := species_definition.search(line): - [species_] = m.groups() - for match, replacement in species_replacements.items(): - species_ = species_.replace(match, replacement) - pokemon.species = species_.replace("_", " ").title() - elif m := gender_definition.search(line): - [gender_] = m.groups() - if gender_ == 'MALE': - pokemon.gender = 'M' - elif gender_ == 'FEMALE': - pokemon.gender = 'F' - else: - raise Exception(f"unknown gender: '{gender_}'") - elif m := nickname_definition.search(line): - [nickname] = m.groups() - pokemon.nickname = nickname - elif m := item_definition.search(line): - [item_] = m.groups() - pokemon.item = item_.replace("_", " ").title() - elif m := ball_definition.search(line): - [ball] = m.groups() - pokemon.attributes['Ball'] = ball.replace("_", " ").title() - elif m := ability_definition.search(line): - [ability] = m.groups() - pokemon.attributes['Ability'] = ability.replace("_", " ").title() - elif m := friendship_definition.search(line): - [friendship] = m.groups() - pokemon.attributes['Happiness'] = friendship - elif m := shiny_definition.search(line): - [shiny] = m.groups() - if shiny == 'TRUE': - pokemon.attributes['Shiny'] = 'Yes' - elif shiny == 'FALSE': - pokemon.attributes['Shiny'] = 'No' - else: - raise Exception(f"unknown isShiny: '{shiny}'") - elif m := ivs_definition.search(line): - [hp, attack, defense, speed, special_attack, special_defense] = [stat.strip() for stat in m.groups()] - stats = {"HP": hp, "Atk": attack, "Def": defense, "SpA": special_attack, "SpD": special_defense, "Spe": speed} - pokemon.attributes['IVs'] = ' / '.join(f"{value} {key}" for key, value in stats.items()) - elif m := evs_definition.search(line): - [hp, attack, defense, speed, special_attack, special_defense] = [stat.strip() for stat in m.groups()] - stats = {"HP": hp, "Atk": attack, "Def": defense, "SpA": special_attack, "SpD": special_defense, "Spe": speed} - pokemon.attributes['EVs'] = ' / '.join(f"{value} {key}" for key, value in stats.items() if value != '0') - elif m := moves_definition.search(line): - [moves_] = m.groups() - pokemon.moves = [move.replace("_", " ").title() for move in move_definition.findall(moves_) if move != "NONE"] - elif m := nature_definition.search(line): - [nature_] = m.groups() - pokemon.nature = nature_.replace("_", " ").title() - elif is_blank.search(line): - pass - else: - raise Exception(f"could not parse '{line.strip()}'") - except Exception as e: - print(f"{in_path}:{line_no}: {e}") - return parties - -is_trainer_skip = re.compile(r'(const struct Trainer gTrainers\[\] = \{)|(^ \{$)|(\.partySize =)|(\.party = NULL)|(\.mugshotEnabled = TRUE)|(\};)') - -begin_trainer_definition = re.compile(r' \[(TRAINER_\w+)\] =') -end_trainer_definition = re.compile(r' }') -trainer_class_definition = re.compile(r'\.trainerClass = TRAINER_CLASS_(\w+)') -encounter_music_gender_definition = re.compile(r'\.encounterMusic_gender = (F_TRAINER_FEMALE \| )?TRAINER_ENCOUNTER_MUSIC_(\w+)') -trainer_pic_definition = re.compile(r'\.trainerPic = TRAINER_PIC_(\w+)') -trainer_name_definition = re.compile(r'\.trainerName = _\("([^"]*)"\)') -trainer_items_definition = re.compile(r'\.items = \{([^}]*)\}') -trainer_item_definition = re.compile(r'ITEM_(\w+)') -trainer_double_battle_definition = re.compile(r'\.doubleBattle = (\w+)') -trainer_ai_flags_definition = re.compile(r'\.aiFlags = (.*)') -trainer_ai_flag_definition = re.compile(r'AI_FLAG_(\w+)') -trainer_party_definition = re.compile(r'\.party = TRAINER_PARTY\((\w+)\)') -trainer_mugshot_definition = re.compile(r'\.mugshotColor = MUGSHOT_COLOR_(\w+)') -trainer_starting_status_definition = re.compile(r'\.startingStatus = STARTING_STATUS_(\w+)') - -class_fixups = { - "Rs": "RS", -} - -pic_fixups = { - "Rs": "RS", -} - -class Trainer: - def __init__(self, id_): - self.id = id_ - self.class_ = None - self.encounter_music = None - self.gender = None - self.pic = None - self.name = None - self.items = [] - self.double_battle = None - self.ai_flags = None - self.mugshot = None - self.starting_status = None - self.party = None - -def convert_trainers(in_path, in_h, parties, out_party): - newlines = 0 - trainer = None - for line_no, line in enumerate(in_h, 1): - try: - line = line[:-1] - if m := begin_trainer_definition.search(line): - if trainer: - raise Exception(f"unexpected start of trainer") - [id_] = m.groups() - trainer = Trainer(id_) - elif m := trainer_class_definition.search(line): - [class_] = m.groups() - class_ = class_.replace("_", " ").title() - for match, replacement in class_fixups.items(): - class_ = class_.replace(match, replacement) - trainer.class_ = class_ - elif m := encounter_music_gender_definition.search(line): - [is_female, music] = m.groups() - trainer.gender = 'Female' if is_female else 'Male' - trainer.encounter_music = music.replace("_", " ").title() - elif m := trainer_pic_definition.search(line): - [pic] = m.groups() - pic = pic.replace("_", " ").title() - for match, replacement in pic_fixups.items(): - pic = pic.replace(match, replacement) - trainer.pic = pic - elif m := trainer_name_definition.search(line): - [name] = m.groups() - trainer.name = name - elif m := trainer_items_definition.search(line): - [items] = m.groups() - trainer.items = " / ".join(item.replace("_", " ").title() for item in trainer_item_definition.findall(items) if item != "NONE") - elif m := trainer_double_battle_definition.search(line): - [double_battle] = m.groups() - if double_battle == 'TRUE': - trainer.double_battle = "Yes" - elif double_battle == 'FALSE': - trainer.double_battle = "No" - else: - raise Exception(f"unknown doubleBattle: '{double_battle}'") - elif m := trainer_ai_flags_definition.search(line): - [ai_flags] = m.groups() - trainer.ai_flags = " / ".join(ai_flag.replace("_", " ").title() for ai_flag in trainer_ai_flag_definition.findall(ai_flags)) - elif m := trainer_mugshot_definition.search(line): - [color] = m.groups() - trainer.mugshot = color.title() - elif m := trainer_starting_status_definition.search(line): - [starting_status] = m.groups() - trainer.starting_status = starting_status.replace("_", " ").title() - elif m := trainer_party_definition.search(line): - [party] = m.groups() - trainer.party = parties[party] - elif end_trainer_definition.search(line): - if not trainer: - raise Exception(f"unexpected end of trainer") - while newlines > 0: - out_party.write(f"\n") - newlines -= 1 - newlines = 1 - out_party.write(f"=== {trainer.id} ===\n") - out_party.write(f"Name: {trainer.name}\n") - out_party.write(f"Class: {trainer.class_}\n") - out_party.write(f"Pic: {trainer.pic}\n") - out_party.write(f"Gender: {trainer.gender}\n") - out_party.write(f"Music: {trainer.encounter_music}\n") - if trainer.items: - out_party.write(f"Items: {trainer.items}\n") - out_party.write(f"Double Battle: {trainer.double_battle}\n") - if trainer.ai_flags: - out_party.write(f"AI: {trainer.ai_flags}\n") - if trainer.mugshot: - out_party.write(f"Mugshot: {trainer.mugshot}\n") - if trainer.starting_status: - out_party.write(f"Starting Status: {trainer.starting_status}\n") - if trainer.party: - for i, pokemon in enumerate(trainer.party): - out_party.write(f"\n") - if pokemon.nickname: - out_party.write(f"{pokemon.nickname} ({pokemon.species})") - else: - out_party.write(f"{pokemon.species}") - if pokemon.gender: - out_party.write(f" ({pokemon.gender})") - if pokemon.item and pokemon.item != 'None': - out_party.write(f" @ {pokemon.item}") - out_party.write(f"\n") - if pokemon.nature: - out_party.write(f"{pokemon.nature} Nature\n") - for key in pokemon_attribute_order: - if key in pokemon.attributes: - out_party.write(f"{key}: {pokemon.attributes[key]}\n") - for move in pokemon.moves: - out_party.write(f"- {move}\n") - trainer = None - elif is_blank.search(line) or is_trainer_skip.search(line): - pass - else: - raise Exception(f"could not parse '{line.strip()}'") - except Exception as e: - print(f"{in_path}:{line_no}: {e}") - -if __name__ == '__main__': - try: - [argv0, trainers_in_path, parties_in_path, out_path] = sys.argv - except: - print(f"usage: python3 {sys.argv[0]} ") - else: - with open(trainers_in_path, "r") as trainers_in_h, open(parties_in_path, "r") as parties_in_h, open(out_path, "w") as out_party: - parties = convert_parties(parties_in_path, parties_in_h) - trainers = convert_trainers(trainers_in_path, trainers_in_h, parties, out_party) +# If you have extra members in 'TrainerMon': +# 1. Add a regular expression which matches that member (e.g. 'shadow_definition'). +# 2. Match that regular expression in 'convert' and write into 'attributes' with the key that 'trainerproc' should parse. +# 3. Add the key used in 'attributes' to 'pokemon_attribute_order'. +# 4. Update 'trainerproc.c' to parse the new key. + +import re +import sys + +is_blank = re.compile(r'^[ \t]*(//.*)?$') + +begin_party_definition = re.compile(r'struct TrainerMon (\w+)\[\] =') +end_party_definition = re.compile(r'^};') +begin_pokemon_definition = re.compile(r'^ { *$') +end_pokemon_definition = re.compile(r'^ },? *$') +level_definition = re.compile(r'\.lvl = (\d+)') +species_definition = re.compile(r'\.species = SPECIES_(\w+)') +gender_definition = re.compile(r'\.gender = TRAINER_MON_(\w+)') +nickname_definition = re.compile(r'\.nickname = COMPOUND_STRING\("([^"]+)"\)') +item_definition = re.compile(r'\.heldItem = ITEM_(\w+)') +ball_definition = re.compile(r'\.ball = ITEM_(\w+)') +ability_definition = re.compile(r'\.ability = ABILITY_(\w+)') +friendship_definition = re.compile(r'\.friendship = (\d+)') +shiny_definition = re.compile(r'\.isShiny = (\w+)') +ivs_definition = re.compile(r'\.iv = TRAINER_PARTY_IVS\(([0-9 ]+),([0-9 ]+),([0-9 ]+),([0-9 ]+),([0-9 ]+),([0-9 ]+)\)') +evs_definition = re.compile(r'\.ev = TRAINER_PARTY_EVS\(([0-9 ]+),([0-9 ]+),([0-9 ]+),([0-9 ]+),([0-9 ]+),([0-9 ]+)\)') +moves_definition = re.compile(r'\.moves = \{([^}]+)\}') +move_definition = re.compile(r'MOVE_(\w+)') +nature_definition = re.compile(r'\.nature = NATURE_(\w+)') + +# NOTE: These are just for aesthetics, the Pokemon would still compile +# without them. +species_replacements = { + "CHIEN_PAO": "Chien-Pao", + "CHI_YU": "Chi-Yu", + "HAKAMO_O": "Hakamo-o", + "HO_OH": "Ho-Oh", + "JANGMO_O": "Jangmo-o", + "KOMMO_O": "Kommo-o", + "PORYGON_Z": "Porygon-Z", + "ROTOM_": "Rotom-", + "TING_LU": "Ting-Lu", + "TYPE_NULL": "Type: Null", + "WO_CHIEN": "Wo-Chien", + + "_ALOLAN": "-Alola", + "_AQUA_BREED": "-Aqua", + "_BATTLE_BOND": "-Bond", + "_BLAZE_BREED": "-Blaze", + "_CAP": "", + "_CLOAK": "", + "_COMBAT_BREED": "-Combat", + "_CROWED_SHIELD": "-Crowned", + "_CROWED_SWORD": "-Crowned", + "_DRIVE": "", + "_EAST_SEA": "-East", + "_FAMILY_OF_FOUR": "-Four", + "_FEMALE": "-F", + "_FLOWER": "", + "_GALARIAN": "-Galar", + "_GIGANTAMAX": "-Gmax", + "_HISUIAN": "-Hisui", + "_ICE_RIDER": "-Ice", + "_NOICE_FACE": "-Noice", + "_ORIGIN": "-Origin", + "_ORIGINAL_COLOR": "-Original", + "_PALDEAN": "-Paldea", + "_PLUMAGE": "", + "_POKE_BALL": "-Pokeball", + "_SHADOW_RIDER": "-Shadow", + "_STRIKE_STYLE": "-Style", + "_TOTEM": "-Totem", + "_ZEN_MODE": "-Zen", +} + +pokemon_attribute_order = ['Level', 'Ability', 'IVs', 'EVs', 'Happiness', 'Shiny', 'Ball'] + +class Pokemon: + def __init__(self): + self.nickname = None + self.species = None + self.gender = None + self.item = None + self.nature = None + self.attributes = {} + self.attributes['IVs'] = "0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe" + self.moves = [] + +def convert_parties(in_path, in_h): + party_identifier = None + party = None + pokemon = None + parties = {} + + for line_no, line in enumerate(in_h, 1): + try: + line = line[:-1] + if m := begin_party_definition.search(line): + if party: + raise Exception(f"unexpected start of party") + [identifier] = m.groups() + party_identifier = identifier + party = [] + elif end_party_definition.search(line): + if not party: + raise Exception(f"unexpected end of party") + parties[party_identifier] = party + party = None + elif begin_pokemon_definition.search(line): + if pokemon: + raise Exception(f"unexpected start of Pokemon") + pokemon = Pokemon() + elif end_pokemon_definition.search(line): + if not pokemon: + raise Exception(f"unexpected end of Pokemon") + else: + party.append(pokemon) + pokemon = None + elif m := level_definition.search(line): + [level] = m.groups() + pokemon.attributes['Level'] = level + elif m := species_definition.search(line): + [species_] = m.groups() + for match, replacement in species_replacements.items(): + species_ = species_.replace(match, replacement) + pokemon.species = species_.replace("_", " ").title() + elif m := gender_definition.search(line): + [gender_] = m.groups() + if gender_ == 'MALE': + pokemon.gender = 'M' + elif gender_ == 'FEMALE': + pokemon.gender = 'F' + else: + raise Exception(f"unknown gender: '{gender_}'") + elif m := nickname_definition.search(line): + [nickname] = m.groups() + pokemon.nickname = nickname + elif m := item_definition.search(line): + [item_] = m.groups() + pokemon.item = item_.replace("_", " ").title() + elif m := ball_definition.search(line): + [ball] = m.groups() + pokemon.attributes['Ball'] = ball.replace("_", " ").title() + elif m := ability_definition.search(line): + [ability] = m.groups() + pokemon.attributes['Ability'] = ability.replace("_", " ").title() + elif m := friendship_definition.search(line): + [friendship] = m.groups() + pokemon.attributes['Happiness'] = friendship + elif m := shiny_definition.search(line): + [shiny] = m.groups() + if shiny == 'TRUE': + pokemon.attributes['Shiny'] = 'Yes' + elif shiny == 'FALSE': + pokemon.attributes['Shiny'] = 'No' + else: + raise Exception(f"unknown isShiny: '{shiny}'") + elif m := ivs_definition.search(line): + [hp, attack, defense, speed, special_attack, special_defense] = [stat.strip() for stat in m.groups()] + stats = {"HP": hp, "Atk": attack, "Def": defense, "SpA": special_attack, "SpD": special_defense, "Spe": speed} + pokemon.attributes['IVs'] = ' / '.join(f"{value} {key}" for key, value in stats.items()) + elif m := evs_definition.search(line): + [hp, attack, defense, speed, special_attack, special_defense] = [stat.strip() for stat in m.groups()] + stats = {"HP": hp, "Atk": attack, "Def": defense, "SpA": special_attack, "SpD": special_defense, "Spe": speed} + pokemon.attributes['EVs'] = ' / '.join(f"{value} {key}" for key, value in stats.items() if value != '0') + elif m := moves_definition.search(line): + [moves_] = m.groups() + pokemon.moves = [move.replace("_", " ").title() for move in move_definition.findall(moves_) if move != "NONE"] + elif m := nature_definition.search(line): + [nature_] = m.groups() + pokemon.nature = nature_.replace("_", " ").title() + elif is_blank.search(line): + pass + else: + raise Exception(f"could not parse '{line.strip()}'") + except Exception as e: + print(f"{in_path}:{line_no}: {e}") + return parties + +is_trainer_skip = re.compile(r'(const struct Trainer gTrainers\[\] = \{)|(^ \{$)|(\.partySize =)|(\.party = NULL)|(\.mugshotEnabled = TRUE)|(\};)') + +begin_trainer_definition = re.compile(r' \[(TRAINER_\w+)\] =') +end_trainer_definition = re.compile(r' }') +trainer_class_definition = re.compile(r'\.trainerClass = TRAINER_CLASS_(\w+)') +encounter_music_gender_definition = re.compile(r'\.encounterMusic_gender = (F_TRAINER_FEMALE \| )?TRAINER_ENCOUNTER_MUSIC_(\w+)') +trainer_pic_definition = re.compile(r'\.trainerPic = TRAINER_PIC_(\w+)') +trainer_name_definition = re.compile(r'\.trainerName = _\("([^"]*)"\)') +trainer_items_definition = re.compile(r'\.items = \{([^}]*)\}') +trainer_item_definition = re.compile(r'ITEM_(\w+)') +trainer_double_battle_definition = re.compile(r'\.doubleBattle = (\w+)') +trainer_ai_flags_definition = re.compile(r'\.aiFlags = (.*)') +trainer_ai_flag_definition = re.compile(r'AI_FLAG_(\w+)') +trainer_party_definition = re.compile(r'\.party = TRAINER_PARTY\((\w+)\)') +trainer_mugshot_definition = re.compile(r'\.mugshotColor = MUGSHOT_COLOR_(\w+)') +trainer_starting_status_definition = re.compile(r'\.startingStatus = STARTING_STATUS_(\w+)') + +class_fixups = { + "Rs": "RS", +} + +pic_fixups = { + "Rs": "RS", +} + +class Trainer: + def __init__(self, id_): + self.id = id_ + self.class_ = None + self.encounter_music = None + self.gender = None + self.pic = None + self.name = None + self.items = [] + self.double_battle = None + self.ai_flags = None + self.mugshot = None + self.starting_status = None + self.party = None + +def convert_trainers(in_path, in_h, parties, out_party): + newlines = 0 + trainer = None + for line_no, line in enumerate(in_h, 1): + try: + line = line[:-1] + if m := begin_trainer_definition.search(line): + if trainer: + raise Exception(f"unexpected start of trainer") + [id_] = m.groups() + trainer = Trainer(id_) + elif m := trainer_class_definition.search(line): + [class_] = m.groups() + class_ = class_.replace("_", " ").title() + for match, replacement in class_fixups.items(): + class_ = class_.replace(match, replacement) + trainer.class_ = class_ + elif m := encounter_music_gender_definition.search(line): + [is_female, music] = m.groups() + trainer.gender = 'Female' if is_female else 'Male' + trainer.encounter_music = music.replace("_", " ").title() + elif m := trainer_pic_definition.search(line): + [pic] = m.groups() + pic = pic.replace("_", " ").title() + for match, replacement in pic_fixups.items(): + pic = pic.replace(match, replacement) + trainer.pic = pic + elif m := trainer_name_definition.search(line): + [name] = m.groups() + trainer.name = name + elif m := trainer_items_definition.search(line): + [items] = m.groups() + trainer.items = " / ".join(item.replace("_", " ").title() for item in trainer_item_definition.findall(items) if item != "NONE") + elif m := trainer_double_battle_definition.search(line): + [double_battle] = m.groups() + if double_battle == 'TRUE': + trainer.double_battle = "Yes" + elif double_battle == 'FALSE': + trainer.double_battle = "No" + else: + raise Exception(f"unknown doubleBattle: '{double_battle}'") + elif m := trainer_ai_flags_definition.search(line): + [ai_flags] = m.groups() + trainer.ai_flags = " / ".join(ai_flag.replace("_", " ").title() for ai_flag in trainer_ai_flag_definition.findall(ai_flags)) + elif m := trainer_mugshot_definition.search(line): + [color] = m.groups() + trainer.mugshot = color.title() + elif m := trainer_starting_status_definition.search(line): + [starting_status] = m.groups() + trainer.starting_status = starting_status.replace("_", " ").title() + elif m := trainer_party_definition.search(line): + [party] = m.groups() + trainer.party = parties[party] + elif end_trainer_definition.search(line): + if not trainer: + raise Exception(f"unexpected end of trainer") + while newlines > 0: + out_party.write(f"\n") + newlines -= 1 + newlines = 1 + out_party.write(f"=== {trainer.id} ===\n") + out_party.write(f"Name: {trainer.name}\n") + out_party.write(f"Class: {trainer.class_}\n") + out_party.write(f"Pic: {trainer.pic}\n") + out_party.write(f"Gender: {trainer.gender}\n") + out_party.write(f"Music: {trainer.encounter_music}\n") + if trainer.items: + out_party.write(f"Items: {trainer.items}\n") + out_party.write(f"Double Battle: {trainer.double_battle}\n") + if trainer.ai_flags: + out_party.write(f"AI: {trainer.ai_flags}\n") + if trainer.mugshot: + out_party.write(f"Mugshot: {trainer.mugshot}\n") + if trainer.starting_status: + out_party.write(f"Starting Status: {trainer.starting_status}\n") + if trainer.party: + for i, pokemon in enumerate(trainer.party): + out_party.write(f"\n") + if pokemon.nickname: + out_party.write(f"{pokemon.nickname} ({pokemon.species})") + else: + out_party.write(f"{pokemon.species}") + if pokemon.gender: + out_party.write(f" ({pokemon.gender})") + if pokemon.item and pokemon.item != 'None': + out_party.write(f" @ {pokemon.item}") + out_party.write(f"\n") + if pokemon.nature: + out_party.write(f"{pokemon.nature} Nature\n") + for key in pokemon_attribute_order: + if key in pokemon.attributes: + out_party.write(f"{key}: {pokemon.attributes[key]}\n") + for move in pokemon.moves: + out_party.write(f"- {move}\n") + trainer = None + elif is_blank.search(line) or is_trainer_skip.search(line): + pass + else: + raise Exception(f"could not parse '{line.strip()}'") + except Exception as e: + print(f"{in_path}:{line_no}: {e}") + +if __name__ == '__main__': + try: + [argv0, trainers_in_path, parties_in_path, out_path] = sys.argv + except: + print(f"usage: python3 {sys.argv[0]} ") + else: + with open(trainers_in_path, "r") as trainers_in_h, open(parties_in_path, "r") as parties_in_h, open(out_path, "w") as out_party: + parties = convert_parties(parties_in_path, parties_in_h) + trainers = convert_trainers(trainers_in_path, trainers_in_h, parties, out_party) diff --git a/migration_scripts/1.9/egg_move_refactor.py b/migration_scripts/1.9/egg_move_refactor.py index 498fa5da61..64bac84f6e 100644 --- a/migration_scripts/1.9/egg_move_refactor.py +++ b/migration_scripts/1.9/egg_move_refactor.py @@ -1,51 +1,51 @@ -import re -import glob - -eggMoveSpecies = [] - -exceptions = [ # the following exceptions are hardcoded to streamline the process. you may need to manually check what happens in case you have added forms that work similar to these below - ["ShellosWestSea", "Shellos"], - ["OricorioBaile", "Oricorio"] -] - -# convert egg_moves.h to the new format -with open("src/data/pokemon/egg_moves.h", "r") as f: - data = f.read() - -data = re.sub(r"#define(.|\n)*const u16 gEggMoves\[\] = {", "static const u16 sNoneEggMoveLearnset[] = {\n MOVE_UNAVAILABLE,\n};\n", data) # remove and replace header -data = re.sub(r"\n EGG_MOVES_TERMINATOR\n};\n\n", "", data) # remove footer - -for mon in re.findall(r"egg_moves\((.*),", data): - monname = re.sub(r"_", " ", mon).title().replace(" ", "") - for x in exceptions: - if monname == x[0]: - monname = x[1] - # add it to the list for later - eggMoveSpecies.append(monname) - # regex the egg_moves.h file - data = re.sub(r" egg_moves\(" + mon + r",", "static const u16 s%sEggMoveLearnset[] = {" % monname, data) - -data = re.sub(r"\),\n", ",\n MOVE_UNAVAILABLE,\n};\n", data) # add terminator to each old macro - -data = re.sub(r" MOVE_", " MOVE_", data) # fix indentation - -with open("src/data/pokemon/egg_moves.h", "w") as f: - f.write(data) - -# update gBaseStats - -for file in glob.glob('./src/data/pokemon/species_info/gen_*_families.h'): - with open(file, "r") as f: - data = f.read() - - # go through all Pokemon with teachable learnsets that are also in the list, then assign egg moves to them - for mon in eggMoveSpecies: - # first do the plain replacements outside of macros - data = re.sub(r"\.teachableLearnset = s" + mon + r"sTeachableLearnset,\n", ".teachableLearnset = s%sTeachableLearnset,\n .eggMoveLearnset = s%sEggMoveLearnset,\n" % (mon, mon), data) - # check for macros (since they require \ at the end of the line and do those manually) - macrocheck = re.findall(r"\.teachableLearnset = s" + mon + r"TeachableLearnset,( *)\\\\", data) - if len(macrocheck) > 0: - data = re.sub(r"\.teachableLearnset = s" + mon + r"TeachableLearnset," + macrocheck[0] + r"\\\\", ".teachableLearnset = s%sTeachableLearnset,%s\\\\\n .eggMoveLearnset = s%sEggMoveLearnset,%s\\\\" % (mon, macrocheck[0], mon, " " * (len(macrocheck[0]) + 4)), data) - - with open(file, "w") as f: - f.write(data) +import re +import glob + +eggMoveSpecies = [] + +exceptions = [ # the following exceptions are hardcoded to streamline the process. you may need to manually check what happens in case you have added forms that work similar to these below + ["ShellosWestSea", "Shellos"], + ["OricorioBaile", "Oricorio"] +] + +# convert egg_moves.h to the new format +with open("src/data/pokemon/egg_moves.h", "r") as f: + data = f.read() + +data = re.sub(r"#define(.|\n)*const u16 gEggMoves\[\] = {", "static const u16 sNoneEggMoveLearnset[] = {\n MOVE_UNAVAILABLE,\n};\n", data) # remove and replace header +data = re.sub(r"\n EGG_MOVES_TERMINATOR\n};\n\n", "", data) # remove footer + +for mon in re.findall(r"egg_moves\((.*),", data): + monname = re.sub(r"_", " ", mon).title().replace(" ", "") + for x in exceptions: + if monname == x[0]: + monname = x[1] + # add it to the list for later + eggMoveSpecies.append(monname) + # regex the egg_moves.h file + data = re.sub(r" egg_moves\(" + mon + r",", "static const u16 s%sEggMoveLearnset[] = {" % monname, data) + +data = re.sub(r"\),\n", ",\n MOVE_UNAVAILABLE,\n};\n", data) # add terminator to each old macro + +data = re.sub(r" MOVE_", " MOVE_", data) # fix indentation + +with open("src/data/pokemon/egg_moves.h", "w") as f: + f.write(data) + +# update gBaseStats + +for file in glob.glob('./src/data/pokemon/species_info/gen_*_families.h'): + with open(file, "r") as f: + data = f.read() + + # go through all Pokemon with teachable learnsets that are also in the list, then assign egg moves to them + for mon in eggMoveSpecies: + # first do the plain replacements outside of macros + data = re.sub(r"\.teachableLearnset = s" + mon + r"sTeachableLearnset,\n", ".teachableLearnset = s%sTeachableLearnset,\n .eggMoveLearnset = s%sEggMoveLearnset,\n" % (mon, mon), data) + # check for macros (since they require \ at the end of the line and do those manually) + macrocheck = re.findall(r"\.teachableLearnset = s" + mon + r"TeachableLearnset,( *)\\\\", data) + if len(macrocheck) > 0: + data = re.sub(r"\.teachableLearnset = s" + mon + r"TeachableLearnset," + macrocheck[0] + r"\\\\", ".teachableLearnset = s%sTeachableLearnset,%s\\\\\n .eggMoveLearnset = s%sEggMoveLearnset,%s\\\\" % (mon, macrocheck[0], mon, " " * (len(macrocheck[0]) + 4)), data) + + with open(file, "w") as f: + f.write(data) diff --git a/python_tools/test.py b/python_tools/test.py index f6eb7b1933..db53d85da8 100644 --- a/python_tools/test.py +++ b/python_tools/test.py @@ -1,15 +1,15 @@ -# 原始字符串 -text = "全副武装的样子。\n即使是极巨化宝可梦的\n攻击也能轻易抵挡。" - -# 按照\n分割 -split_text = text.split('\n') - -# 格式化输出为需要的三段,并处理最后一段不加\\n -formatted_text = [f'"{part}\\n"' for part in split_text[:-1]] # 所有除最后一段外加\\n -formatted_text.append(f'"{split_text[-1]}"') # 最后一段不加\\n - -# 拼接成最终的描述 -description = '\n'.join(formatted_text) - -# 输出结果 -print(description) +# 原始字符串 +text = "全副武装的样子。\n即使是极巨化宝可梦的\n攻击也能轻易抵挡。" + +# 按照\n分割 +split_text = text.split('\n') + +# 格式化输出为需要的三段,并处理最后一段不加\\n +formatted_text = [f'"{part}\\n"' for part in split_text[:-1]] # 所有除最后一段外加\\n +formatted_text.append(f'"{split_text[-1]}"') # 最后一段不加\\n + +# 拼接成最终的描述 +description = '\n'.join(formatted_text) + +# 输出结果 +print(description) diff --git a/python_tools/translate_pokemon.py b/python_tools/translate_pokemon.py index bcbe335f04..58c98edbe0 100644 --- a/python_tools/translate_pokemon.py +++ b/python_tools/translate_pokemon.py @@ -1,79 +1,79 @@ -import os -import re -import pandas as pd -import os - -current_folder = os.path.dirname(os.path.abspath(__file__)) - -def convert_description_to_multiline(description): - split_text = description.split('\\n') - - # 格式化输出为需要的三段,并处理最后一段不加\\n - formatted_text = [f'"{part}\\\\n"' for part in split_text[:-1]] # 所有除最后一段外加\\n - formatted_text.append(f'"{split_text[-1]}"') # 最后一段不加\\n - - # 拼接成最终的描述 - description = '\n\\t\\t\\t'.join(formatted_text) - final=r'.description = COMPOUND_STRING(\n\t\t\t' + description+ '),' - return final - -def query_pokemon_info(name, df): - try: - result = df.loc[name] - return { - 'speciesName': result['speciesName'], - 'categoryName': result['categoryName'], - 'description': result['description'] - } - except KeyError: - return None - -def replace_species_info(content, df): - pattern = r"\[SPECIES_(\w+)\]\s*=\s*\{.*?\n\s*\},?" - matches = list(re.finditer(pattern, content, re.DOTALL)) - - for match in matches: - species = match.group(1) - original_block = match.group(0) - info = query_pokemon_info("SPECIES_"+species, df) - if not info: - log(f"❌ 未找到 {'SPECIES_'+species},跳过") - continue - - block = original_block - - # 替换 .speciesName - block = re.sub(r'\.speciesName\s*=\s*_\(.*?\),', f'.speciesName = _("{info["speciesName"]}"),', block) - - # 替换 .categoryName - block = re.sub(r'\.categoryName\s*=\s*_\(.*?\),', f'.categoryName = _("{info["categoryName"]}"),', block) - - # 替换 .description - block = re.sub(r'\.description\s*=\s*COMPOUND_STRING\((?:.|\n)*?\),', convert_description_to_multiline(info["description"]), block) - - content = content.replace(original_block, block) - - return content - -def log(message): - with open(current_folder+"\log.txt", "a", encoding="utf-8") as log_file: - log_file.write(message + "\n") - print(message) - -if __name__ == "__main__": - - work_folder = current_folder +"\..\src\data\pokemon\species_info" - df = pd.read_excel(current_folder +r'\src\图鉴.xlsx') - df.set_index('name', inplace=True) - - for filename in os.listdir(work_folder): - if re.match(r'^gen_\d+_families\.h$', filename): - file_path = os.path.join(work_folder, filename) - log(f"✅ 处理文件:{file_path}") - with open(file_path, "r", encoding="utf-8") as f: - content = f.read() - - new_content = replace_species_info(content, df) - - with open(file_path, "w", encoding="utf-8") as f: - f.write(new_content) +import os +import re +import pandas as pd +import os + +current_folder = os.path.dirname(os.path.abspath(__file__)) + +def convert_description_to_multiline(description): + split_text = description.split('\\n') + + # 格式化输出为需要的三段,并处理最后一段不加\\n + formatted_text = [f'"{part}\\\\n"' for part in split_text[:-1]] # 所有除最后一段外加\\n + formatted_text.append(f'"{split_text[-1]}"') # 最后一段不加\\n + + # 拼接成最终的描述 + description = '\n\\t\\t\\t'.join(formatted_text) + final=r'.description = COMPOUND_STRING(\n\t\t\t' + description+ '),' + return final + +def query_pokemon_info(name, df): + try: + result = df.loc[name] + return { + 'speciesName': result['speciesName'], + 'categoryName': result['categoryName'], + 'description': result['description'] + } + except KeyError: + return None + +def replace_species_info(content, df): + pattern = r"\[SPECIES_(\w+)\]\s*=\s*\{.*?\n\s*\},?" + matches = list(re.finditer(pattern, content, re.DOTALL)) + + for match in matches: + species = match.group(1) + original_block = match.group(0) + info = query_pokemon_info("SPECIES_"+species, df) + if not info: + log(f"❌ 未找到 {'SPECIES_'+species},跳过") + continue + + block = original_block + + # 替换 .speciesName + block = re.sub(r'\.speciesName\s*=\s*_\(.*?\),', f'.speciesName = _("{info["speciesName"]}"),', block) + + # 替换 .categoryName + block = re.sub(r'\.categoryName\s*=\s*_\(.*?\),', f'.categoryName = _("{info["categoryName"]}"),', block) + + # 替换 .description + block = re.sub(r'\.description\s*=\s*COMPOUND_STRING\((?:.|\n)*?\),', convert_description_to_multiline(info["description"]), block) + + content = content.replace(original_block, block) + + return content + +def log(message): + with open(current_folder+"\log.txt", "a", encoding="utf-8") as log_file: + log_file.write(message + "\n") + print(message) + +if __name__ == "__main__": + + work_folder = current_folder +"\..\src\data\pokemon\species_info" + df = pd.read_excel(current_folder +r'\src\图鉴.xlsx') + df.set_index('name', inplace=True) + + for filename in os.listdir(work_folder): + if re.match(r'^gen_\d+_families\.h$', filename): + file_path = os.path.join(work_folder, filename) + log(f"✅ 处理文件:{file_path}") + with open(file_path, "r", encoding="utf-8") as f: + content = f.read() + + new_content = replace_species_info(content, df) + + with open(file_path, "w", encoding="utf-8") as f: + f.write(new_content) diff --git a/python_tools/translate_skills.py b/python_tools/translate_skills.py index 84e3e84189..8ed5c7b038 100644 --- a/python_tools/translate_skills.py +++ b/python_tools/translate_skills.py @@ -1,80 +1,80 @@ -import os -import re -import pandas as pd -import os - -current_folder = os.path.dirname(os.path.abspath(__file__)) - -def convert_description_to_multiline(description): - if not isinstance(description, str): - return None - # 替换中文字符为英文字符 - split_text = description.split('\\n') - - # 格式化输出为需要的三段,并处理最后一段不加\\n - formatted_text = [f'"{part}\\\\n"' for part in split_text[:-1]] # 所有除最后一段外加\\n - formatted_text.append(f'"{split_text[-1]}"') # 最后一段不加\\n - - # 拼接成最终的描述 - description = '\n\\t\\t\\t'.join(formatted_text) - final=r'.description = COMPOUND_STRING(\n\t\t\t' + description+ '),' - return final - -def query_pokemon_info(name, df): - try: - result = df.loc[name] - return { - '中文名': result['中文名'], - '单独技能效果说明': result['单独技能效果说明'], - # 'description': result['description'] - } - except KeyError: - return None - -def replace_move_info(content, df): - pattern = r"\[MOVE_(\w+)\]\s*=\s*\{.*?\n\s*\},?" - matches = list(re.finditer(pattern, content, re.DOTALL)) - - for match in matches: - move = match.group(1) - original_block = match.group(0) - info = query_pokemon_info("[MOVE_"+move+"]", df) - if not info: - log(f"❌ 未找到 {'MOVE_'+move},跳过") - continue - - block = original_block - - # 替换 .moveName - block = re.sub(r'\.name\s*=\s*COMPOUND_STRING\(.*?\),', f'.name = COMPOUND_STRING("{info["中文名"]}"),', block) - - # block = re.sub(r'\.categoryName\s*=\s*_\(.*?\),', f'.categoryName = _("{info["categoryName"]}"),', block) - try: - block = re.sub(r'\.description\s*=\s*COMPOUND_STRING\((?:.|\n)*?\),\s+#endif', convert_description_to_multiline(info["单独技能效果说明"]), block) - block = re.sub(r'\.description\s*=\s*COMPOUND_STRING\((?:.|\n)*?\),', convert_description_to_multiline(info["单独技能效果说明"]), block) - except Exception as e: - print(f"Error: {e}") - log(f"❌ {'MOVE_'+move} 没有单独技能效果说明,跳过") - content = content.replace(original_block, block) - - return content - -def log(message): - with open(current_folder+"\log.txt", "a", encoding="utf-8") as log_file: - log_file.write(message + "\n") - print(message) - -if __name__ == "__main__": - - work_file = current_folder +"\..\src\data\moves_info.h" - df = pd.read_excel(current_folder +r'\src\技能.xlsx') - df.set_index('技能', inplace=True) - - - with open(work_file, "r", encoding="utf-8") as f: - content = f.read() - - new_content = replace_move_info(content, df) - - with open(work_file, "w", encoding="utf-8") as f: - f.write(new_content) +import os +import re +import pandas as pd +import os + +current_folder = os.path.dirname(os.path.abspath(__file__)) + +def convert_description_to_multiline(description): + if not isinstance(description, str): + return None + # 替换中文字符为英文字符 + split_text = description.split('\\n') + + # 格式化输出为需要的三段,并处理最后一段不加\\n + formatted_text = [f'"{part}\\\\n"' for part in split_text[:-1]] # 所有除最后一段外加\\n + formatted_text.append(f'"{split_text[-1]}"') # 最后一段不加\\n + + # 拼接成最终的描述 + description = '\n\\t\\t\\t'.join(formatted_text) + final=r'.description = COMPOUND_STRING(\n\t\t\t' + description+ '),' + return final + +def query_pokemon_info(name, df): + try: + result = df.loc[name] + return { + '中文名': result['中文名'], + '单独技能效果说明': result['单独技能效果说明'], + # 'description': result['description'] + } + except KeyError: + return None + +def replace_move_info(content, df): + pattern = r"\[MOVE_(\w+)\]\s*=\s*\{.*?\n\s*\},?" + matches = list(re.finditer(pattern, content, re.DOTALL)) + + for match in matches: + move = match.group(1) + original_block = match.group(0) + info = query_pokemon_info("[MOVE_"+move+"]", df) + if not info: + log(f"❌ 未找到 {'MOVE_'+move},跳过") + continue + + block = original_block + + # 替换 .moveName + block = re.sub(r'\.name\s*=\s*COMPOUND_STRING\(.*?\),', f'.name = COMPOUND_STRING("{info["中文名"]}"),', block) + + # block = re.sub(r'\.categoryName\s*=\s*_\(.*?\),', f'.categoryName = _("{info["categoryName"]}"),', block) + try: + block = re.sub(r'\.description\s*=\s*COMPOUND_STRING\((?:.|\n)*?\),\s+#endif', convert_description_to_multiline(info["单独技能效果说明"]), block) + block = re.sub(r'\.description\s*=\s*COMPOUND_STRING\((?:.|\n)*?\),', convert_description_to_multiline(info["单独技能效果说明"]), block) + except Exception as e: + print(f"Error: {e}") + log(f"❌ {'MOVE_'+move} 没有单独技能效果说明,跳过") + content = content.replace(original_block, block) + + return content + +def log(message): + with open(current_folder+"\log.txt", "a", encoding="utf-8") as log_file: + log_file.write(message + "\n") + print(message) + +if __name__ == "__main__": + + work_file = current_folder +"\..\src\data\moves_info.h" + df = pd.read_excel(current_folder +r'\src\技能.xlsx') + df.set_index('技能', inplace=True) + + + with open(work_file, "r", encoding="utf-8") as f: + content = f.read() + + new_content = replace_move_info(content, df) + + with open(work_file, "w", encoding="utf-8") as f: + f.write(new_content) diff --git a/sound/songs/midi/midi.cfg b/sound/songs/midi/midi.cfg index 5802904b41..508f729db9 100644 --- a/sound/songs/midi/midi.cfg +++ b/sound/songs/midi/midi.cfg @@ -1,420 +1,420 @@ -mus_abandoned_ship.mid: -E -R50 -G030 -V080 -mus_abnormal_weather.mid: -E -R50 -G089 -V080 -mus_aqua_magma_hideout.mid: -E -R50 -G076 -V084 -mus_awaken_legend.mid: -E -R50 -G012 -V090 -P5 -mus_b_arena.mid: -E -R50 -G104 -V090 -mus_b_dome_lobby.mid: -E -R50 -G111 -V056 -mus_b_dome.mid: -E -R50 -G111 -V090 -mus_b_factory.mid: -E -R50 -G113 -V100 -mus_b_frontier.mid: -E -R50 -G103 -V094 -mus_b_palace.mid: -E -R50 -G108 -V105 -mus_b_pike.mid: -E -R50 -G112 -V092 -mus_b_pyramid_top.mid: -E -R50 -G107 -V077 -mus_b_pyramid.mid: -E -R50 -G106 -V079 -mus_b_tower_rs.mid: -E -R50 -G035 -V080 -mus_b_tower.mid: -E -R50 -G110 -V100 -mus_birch_lab.mid: -E -R50 -G033 -V080 -mus_c_comm_center.mid: -E -R50 -V080 -mus_c_vs_legend_beast.mid: -E -R50 -V080 -mus_cable_car.mid: -E -R50 -G071 -V078 -mus_caught.mid: -E -R50 -G025 -V080 -mus_cave_of_origin.mid: -E -R50 -G037 -V080 -mus_contest_lobby.mid: -E -R50 -G098 -V060 -mus_contest_results.mid: -E -R50 -G092 -V080 -mus_contest_winner.mid: -E -R50 -G085 -V100 -mus_contest.mid: -E -R50 -G086 -V088 -mus_credits.mid: -E -R50 -G101 -V100 -mus_cycling.mid: -E -R50 -G049 -V083 -mus_dewford.mid: -E -R50 -G073 -V078 -mus_dummy.mid: -E -R40 -mus_encounter_aqua.mid: -E -R50 -G065 -V086 -mus_encounter_brendan.mid: -E -R50 -G067 -V078 -mus_encounter_champion.mid: -E -R50 -G100 -V076 -mus_encounter_cool.mid: -E -R50 -G063 -V086 -mus_encounter_elite_four.mid: -E -R50 -G096 -V078 -mus_encounter_female.mid: -E -R50 -G053 -V072 -mus_encounter_girl.mid: -E -R50 -G027 -V080 -mus_encounter_hiker.mid: -E -R50 -G097 -V076 -mus_encounter_intense.mid: -E -R50 -G062 -V078 -mus_encounter_interviewer.mid: -E -R50 -G099 -V062 -mus_encounter_magma.mid: -E -R50 -G087 -V072 -mus_encounter_male.mid: -E -R50 -G028 -V080 -mus_encounter_may.mid: -E -R50 -G061 -V078 -mus_encounter_rich.mid: -E -R50 -G043 -V094 -mus_encounter_suspicious.mid: -E -R50 -G069 -V078 -mus_encounter_swimmer.mid: -E -R50 -G036 -V080 -mus_encounter_twins.mid: -E -R50 -G095 -V075 -mus_end.mid: -E -R50 -G102 -V036 -mus_ever_grande.mid: -E -R50 -G068 -V086 -mus_evolution_intro.mid: -E -R50 -G026 -V080 -mus_evolution.mid: -E -R50 -G026 -V080 -mus_evolved.mid: -E -R50 -G012 -V090 -P5 -mus_fallarbor.mid: -E -R50 -G083 -V100 -mus_follow_me.mid: -E -R50 -G066 -V074 -mus_fortree.mid: -E -R50 -G032 -V080 -mus_game_corner.mid: -E -R50 -G072 -V072 -mus_gsc_pewter.mid: -E -R50 -V080 -mus_gsc_route38.mid: -E -R50 -V080 -mus_gym.mid: -E -R50 -G013 -V080 -mus_hall_of_fame_room.mid: -E -R50 -G093 -V080 -mus_hall_of_fame.mid: -E -R50 -G082 -V078 -mus_heal.mid: -E -R50 -G012 -V090 -P5 -mus_help.mid: -E -R50 -G056 -V078 -mus_intro_battle.mid: -E -R50 -G088 -V088 -mus_intro.mid: -E -R50 -G060 -V090 -mus_level_up.mid: -E -R50 -G012 -V090 -P5 -mus_lilycove_museum.mid: -E -R50 -G020 -V080 -mus_lilycove.mid: -E -R50 -G054 -V085 -mus_link_contest_p1.mid: -E -R50 -G039 -V079 -mus_link_contest_p2.mid: -E -R50 -G040 -V090 -mus_link_contest_p3.mid: -E -R50 -G041 -V075 -mus_link_contest_p4.mid: -E -R50 -G042 -V090 -mus_littleroot_test.mid: -E -R50 -G034 -V099 -mus_littleroot.mid: -E -R50 -G051 -V100 -mus_move_deleted.mid: -E -R50 -G012 -V090 -P5 -mus_mt_chimney.mid: -E -R50 -G052 -V078 -mus_mt_pyre_exterior.mid: -E -R50 -G080 -V080 -mus_mt_pyre.mid: -E -R50 -G078 -V088 -mus_obtain_b_points.mid: -E -R50 -G103 -V090 -P5 -mus_obtain_badge.mid: -E -R50 -G012 -V090 -P5 -mus_obtain_berry.mid: -E -R50 -G012 -V090 -P5 -mus_obtain_item.mid: -E -R50 -G012 -V090 -P5 -mus_obtain_symbol.mid: -E -R50 -G103 -V100 -P5 -mus_obtain_tmhm.mid: -E -R50 -G012 -V090 -P5 -mus_oceanic_museum.mid: -E -R50 -G023 -V080 -mus_oldale.mid: -E -R50 -G019 -V080 -mus_petalburg_woods.mid: -E -R50 -G018 -V080 -mus_petalburg.mid: -E -R50 -G015 -V080 -mus_poke_center.mid: -E -R50 -G046 -V092 -mus_poke_mart.mid: -E -R50 -G050 -V085 -mus_rayquaza_appears.mid: -E -R50 -G109 -V090 -mus_register_match_call.mid: -E -R50 -G105 -V090 -P5 -mus_rg_berry_pick.mid: -E -R50 -G132 -V090 -mus_rg_caught_intro.mid: -E -R50 -G179 -V094 -P5 -mus_rg_caught.mid: -E -R50 -G170 -V100 -mus_rg_celadon.mid: -E -R50 -G168 -V070 -mus_rg_cinnabar.mid: -E -R50 -G138 -V090 -mus_rg_credits.mid: -E -R50 -G149 -V090 -mus_rg_cycling.mid: -E -R50 -G141 -V090 -mus_rg_dex_rating.mid: -E -R50 -G175 -V070 -P5 -mus_rg_encounter_boy.mid: -E -R50 -G144 -V090 -mus_rg_encounter_deoxys.mid: -E -R50 -G184 -V079 -mus_rg_encounter_girl.mid: -E -R50 -G143 -V051 -mus_rg_encounter_gym_leader: -E -R50 -G144 -V090 -mus_rg_encounter_rival.mid: -E -R50 -G174 -V079 -mus_rg_encounter_rocket.mid: -E -R50 -G142 -V096 -mus_rg_follow_me.mid: -E -R50 -G131 -V068 -mus_rg_fuchsia.mid: -E -R50 -G167 -V090 -mus_rg_game_corner.mid: -E -R50 -G132 -V090 -mus_rg_game_freak.mid: -E -R50 -G181 -V075 -mus_rg_gym.mid: -E -R50 -G134 -V090 -mus_rg_hall_of_fame.mid: -E -R50 -G145 -V079 -mus_rg_heal.mid: -E -R50 -G140 -V090 -mus_rg_intro_fight.mid: -E -R50 -G136 -V090 -mus_rg_jigglypuff.mid: -E -R50 -G135 -V068 -P5 -mus_rg_lavender.mid: -E -R50 -G139 -V090 -mus_rg_mt_moon.mid: -E -R50 -G147 -V090 -mus_rg_mystery_gift.mid: -E -R50 -G183 -V100 -mus_rg_net_center.mid: -E -R50 -G162 -V096 -mus_rg_new_game_exit.mid: -E -R50 -G182 -V088 -mus_rg_new_game_instruct.mid: -E -R50 -G182 -V085 -mus_rg_new_game_intro.mid: -E -R50 -G182 -V088 -mus_rg_oak_lab.mid: -E -R50 -G160 -V075 -mus_rg_oak.mid: -E -R50 -G161 -V086 -mus_rg_obtain_key_item.mid: -E -R50 -G178 -V077 -P5 -mus_rg_pallet.mid: -E -R50 -G159 -V100 -mus_rg_pewter.mid: -E -R50 -G173 -V084 -mus_rg_photo.mid: -E -R50 -G180 -V100 -P5 -mus_rg_poke_center.mid: -E -R50 -G162 -V096 -mus_rg_poke_flute.mid: -E -R50 -G165 -V048 -P5 -mus_rg_poke_jump.mid: -E -R50 -G132 -V090 -mus_rg_poke_mansion.mid: -E -R50 -G148 -V090 -mus_rg_poke_tower.mid: -E -R50 -G165 -V090 -mus_rg_rival_exit.mid: -E -R50 -G174 -V079 -mus_rg_rocket_hideout.mid: -E -R50 -G133 -V090 -mus_rg_route1.mid: -E -R50 -G150 -V079 -mus_rg_route3.mid: -E -R50 -G152 -V083 -mus_rg_route11.mid: -E -R50 -G153 -V090 -mus_rg_route24.mid: -E -R50 -G151 -V086 -mus_rg_sevii_45.mid: -E -R50 -G188 -V084 -mus_rg_sevii_67.mid: -E -R50 -G189 -V084 -mus_rg_sevii_123.mid: -E -R50 -G173 -V084 -mus_rg_sevii_cave.mid: -E -R50 -G147 -V090 -mus_rg_sevii_dungeon.mid: -E -R50 -G146 -V090 -mus_rg_sevii_route.mid: -E -R50 -G187 -V080 -mus_rg_silph.mid: -E -R50 -G166 -V076 -mus_rg_slow_pallet.mid: -E -R50 -G159 -V092 -mus_rg_ss_anne.mid: -E -R50 -G163 -V090 -mus_rg_surf.mid: -E -R50 -G164 -V071 -mus_rg_teachy_tv_menu.mid: -E -R50 -G186 -V059 -mus_rg_teachy_tv_show.mid: -E -R50 -G131 -V068 -mus_rg_title.mid: -E -R50 -G137 -V090 -mus_rg_trainer_tower.mid: -E -R50 -G134 -V090 -mus_rg_union_room.mid: -E -R50 -G132 -V090 -mus_rg_vermillion.mid: -E -R50 -G172 -V090 -mus_rg_victory_gym_leader.mid: -E -R50 -G171 -V090 -mus_rg_victory_road.mid: -E -R50 -G154 -V090 -mus_rg_victory_trainer.mid: -E -R50 -G169 -V089 -mus_rg_victory_wild.mid: -E -R50 -G170 -V090 -mus_rg_viridian_forest.mid: -E -R50 -G146 -V090 -mus_rg_vs_champion.mid: -E -R50 -G158 -V090 -mus_rg_vs_deoxys.mid: -E -R50 -G185 -V080 -mus_rg_vs_gym_leader.mid: -E -R50 -G155 -V090 -mus_rg_vs_legend.mid: -E -R50 -G157 -V090 -mus_rg_vs_mewtwo.mid: -E -R50 -G157 -V090 -mus_rg_vs_trainer.mid: -E -R50 -G156 -V090 -mus_rg_vs_wild.mid: -E -R50 -G157 -V090 -mus_roulette.mid: -E -R50 -G038 -V080 -mus_route101.mid: -E -R50 -G011 -V080 -mus_route104.mid: -E -R50 -G047 -V097 -mus_route110.mid: -E -R50 -G010 -V080 -mus_route111.mid: -E -R50 -G055 -V076 -mus_route113.mid: -E -R50 -G064 -V084 -mus_route119.mid: -E -R50 -G048 -V096 -mus_route120.mid: -E -R50 -G014 -V080 -mus_route122.mid: -E -R50 -G021 -V080 -mus_rustboro.mid: -E -R50 -G045 -V085 -mus_safari_zone.mid: -E -R50 -G074 -V082 -mus_sailing.mid: -E -R50 -G077 -V086 -mus_school.mid: -E -R50 -G081 -V100 -mus_sealed_chamber.mid: -E -R50 -G084 -V100 -mus_slateport.mid: -E -R50 -G079 -V070 -mus_slots_jackpot.mid: -E -R50 -G012 -V090 -P5 -mus_slots_win.mid: -E -R50 -G012 -V090 -P5 -mus_sootopolis.mid: -E -R50 -G091 -V062 -mus_surf.mid: -E -R50 -G017 -V080 -mus_title.mid: -E -R50 -G059 -V090 -mus_too_bad.mid: -E -R50 -G012 -V090 -P5 -mus_trick_house.mid: -E -R50 -G094 -V070 -mus_underwater.mid: -E -R50 -G057 -V094 -mus_verdanturf.mid: -E -R50 -G044 -V090 -mus_victory_aqua_magma.mid: -E -R50 -G070 -V088 -mus_victory_gym_leader.mid: -E -R50 -G024 -V080 -mus_victory_league.mid: -E -R50 -G029 -V080 -mus_victory_road.mid: -E -R50 -G075 -V076 -mus_victory_trainer.mid: -E -R50 -G058 -V091 -mus_victory_wild.mid: -E -R50 -G025 -V080 -mus_vs_aqua_magma_leader.mid: -E -R50 -G126 -V080 -P1 -mus_vs_aqua_magma.mid: -E -R50 -G118 -V080 -P1 -mus_vs_champion.mid: -E -R50 -G121 -V080 -P1 -mus_vs_elite_four.mid: -E -R50 -G125 -V080 -P1 -mus_vs_frontier_brain.mid: -E -R50 -G115 -V090 -P1 -mus_vs_gym_leader.mid: -E -R50 -G120 -V080 -P1 -mus_vs_kyogre_groudon.mid: -E -R50 -G123 -V080 -P1 -mus_vs_mew.mid: -E -R50 -G116 -V090 -mus_vs_rayquaza.mid: -E -R50 -G114 -V080 -P1 -mus_vs_regi.mid: -E -R50 -G122 -V080 -P1 -mus_vs_rival.mid: -E -R50 -G124 -V080 -P1 -mus_vs_trainer.mid: -E -R50 -G119 -V080 -P1 -mus_vs_wild.mid: -E -R50 -G117 -V080 -P1 -mus_weather_groudon.mid: -E -R50 -G090 -V050 -ph_choice_blend.mid: -E -G130 -P4 -ph_choice_held.mid: -E -G130 -P4 -ph_choice_solo.mid: -E -G130 -P4 -ph_cloth_blend.mid: -E -G130 -P4 -ph_cloth_held.mid: -E -G130 -P4 -ph_cloth_solo.mid: -E -G130 -P4 -ph_cure_blend.mid: -E -G130 -P4 -ph_cure_held.mid: -E -G130 -P4 -ph_cure_solo.mid: -E -G130 -P4 -ph_dress_blend.mid: -E -G130 -P4 -ph_dress_held.mid: -E -G130 -P4 -ph_dress_solo.mid: -E -G130 -P4 -ph_face_blend.mid: -E -G130 -P4 -ph_face_held.mid: -E -G130 -P4 -ph_face_solo.mid: -E -G130 -P4 -ph_fleece_blend.mid: -E -G130 -P4 -ph_fleece_held.mid: -E -G130 -P4 -ph_fleece_solo.mid: -E -G130 -P4 -ph_foot_blend.mid: -E -G130 -P4 -ph_foot_held.mid: -E -G130 -P4 -ph_foot_solo.mid: -E -G130 -P4 -ph_goat_blend.mid: -E -G130 -P4 -ph_goat_held.mid: -E -G130 -P4 -ph_goat_solo.mid: -E -G130 -P4 -ph_goose_blend.mid: -E -G130 -P4 -ph_goose_held.mid: -E -G130 -P4 -ph_goose_solo.mid: -E -G130 -P4 -ph_kit_blend.mid: -E -G130 -P4 -ph_kit_held.mid: -E -G130 -P4 -ph_kit_solo.mid: -E -G130 -P4 -ph_lot_blend.mid: -E -G130 -P4 -ph_lot_held.mid: -E -G130 -P4 -ph_lot_solo.mid: -E -G130 -P4 -ph_mouth_blend.mid: -E -G130 -P4 -ph_mouth_held.mid: -E -G130 -P4 -ph_mouth_solo.mid: -E -G130 -P4 -ph_nurse_blend.mid: -E -G130 -P4 -ph_nurse_held.mid: -E -G130 -P4 -ph_nurse_solo.mid: -E -G130 -P4 -ph_price_blend.mid: -E -G130 -P4 -ph_price_held.mid: -E -G130 -P4 -ph_price_solo.mid: -E -G130 -P4 -ph_strut_blend.mid: -E -G130 -P4 -ph_strut_held.mid: -E -G130 -P4 -ph_strut_solo.mid: -E -G130 -P4 -ph_thought_blend.mid: -E -G130 -P4 -ph_thought_held.mid: -E -G130 -P4 -ph_thought_solo.mid: -E -G130 -P4 -ph_trap_blend.mid: -E -G130 -P4 -ph_trap_held.mid: -E -G130 -P4 -ph_trap_solo.mid: -E -G130 -P4 -se_a.mid: -E -R50 -G128 -V095 -P4 -se_applause.mid: -E -R50 -G128 -V100 -P5 -se_arena_timeup1.mid: -E -R50 -G129 -P5 -se_arena_timeup2.mid: -E -R50 -G129 -P5 -se_ball_bounce_1.mid: -E -R50 -G128 -V100 -P4 -se_ball_bounce_2.mid: -E -R50 -G128 -V100 -P4 -se_ball_bounce_3.mid: -E -R50 -G128 -V100 -P4 -se_ball_bounce_4.mid: -E -R50 -G128 -V100 -P4 -se_ball_open.mid: -E -R50 -G127 -V100 -P5 -se_ball_throw.mid: -E -R50 -G128 -V120 -P5 -se_ball_trade.mid: -E -R50 -G127 -V100 -P5 -se_ball_tray_ball.mid: -E -R50 -G128 -V110 -P5 -se_ball_tray_enter.mid: -E -R50 -G128 -V110 -P5 -se_ball_tray_exit.mid: -E -R50 -G127 -V100 -P5 -se_ball.mid: -E -R50 -G127 -V070 -P4 -se_balloon_blue.mid: -E -R50 -G128 -V105 -P4 -se_balloon_red.mid: -E -R50 -G128 -V105 -P4 -se_balloon_yellow.mid: -E -R50 -G128 -V105 -P4 -se_bang.mid: -E -R50 -G128 -V110 -P4 -se_berry_blender.mid: -E -R50 -G128 -V090 -P4 -se_bike_bell.mid: -E -R50 -G128 -V090 -P4 -se_bike_hop.mid: -E -R50 -G127 -V090 -P4 -se_boo.mid: -E -R50 -G127 -V110 -P4 -se_breakable_door.mid: -E -R50 -G128 -V110 -P4 -se_bridge_walk.mid: -E -R50 -G128 -V095 -P4 -se_card.mid: -E -R50 -G127 -V100 -P4 -se_click.mid: -E -R50 -G127 -V110 -P4 -se_contest_condition_lose.mid: -E -R50 -G127 -V110 -P4 -se_contest_curtain_fall.mid: -E -R50 -G128 -V070 -P5 -se_contest_curtain_rise.mid: -E -R50 -G128 -V070 -P5 -se_contest_heart.mid: -E -R50 -G128 -V090 -P5 -se_contest_icon_change.mid: -E -R50 -G128 -V110 -P5 -se_contest_icon_clear.mid: -E -R50 -G128 -V090 -P5 -se_contest_mons_turn.mid: -E -R50 -G128 -V090 -P5 -se_contest_place.mid: -E -R50 -G127 -V110 -P4 -se_dex_search.mid: -E -R50 -G127 -v100 -P5 -se_ding_dong.mid: -E -R50 -G127 -V090 -P5 -se_door.mid: -E -R50 -G127 -V080 -P5 -se_downpour_stop.mid: -E -R50 -G128 -V100 -P2 -se_downpour.mid: -E -R50 -G128 -V100 -P2 -se_e.mid: -E -R50 -G128 -V120 -P4 -se_effective.mid: -E -R50 -G127 -V110 -P5 -se_egg_hatch.mid: -E -R50 -G128 -V120 -P5 -se_elevator.mid: -E -R50 -G128 -V100 -P4 -se_escalator.mid: -E -R50 -G128 -V100 -P4 -se_exit.mid: -E -R50 -G127 -V120 -P5 -se_exp_max.mid: -E -R50 -G128 -V094 -P5 -se_exp.mid: -E -R50 -G127 -V080 -P5 -se_failure.mid: -E -R50 -G127 -V120 -P4 -se_faint.mid: -E -R50 -G127 -V110 -P5 -se_fall.mid: -E -R50 -G128 -V110 -P4 -se_field_poison.mid: -E -R50 -G127 -V110 -P5 -se_flee.mid: -E -R50 -G127 -V090 -P5 -se_fu_zaku.mid: -E -R50 -G127 -V120 -P4 -se_glass_flute.mid: -E -R50 -G128 -V105 -P5 -se_i.mid: -E -R50 -G128 -V120 -P4 -se_ice_break.mid: -E -R50 -G128 -V100 -P4 -se_ice_crack.mid: -E -R50 -G127 -V100 -P4 -se_ice_stairs.mid: -E -R50 -G128 -V090 -P4 -se_intro_blast.mid: -E -R50 -G127 -V100 -P5 -se_itemfinder.mid: -E -R50 -G127 -V090 -P5 -se_lavaridge_fall_warp.mid: -E -R50 -G127 -P4 -se_ledge.mid: -E -R50 -G127 -V100 -P4 -se_low_health.mid: -E -R50 -G127 -V100 -P3 -se_m_bind.mid: -E -R50 -G128 -V100 -P4 -se_m_comet_punch.mid: -E -R50 -G128 -V120 -P4 -se_m_cut.mid: -E -R50 -G128 -V120 -P4 -se_m_double_slap.mid: -E -R50 -G128 -V110 -P4 -se_m_fire_punch.mid: -E -R50 -G128 -V110 -P4 -se_m_fly.mid: -E -R50 -G128 -V110 -P4 -se_m_gust.mid: -E -R50 -G128 -V110 -P4 -se_m_gust2.mid: -E -R50 -G128 -V110 -P4 -se_m_headbutt.mid: -E -R50 -G128 -V110 -P4 -se_m_horn_attack.mid: -E -R50 -G128 -V110 -P4 -se_m_jump_kick.mid: -E -R50 -G128 -V110 -P4 -se_m_leer.mid: -E -R50 -G128 -V110 -P4 -se_m_mega_kick.mid: -E -R50 -G128 -V090 -P4 -se_m_mega_kick2.mid: -E -R50 -G128 -V110 -P4 -se_m_pay_day.mid: -E -R50 -G128 -V095 -P4 -se_m_razor_wind.mid: -E -R50 -G128 -V110 -P4 -se_m_razor_wind2.mid: -E -R50 -G128 -V090 -P4 -se_m_sand_attack.mid: -E -R50 -G128 -V110 -P4 -se_m_scratch.mid: -E -R50 -G128 -V110 -P4 -se_m_swords_dance.mid: -E -R50 -G128 -V100 -P4 -se_m_tail_whip.mid: -E -R50 -G128 -V110 -P4 -se_m_take_down.mid: -E -R50 -G128 -V105 -P4 -se_m_vicegrip.mid: -E -R50 -G128 -V110 -P4 -se_m_wing_attack.mid: -E -R50 -G128 -V105 -P4 -se_mud_ball.mid: -E -R50 -G128 -V110 -P4 -se_mugshot.mid: -E -R50 -G128 -V090 -P5 -se_n.mid: -E -R50 -G128 -P4 -se_not_effective.mid: -E -R50 -G127 -V110 -P5 -se_note_a.mid: -E -R50 -G128 -V110 -P4 -se_note_b.mid: -E -R50 -G128 -V110 -P4 -se_note_c_high.mid: -E -R50 -G128 -V110 -P4 -se_note_c.mid: -E -R50 -G128 -V110 -P4 -se_note_d.mid: -E -R50 -G128 -V110 -P4 -se_note_e.mid: -E -R50 -G128 -V110 -P4 -se_note_f.mid: -E -R50 -G128 -V110 -P4 -se_note_g.mid: -E -R50 -G128 -V110 -P4 -se_o.mid: -E -R50 -G128 -V120 -P4 -se_orb.mid: -E -R50 -G128 -V100 -P5 -se_pc_login.mid: -E -R50 -G127 -V100 -P5 -se_pc_off.mid: -E -R50 -G127 -V100 -P5 -se_pc_on.mid: -E -R50 -G127 -V100 -P5 -se_pike_curtain_close.mid: -E -R50 -G129 -P5 -se_pike_curtain_open.mid: -E -R50 -G129 -P5 -se_pin.mid: -E -R50 -G127 -V060 -P4 -se_pokenav_call.mid: -E -R50 -G129 -V120 -P5 -se_pokenav_hang_up.mid: -E -R50 -G129 -V110 -P5 -se_pokenav_off.mid: -E -R50 -G127 -V100 -P5 -se_pokenav_on.mid: -E -R50 -G127 -V100 -P5 -se_puddle.mid: -E -R50 -G128 -V020 -P4 -se_rain_stop.mid: -E -R50 -G128 -V080 -P2 -se_rain.mid: -E -R50 -G128 -V080 -P2 -se_repel.mid: -E -R50 -G127 -V090 -P4 -se_rg_bag_cursor.mid: -E -R50 -G129 -P5 -se_rg_bag_pocket.mid: -E -R50 -G129 -P5 -se_rg_ball_click.mid: -E -R50 -G129 -V100 -P5 -se_rg_card_flip.mid: -E -R50 -G129 -P5 -se_rg_card_flipping.mid: -E -R50 -G129 -P5 -se_rg_card_open.mid: -E -R50 -G129 -V112 -P5 -se_rg_deoxys_move.mid: -E -R50 -G129 -V080 -P5 -se_rg_door.mid: -E -R50 -G129 -V100 -P5 -se_rg_help_close.mid: -E -R50 -G129 -V095 -P5 -se_rg_help_error.mid: -E -R50 -G129 -V125 -P5 -se_rg_help_open.mid: -E -R50 -G129 -V096 -P5 -se_rg_poke_jump_failure.mid: -E -R50 -G127 -P5 -se_rg_poke_jump_success.mid: -E -R50 -G128 -V110 -P5 -se_rg_shop.mid: -E -R50 -G129 -V080 -P5 -se_rg_ss_anne_horn.mid: -E -R50 -G129 -V096 -P5 -se_rotating_gate.mid: -E -R50 -G128 -V090 -P4 -se_roulette_ball.mid: -E -R50 -G128 -V110 -P2 -se_roulette_ball2.mid: -E -R50 -G128 -V110 -P2 -se_save.mid: -E -R50 -G128 -V080 -P5 -se_select.mid: -E -R50 -G127 -V080 -P5 -se_shiny.mid: -E -R50 -G128 -V095 -P5 -se_ship.mid: -E -R50 -G127 -V075 -P4 -se_shop.mid: -E -R50 -G127 -V090 -P5 -se_sliding_door.mid: -E -R50 -G128 -V095 -P4 -se_success.mid: -E -R50 -G127 -V080 -P4 -se_sudowoodo_shake.mid: -E -R50 -G129 -V077 -P5 -se_super_effective.mid: -E -R50 -G127 -V110 -P5 -se_switch.mid: -E -R50 -G127 -V100 -P4 -se_taillow_wing_flap.mid: -E -R50 -G128 -V105 -P5 -se_thunder.mid: -E -R50 -G128 -V110 -P3 -se_thunder2.mid: -E -R50 -G128 -V110 -P3 -se_thunderstorm_stop.mid: -E -R50 -G128 -V080 -P2 -se_thunderstorm.mid: -E -R50 -G128 -V080 -P2 -se_truck_door.mid: -E -R50 -G128 -V110 -P4 -se_truck_move.mid: -E -R50 -G128 -P4 -se_truck_stop.mid: -E -R50 -G128 -P4 -se_truck_unload.mid: -E -R50 -G127 -P4 -se_u.mid: -E -R50 -G128 -P4 -se_unlock.mid: -E -R50 -G128 -V100 -P4 -se_use_item.mid: -E -R50 -G127 -V100 -P5 -se_vend.mid: -E -R50 -G128 -V110 -P4 -se_warp_in.mid: -E -R50 -G127 -V090 -P4 -se_warp_out.mid: -E -R50 -G127 -V090 -P4 +mus_abandoned_ship.mid: -E -R50 -G030 -V080 +mus_abnormal_weather.mid: -E -R50 -G089 -V080 +mus_aqua_magma_hideout.mid: -E -R50 -G076 -V084 +mus_awaken_legend.mid: -E -R50 -G012 -V090 -P5 +mus_b_arena.mid: -E -R50 -G104 -V090 +mus_b_dome_lobby.mid: -E -R50 -G111 -V056 +mus_b_dome.mid: -E -R50 -G111 -V090 +mus_b_factory.mid: -E -R50 -G113 -V100 +mus_b_frontier.mid: -E -R50 -G103 -V094 +mus_b_palace.mid: -E -R50 -G108 -V105 +mus_b_pike.mid: -E -R50 -G112 -V092 +mus_b_pyramid_top.mid: -E -R50 -G107 -V077 +mus_b_pyramid.mid: -E -R50 -G106 -V079 +mus_b_tower_rs.mid: -E -R50 -G035 -V080 +mus_b_tower.mid: -E -R50 -G110 -V100 +mus_birch_lab.mid: -E -R50 -G033 -V080 +mus_c_comm_center.mid: -E -R50 -V080 +mus_c_vs_legend_beast.mid: -E -R50 -V080 +mus_cable_car.mid: -E -R50 -G071 -V078 +mus_caught.mid: -E -R50 -G025 -V080 +mus_cave_of_origin.mid: -E -R50 -G037 -V080 +mus_contest_lobby.mid: -E -R50 -G098 -V060 +mus_contest_results.mid: -E -R50 -G092 -V080 +mus_contest_winner.mid: -E -R50 -G085 -V100 +mus_contest.mid: -E -R50 -G086 -V088 +mus_credits.mid: -E -R50 -G101 -V100 +mus_cycling.mid: -E -R50 -G049 -V083 +mus_dewford.mid: -E -R50 -G073 -V078 +mus_dummy.mid: -E -R40 +mus_encounter_aqua.mid: -E -R50 -G065 -V086 +mus_encounter_brendan.mid: -E -R50 -G067 -V078 +mus_encounter_champion.mid: -E -R50 -G100 -V076 +mus_encounter_cool.mid: -E -R50 -G063 -V086 +mus_encounter_elite_four.mid: -E -R50 -G096 -V078 +mus_encounter_female.mid: -E -R50 -G053 -V072 +mus_encounter_girl.mid: -E -R50 -G027 -V080 +mus_encounter_hiker.mid: -E -R50 -G097 -V076 +mus_encounter_intense.mid: -E -R50 -G062 -V078 +mus_encounter_interviewer.mid: -E -R50 -G099 -V062 +mus_encounter_magma.mid: -E -R50 -G087 -V072 +mus_encounter_male.mid: -E -R50 -G028 -V080 +mus_encounter_may.mid: -E -R50 -G061 -V078 +mus_encounter_rich.mid: -E -R50 -G043 -V094 +mus_encounter_suspicious.mid: -E -R50 -G069 -V078 +mus_encounter_swimmer.mid: -E -R50 -G036 -V080 +mus_encounter_twins.mid: -E -R50 -G095 -V075 +mus_end.mid: -E -R50 -G102 -V036 +mus_ever_grande.mid: -E -R50 -G068 -V086 +mus_evolution_intro.mid: -E -R50 -G026 -V080 +mus_evolution.mid: -E -R50 -G026 -V080 +mus_evolved.mid: -E -R50 -G012 -V090 -P5 +mus_fallarbor.mid: -E -R50 -G083 -V100 +mus_follow_me.mid: -E -R50 -G066 -V074 +mus_fortree.mid: -E -R50 -G032 -V080 +mus_game_corner.mid: -E -R50 -G072 -V072 +mus_gsc_pewter.mid: -E -R50 -V080 +mus_gsc_route38.mid: -E -R50 -V080 +mus_gym.mid: -E -R50 -G013 -V080 +mus_hall_of_fame_room.mid: -E -R50 -G093 -V080 +mus_hall_of_fame.mid: -E -R50 -G082 -V078 +mus_heal.mid: -E -R50 -G012 -V090 -P5 +mus_help.mid: -E -R50 -G056 -V078 +mus_intro_battle.mid: -E -R50 -G088 -V088 +mus_intro.mid: -E -R50 -G060 -V090 +mus_level_up.mid: -E -R50 -G012 -V090 -P5 +mus_lilycove_museum.mid: -E -R50 -G020 -V080 +mus_lilycove.mid: -E -R50 -G054 -V085 +mus_link_contest_p1.mid: -E -R50 -G039 -V079 +mus_link_contest_p2.mid: -E -R50 -G040 -V090 +mus_link_contest_p3.mid: -E -R50 -G041 -V075 +mus_link_contest_p4.mid: -E -R50 -G042 -V090 +mus_littleroot_test.mid: -E -R50 -G034 -V099 +mus_littleroot.mid: -E -R50 -G051 -V100 +mus_move_deleted.mid: -E -R50 -G012 -V090 -P5 +mus_mt_chimney.mid: -E -R50 -G052 -V078 +mus_mt_pyre_exterior.mid: -E -R50 -G080 -V080 +mus_mt_pyre.mid: -E -R50 -G078 -V088 +mus_obtain_b_points.mid: -E -R50 -G103 -V090 -P5 +mus_obtain_badge.mid: -E -R50 -G012 -V090 -P5 +mus_obtain_berry.mid: -E -R50 -G012 -V090 -P5 +mus_obtain_item.mid: -E -R50 -G012 -V090 -P5 +mus_obtain_symbol.mid: -E -R50 -G103 -V100 -P5 +mus_obtain_tmhm.mid: -E -R50 -G012 -V090 -P5 +mus_oceanic_museum.mid: -E -R50 -G023 -V080 +mus_oldale.mid: -E -R50 -G019 -V080 +mus_petalburg_woods.mid: -E -R50 -G018 -V080 +mus_petalburg.mid: -E -R50 -G015 -V080 +mus_poke_center.mid: -E -R50 -G046 -V092 +mus_poke_mart.mid: -E -R50 -G050 -V085 +mus_rayquaza_appears.mid: -E -R50 -G109 -V090 +mus_register_match_call.mid: -E -R50 -G105 -V090 -P5 +mus_rg_berry_pick.mid: -E -R50 -G132 -V090 +mus_rg_caught_intro.mid: -E -R50 -G179 -V094 -P5 +mus_rg_caught.mid: -E -R50 -G170 -V100 +mus_rg_celadon.mid: -E -R50 -G168 -V070 +mus_rg_cinnabar.mid: -E -R50 -G138 -V090 +mus_rg_credits.mid: -E -R50 -G149 -V090 +mus_rg_cycling.mid: -E -R50 -G141 -V090 +mus_rg_dex_rating.mid: -E -R50 -G175 -V070 -P5 +mus_rg_encounter_boy.mid: -E -R50 -G144 -V090 +mus_rg_encounter_deoxys.mid: -E -R50 -G184 -V079 +mus_rg_encounter_girl.mid: -E -R50 -G143 -V051 +mus_rg_encounter_gym_leader: -E -R50 -G144 -V090 +mus_rg_encounter_rival.mid: -E -R50 -G174 -V079 +mus_rg_encounter_rocket.mid: -E -R50 -G142 -V096 +mus_rg_follow_me.mid: -E -R50 -G131 -V068 +mus_rg_fuchsia.mid: -E -R50 -G167 -V090 +mus_rg_game_corner.mid: -E -R50 -G132 -V090 +mus_rg_game_freak.mid: -E -R50 -G181 -V075 +mus_rg_gym.mid: -E -R50 -G134 -V090 +mus_rg_hall_of_fame.mid: -E -R50 -G145 -V079 +mus_rg_heal.mid: -E -R50 -G140 -V090 +mus_rg_intro_fight.mid: -E -R50 -G136 -V090 +mus_rg_jigglypuff.mid: -E -R50 -G135 -V068 -P5 +mus_rg_lavender.mid: -E -R50 -G139 -V090 +mus_rg_mt_moon.mid: -E -R50 -G147 -V090 +mus_rg_mystery_gift.mid: -E -R50 -G183 -V100 +mus_rg_net_center.mid: -E -R50 -G162 -V096 +mus_rg_new_game_exit.mid: -E -R50 -G182 -V088 +mus_rg_new_game_instruct.mid: -E -R50 -G182 -V085 +mus_rg_new_game_intro.mid: -E -R50 -G182 -V088 +mus_rg_oak_lab.mid: -E -R50 -G160 -V075 +mus_rg_oak.mid: -E -R50 -G161 -V086 +mus_rg_obtain_key_item.mid: -E -R50 -G178 -V077 -P5 +mus_rg_pallet.mid: -E -R50 -G159 -V100 +mus_rg_pewter.mid: -E -R50 -G173 -V084 +mus_rg_photo.mid: -E -R50 -G180 -V100 -P5 +mus_rg_poke_center.mid: -E -R50 -G162 -V096 +mus_rg_poke_flute.mid: -E -R50 -G165 -V048 -P5 +mus_rg_poke_jump.mid: -E -R50 -G132 -V090 +mus_rg_poke_mansion.mid: -E -R50 -G148 -V090 +mus_rg_poke_tower.mid: -E -R50 -G165 -V090 +mus_rg_rival_exit.mid: -E -R50 -G174 -V079 +mus_rg_rocket_hideout.mid: -E -R50 -G133 -V090 +mus_rg_route1.mid: -E -R50 -G150 -V079 +mus_rg_route3.mid: -E -R50 -G152 -V083 +mus_rg_route11.mid: -E -R50 -G153 -V090 +mus_rg_route24.mid: -E -R50 -G151 -V086 +mus_rg_sevii_45.mid: -E -R50 -G188 -V084 +mus_rg_sevii_67.mid: -E -R50 -G189 -V084 +mus_rg_sevii_123.mid: -E -R50 -G173 -V084 +mus_rg_sevii_cave.mid: -E -R50 -G147 -V090 +mus_rg_sevii_dungeon.mid: -E -R50 -G146 -V090 +mus_rg_sevii_route.mid: -E -R50 -G187 -V080 +mus_rg_silph.mid: -E -R50 -G166 -V076 +mus_rg_slow_pallet.mid: -E -R50 -G159 -V092 +mus_rg_ss_anne.mid: -E -R50 -G163 -V090 +mus_rg_surf.mid: -E -R50 -G164 -V071 +mus_rg_teachy_tv_menu.mid: -E -R50 -G186 -V059 +mus_rg_teachy_tv_show.mid: -E -R50 -G131 -V068 +mus_rg_title.mid: -E -R50 -G137 -V090 +mus_rg_trainer_tower.mid: -E -R50 -G134 -V090 +mus_rg_union_room.mid: -E -R50 -G132 -V090 +mus_rg_vermillion.mid: -E -R50 -G172 -V090 +mus_rg_victory_gym_leader.mid: -E -R50 -G171 -V090 +mus_rg_victory_road.mid: -E -R50 -G154 -V090 +mus_rg_victory_trainer.mid: -E -R50 -G169 -V089 +mus_rg_victory_wild.mid: -E -R50 -G170 -V090 +mus_rg_viridian_forest.mid: -E -R50 -G146 -V090 +mus_rg_vs_champion.mid: -E -R50 -G158 -V090 +mus_rg_vs_deoxys.mid: -E -R50 -G185 -V080 +mus_rg_vs_gym_leader.mid: -E -R50 -G155 -V090 +mus_rg_vs_legend.mid: -E -R50 -G157 -V090 +mus_rg_vs_mewtwo.mid: -E -R50 -G157 -V090 +mus_rg_vs_trainer.mid: -E -R50 -G156 -V090 +mus_rg_vs_wild.mid: -E -R50 -G157 -V090 +mus_roulette.mid: -E -R50 -G038 -V080 +mus_route101.mid: -E -R50 -G011 -V080 +mus_route104.mid: -E -R50 -G047 -V097 +mus_route110.mid: -E -R50 -G010 -V080 +mus_route111.mid: -E -R50 -G055 -V076 +mus_route113.mid: -E -R50 -G064 -V084 +mus_route119.mid: -E -R50 -G048 -V096 +mus_route120.mid: -E -R50 -G014 -V080 +mus_route122.mid: -E -R50 -G021 -V080 +mus_rustboro.mid: -E -R50 -G045 -V085 +mus_safari_zone.mid: -E -R50 -G074 -V082 +mus_sailing.mid: -E -R50 -G077 -V086 +mus_school.mid: -E -R50 -G081 -V100 +mus_sealed_chamber.mid: -E -R50 -G084 -V100 +mus_slateport.mid: -E -R50 -G079 -V070 +mus_slots_jackpot.mid: -E -R50 -G012 -V090 -P5 +mus_slots_win.mid: -E -R50 -G012 -V090 -P5 +mus_sootopolis.mid: -E -R50 -G091 -V062 +mus_surf.mid: -E -R50 -G017 -V080 +mus_title.mid: -E -R50 -G059 -V090 +mus_too_bad.mid: -E -R50 -G012 -V090 -P5 +mus_trick_house.mid: -E -R50 -G094 -V070 +mus_underwater.mid: -E -R50 -G057 -V094 +mus_verdanturf.mid: -E -R50 -G044 -V090 +mus_victory_aqua_magma.mid: -E -R50 -G070 -V088 +mus_victory_gym_leader.mid: -E -R50 -G024 -V080 +mus_victory_league.mid: -E -R50 -G029 -V080 +mus_victory_road.mid: -E -R50 -G075 -V076 +mus_victory_trainer.mid: -E -R50 -G058 -V091 +mus_victory_wild.mid: -E -R50 -G025 -V080 +mus_vs_aqua_magma_leader.mid: -E -R50 -G126 -V080 -P1 +mus_vs_aqua_magma.mid: -E -R50 -G118 -V080 -P1 +mus_vs_champion.mid: -E -R50 -G121 -V080 -P1 +mus_vs_elite_four.mid: -E -R50 -G125 -V080 -P1 +mus_vs_frontier_brain.mid: -E -R50 -G115 -V090 -P1 +mus_vs_gym_leader.mid: -E -R50 -G120 -V080 -P1 +mus_vs_kyogre_groudon.mid: -E -R50 -G123 -V080 -P1 +mus_vs_mew.mid: -E -R50 -G116 -V090 +mus_vs_rayquaza.mid: -E -R50 -G114 -V080 -P1 +mus_vs_regi.mid: -E -R50 -G122 -V080 -P1 +mus_vs_rival.mid: -E -R50 -G124 -V080 -P1 +mus_vs_trainer.mid: -E -R50 -G119 -V080 -P1 +mus_vs_wild.mid: -E -R50 -G117 -V080 -P1 +mus_weather_groudon.mid: -E -R50 -G090 -V050 +ph_choice_blend.mid: -E -G130 -P4 +ph_choice_held.mid: -E -G130 -P4 +ph_choice_solo.mid: -E -G130 -P4 +ph_cloth_blend.mid: -E -G130 -P4 +ph_cloth_held.mid: -E -G130 -P4 +ph_cloth_solo.mid: -E -G130 -P4 +ph_cure_blend.mid: -E -G130 -P4 +ph_cure_held.mid: -E -G130 -P4 +ph_cure_solo.mid: -E -G130 -P4 +ph_dress_blend.mid: -E -G130 -P4 +ph_dress_held.mid: -E -G130 -P4 +ph_dress_solo.mid: -E -G130 -P4 +ph_face_blend.mid: -E -G130 -P4 +ph_face_held.mid: -E -G130 -P4 +ph_face_solo.mid: -E -G130 -P4 +ph_fleece_blend.mid: -E -G130 -P4 +ph_fleece_held.mid: -E -G130 -P4 +ph_fleece_solo.mid: -E -G130 -P4 +ph_foot_blend.mid: -E -G130 -P4 +ph_foot_held.mid: -E -G130 -P4 +ph_foot_solo.mid: -E -G130 -P4 +ph_goat_blend.mid: -E -G130 -P4 +ph_goat_held.mid: -E -G130 -P4 +ph_goat_solo.mid: -E -G130 -P4 +ph_goose_blend.mid: -E -G130 -P4 +ph_goose_held.mid: -E -G130 -P4 +ph_goose_solo.mid: -E -G130 -P4 +ph_kit_blend.mid: -E -G130 -P4 +ph_kit_held.mid: -E -G130 -P4 +ph_kit_solo.mid: -E -G130 -P4 +ph_lot_blend.mid: -E -G130 -P4 +ph_lot_held.mid: -E -G130 -P4 +ph_lot_solo.mid: -E -G130 -P4 +ph_mouth_blend.mid: -E -G130 -P4 +ph_mouth_held.mid: -E -G130 -P4 +ph_mouth_solo.mid: -E -G130 -P4 +ph_nurse_blend.mid: -E -G130 -P4 +ph_nurse_held.mid: -E -G130 -P4 +ph_nurse_solo.mid: -E -G130 -P4 +ph_price_blend.mid: -E -G130 -P4 +ph_price_held.mid: -E -G130 -P4 +ph_price_solo.mid: -E -G130 -P4 +ph_strut_blend.mid: -E -G130 -P4 +ph_strut_held.mid: -E -G130 -P4 +ph_strut_solo.mid: -E -G130 -P4 +ph_thought_blend.mid: -E -G130 -P4 +ph_thought_held.mid: -E -G130 -P4 +ph_thought_solo.mid: -E -G130 -P4 +ph_trap_blend.mid: -E -G130 -P4 +ph_trap_held.mid: -E -G130 -P4 +ph_trap_solo.mid: -E -G130 -P4 +se_a.mid: -E -R50 -G128 -V095 -P4 +se_applause.mid: -E -R50 -G128 -V100 -P5 +se_arena_timeup1.mid: -E -R50 -G129 -P5 +se_arena_timeup2.mid: -E -R50 -G129 -P5 +se_ball_bounce_1.mid: -E -R50 -G128 -V100 -P4 +se_ball_bounce_2.mid: -E -R50 -G128 -V100 -P4 +se_ball_bounce_3.mid: -E -R50 -G128 -V100 -P4 +se_ball_bounce_4.mid: -E -R50 -G128 -V100 -P4 +se_ball_open.mid: -E -R50 -G127 -V100 -P5 +se_ball_throw.mid: -E -R50 -G128 -V120 -P5 +se_ball_trade.mid: -E -R50 -G127 -V100 -P5 +se_ball_tray_ball.mid: -E -R50 -G128 -V110 -P5 +se_ball_tray_enter.mid: -E -R50 -G128 -V110 -P5 +se_ball_tray_exit.mid: -E -R50 -G127 -V100 -P5 +se_ball.mid: -E -R50 -G127 -V070 -P4 +se_balloon_blue.mid: -E -R50 -G128 -V105 -P4 +se_balloon_red.mid: -E -R50 -G128 -V105 -P4 +se_balloon_yellow.mid: -E -R50 -G128 -V105 -P4 +se_bang.mid: -E -R50 -G128 -V110 -P4 +se_berry_blender.mid: -E -R50 -G128 -V090 -P4 +se_bike_bell.mid: -E -R50 -G128 -V090 -P4 +se_bike_hop.mid: -E -R50 -G127 -V090 -P4 +se_boo.mid: -E -R50 -G127 -V110 -P4 +se_breakable_door.mid: -E -R50 -G128 -V110 -P4 +se_bridge_walk.mid: -E -R50 -G128 -V095 -P4 +se_card.mid: -E -R50 -G127 -V100 -P4 +se_click.mid: -E -R50 -G127 -V110 -P4 +se_contest_condition_lose.mid: -E -R50 -G127 -V110 -P4 +se_contest_curtain_fall.mid: -E -R50 -G128 -V070 -P5 +se_contest_curtain_rise.mid: -E -R50 -G128 -V070 -P5 +se_contest_heart.mid: -E -R50 -G128 -V090 -P5 +se_contest_icon_change.mid: -E -R50 -G128 -V110 -P5 +se_contest_icon_clear.mid: -E -R50 -G128 -V090 -P5 +se_contest_mons_turn.mid: -E -R50 -G128 -V090 -P5 +se_contest_place.mid: -E -R50 -G127 -V110 -P4 +se_dex_search.mid: -E -R50 -G127 -v100 -P5 +se_ding_dong.mid: -E -R50 -G127 -V090 -P5 +se_door.mid: -E -R50 -G127 -V080 -P5 +se_downpour_stop.mid: -E -R50 -G128 -V100 -P2 +se_downpour.mid: -E -R50 -G128 -V100 -P2 +se_e.mid: -E -R50 -G128 -V120 -P4 +se_effective.mid: -E -R50 -G127 -V110 -P5 +se_egg_hatch.mid: -E -R50 -G128 -V120 -P5 +se_elevator.mid: -E -R50 -G128 -V100 -P4 +se_escalator.mid: -E -R50 -G128 -V100 -P4 +se_exit.mid: -E -R50 -G127 -V120 -P5 +se_exp_max.mid: -E -R50 -G128 -V094 -P5 +se_exp.mid: -E -R50 -G127 -V080 -P5 +se_failure.mid: -E -R50 -G127 -V120 -P4 +se_faint.mid: -E -R50 -G127 -V110 -P5 +se_fall.mid: -E -R50 -G128 -V110 -P4 +se_field_poison.mid: -E -R50 -G127 -V110 -P5 +se_flee.mid: -E -R50 -G127 -V090 -P5 +se_fu_zaku.mid: -E -R50 -G127 -V120 -P4 +se_glass_flute.mid: -E -R50 -G128 -V105 -P5 +se_i.mid: -E -R50 -G128 -V120 -P4 +se_ice_break.mid: -E -R50 -G128 -V100 -P4 +se_ice_crack.mid: -E -R50 -G127 -V100 -P4 +se_ice_stairs.mid: -E -R50 -G128 -V090 -P4 +se_intro_blast.mid: -E -R50 -G127 -V100 -P5 +se_itemfinder.mid: -E -R50 -G127 -V090 -P5 +se_lavaridge_fall_warp.mid: -E -R50 -G127 -P4 +se_ledge.mid: -E -R50 -G127 -V100 -P4 +se_low_health.mid: -E -R50 -G127 -V100 -P3 +se_m_bind.mid: -E -R50 -G128 -V100 -P4 +se_m_comet_punch.mid: -E -R50 -G128 -V120 -P4 +se_m_cut.mid: -E -R50 -G128 -V120 -P4 +se_m_double_slap.mid: -E -R50 -G128 -V110 -P4 +se_m_fire_punch.mid: -E -R50 -G128 -V110 -P4 +se_m_fly.mid: -E -R50 -G128 -V110 -P4 +se_m_gust.mid: -E -R50 -G128 -V110 -P4 +se_m_gust2.mid: -E -R50 -G128 -V110 -P4 +se_m_headbutt.mid: -E -R50 -G128 -V110 -P4 +se_m_horn_attack.mid: -E -R50 -G128 -V110 -P4 +se_m_jump_kick.mid: -E -R50 -G128 -V110 -P4 +se_m_leer.mid: -E -R50 -G128 -V110 -P4 +se_m_mega_kick.mid: -E -R50 -G128 -V090 -P4 +se_m_mega_kick2.mid: -E -R50 -G128 -V110 -P4 +se_m_pay_day.mid: -E -R50 -G128 -V095 -P4 +se_m_razor_wind.mid: -E -R50 -G128 -V110 -P4 +se_m_razor_wind2.mid: -E -R50 -G128 -V090 -P4 +se_m_sand_attack.mid: -E -R50 -G128 -V110 -P4 +se_m_scratch.mid: -E -R50 -G128 -V110 -P4 +se_m_swords_dance.mid: -E -R50 -G128 -V100 -P4 +se_m_tail_whip.mid: -E -R50 -G128 -V110 -P4 +se_m_take_down.mid: -E -R50 -G128 -V105 -P4 +se_m_vicegrip.mid: -E -R50 -G128 -V110 -P4 +se_m_wing_attack.mid: -E -R50 -G128 -V105 -P4 +se_mud_ball.mid: -E -R50 -G128 -V110 -P4 +se_mugshot.mid: -E -R50 -G128 -V090 -P5 +se_n.mid: -E -R50 -G128 -P4 +se_not_effective.mid: -E -R50 -G127 -V110 -P5 +se_note_a.mid: -E -R50 -G128 -V110 -P4 +se_note_b.mid: -E -R50 -G128 -V110 -P4 +se_note_c_high.mid: -E -R50 -G128 -V110 -P4 +se_note_c.mid: -E -R50 -G128 -V110 -P4 +se_note_d.mid: -E -R50 -G128 -V110 -P4 +se_note_e.mid: -E -R50 -G128 -V110 -P4 +se_note_f.mid: -E -R50 -G128 -V110 -P4 +se_note_g.mid: -E -R50 -G128 -V110 -P4 +se_o.mid: -E -R50 -G128 -V120 -P4 +se_orb.mid: -E -R50 -G128 -V100 -P5 +se_pc_login.mid: -E -R50 -G127 -V100 -P5 +se_pc_off.mid: -E -R50 -G127 -V100 -P5 +se_pc_on.mid: -E -R50 -G127 -V100 -P5 +se_pike_curtain_close.mid: -E -R50 -G129 -P5 +se_pike_curtain_open.mid: -E -R50 -G129 -P5 +se_pin.mid: -E -R50 -G127 -V060 -P4 +se_pokenav_call.mid: -E -R50 -G129 -V120 -P5 +se_pokenav_hang_up.mid: -E -R50 -G129 -V110 -P5 +se_pokenav_off.mid: -E -R50 -G127 -V100 -P5 +se_pokenav_on.mid: -E -R50 -G127 -V100 -P5 +se_puddle.mid: -E -R50 -G128 -V020 -P4 +se_rain_stop.mid: -E -R50 -G128 -V080 -P2 +se_rain.mid: -E -R50 -G128 -V080 -P2 +se_repel.mid: -E -R50 -G127 -V090 -P4 +se_rg_bag_cursor.mid: -E -R50 -G129 -P5 +se_rg_bag_pocket.mid: -E -R50 -G129 -P5 +se_rg_ball_click.mid: -E -R50 -G129 -V100 -P5 +se_rg_card_flip.mid: -E -R50 -G129 -P5 +se_rg_card_flipping.mid: -E -R50 -G129 -P5 +se_rg_card_open.mid: -E -R50 -G129 -V112 -P5 +se_rg_deoxys_move.mid: -E -R50 -G129 -V080 -P5 +se_rg_door.mid: -E -R50 -G129 -V100 -P5 +se_rg_help_close.mid: -E -R50 -G129 -V095 -P5 +se_rg_help_error.mid: -E -R50 -G129 -V125 -P5 +se_rg_help_open.mid: -E -R50 -G129 -V096 -P5 +se_rg_poke_jump_failure.mid: -E -R50 -G127 -P5 +se_rg_poke_jump_success.mid: -E -R50 -G128 -V110 -P5 +se_rg_shop.mid: -E -R50 -G129 -V080 -P5 +se_rg_ss_anne_horn.mid: -E -R50 -G129 -V096 -P5 +se_rotating_gate.mid: -E -R50 -G128 -V090 -P4 +se_roulette_ball.mid: -E -R50 -G128 -V110 -P2 +se_roulette_ball2.mid: -E -R50 -G128 -V110 -P2 +se_save.mid: -E -R50 -G128 -V080 -P5 +se_select.mid: -E -R50 -G127 -V080 -P5 +se_shiny.mid: -E -R50 -G128 -V095 -P5 +se_ship.mid: -E -R50 -G127 -V075 -P4 +se_shop.mid: -E -R50 -G127 -V090 -P5 +se_sliding_door.mid: -E -R50 -G128 -V095 -P4 +se_success.mid: -E -R50 -G127 -V080 -P4 +se_sudowoodo_shake.mid: -E -R50 -G129 -V077 -P5 +se_super_effective.mid: -E -R50 -G127 -V110 -P5 +se_switch.mid: -E -R50 -G127 -V100 -P4 +se_taillow_wing_flap.mid: -E -R50 -G128 -V105 -P5 +se_thunder.mid: -E -R50 -G128 -V110 -P3 +se_thunder2.mid: -E -R50 -G128 -V110 -P3 +se_thunderstorm_stop.mid: -E -R50 -G128 -V080 -P2 +se_thunderstorm.mid: -E -R50 -G128 -V080 -P2 +se_truck_door.mid: -E -R50 -G128 -V110 -P4 +se_truck_move.mid: -E -R50 -G128 -P4 +se_truck_stop.mid: -E -R50 -G128 -P4 +se_truck_unload.mid: -E -R50 -G127 -P4 +se_u.mid: -E -R50 -G128 -P4 +se_unlock.mid: -E -R50 -G128 -V100 -P4 +se_use_item.mid: -E -R50 -G127 -V100 -P5 +se_vend.mid: -E -R50 -G128 -V110 -P4 +se_warp_in.mid: -E -R50 -G127 -V090 -P4 +se_warp_out.mid: -E -R50 -G127 -V090 -P4 diff --git a/src/data/battle_partners.party b/src/data/battle_partners.party index e1ecfe35fa..3d46b4a7d2 100644 --- a/src/data/battle_partners.party +++ b/src/data/battle_partners.party @@ -1,43 +1,43 @@ -=== PARTNER_NONE === -Name: -Class: Pkmn Trainer 1 -Pic: Brendan -Gender: Male -Music: Male - -=== PARTNER_STEVEN === -Name: STEVEN -Class: Rival -Pic: Steven -Gender: Male -Music: Male - -Metang -Brave Nature -Level: 42 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -EVs: 252 Atk / 252 Def / 6 SpA -- Light Screen -- Psychic -- Reflect -- Metal Claw - -Skarmory -Impish Nature -Level: 43 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -EVs: 252 HP / 6 SpA / 252 SpD -- Toxic -- Aerial Ace -- Protect -- Steel Wing - -Aggron -Adamant Nature -Level: 44 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -EVs: 252 Atk / 252 SpA / 6 SpD -- Thunder -- Protect -- Solar Beam -- Dragon Claw +=== PARTNER_NONE === +Name: +Class: Pkmn Trainer 1 +Pic: Brendan +Gender: Male +Music: Male + +=== PARTNER_STEVEN === +Name: STEVEN +Class: Rival +Pic: Steven +Gender: Male +Music: Male + +Metang +Brave Nature +Level: 42 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +EVs: 252 Atk / 252 Def / 6 SpA +- Light Screen +- Psychic +- Reflect +- Metal Claw + +Skarmory +Impish Nature +Level: 43 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +EVs: 252 HP / 6 SpA / 252 SpD +- Toxic +- Aerial Ace +- Protect +- Steel Wing + +Aggron +Adamant Nature +Level: 44 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +EVs: 252 Atk / 252 SpA / 6 SpD +- Thunder +- Protect +- Solar Beam +- Dragon Claw diff --git a/src/data/trainers.party b/src/data/trainers.party index f1a8f3e84e..7ec06c5abb 100644 --- a/src/data/trainers.party +++ b/src/data/trainers.party @@ -1,16875 +1,16875 @@ -/* -Trainers and their parties defined with Competetive Syntax. -Compatible with Pokemon Showdown exports. -https://github.com/smogon/pokemon-showdown/blob/master/sim/TEAMS.md - -A trainer specification starts with "=== TRAINER_XXXX ===" -and includes everything until the next line that starts with "===" -or the file ends. -A blank line is required between the trainer and their Pokemon -and between their Pokemon. -TRAINER_XXXX is how the trainer is referred to within code. - -Fields with description and/or example of usage -Required fields for trainers: - - Name - - Pic -Optional (but still recommended) fields for trainers: - - Class (if not specified, PkMn Trainer will be used) - - Gender (Male/Female, affects random gender weights of party if not specified) - - Music - - Items (Some Item / Another Item / Third Item) - (Can also be specified with ITEM_SOME_ITEM) - - Double Battle (Yes/No, defaults to No) - - AI (Ai Flag / Another Flag / Third Flag / ... - see "constants/battle_ai.h" for all flags) - - Mugshot (enable Mugshots during battle transition - set to one of Purple, Green, Pink, Blue or Yellow) - - Starting Status (see include/constants/battle.h for values) - -Pokemon are then specified using the Showdown Export format. -If a field is not specified, it will use it's default value. - -Required fields for Pokemon: - - Species (Either as SPECIES_ABRA or Abra) - This line also specifies Gender, Nickname and Held item. - Alfred (Abra) (M) @ Eviolite - Roberta (SPECIES_ABRA) (F) @ ITEM_CHOICE_SPECS - Both lines are valid. Gender (M) or (F) must use a capital letter. - Nickname length is limited to 10 characters using standard letters. - With narrow font it's increased to 12. Longer strings will be silently shortened. - -Optional fields for Pokemon: - - Level (Number between 1 and 100, defaults to 100) - - Ability (Ability Name or ABILITY_ABILITY_NAME) - - IVs (0 HP / 1 Atk / 2 Def / 3 SpA / 4 SpD / 5 Spe, defaults to all 31) - (Order does not matter) - - EVs (252 HP / 128 Spe / 48 Def, defaults to all 0, is not capped at 512 total) - (Order does not matter) - - Ball (Poke Ball or ITEM_POKE_BALL, defaults to Poke Ball) - - Happiness (Number between 1 and 255) - - Nature (Rash or NATURE_RASH, defaults to Hardy) - - Shiny (Yes/No, defaults to No) - - Dynamax Level (Number between 0 and 10, default 10, also sets "shouldDynamax" to True) - - Gigantamax (Yes/No, sets to Gigantamax factor) - (doesn't do anything to Pokemon without a Gigantamax form, also sets "shouldDynamax" to True) - - Tera Type (Set to a Type, either Fire or TYPE_FIRE, also sets "shouldTerastal" to True) -Moves are defined with a - (dash) followed by a single space, then the move name. -Either "- Tackle" or "- MOVE_TACKLE" works. One move per line. -Moves have to be the last lines of a Pokemon. -If no moves are specified, the Pokemon will use the last 4 moves it learns -through levelup at its level. - -Default IVs and Level can be changed in the "main" function of tools/trainerproc/main.c - -This file is processed with a custom preprocessor. -*/ - -/* -Comments can be added as C comment blocks -// cannot be used as comments -*/ - -/*Comments can also be on a single line*/ - - -=== TRAINER_NONE === -Name: -Class: Pkmn Trainer 1 -Pic: Hiker -Gender: Male -Music: Male -Double Battle: No - -=== TRAINER_SAWYER_1 === -Name: SAWYER -Class: Hiker -Pic: Hiker -Gender: Male -Music: Hiker -Double Battle: No -AI: Basic Trainer - -Geodude -Level: 21 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_AQUA_HIDEOUT_1 === -Name: GRUNT -Class: Team Aqua -Pic: Aqua Grunt M -Gender: Male -Music: Aqua -Double Battle: No -AI: Check Bad Move - -Poochyena -Level: 32 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_AQUA_HIDEOUT_2 === -Name: GRUNT -Class: Team Aqua -Pic: Aqua Grunt M -Gender: Male -Music: Aqua -Double Battle: No -AI: Check Bad Move - -Zubat -Level: 31 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Carvanha -Level: 31 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_AQUA_HIDEOUT_3 === -Name: GRUNT -Class: Team Aqua -Pic: Aqua Grunt M -Gender: Male -Music: Aqua -Double Battle: No -AI: Check Bad Move - -Zubat -Level: 32 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_AQUA_HIDEOUT_4 === -Name: GRUNT -Class: Team Aqua -Pic: Aqua Grunt M -Gender: Male -Music: Aqua -Double Battle: No -AI: Check Bad Move - -Carvanha -Level: 32 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_SEAFLOOR_CAVERN_1 === -Name: GRUNT -Class: Team Aqua -Pic: Aqua Grunt M -Gender: Male -Music: Aqua -Double Battle: No -AI: Check Bad Move - -Poochyena -Level: 36 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_SEAFLOOR_CAVERN_2 === -Name: GRUNT -Class: Team Aqua -Pic: Aqua Grunt M -Gender: Male -Music: Aqua -Double Battle: No -AI: Check Bad Move - -Carvanha -Level: 36 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_SEAFLOOR_CAVERN_3 === -Name: GRUNT -Class: Team Aqua -Pic: Aqua Grunt M -Gender: Male -Music: Aqua -Double Battle: No -AI: Check Bad Move - -Zubat -Level: 36 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GABRIELLE_1 === -Name: GABRIELLE -Class: Pkmn Breeder -Pic: Pokemon Breeder F -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Skitty -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Poochyena -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Zigzagoon -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Lotad -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Seedot -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Taillow -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_PETALBURG_WOODS === -Name: GRUNT -Class: Team Aqua -Pic: Aqua Grunt M -Gender: Male -Music: Aqua -Double Battle: No -AI: Check Bad Move - -Poochyena -Level: 9 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_MARCEL === -Name: MARCEL -Class: Cooltrainer -Pic: Cooltrainer M -Gender: Male -Music: Cool -Items: Hyper Potion -Double Battle: No -AI: Basic Trainer - -Manectric -Level: 29 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Shiftry -Level: 29 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_ALBERTO === -Name: ALBERTO -Class: Bird Keeper -Pic: Bird Keeper -Gender: Male -Music: Cool -Double Battle: No -AI: Check Bad Move - -Pelipper -Level: 30 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Xatu -Level: 30 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_ED === -Name: ED -Class: Collector -Pic: Collector -Gender: Male -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Zangoose -Level: 30 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Seviper -Level: 30 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_SEAFLOOR_CAVERN_4 === -Name: GRUNT -Class: Team Aqua -Pic: Aqua Grunt F -Gender: Female -Music: Aqua -Double Battle: No -AI: Check Bad Move - -Carvanha -Level: 36 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_DECLAN === -Name: DECLAN -Class: Swimmer M -Pic: Swimmer M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Gyarados -Level: 34 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_RUSTURF_TUNNEL === -Name: GRUNT -Class: Team Aqua -Pic: Aqua Grunt M -Gender: Male -Music: Aqua -Double Battle: No -AI: Check Bad Move - -Poochyena -Level: 11 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_WEATHER_INST_1 === -Name: GRUNT -Class: Team Aqua -Pic: Aqua Grunt M -Gender: Male -Music: Aqua -Double Battle: No -AI: Check Bad Move - -Zubat -Level: 27 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Poochyena -Level: 27 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_WEATHER_INST_2 === -Name: GRUNT -Class: Team Aqua -Pic: Aqua Grunt M -Gender: Male -Music: Aqua -Double Battle: No -AI: Check Bad Move - -Poochyena -Level: 27 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Carvanha -Level: 27 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_WEATHER_INST_3 === -Name: GRUNT -Class: Team Aqua -Pic: Aqua Grunt M -Gender: Male -Music: Aqua -Double Battle: No -AI: Check Bad Move - -Poochyena -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Zubat -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Carvanha -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_MUSEUM_1 === -Name: GRUNT -Class: Team Aqua -Pic: Aqua Grunt M -Gender: Male -Music: Aqua -Double Battle: No -AI: Check Bad Move - -Carvanha -Level: 15 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_MUSEUM_2 === -Name: GRUNT -Class: Team Aqua -Pic: Aqua Grunt M -Gender: Male -Music: Aqua -Double Battle: No -AI: Check Bad Move - -Zubat -Level: 14 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Carvanha -Level: 14 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_SPACE_CENTER_1 === -Name: GRUNT -Class: Team Magma -Pic: Magma Grunt M -Gender: Male -Music: Magma -Double Battle: No -AI: Check Bad Move - -Numel -Level: 32 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_MT_PYRE_1 === -Name: GRUNT -Class: Team Aqua -Pic: Aqua Grunt M -Gender: Male -Music: Aqua -Double Battle: No -AI: Check Bad Move - -Zubat -Level: 32 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_MT_PYRE_2 === -Name: GRUNT -Class: Team Aqua -Pic: Aqua Grunt M -Gender: Male -Music: Aqua -Double Battle: No -AI: Check Bad Move - -Carvanha -Level: 32 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_MT_PYRE_3 === -Name: GRUNT -Class: Team Aqua -Pic: Aqua Grunt M -Gender: Male -Music: Aqua -Double Battle: No -AI: Check Bad Move - -Poochyena -Level: 30 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Carvanha -Level: 30 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_WEATHER_INST_4 === -Name: GRUNT -Class: Team Aqua -Pic: Aqua Grunt F -Gender: Female -Music: Aqua -Double Battle: No -AI: Check Bad Move - -Carvanha -Level: 28 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_AQUA_HIDEOUT_5 === -Name: GRUNT -Class: Team Aqua -Pic: Aqua Grunt F -Gender: Female -Music: Aqua -Double Battle: No -AI: Check Bad Move - -Carvanha -Level: 32 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_AQUA_HIDEOUT_6 === -Name: GRUNT -Class: Team Aqua -Pic: Aqua Grunt F -Gender: Female -Music: Aqua -Double Battle: No -AI: Check Bad Move - -Zubat -Level: 32 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_FREDRICK === -Name: FREDRICK -Class: Expert -Pic: Expert M -Gender: Male -Music: Intense -Double Battle: No -AI: Basic Trainer - -Makuhita -Level: 30 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Machoke -Level: 30 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_MATT === -Name: MATT -Class: Aqua Admin -Pic: Aqua Admin M -Gender: Male -Music: Aqua -Items: Super Potion -Double Battle: No -AI: Basic Trainer - -Mightyena -Level: 34 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -Golbat -Level: 34 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -=== TRAINER_ZANDER === -Name: ZANDER -Class: Black Belt -Pic: Black Belt -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Hariyama -Level: 31 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_SHELLY_WEATHER_INSTITUTE === -Name: SHELLY -Class: Aqua Admin -Pic: Aqua Admin F -Gender: Female -Music: Aqua -Double Battle: No -AI: Basic Trainer - -Carvanha -Level: 28 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -Mightyena -Level: 28 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -=== TRAINER_SHELLY_SEAFLOOR_CAVERN === -Name: SHELLY -Class: Aqua Admin -Pic: Aqua Admin F -Gender: Female -Music: Aqua -Double Battle: No -AI: Basic Trainer - -Sharpedo -Level: 37 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Mightyena -Level: 37 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_ARCHIE === -Name: ARCHIE -Class: Aqua Leader -Pic: Aqua Leader Archie -Gender: Male -Music: Aqua -Items: Super Potion / Super Potion -Double Battle: No -AI: Basic Trainer - -Mightyena -Level: 41 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -Crobat -Level: 41 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -Sharpedo -Level: 43 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -=== TRAINER_LEAH === -Name: LEAH -Class: Hex Maniac -Pic: Hex Maniac -Gender: Female -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Spoink -Level: 31 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_DAISY === -Name: DAISY -Class: Aroma Lady -Pic: Aroma Lady -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Shroomish -Level: 14 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Roselia -Level: 14 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_ROSE_1 === -Name: ROSE -Class: Aroma Lady -Pic: Aroma Lady -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Roselia -Level: 14 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Shroomish -Level: 14 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Roselia -Level: 14 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_FELIX === -Name: FELIX -Class: Cooltrainer -Pic: Cooltrainer M -Gender: Male -Music: Cool -Items: Full Restore -Double Battle: No -AI: Basic Trainer - -Medicham -Level: 43 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Psychic - -Claydol -Level: 43 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Skill Swap -- Earthquake - -=== TRAINER_VIOLET === -Name: VIOLET -Class: Aroma Lady -Pic: Aroma Lady -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Roselia -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Gloom -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_ROSE_2 === -Name: ROSE -Class: Aroma Lady -Pic: Aroma Lady -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Shroomish -Level: 26 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Roselia -Level: 26 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_ROSE_3 === -Name: ROSE -Class: Aroma Lady -Pic: Aroma Lady -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Shroomish -Level: 28 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Gloom -Level: 28 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Roselia -Level: 28 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_ROSE_4 === -Name: ROSE -Class: Aroma Lady -Pic: Aroma Lady -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Shroomish -Level: 31 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Gloom -Level: 31 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Roselia -Level: 31 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_ROSE_5 === -Name: ROSE -Class: Aroma Lady -Pic: Aroma Lady -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Breloom -Level: 34 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Gloom -Level: 34 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Roselia -Level: 34 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_DUSTY_1 === -Name: DUSTY -Class: Ruin Maniac -Pic: Ruin Maniac -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Sandslash -Level: 23 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe -- Dig -- Slash -- Sand Attack -- Poison Sting - -=== TRAINER_CHIP === -Name: CHIP -Class: Ruin Maniac -Pic: Ruin Maniac -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Baltoy -Level: 27 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe -- Psybeam -- Self Destruct -- Sandstorm -- Ancient Power - -Sandshrew -Level: 27 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe -- Dig -- Slash -- Sand Attack -- Poison Sting - -Sandslash -Level: 27 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe -- Dig -- Slash -- Sand Attack -- Poison Sting - -=== TRAINER_FOSTER === -Name: FOSTER -Class: Ruin Maniac -Pic: Ruin Maniac -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Sandshrew -Level: 25 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Dig -- Slash -- Sand Attack -- Poison Sting - -Sandslash -Level: 25 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Dig -- Slash -- Sand Attack -- Poison Sting - -=== TRAINER_DUSTY_2 === -Name: DUSTY -Class: Ruin Maniac -Pic: Ruin Maniac -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Sandslash -Level: 27 -IVs: 7 HP / 7 Atk / 7 Def / 7 SpA / 7 SpD / 7 Spe -- Dig -- Slash -- Sand Attack -- Poison Sting - -=== TRAINER_DUSTY_3 === -Name: DUSTY -Class: Ruin Maniac -Pic: Ruin Maniac -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Sandslash -Level: 30 -IVs: 8 HP / 8 Atk / 8 Def / 8 SpA / 8 SpD / 8 Spe -- Dig -- Slash -- Sand Attack -- Poison Sting - -=== TRAINER_DUSTY_4 === -Name: DUSTY -Class: Ruin Maniac -Pic: Ruin Maniac -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Sandslash -Level: 33 -IVs: 9 HP / 9 Atk / 9 Def / 9 SpA / 9 SpD / 9 Spe -- Dig -- Slash -- Sand Attack -- Poison Sting - -=== TRAINER_DUSTY_5 === -Name: DUSTY -Class: Ruin Maniac -Pic: Ruin Maniac -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Sandslash -Level: 36 -IVs: 10 HP / 10 Atk / 10 Def / 10 SpA / 10 SpD / 10 Spe -- Dig -- Slash -- Sand Attack -- Poison Sting - -=== TRAINER_GABBY_AND_TY_1 === -Name: GABBY & TY -Class: Interviewer -Pic: Interviewer -Gender: Male -Music: Interviewer -Double Battle: Yes -AI: Check Bad Move - -Magnemite -Level: 17 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -Whismur -Level: 17 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -=== TRAINER_GABBY_AND_TY_2 === -Name: GABBY & TY -Class: Interviewer -Pic: Interviewer -Gender: Male -Music: Interviewer -Double Battle: Yes -AI: Check Bad Move - -Magnemite -Level: 27 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Loudred -Level: 27 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_GABBY_AND_TY_3 === -Name: GABBY & TY -Class: Interviewer -Pic: Interviewer -Gender: Male -Music: Interviewer -Double Battle: Yes -AI: Check Bad Move - -Magneton -Level: 30 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -Loudred -Level: 30 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -=== TRAINER_GABBY_AND_TY_4 === -Name: GABBY & TY -Class: Interviewer -Pic: Interviewer -Gender: Male -Music: Interviewer -Double Battle: Yes -AI: Check Bad Move - -Magneton -Level: 33 -IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe - -Loudred -Level: 33 -IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe - -=== TRAINER_GABBY_AND_TY_5 === -Name: GABBY & TY -Class: Interviewer -Pic: Interviewer -Gender: Male -Music: Interviewer -Double Battle: Yes -AI: Check Bad Move - -Magneton -Level: 36 -IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe - -Loudred -Level: 36 -IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe - -=== TRAINER_GABBY_AND_TY_6 === -Name: GABBY & TY -Class: Interviewer -Pic: Interviewer -Gender: Male -Music: Interviewer -Double Battle: Yes -AI: Check Bad Move - -Magneton -Level: 39 -IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe -- Sonic Boom -- Thunder Wave -- Metal Sound -- Thunderbolt - -Exploud -Level: 39 -IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe -- Astonish -- Stomp -- Supersonic -- Hyper Voice - -=== TRAINER_LOLA_1 === -Name: LOLA -Class: Tuber F -Pic: Tuber F -Gender: Female -Music: Girl -Double Battle: No -AI: Check Bad Move - -Azurill -Level: 12 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Azurill -Level: 12 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_AUSTINA === -Name: AUSTINA -Class: Tuber F -Pic: Tuber F -Gender: Female -Music: Girl -Double Battle: No -AI: Check Bad Move - -Marill -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GWEN === -Name: GWEN -Class: Tuber F -Pic: Tuber F -Gender: Female -Music: Girl -Double Battle: No -AI: Check Bad Move - -Marill -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_LOLA_2 === -Name: LOLA -Class: Tuber F -Pic: Tuber F -Gender: Female -Music: Girl -Double Battle: No -AI: Check Bad Move - -Marill -Level: 26 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Marill -Level: 26 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_LOLA_3 === -Name: LOLA -Class: Tuber F -Pic: Tuber F -Gender: Female -Music: Girl -Double Battle: No -AI: Check Bad Move - -Marill -Level: 29 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Marill -Level: 29 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_LOLA_4 === -Name: LOLA -Class: Tuber F -Pic: Tuber F -Gender: Female -Music: Girl -Double Battle: No -AI: Check Bad Move - -Marill -Level: 32 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Marill -Level: 32 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_LOLA_5 === -Name: LOLA -Class: Tuber F -Pic: Tuber F -Gender: Female -Music: Girl -Double Battle: No -AI: Check Bad Move - -Azumarill -Level: 35 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Azumarill -Level: 35 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_RICKY_1 === -Name: RICKY -Class: Tuber M -Pic: Tuber M -Gender: Male -Music: Girl -Double Battle: No -AI: Check Bad Move - -Zigzagoon -Level: 13 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe -- Sand Attack -- Headbutt -- Tail Whip -- Surf - -=== TRAINER_SIMON === -Name: SIMON -Class: Tuber M -Pic: Tuber M -Gender: Male -Music: Girl -Double Battle: No -AI: Check Bad Move - -Azurill -Level: 12 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Marill -Level: 12 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_CHARLIE === -Name: CHARLIE -Class: Tuber M -Pic: Tuber M -Gender: Male -Music: Girl -Double Battle: No -AI: Check Bad Move - -Marill -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_RICKY_2 === -Name: RICKY -Class: Tuber M -Pic: Tuber M -Gender: Male -Music: Girl -Double Battle: No -AI: Check Bad Move - -Linoone -Level: 27 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe -- Sand Attack -- Pin Missile -- Tail Whip -- Surf - -=== TRAINER_RICKY_3 === -Name: RICKY -Class: Tuber M -Pic: Tuber M -Gender: Male -Music: Girl -Double Battle: No -AI: Check Bad Move - -Linoone -Level: 30 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe -- Sand Attack -- Pin Missile -- Tail Whip -- Surf - -=== TRAINER_RICKY_4 === -Name: RICKY -Class: Tuber M -Pic: Tuber M -Gender: Male -Music: Girl -Double Battle: No -AI: Check Bad Move - -Linoone -Level: 33 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe -- Sand Attack -- Pin Missile -- Tail Whip -- Surf - -=== TRAINER_RICKY_5 === -Name: RICKY -Class: Tuber M -Pic: Tuber M -Gender: Male -Music: Girl -Double Battle: No -AI: Check Bad Move - -Linoone -Level: 36 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe -- Sand Attack -- Pin Missile -- Tail Whip -- Surf - -=== TRAINER_RANDALL === -Name: RANDALL -Class: Cooltrainer -Pic: Cooltrainer M -Gender: Male -Music: Cool -Items: Hyper Potion -Double Battle: No -AI: Basic Trainer - -Swellow -Level: 26 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Quick Attack -- Agility -- Wing Attack - -=== TRAINER_PARKER === -Name: PARKER -Class: Cooltrainer -Pic: Cooltrainer M -Gender: Male -Music: Cool -Items: Hyper Potion -Double Battle: No -AI: Basic Trainer - -Spinda -Level: 26 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Teeter Dance -- Dizzy Punch -- Focus Punch - -=== TRAINER_GEORGE === -Name: GEORGE -Class: Cooltrainer -Pic: Cooltrainer M -Gender: Male -Music: Cool -Items: Hyper Potion -Double Battle: No -AI: Basic Trainer - -Slakoth @ Sitrus Berry -Level: 26 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Slack Off -- Counter -- Shadow Ball - -=== TRAINER_BERKE === -Name: BERKE -Class: Cooltrainer -Pic: Cooltrainer M -Gender: Male -Music: Cool -Items: Hyper Potion -Double Battle: No -AI: Basic Trainer - -Vigoroth -Level: 26 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Focus Energy -- Slash - -=== TRAINER_BRAXTON === -Name: BRAXTON -Class: Cooltrainer -Pic: Cooltrainer M -Gender: Male -Music: Cool -Items: Hyper Potion -Double Battle: No -AI: Basic Trainer - -Swellow -Level: 28 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Focus Energy -- Quick Attack -- Wing Attack -- Endeavor - -Trapinch -Level: 28 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Bite -- Dig -- Feint Attack -- Sand Tomb - -Wailmer -Level: 28 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Rollout -- Whirlpool -- Astonish -- Water Pulse - -Magneton -Level: 28 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Thunderbolt -- Supersonic -- Thunder Wave -- Sonic Boom - -Shiftry -Level: 28 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Giga Drain -- Feint Attack -- Double Team -- Swagger - -=== TRAINER_VINCENT === -Name: VINCENT -Class: Cooltrainer -Pic: Cooltrainer M -Gender: Male -Music: Cool -Items: Full Restore -Double Battle: No -AI: Basic Trainer - -Sableye -Level: 44 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Medicham -Level: 44 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Sharpedo -Level: 44 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_LEROY === -Name: LEROY -Class: Cooltrainer -Pic: Cooltrainer M -Gender: Male -Music: Cool -Items: Full Restore -Double Battle: No -AI: Basic Trainer - -Mawile -Level: 46 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Starmie -Level: 46 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_WILTON_1 === -Name: WILTON -Class: Cooltrainer -Pic: Cooltrainer M -Gender: Male -Music: Cool -Items: Super Potion -Double Battle: No -AI: Basic Trainer - -Electrike -Level: 17 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Wailmer -Level: 17 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Makuhita -Level: 17 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_EDGAR === -Name: EDGAR -Class: Cooltrainer -Pic: Cooltrainer M -Gender: Male -Music: Cool -Items: Full Restore -Double Battle: No -AI: Basic Trainer - -Cacturne -Level: 43 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Pelipper -Level: 43 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_ALBERT === -Name: ALBERT -Class: Cooltrainer -Pic: Cooltrainer M -Gender: Male -Music: Cool -Items: Full Restore -Double Battle: No -AI: Basic Trainer - -Magneton -Level: 43 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Muk -Level: 43 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_SAMUEL === -Name: SAMUEL -Class: Cooltrainer -Pic: Cooltrainer M -Gender: Male -Music: Cool -Items: Full Restore -Double Battle: No -AI: Basic Trainer - -Swellow -Level: 42 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Mawile -Level: 42 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Kadabra -Level: 42 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_VITO === -Name: VITO -Class: Cooltrainer -Pic: Cooltrainer M -Gender: Male -Music: Cool -Items: Full Restore -Double Battle: No -AI: Basic Trainer - -Dodrio -Level: 42 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Kadabra -Level: 42 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Electrode -Level: 42 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Shiftry -Level: 42 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_OWEN === -Name: OWEN -Class: Cooltrainer -Pic: Cooltrainer M -Gender: Male -Music: Cool -Items: Full Restore -Double Battle: No -AI: Basic Trainer - -Kecleon -Level: 42 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Graveler -Level: 42 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Wailord -Level: 42 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_WILTON_2 === -Name: WILTON -Class: Cooltrainer -Pic: Cooltrainer M -Gender: Male -Music: Cool -Items: Hyper Potion -Double Battle: No -AI: Basic Trainer - -Electrike -Level: 26 -IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe - -Wailmer -Level: 26 -IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe - -Makuhita -Level: 26 -IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe - -=== TRAINER_WILTON_3 === -Name: WILTON -Class: Cooltrainer -Pic: Cooltrainer M -Gender: Male -Music: Cool -Items: Hyper Potion -Double Battle: No -AI: Basic Trainer - -Manectric -Level: 29 -IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe - -Wailmer -Level: 29 -IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe - -Makuhita -Level: 29 -IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe - -=== TRAINER_WILTON_4 === -Name: WILTON -Class: Cooltrainer -Pic: Cooltrainer M -Gender: Male -Music: Cool -Items: Full Restore -Double Battle: No -AI: Basic Trainer - -Manectric -Level: 32 -IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe - -Wailmer -Level: 32 -IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe - -Makuhita -Level: 32 -IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe - -=== TRAINER_WILTON_5 === -Name: WILTON -Class: Cooltrainer -Pic: Cooltrainer M -Gender: Male -Music: Cool -Items: Full Restore -Double Battle: No -AI: Basic Trainer - -Manectric -Level: 35 -IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe - -Wailmer -Level: 35 -IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe - -Hariyama -Level: 35 -IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe - -=== TRAINER_WARREN === -Name: WARREN -Class: Cooltrainer -Pic: Cooltrainer M -Gender: Male -Music: Cool -Items: Full Restore -Double Battle: No -AI: Basic Trainer - -Graveler -Level: 33 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Ludicolo -Level: 33 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_MARY === -Name: MARY -Class: Cooltrainer -Pic: Cooltrainer F -Gender: Female -Music: Cool -Items: Hyper Potion -Double Battle: No -AI: Basic Trainer - -Delcatty -Level: 26 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Feint Attack -- Shock Wave - -=== TRAINER_ALEXIA === -Name: ALEXIA -Class: Cooltrainer -Pic: Cooltrainer F -Gender: Female -Music: Cool -Items: Hyper Potion -Double Battle: No -AI: Basic Trainer - -Wigglytuff -Level: 26 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Defense Curl -- Double Edge -- Shadow Ball - -=== TRAINER_JODY === -Name: JODY -Class: Cooltrainer -Pic: Cooltrainer F -Gender: Female -Music: Cool -Items: Hyper Potion -Double Battle: No -AI: Check Bad Move / Try To Faint / Force Setup First Turn - -Zangoose -Level: 26 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Swords Dance -- Slash - -=== TRAINER_WENDY === -Name: WENDY -Class: Cooltrainer -Pic: Cooltrainer F -Gender: Female -Music: Cool -Items: Full Restore -Double Battle: No -AI: Check Bad Move / Try To Faint / Force Setup First Turn - -Mawile -Level: 29 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Baton Pass -- Feint Attack -- Fake Tears -- Bite - -Roselia -Level: 29 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Mega Drain -- Magical Leaf -- Grass Whistle -- Leech Seed - -Pelipper -Level: 29 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Fly -- Water Gun -- Mist -- Protect - -=== TRAINER_KEIRA === -Name: KEIRA -Class: Cooltrainer -Pic: Cooltrainer F -Gender: Female -Music: Cool -Items: Full Restore -Double Battle: No -AI: Check Bad Move / Try To Faint / Force Setup First Turn - -Lairon -Level: 45 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Manectric -Level: 45 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_BROOKE_1 === -Name: BROOKE -Class: Cooltrainer -Pic: Cooltrainer F -Gender: Female -Music: Cool -Items: Super Potion -Double Battle: No -AI: Basic Trainer - -Wingull -Level: 17 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Numel -Level: 17 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Roselia -Level: 17 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_JENNIFER === -Name: JENNIFER -Class: Cooltrainer -Pic: Cooltrainer F -Gender: Female -Music: Cool -Items: Full Restore -Double Battle: No -AI: Basic Trainer - -Sableye -Level: 30 -IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe - -=== TRAINER_HOPE === -Name: HOPE -Class: Cooltrainer -Pic: Cooltrainer F -Gender: Female -Music: Cool -Items: Full Restore -Double Battle: No -AI: Basic Trainer - -Roselia -Level: 45 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_SHANNON === -Name: SHANNON -Class: Cooltrainer -Pic: Cooltrainer F -Gender: Female -Music: Cool -Items: Full Restore -Double Battle: No -AI: Basic Trainer - -Claydol -Level: 45 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_MICHELLE === -Name: MICHELLE -Class: Cooltrainer -Pic: Cooltrainer F -Gender: Female -Music: Cool -Items: Full Restore -Double Battle: No -AI: Basic Trainer - -Torkoal -Level: 42 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Medicham -Level: 42 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Ludicolo -Level: 42 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_CAROLINE === -Name: CAROLINE -Class: Cooltrainer -Pic: Cooltrainer F -Gender: Female -Music: Cool -Items: Full Restore -Double Battle: No -AI: Basic Trainer - -Skarmory -Level: 43 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Sableye -Level: 43 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_JULIE === -Name: JULIE -Class: Cooltrainer -Pic: Cooltrainer F -Gender: Female -Music: Cool -Items: Full Restore -Double Battle: No -AI: Basic Trainer - -Sandslash -Level: 42 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Ninetales -Level: 42 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Tropius -Level: 42 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_BROOKE_2 === -Name: BROOKE -Class: Cooltrainer -Pic: Cooltrainer F -Gender: Female -Music: Cool -Items: Hyper Potion -Double Battle: No -AI: Basic Trainer - -Wingull -Level: 26 -IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe - -Numel -Level: 26 -IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe - -Roselia -Level: 26 -IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe - -=== TRAINER_BROOKE_3 === -Name: BROOKE -Class: Cooltrainer -Pic: Cooltrainer F -Gender: Female -Music: Cool -Items: Hyper Potion -Double Battle: No -AI: Basic Trainer - -Pelipper -Level: 29 -IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe - -Numel -Level: 29 -IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe - -Roselia -Level: 29 -IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe - -=== TRAINER_BROOKE_4 === -Name: BROOKE -Class: Cooltrainer -Pic: Cooltrainer F -Gender: Female -Music: Cool -Items: Full Restore -Double Battle: No -AI: Basic Trainer - -Pelipper -Level: 32 -IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe - -Numel -Level: 32 -IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe - -Roselia -Level: 32 -IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe - -=== TRAINER_BROOKE_5 === -Name: BROOKE -Class: Cooltrainer -Pic: Cooltrainer F -Gender: Female -Music: Cool -Items: Full Restore -Double Battle: No -AI: Basic Trainer - -Pelipper -Level: 34 -IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe - -Camerupt -Level: 34 -IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe - -Roselia -Level: 34 -IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe - -=== TRAINER_PATRICIA === -Name: PATRICIA -Class: Hex Maniac -Pic: Hex Maniac -Gender: Female -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Banette -Level: 41 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Lunatone -Level: 41 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_KINDRA === -Name: KINDRA -Class: Hex Maniac -Pic: Hex Maniac -Gender: Female -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Duskull -Level: 30 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Shuppet -Level: 30 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_TAMMY === -Name: TAMMY -Class: Hex Maniac -Pic: Hex Maniac -Gender: Female -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Duskull -Level: 29 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Shuppet -Level: 29 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_VALERIE_1 === -Name: VALERIE -Class: Hex Maniac -Pic: Hex Maniac -Gender: Female -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Sableye -Level: 32 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_TASHA === -Name: TASHA -Class: Hex Maniac -Pic: Hex Maniac -Gender: Female -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Shuppet -Level: 32 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -=== TRAINER_VALERIE_2 === -Name: VALERIE -Class: Hex Maniac -Pic: Hex Maniac -Gender: Female -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Sableye -Level: 31 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Spoink -Level: 31 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_VALERIE_3 === -Name: VALERIE -Class: Hex Maniac -Pic: Hex Maniac -Gender: Female -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Spoink -Level: 35 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Sableye -Level: 35 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_VALERIE_4 === -Name: VALERIE -Class: Hex Maniac -Pic: Hex Maniac -Gender: Female -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Spoink -Level: 40 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Sableye -Level: 40 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_VALERIE_5 === -Name: VALERIE -Class: Hex Maniac -Pic: Hex Maniac -Gender: Female -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Duskull -Level: 42 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Sableye -Level: 42 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Grumpig -Level: 42 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_CINDY_1 === -Name: CINDY -Class: Lady -Pic: Lady -Gender: Female -Music: Female -Items: Full Restore -Double Battle: No -AI: Check Bad Move - -Zigzagoon @ Nugget -Level: 7 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_DAPHNE === -Name: DAPHNE -Class: Lady -Pic: Lady -Gender: Female -Music: Female -Items: Full Restore -Double Battle: No -AI: Check Bad Move - -Luvdisc @ Nugget -Level: 39 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Attract -- Sweet Kiss -- Flail -- Water Pulse - -Luvdisc @ Nugget -Level: 39 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Attract -- Safeguard -- Take Down -- Water Pulse - -=== TRAINER_GRUNT_SPACE_CENTER_2 === -Name: GRUNT -Class: Team Magma -Pic: Magma Grunt M -Gender: Male -Music: Magma -Double Battle: No -AI: Check Bad Move - -Mightyena -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Mightyena -Level: 28 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Numel -Level: 30 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_CINDY_2 === -Name: CINDY -Class: Lady -Pic: Lady -Gender: Female -Music: Female -Items: Full Restore -Double Battle: No -AI: Check Bad Move - -Zigzagoon @ Nugget -Level: 11 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Tackle -- Tail Whip - -=== TRAINER_BRIANNA === -Name: BRIANNA -Class: Lady -Pic: Lady -Gender: Female -Music: Female -Items: Full Restore -Double Battle: No -AI: Check Bad Move - -Seaking @ Nugget -Level: 40 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -=== TRAINER_NAOMI === -Name: NAOMI -Class: Lady -Pic: Lady -Gender: Female -Music: Female -Items: Full Restore -Double Battle: No -AI: Check Bad Move - -Roselia @ Nugget -Level: 45 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_CINDY_3 === -Name: CINDY -Class: Lady -Pic: Lady -Gender: Female -Music: Female -Items: Full Restore -Double Battle: No -AI: Check Bad Move - -Linoone @ Nugget -Level: 27 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_CINDY_4 === -Name: CINDY -Class: Lady -Pic: Lady -Gender: Female -Music: Female -Items: Full Restore -Double Battle: No -AI: Check Bad Move - -Linoone @ Nugget -Level: 30 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_CINDY_5 === -Name: CINDY -Class: Lady -Pic: Lady -Gender: Female -Music: Female -Items: Full Restore -Double Battle: No -AI: Check Bad Move - -Linoone @ Nugget -Level: 33 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_CINDY_6 === -Name: CINDY -Class: Lady -Pic: Lady -Gender: Female -Music: Female -Items: Full Restore -Double Battle: No -AI: Check Bad Move - -Linoone @ Nugget -Level: 36 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe -- Fury Swipes -- Mud Sport -- Odor Sleuth -- Sand Attack - -=== TRAINER_MELISSA === -Name: MELISSA -Class: Beauty -Pic: Beauty -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Marill -Level: 21 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_SHEILA === -Name: SHEILA -Class: Beauty -Pic: Beauty -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Shroomish -Level: 21 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_SHIRLEY === -Name: SHIRLEY -Class: Beauty -Pic: Beauty -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Numel -Level: 21 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_JESSICA_1 === -Name: JESSICA -Class: Beauty -Pic: Beauty -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Kecleon -Level: 29 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Bind -- Lick -- Fury Swipes -- Feint Attack - -Seviper -Level: 29 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Poison Tail -- Screech -- Glare -- Crunch - -=== TRAINER_CONNIE === -Name: CONNIE -Class: Beauty -Pic: Beauty -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Goldeen -Level: 40 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_BRIDGET === -Name: BRIDGET -Class: Beauty -Pic: Beauty -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Azumarill -Level: 40 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -=== TRAINER_OLIVIA === -Name: OLIVIA -Class: Beauty -Pic: Beauty -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Clamperl -Level: 35 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Iron Defense -- Whirlpool -- Rain Dance -- Water Pulse - -Corphish -Level: 37 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Taunt -- Crabhammer -- Water Pulse - -Lombre -Level: 39 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Uproar -- Fury Swipes -- Fake Out -- Water Pulse - -=== TRAINER_TIFFANY === -Name: TIFFANY -Class: Beauty -Pic: Beauty -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Carvanha -Level: 39 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Sharpedo -Level: 39 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_JESSICA_2 === -Name: JESSICA -Class: Beauty -Pic: Beauty -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Kecleon -Level: 35 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe -- Bind -- Lick -- Fury Swipes -- Feint Attack - -Seviper -Level: 35 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe -- Poison Tail -- Screech -- Glare -- Crunch - -=== TRAINER_JESSICA_3 === -Name: JESSICA -Class: Beauty -Pic: Beauty -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Kecleon -Level: 38 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe -- Bind -- Lick -- Fury Swipes -- Feint Attack - -Seviper -Level: 38 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe -- Poison Tail -- Screech -- Glare -- Crunch - -=== TRAINER_JESSICA_4 === -Name: JESSICA -Class: Beauty -Pic: Beauty -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Kecleon -Level: 41 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe -- Bind -- Lick -- Fury Swipes -- Feint Attack - -Seviper -Level: 41 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe -- Poison Tail -- Screech -- Glare -- Crunch - -=== TRAINER_JESSICA_5 === -Name: JESSICA -Class: Beauty -Pic: Beauty -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Kecleon -Level: 44 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe -- Bind -- Lick -- Fury Swipes -- Feint Attack - -Seviper -Level: 44 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe -- Poison Tail -- Screech -- Glare -- Crunch - -=== TRAINER_WINSTON_1 === -Name: WINSTON -Class: Rich Boy -Pic: Rich Boy -Gender: Male -Music: Rich -Items: Full Restore -Double Battle: No -AI: Check Bad Move - -Zigzagoon @ Nugget -Level: 7 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_MOLLIE === -Name: MOLLIE -Class: Expert -Pic: Expert F -Gender: Female -Music: Intense -Double Battle: No -AI: Check Bad Move - -Whiscash -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Meditite -Level: 33 -IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe - -=== TRAINER_GARRET === -Name: GARRET -Class: Rich Boy -Pic: Rich Boy -Gender: Male -Music: Rich -Items: Full Restore -Double Battle: No -AI: Check Bad Move - -Azumarill @ Nugget -Level: 45 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_WINSTON_2 === -Name: WINSTON -Class: Rich Boy -Pic: Rich Boy -Gender: Male -Music: Rich -Items: Full Restore -Double Battle: No -AI: Check Bad Move - -Linoone @ Nugget -Level: 27 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_WINSTON_3 === -Name: WINSTON -Class: Rich Boy -Pic: Rich Boy -Gender: Male -Music: Rich -Items: Full Restore -Double Battle: No -AI: Check Bad Move - -Linoone @ Nugget -Level: 30 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_WINSTON_4 === -Name: WINSTON -Class: Rich Boy -Pic: Rich Boy -Gender: Male -Music: Rich -Items: Full Restore -Double Battle: No -AI: Check Bad Move - -Linoone @ Nugget -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_WINSTON_5 === -Name: WINSTON -Class: Rich Boy -Pic: Rich Boy -Gender: Male -Music: Rich -Items: Full Restore -Double Battle: No -AI: Check Bad Move - -Linoone @ Nugget -Level: 36 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Fury Swipes -- Mud Sport -- Odor Sleuth -- Sand Attack - -=== TRAINER_STEVE_1 === -Name: STEVE -Class: Pokemaniac -Pic: Pokemaniac -Gender: Male -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Aron -Level: 19 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_THALIA_1 === -Name: THALIA -Class: Beauty -Pic: Beauty -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Wailmer -Level: 25 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Horsea -Level: 25 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_MARK === -Name: MARK -Class: Pokemaniac -Pic: Pokemaniac -Gender: Male -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Rhyhorn -Level: 31 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_MT_CHIMNEY_1 === -Name: GRUNT -Class: Team Magma -Pic: Magma Grunt F -Gender: Female -Music: Magma -Double Battle: No -AI: Check Bad Move - -Numel -Level: 20 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_STEVE_2 === -Name: STEVE -Class: Pokemaniac -Pic: Pokemaniac -Gender: Male -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Lairon -Level: 27 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_STEVE_3 === -Name: STEVE -Class: Pokemaniac -Pic: Pokemaniac -Gender: Male -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Lairon -Level: 29 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Rhyhorn -Level: 29 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_STEVE_4 === -Name: STEVE -Class: Pokemaniac -Pic: Pokemaniac -Gender: Male -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Lairon -Level: 32 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Rhyhorn -Level: 32 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_STEVE_5 === -Name: STEVE -Class: Pokemaniac -Pic: Pokemaniac -Gender: Male -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Aggron -Level: 35 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Rhydon -Level: 35 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_LUIS === -Name: LUIS -Class: Swimmer M -Pic: Swimmer M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Carvanha -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_DOMINIK === -Name: DOMINIK -Class: Swimmer M -Pic: Swimmer M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Tentacool -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_DOUGLAS === -Name: DOUGLAS -Class: Swimmer M -Pic: Swimmer M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Tentacool -Level: 24 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Tentacool -Level: 24 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_DARRIN === -Name: DARRIN -Class: Swimmer M -Pic: Swimmer M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Tentacool -Level: 24 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Wingull -Level: 24 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Tentacool -Level: 24 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_TONY_1 === -Name: TONY -Class: Swimmer M -Pic: Swimmer M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Carvanha -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_JEROME === -Name: JEROME -Class: Swimmer M -Pic: Swimmer M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Tentacruel -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_MATTHEW === -Name: MATTHEW -Class: Swimmer M -Pic: Swimmer M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Carvanha -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_DAVID === -Name: DAVID -Class: Swimmer M -Pic: Swimmer M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Tentacool -Level: 25 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Carvanha -Level: 25 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_SPENCER === -Name: SPENCER -Class: Swimmer M -Pic: Swimmer M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Tentacool -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Wingull -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_ROLAND === -Name: ROLAND -Class: Swimmer M -Pic: Swimmer M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Carvanha -Level: 34 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_NOLEN === -Name: NOLEN -Class: Swimmer M -Pic: Swimmer M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Tentacruel -Level: 34 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_STAN === -Name: STAN -Class: Swimmer M -Pic: Swimmer M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Horsea -Level: 34 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_BARRY === -Name: BARRY -Class: Swimmer M -Pic: Swimmer M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Gyarados -Level: 34 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_DEAN === -Name: DEAN -Class: Swimmer M -Pic: Swimmer M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Carvanha -Level: 31 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Wingull -Level: 31 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Carvanha -Level: 31 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_RODNEY === -Name: RODNEY -Class: Swimmer M -Pic: Swimmer M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Gyarados -Level: 34 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_RICHARD === -Name: RICHARD -Class: Swimmer M -Pic: Swimmer M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Pelipper -Level: 34 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_HERMAN === -Name: HERMAN -Class: Swimmer M -Pic: Swimmer M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Wingull -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Tentacruel -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_SANTIAGO === -Name: SANTIAGO -Class: Swimmer M -Pic: Swimmer M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Tentacruel -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Wailmer -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GILBERT === -Name: GILBERT -Class: Swimmer M -Pic: Swimmer M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Sharpedo -Level: 34 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_FRANKLIN === -Name: FRANKLIN -Class: Swimmer M -Pic: Swimmer M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Sealeo -Level: 34 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_KEVIN === -Name: KEVIN -Class: Swimmer M -Pic: Swimmer M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Spheal -Level: 34 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_JACK === -Name: JACK -Class: Swimmer M -Pic: Swimmer M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Gyarados -Level: 34 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_DUDLEY === -Name: DUDLEY -Class: Swimmer M -Pic: Swimmer M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Tentacool -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Wingull -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Tentacruel -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_CHAD === -Name: CHAD -Class: Swimmer M -Pic: Swimmer M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Tentacool -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Wailmer -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_TONY_2 === -Name: TONY -Class: Swimmer M -Pic: Swimmer M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Sharpedo -Level: 30 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_TONY_3 === -Name: TONY -Class: Swimmer M -Pic: Swimmer M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Sharpedo -Level: 33 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_TONY_4 === -Name: TONY -Class: Swimmer M -Pic: Swimmer M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Staryu -Level: 34 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Sharpedo -Level: 36 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_TONY_5 === -Name: TONY -Class: Swimmer M -Pic: Swimmer M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Starmie -Level: 37 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Sharpedo -Level: 39 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_TAKAO === -Name: TAKAO -Class: Black Belt -Pic: Black Belt -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Machop -Level: 13 -IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe - -=== TRAINER_HITOSHI === -Name: HITOSHI -Class: Black Belt -Pic: Black Belt -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Machop -Level: 32 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -Machoke -Level: 32 -IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe - -=== TRAINER_KIYO === -Name: KIYO -Class: Black Belt -Pic: Black Belt -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Hariyama -Level: 34 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_KOICHI === -Name: KOICHI -Class: Black Belt -Pic: Black Belt -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Machop -Level: 24 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Machoke -Level: 28 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -=== TRAINER_NOB_1 === -Name: NOB -Class: Black Belt -Pic: Black Belt -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Machop -Level: 19 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_NOB_2 === -Name: NOB -Class: Black Belt -Pic: Black Belt -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Machoke -Level: 27 -IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe - -=== TRAINER_NOB_3 === -Name: NOB -Class: Black Belt -Pic: Black Belt -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Machop -Level: 29 -IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe - -Machoke -Level: 29 -IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe - -=== TRAINER_NOB_4 === -Name: NOB -Class: Black Belt -Pic: Black Belt -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Machop -Level: 31 -IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe - -Machoke -Level: 31 -IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe - -Machoke -Level: 31 -IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe - -=== TRAINER_NOB_5 === -Name: NOB -Class: Black Belt -Pic: Black Belt -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Machop -Level: 33 -IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe - -Machoke -Level: 33 -IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe - -Machoke -Level: 33 -IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe - -Machamp @ Black Belt -Level: 33 -IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe - -=== TRAINER_YUJI === -Name: YUJI -Class: Black Belt -Pic: Black Belt -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Makuhita -Level: 26 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Machoke -Level: 26 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_DAISUKE === -Name: DAISUKE -Class: Black Belt -Pic: Black Belt -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Machop -Level: 19 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_ATSUSHI === -Name: ATSUSHI -Class: Black Belt -Pic: Black Belt -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Hariyama -Level: 32 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_KIRK === -Name: KIRK -Class: Guitarist -Pic: Guitarist -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Electrike -Level: 17 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Quick Attack -- Thunder Wave -- Spark -- Leer - -Voltorb -Level: 17 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Charge -- Shock Wave -- Screech - -=== TRAINER_GRUNT_AQUA_HIDEOUT_7 === -Name: GRUNT -Class: Team Aqua -Pic: Aqua Grunt F -Gender: Female -Music: Aqua -Double Battle: No -AI: Check Bad Move - -Poochyena -Level: 31 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Zubat -Level: 31 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_AQUA_HIDEOUT_8 === -Name: GRUNT -Class: Team Aqua -Pic: Aqua Grunt M -Gender: Male -Music: Aqua -Double Battle: No -AI: Check Bad Move - -Carvanha -Level: 32 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_SHAWN === -Name: SHAWN -Class: Guitarist -Pic: Guitarist -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Voltorb -Level: 17 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Magnemite -Level: 17 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_FERNANDO_1 === -Name: FERNANDO -Class: Guitarist -Pic: Guitarist -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Electrike -Level: 30 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Loudred -Level: 30 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_DALTON_1 === -Name: DALTON -Class: Guitarist -Pic: Guitarist -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Magnemite -Level: 15 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Whismur -Level: 15 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_DALTON_2 === -Name: DALTON -Class: Guitarist -Pic: Guitarist -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Magnemite -Level: 25 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Whismur -Level: 25 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Magnemite -Level: 25 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_DALTON_3 === -Name: DALTON -Class: Guitarist -Pic: Guitarist -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Magnemite -Level: 28 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Loudred -Level: 28 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Magnemite -Level: 28 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_DALTON_4 === -Name: DALTON -Class: Guitarist -Pic: Guitarist -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Magneton -Level: 31 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Loudred -Level: 31 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Magneton -Level: 31 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_DALTON_5 === -Name: DALTON -Class: Guitarist -Pic: Guitarist -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Magneton -Level: 34 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Exploud -Level: 34 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Magneton -Level: 34 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_COLE === -Name: COLE -Class: Kindler -Pic: Kindler -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Numel -Level: 23 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_JEFF === -Name: JEFF -Class: Kindler -Pic: Kindler -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Slugma -Level: 22 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Slugma -Level: 22 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_AXLE === -Name: AXLE -Class: Kindler -Pic: Kindler -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Numel -Level: 23 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_JACE === -Name: JACE -Class: Kindler -Pic: Kindler -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Slugma -Level: 23 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_KEEGAN === -Name: KEEGAN -Class: Kindler -Pic: Kindler -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Slugma -Level: 23 -IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe - -=== TRAINER_BERNIE_1 === -Name: BERNIE -Class: Kindler -Pic: Kindler -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Slugma -Level: 18 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Wingull -Level: 18 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_BERNIE_2 === -Name: BERNIE -Class: Kindler -Pic: Kindler -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Slugma -Level: 26 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Wingull -Level: 26 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_BERNIE_3 === -Name: BERNIE -Class: Kindler -Pic: Kindler -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Slugma -Level: 29 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Pelipper -Level: 29 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_BERNIE_4 === -Name: BERNIE -Class: Kindler -Pic: Kindler -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Slugma -Level: 32 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Pelipper -Level: 32 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_BERNIE_5 === -Name: BERNIE -Class: Kindler -Pic: Kindler -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Magcargo -Level: 35 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Pelipper -Level: 35 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_DREW === -Name: DREW -Class: Camper -Pic: Camper -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Sandshrew -Level: 23 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Dig -- Sand Attack -- Poison Sting -- Slash - -=== TRAINER_BEAU === -Name: BEAU -Class: Camper -Pic: Camper -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Baltoy -Level: 21 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Rapid Spin -- Mud Slap -- Psybeam -- Rock Tomb - -Sandshrew -Level: 21 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Poison Sting -- Sand Attack -- Scratch -- Dig - -Baltoy -Level: 21 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Rapid Spin -- Mud Slap -- Psybeam -- Rock Tomb - -=== TRAINER_LARRY === -Name: LARRY -Class: Camper -Pic: Camper -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Nuzleaf -Level: 18 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_SHANE === -Name: SHANE -Class: Camper -Pic: Camper -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Sandshrew -Level: 18 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Nuzleaf -Level: 18 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_JUSTIN === -Name: JUSTIN -Class: Camper -Pic: Camper -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Kecleon -Level: 24 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_ETHAN_1 === -Name: ETHAN -Class: Camper -Pic: Camper -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Zigzagoon -Level: 20 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Taillow -Level: 20 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_AUTUMN === -Name: AUTUMN -Class: Picnicker -Pic: Picnicker -Gender: Female -Music: Girl -Double Battle: No -AI: Check Bad Move - -Shroomish -Level: 21 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_TRAVIS === -Name: TRAVIS -Class: Camper -Pic: Camper -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Sandshrew -Level: 18 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_ETHAN_2 === -Name: ETHAN -Class: Camper -Pic: Camper -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Zigzagoon -Level: 26 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Taillow -Level: 26 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_ETHAN_3 === -Name: ETHAN -Class: Camper -Pic: Camper -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Linoone -Level: 29 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Swellow -Level: 29 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_ETHAN_4 === -Name: ETHAN -Class: Camper -Pic: Camper -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Sandshrew -Level: 31 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Swellow -Level: 31 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Linoone -Level: 31 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_ETHAN_5 === -Name: ETHAN -Class: Camper -Pic: Camper -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Swellow -Level: 34 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Sandslash -Level: 34 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Linoone -Level: 34 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_BRENT === -Name: BRENT -Class: Bug Maniac -Pic: Bug Maniac -Gender: Male -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Surskit -Level: 26 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_DONALD === -Name: DONALD -Class: Bug Maniac -Pic: Bug Maniac -Gender: Male -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Wurmple -Level: 24 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Silcoon -Level: 24 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Beautifly -Level: 24 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_TAYLOR === -Name: TAYLOR -Class: Bug Maniac -Pic: Bug Maniac -Gender: Male -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Wurmple -Level: 27 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Cascoon -Level: 27 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Dustox -Level: 27 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_JEFFREY_1 === -Name: JEFFREY -Class: Bug Maniac -Pic: Bug Maniac -Gender: Male -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Surskit -Level: 27 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Surskit -Level: 27 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Surskit -Level: 27 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_DEREK === -Name: DEREK -Class: Bug Maniac -Pic: Bug Maniac -Gender: Male -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Dustox -Level: 16 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -Beautifly -Level: 16 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -=== TRAINER_JEFFREY_2 === -Name: JEFFREY -Class: Bug Maniac -Pic: Bug Maniac -Gender: Male -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Surskit -Level: 31 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Surskit -Level: 31 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Surskit -Level: 31 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_JEFFREY_3 === -Name: JEFFREY -Class: Bug Maniac -Pic: Bug Maniac -Gender: Male -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Surskit -Level: 34 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Surskit -Level: 34 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Masquerain -Level: 34 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_JEFFREY_4 === -Name: JEFFREY -Class: Bug Maniac -Pic: Bug Maniac -Gender: Male -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Surskit -Level: 36 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Wurmple -Level: 36 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Surskit -Level: 36 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Masquerain -Level: 36 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_JEFFREY_5 === -Name: JEFFREY -Class: Bug Maniac -Pic: Bug Maniac -Gender: Male -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Surskit -Level: 38 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Dustox -Level: 38 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Surskit -Level: 38 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Masquerain @ Silver Powder -Level: 38 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Beautifly -Level: 38 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_EDWARD === -Name: EDWARD -Class: Psychic -Pic: Psychic M -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Abra -Level: 15 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Hidden Power - -=== TRAINER_PRESTON === -Name: PRESTON -Class: Psychic -Pic: Psychic M -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Kirlia -Level: 36 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_VIRGIL === -Name: VIRGIL -Class: Psychic -Pic: Psychic M -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Ralts -Level: 36 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_BLAKE === -Name: BLAKE -Class: Psychic -Pic: Psychic M -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Girafarig -Level: 36 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_WILLIAM === -Name: WILLIAM -Class: Psychic -Pic: Psychic M -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Ralts -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Ralts -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Kirlia -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_JOSHUA === -Name: JOSHUA -Class: Psychic -Pic: Psychic M -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Kadabra -Level: 41 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Solrock -Level: 41 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_CAMERON_1 === -Name: CAMERON -Class: Psychic -Pic: Psychic M -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Solrock -Level: 31 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_CAMERON_2 === -Name: CAMERON -Class: Psychic -Pic: Psychic M -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Kadabra -Level: 33 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Solrock -Level: 33 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_CAMERON_3 === -Name: CAMERON -Class: Psychic -Pic: Psychic M -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Kadabra -Level: 38 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Solrock -Level: 38 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_CAMERON_4 === -Name: CAMERON -Class: Psychic -Pic: Psychic M -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Kadabra -Level: 41 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Solrock -Level: 41 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_CAMERON_5 === -Name: CAMERON -Class: Psychic -Pic: Psychic M -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Solrock -Level: 45 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Alakazam -Level: 45 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_JACLYN === -Name: JACLYN -Class: Psychic -Pic: Psychic F -Gender: Female -Music: Intense -Double Battle: No -AI: Check Bad Move - -Abra -Level: 16 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Hidden Power - -=== TRAINER_HANNAH === -Name: HANNAH -Class: Psychic -Pic: Psychic F -Gender: Female -Music: Intense -Double Battle: No -AI: Check Bad Move - -Kirlia -Level: 36 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_SAMANTHA === -Name: SAMANTHA -Class: Psychic -Pic: Psychic F -Gender: Female -Music: Intense -Double Battle: No -AI: Check Bad Move - -Xatu -Level: 36 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_MAURA === -Name: MAURA -Class: Psychic -Pic: Psychic F -Gender: Female -Music: Intense -Double Battle: No -AI: Check Bad Move - -Kadabra -Level: 36 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_KAYLA === -Name: KAYLA -Class: Psychic -Pic: Psychic F -Gender: Female -Music: Intense -Double Battle: No -AI: Check Bad Move - -Wobbuffet -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Natu -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Kadabra -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_ALEXIS === -Name: ALEXIS -Class: Psychic -Pic: Psychic F -Gender: Female -Music: Intense -Double Battle: No -AI: Check Bad Move - -Kirlia -Level: 41 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Xatu -Level: 41 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_JACKI_1 === -Name: JACKI -Class: Psychic -Pic: Psychic F -Gender: Female -Music: Intense -Double Battle: No -AI: Check Bad Move - -Kadabra -Level: 30 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Lunatone -Level: 30 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_JACKI_2 === -Name: JACKI -Class: Psychic -Pic: Psychic F -Gender: Female -Music: Intense -Double Battle: No -AI: Check Bad Move - -Kadabra -Level: 34 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Lunatone -Level: 34 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_JACKI_3 === -Name: JACKI -Class: Psychic -Pic: Psychic F -Gender: Female -Music: Intense -Double Battle: No -AI: Check Bad Move - -Kadabra -Level: 37 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Lunatone -Level: 37 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_JACKI_4 === -Name: JACKI -Class: Psychic -Pic: Psychic F -Gender: Female -Music: Intense -Double Battle: No -AI: Check Bad Move - -Kadabra -Level: 40 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Lunatone -Level: 40 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_JACKI_5 === -Name: JACKI -Class: Psychic -Pic: Psychic F -Gender: Female -Music: Intense -Double Battle: No -AI: Check Bad Move - -Lunatone -Level: 43 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Alakazam -Level: 43 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_WALTER_1 === -Name: WALTER -Class: Gentleman -Pic: Gentleman -Gender: Male -Music: Rich -Double Battle: No -AI: Check Bad Move - -Manectric -Level: 29 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_MICAH === -Name: MICAH -Class: Gentleman -Pic: Gentleman -Gender: Male -Music: Rich -Double Battle: No -AI: Check Bad Move - -Manectric -Level: 44 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Manectric -Level: 44 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_THOMAS === -Name: THOMAS -Class: Gentleman -Pic: Gentleman -Gender: Male -Music: Rich -Double Battle: No -AI: Check Bad Move - -Zangoose -Level: 45 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_WALTER_2 === -Name: WALTER -Class: Gentleman -Pic: Gentleman -Gender: Male -Music: Rich -Double Battle: No -AI: Check Bad Move - -Manectric -Level: 34 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_WALTER_3 === -Name: WALTER -Class: Gentleman -Pic: Gentleman -Gender: Male -Music: Rich -Double Battle: No -AI: Check Bad Move - -Linoone -Level: 36 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe -- Headbutt -- Sand Attack -- Odor Sleuth -- Fury Swipes - -Manectric -Level: 36 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe -- Quick Attack -- Spark -- Odor Sleuth -- Roar - -=== TRAINER_WALTER_4 === -Name: WALTER -Class: Gentleman -Pic: Gentleman -Gender: Male -Music: Rich -Double Battle: No -AI: Check Bad Move - -Linoone -Level: 39 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe -- Headbutt -- Sand Attack -- Odor Sleuth -- Fury Swipes - -Manectric -Level: 39 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe -- Quick Attack -- Spark -- Odor Sleuth - -=== TRAINER_WALTER_5 === -Name: WALTER -Class: Gentleman -Pic: Gentleman -Gender: Male -Music: Rich -Double Battle: No -AI: Check Bad Move - -Linoone -Level: 41 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe -- Headbutt -- Sand Attack -- Odor Sleuth -- Fury Swipes - -Golduck -Level: 41 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe -- Fury Swipes -- Disable -- Confusion -- Psych Up - -Manectric -Level: 41 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe -- Quick Attack -- Spark -- Odor Sleuth -- Roar - -=== TRAINER_SIDNEY === -Name: SIDNEY -Class: Elite Four -Pic: Elite Four Sidney -Gender: Male -Music: Elite Four -Items: Full Restore / Full Restore -Double Battle: No -AI: Basic Trainer / Force Setup First Turn -Mugshot: Purple - -Mightyena -Level: 46 -IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe -- Roar -- Double Edge -- Sand Attack -- Crunch - -Shiftry -Level: 48 -IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe -- Torment -- Double Team -- Swagger -- Extrasensory - -Cacturne -Level: 46 -IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe -- Leech Seed -- Feint Attack -- Needle Arm -- Cotton Spore - -Crawdaunt -Level: 48 -IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe -- Surf -- Swords Dance -- Strength -- Facade - -Absol @ Sitrus Berry -Level: 49 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Aerial Ace -- Rock Slide -- Swords Dance -- Slash - -=== TRAINER_PHOEBE === -Name: PHOEBE -Class: Elite Four -Pic: Elite Four Phoebe -Gender: Female -Music: Elite Four -Items: Full Restore / Full Restore -Double Battle: No -AI: Basic Trainer -Mugshot: Green - -Dusclops -Level: 48 -IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe -- Shadow Punch -- Confuse Ray -- Curse -- Protect - -Banette -Level: 49 -IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe -- Shadow Ball -- Grudge -- Will O Wisp -- Feint Attack - -Sableye -Level: 50 -IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe -- Shadow Ball -- Double Team -- Night Shade -- Feint Attack - -Banette -Level: 49 -IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe -- Shadow Ball -- Psychic -- Thunderbolt -- Facade - -Dusclops @ Sitrus Berry -Level: 51 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Shadow Ball -- Ice Beam -- Rock Slide -- Earthquake - -=== TRAINER_GLACIA === -Name: GLACIA -Class: Elite Four -Pic: Elite Four Glacia -Gender: Female -Music: Elite Four -Items: Full Restore / Full Restore -Double Battle: No -AI: Basic Trainer -Mugshot: Pink - -Sealeo -Level: 50 -IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe -- Encore -- Body Slam -- Hail -- Ice Ball - -Glalie -Level: 50 -IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe -- Light Screen -- Crunch -- Icy Wind -- Ice Beam - -Sealeo -Level: 52 -IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe -- Attract -- Double Edge -- Hail -- Blizzard - -Glalie -Level: 52 -IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe -- Shadow Ball -- Explosion -- Hail -- Ice Beam - -Walrein @ Sitrus Berry -Level: 53 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Surf -- Body Slam -- Ice Beam -- Sheer Cold - -=== TRAINER_DRAKE === -Name: DRAKE -Class: Elite Four -Pic: Elite Four Drake -Gender: Male -Music: Elite Four -Items: Full Restore / Full Restore -Double Battle: No -AI: Basic Trainer -Mugshot: Blue - -Shelgon -Level: 52 -IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe -- Rock Tomb -- Dragon Claw -- Protect -- Double Edge - -Altaria -Level: 54 -IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe -- Double Edge -- Dragon Breath -- Dragon Dance -- Aerial Ace - -Kingdra -Level: 53 -IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe -- Smokescreen -- Dragon Dance -- Surf -- Body Slam - -Flygon -Level: 53 -IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe -- Flamethrower -- Crunch -- Dragon Breath -- Earthquake - -Salamence @ Sitrus Berry -Level: 55 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Flamethrower -- Dragon Claw -- Rock Slide -- Crunch - -=== TRAINER_ROXANNE_1 === -Name: ROXANNE -Class: Leader -Pic: Leader Roxanne -Gender: Female -Music: Female -Items: Potion / Potion -Double Battle: No -AI: Basic Trainer - -Geodude -Level: 12 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Tackle -- Defense Curl -- Rock Throw -- Rock Tomb - -Geodude -Level: 12 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Tackle -- Defense Curl -- Rock Throw -- Rock Tomb - -Nosepass @ Oran Berry -Level: 15 -IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe -- Block -- Harden -- Tackle -- Rock Tomb - -=== TRAINER_BRAWLY_1 === -Name: BRAWLY -Class: Leader -Pic: Leader Brawly -Gender: Male -Music: Male -Items: Super Potion / Super Potion -Double Battle: No -AI: Basic Trainer - -Machop -Level: 16 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Karate Chop -- Low Kick -- Seismic Toss -- Bulk Up - -Meditite -Level: 16 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Focus Punch -- Light Screen -- Reflect -- Bulk Up - -Makuhita @ Sitrus Berry -Level: 19 -IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe -- Arm Thrust -- Vital Throw -- Reversal -- Bulk Up - -=== TRAINER_WATTSON_1 === -Name: WATTSON -Class: Leader -Pic: Leader Wattson -Gender: Male -Music: Male -Items: Super Potion / Super Potion -Double Battle: No -AI: Basic Trainer - -Voltorb -Level: 20 -IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe -- Rollout -- Spark -- Self Destruct -- Shock Wave - -Electrike -Level: 20 -IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe -- Shock Wave -- Leer -- Quick Attack -- Howl - -Magneton -Level: 22 -IVs: 26 HP / 26 Atk / 26 Def / 26 SpA / 26 SpD / 26 Spe -- Supersonic -- Shock Wave -- Thunder Wave -- Sonic Boom - -Manectric @ Sitrus Berry -Level: 24 -IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe -- Quick Attack -- Thunder Wave -- Shock Wave -- Howl - -=== TRAINER_FLANNERY_1 === -Name: FLANNERY -Class: Leader -Pic: Leader Flannery -Gender: Female -Music: Female -Items: Hyper Potion / Hyper Potion -Double Battle: No -AI: Basic Trainer - -Numel -Level: 24 -IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe -- Overheat -- Take Down -- Magnitude -- Sunny Day - -Slugma -Level: 24 -IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe -- Overheat -- Smog -- Light Screen -- Sunny Day - -Camerupt -Level: 26 -IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe -- Overheat -- Tackle -- Sunny Day -- Attract - -Torkoal @ White Herb -Level: 29 -IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe -- Overheat -- Sunny Day -- Body Slam -- Attract - -=== TRAINER_NORMAN_1 === -Name: NORMAN -Class: Leader -Pic: Leader Norman -Gender: Male -Music: Male -Items: Hyper Potion / Hyper Potion -Double Battle: No -AI: Basic Trainer - -Spinda -Level: 27 -IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe -- Teeter Dance -- Psybeam -- Facade -- Encore - -Vigoroth -Level: 27 -IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe -- Slash -- Facade -- Encore -- Feint Attack - -Linoone -Level: 29 -IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe -- Slash -- Belly Drum -- Facade -- Headbutt - -Slaking @ Sitrus Berry -Level: 31 -IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe -- Counter -- Yawn -- Facade -- Feint Attack - -=== TRAINER_WINONA_1 === -Name: WINONA -Class: Leader -Pic: Leader Winona -Gender: Female -Music: Female -Items: Hyper Potion / Hyper Potion -Double Battle: No -AI: Basic Trainer / Risky - -Swablu -Level: 29 -IVs: 25 HP / 25 Atk / 25 Def / 25 SpA / 25 SpD / 25 Spe -- Perish Song -- Mirror Move -- Safeguard -- Aerial Ace - -Tropius -Level: 29 -IVs: 25 HP / 25 Atk / 25 Def / 25 SpA / 25 SpD / 25 Spe -- Sunny Day -- Aerial Ace -- Solar Beam -- Synthesis - -Pelipper -Level: 30 -IVs: 25 HP / 25 Atk / 25 Def / 25 SpA / 25 SpD / 25 Spe -- Water Gun -- Supersonic -- Protect -- Aerial Ace - -Skarmory -Level: 31 -IVs: 26 HP / 26 Atk / 26 Def / 26 SpA / 26 SpD / 26 Spe -- Sand Attack -- Fury Attack -- Steel Wing -- Aerial Ace - -Altaria @ Oran Berry -Level: 33 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Earthquake -- Dragon Breath -- Dragon Dance -- Aerial Ace - -=== TRAINER_TATE_AND_LIZA_1 === -Name: TATE&LIZA -Class: Leader -Pic: Leader Tate And Liza -Gender: Male -Music: Female -Items: Hyper Potion / Hyper Potion / Hyper Potion / Hyper Potion -Double Battle: Yes -AI: Basic Trainer - -Claydol -Level: 41 -IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe -- Earthquake -- Ancient Power -- Psychic -- Light Screen - -Xatu -Level: 41 -IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe -- Psychic -- Sunny Day -- Confuse Ray -- Calm Mind - -Lunatone @ Sitrus Berry -Level: 42 -IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe -- Light Screen -- Psychic -- Hypnosis -- Calm Mind - -Solrock @ Sitrus Berry -Level: 42 -IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe -- Sunny Day -- Solar Beam -- Psychic -- Flamethrower - -=== TRAINER_JUAN_1 === -Name: JUAN -Class: Leader -Pic: Leader Juan -Gender: Male -Music: Male -Items: Hyper Potion / Hyper Potion -Double Battle: No -AI: Basic Trainer - -Luvdisc -Level: 41 -IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe -- Water Pulse -- Attract -- Sweet Kiss -- Flail - -Whiscash -Level: 41 -IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe -- Rain Dance -- Water Pulse -- Amnesia -- Earthquake - -Sealeo -Level: 43 -IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe -- Encore -- Body Slam -- Aurora Beam -- Water Pulse - -Crawdaunt -Level: 43 -IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe -- Water Pulse -- Crabhammer -- Taunt -- Leer - -Kingdra @ Chesto Berry -Level: 46 -IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe -- Water Pulse -- Double Team -- Ice Beam -- Rest - -=== TRAINER_JERRY_1 === -Name: JERRY -Class: School Kid -Pic: School Kid M -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Ralts -Level: 9 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_TED === -Name: TED -Class: School Kid -Pic: School Kid M -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Ralts -Level: 17 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_PAUL === -Name: PAUL -Class: School Kid -Pic: School Kid M -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Numel -Level: 15 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Oddish -Level: 15 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Wingull -Level: 15 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_JERRY_2 === -Name: JERRY -Class: School Kid -Pic: School Kid M -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Ralts -Level: 26 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Meditite -Level: 26 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_JERRY_3 === -Name: JERRY -Class: School Kid -Pic: School Kid M -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Kirlia -Level: 29 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Meditite -Level: 29 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_JERRY_4 === -Name: JERRY -Class: School Kid -Pic: School Kid M -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Kirlia -Level: 32 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Medicham -Level: 32 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_JERRY_5 === -Name: JERRY -Class: School Kid -Pic: School Kid M -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Kirlia -Level: 34 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -Banette -Level: 34 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -Medicham -Level: 34 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -=== TRAINER_KAREN_1 === -Name: KAREN -Class: School Kid -Pic: School Kid F -Gender: Female -Music: Girl -Double Battle: No -AI: Check Bad Move - -Shroomish -Level: 9 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_GEORGIA === -Name: GEORGIA -Class: School Kid -Pic: School Kid F -Gender: Female -Music: Girl -Double Battle: No -AI: Check Bad Move - -Shroomish -Level: 16 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Beautifly -Level: 16 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_KAREN_2 === -Name: KAREN -Class: School Kid -Pic: School Kid F -Gender: Female -Music: Girl -Double Battle: No -AI: Check Bad Move - -Shroomish -Level: 26 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Whismur -Level: 26 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_KAREN_3 === -Name: KAREN -Class: School Kid -Pic: School Kid F -Gender: Female -Music: Girl -Double Battle: No -AI: Check Bad Move - -Shroomish -Level: 29 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Loudred -Level: 29 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_KAREN_4 === -Name: KAREN -Class: School Kid -Pic: School Kid F -Gender: Female -Music: Girl -Double Battle: No -AI: Check Bad Move - -Breloom -Level: 32 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Loudred -Level: 32 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_KAREN_5 === -Name: KAREN -Class: School Kid -Pic: School Kid F -Gender: Female -Music: Girl -Double Battle: No -AI: Check Bad Move - -Breloom -Level: 35 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -Exploud -Level: 35 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -=== TRAINER_KATE_AND_JOY === -Name: KATE & JOY -Class: Sr And Jr -Pic: Sr And Jr -Gender: Male -Music: Twins -Double Battle: Yes -AI: Check Bad Move - -Spinda -Level: 30 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Hypnosis -- Psybeam -- Dizzy Punch -- Teeter Dance - -Slaking -Level: 32 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Focus Punch -- Yawn -- Slack Off -- Feint Attack - -=== TRAINER_ANNA_AND_MEG_1 === -Name: ANNA & MEG -Class: Sr And Jr -Pic: Sr And Jr -Gender: Male -Music: Twins -Double Battle: Yes -AI: Check Bad Move - -Zigzagoon -Level: 15 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Growl -- Tail Whip -- Headbutt -- Odor Sleuth - -Makuhita -Level: 17 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Tackle -- Focus Energy -- Arm Thrust - -=== TRAINER_ANNA_AND_MEG_2 === -Name: ANNA & MEG -Class: Sr And Jr -Pic: Sr And Jr -Gender: Male -Music: Twins -Double Battle: Yes -AI: Check Bad Move - -Zigzagoon -Level: 28 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe -- Growl -- Tail Whip -- Headbutt -- Odor Sleuth - -Makuhita -Level: 30 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe -- Tackle -- Focus Energy -- Arm Thrust - -=== TRAINER_ANNA_AND_MEG_3 === -Name: ANNA & MEG -Class: Sr And Jr -Pic: Sr And Jr -Gender: Male -Music: Twins -Double Battle: Yes -AI: Check Bad Move - -Zigzagoon -Level: 31 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe -- Growl -- Tail Whip -- Headbutt -- Odor Sleuth - -Makuhita -Level: 33 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe -- Tackle -- Focus Energy -- Arm Thrust - -=== TRAINER_ANNA_AND_MEG_4 === -Name: ANNA & MEG -Class: Sr And Jr -Pic: Sr And Jr -Gender: Male -Music: Twins -Double Battle: Yes -AI: Check Bad Move - -Linoone -Level: 34 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe -- Growl -- Tail Whip -- Headbutt -- Odor Sleuth - -Makuhita -Level: 36 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe -- Tackle -- Focus Energy -- Arm Thrust - -=== TRAINER_ANNA_AND_MEG_5 === -Name: ANNA & MEG -Class: Sr And Jr -Pic: Sr And Jr -Gender: Male -Music: Twins -Double Battle: Yes -AI: Check Bad Move - -Linoone -Level: 36 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe -- Growl -- Tail Whip -- Headbutt -- Odor Sleuth - -Hariyama -Level: 38 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe -- Tackle -- Focus Energy -- Arm Thrust - -=== TRAINER_VICTOR === -Name: VICTOR -Class: Winstrate -Pic: Pokefan M -Gender: Male -Music: Twins -Double Battle: No -AI: Check Bad Move - -Taillow @ Oran Berry -Level: 16 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Zigzagoon @ Oran Berry -Level: 16 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_MIGUEL_1 === -Name: MIGUEL -Class: Pokefan -Pic: Pokefan M -Gender: Male -Music: Twins -Double Battle: No -AI: Check Bad Move - -Skitty @ Oran Berry -Level: 15 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_COLTON === -Name: COLTON -Class: Pokefan -Pic: Pokefan M -Gender: Male -Music: Twins -Double Battle: No -AI: Check Bad Move - -Skitty @ Oran Berry -Level: 22 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Assist -- Charm -- Feint Attack -- Heal Bell - -Skitty @ Oran Berry -Level: 36 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Assist -- Charm -- Feint Attack -- Heal Bell - -Skitty @ Oran Berry -Level: 40 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Assist -- Charm -- Feint Attack -- Heal Bell - -Skitty @ Oran Berry -Level: 12 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Assist -- Charm -- Feint Attack -- Heal Bell - -Skitty @ Oran Berry -Level: 30 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Assist -- Charm -- Feint Attack -- Heal Bell - -Delcatty @ Oran Berry -Level: 42 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Assist -- Charm -- Feint Attack -- Heal Bell - -=== TRAINER_MIGUEL_2 === -Name: MIGUEL -Class: Pokefan -Pic: Pokefan M -Gender: Male -Music: Twins -Double Battle: No -AI: Check Bad Move - -Skitty @ Oran Berry -Level: 29 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_MIGUEL_3 === -Name: MIGUEL -Class: Pokefan -Pic: Pokefan M -Gender: Male -Music: Twins -Double Battle: No -AI: Check Bad Move - -Skitty @ Oran Berry -Level: 32 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_MIGUEL_4 === -Name: MIGUEL -Class: Pokefan -Pic: Pokefan M -Gender: Male -Music: Twins -Double Battle: No -AI: Check Bad Move - -Delcatty @ Oran Berry -Level: 35 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_MIGUEL_5 === -Name: MIGUEL -Class: Pokefan -Pic: Pokefan M -Gender: Male -Music: Twins -Double Battle: No -AI: Check Bad Move - -Delcatty @ Sitrus Berry -Level: 38 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_VICTORIA === -Name: VICTORIA -Class: Winstrate -Pic: Pokefan F -Gender: Female -Music: Twins -Double Battle: No -AI: Check Bad Move / Try To Faint - -Roselia @ Oran Berry -Level: 17 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -=== TRAINER_VANESSA === -Name: VANESSA -Class: Pokefan -Pic: Pokefan F -Gender: Female -Music: Twins -Double Battle: No -AI: Check Bad Move - -Pikachu @ Oran Berry -Level: 30 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_BETHANY === -Name: BETHANY -Class: Pokefan -Pic: Pokefan F -Gender: Female -Music: Twins -Double Battle: No -AI: Check Bad Move - -Azurill @ Oran Berry -Level: 35 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Marill @ Oran Berry -Level: 37 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Azumarill @ Oran Berry -Level: 39 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_ISABEL_1 === -Name: ISABEL -Class: Pokefan -Pic: Pokefan F -Gender: Female -Music: Twins -Double Battle: No -AI: Check Bad Move - -Plusle @ Oran Berry -Level: 14 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Minun @ Oran Berry -Level: 14 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_ISABEL_2 === -Name: ISABEL -Class: Pokefan -Pic: Pokefan F -Gender: Female -Music: Twins -Double Battle: No -AI: Check Bad Move - -Plusle @ Oran Berry -Level: 26 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Minun @ Oran Berry -Level: 26 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_ISABEL_3 === -Name: ISABEL -Class: Pokefan -Pic: Pokefan F -Gender: Female -Music: Twins -Double Battle: No -AI: Check Bad Move - -Plusle @ Oran Berry -Level: 29 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Minun @ Oran Berry -Level: 29 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_ISABEL_4 === -Name: ISABEL -Class: Pokefan -Pic: Pokefan F -Gender: Female -Music: Twins -Double Battle: No -AI: Check Bad Move - -Plusle @ Oran Berry -Level: 32 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Minun @ Oran Berry -Level: 32 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_ISABEL_5 === -Name: ISABEL -Class: Pokefan -Pic: Pokefan F -Gender: Female -Music: Twins -Double Battle: No -AI: Check Bad Move - -Plusle @ Sitrus Berry -Level: 35 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Minun @ Sitrus Berry -Level: 35 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_TIMOTHY_1 === -Name: TIMOTHY -Class: Expert -Pic: Expert M -Gender: Male -Music: Intense -Double Battle: No -AI: Basic Trainer - -Hariyama -Level: 27 -IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe - -=== TRAINER_TIMOTHY_2 === -Name: TIMOTHY -Class: Expert -Pic: Expert M -Gender: Male -Music: Intense -Double Battle: No -AI: Basic Trainer - -Hariyama -Level: 33 -IVs: 25 HP / 25 Atk / 25 Def / 25 SpA / 25 SpD / 25 Spe -- Arm Thrust -- Knock Off -- Sand Attack -- Dig - -=== TRAINER_TIMOTHY_3 === -Name: TIMOTHY -Class: Expert -Pic: Expert M -Gender: Male -Music: Intense -Double Battle: No -AI: Basic Trainer - -Hariyama -Level: 36 -IVs: 26 HP / 26 Atk / 26 Def / 26 SpA / 26 SpD / 26 Spe -- Arm Thrust -- Knock Off -- Sand Attack -- Dig - -=== TRAINER_TIMOTHY_4 === -Name: TIMOTHY -Class: Expert -Pic: Expert M -Gender: Male -Music: Intense -Double Battle: No -AI: Basic Trainer - -Hariyama -Level: 39 -IVs: 27 HP / 27 Atk / 27 Def / 27 SpA / 27 SpD / 27 Spe -- Arm Thrust -- Belly Drum -- Sand Attack -- Dig - -=== TRAINER_TIMOTHY_5 === -Name: TIMOTHY -Class: Expert -Pic: Expert M -Gender: Male -Music: Intense -Double Battle: No -AI: Basic Trainer - -Hariyama -Level: 42 -IVs: 29 HP / 29 Atk / 29 Def / 29 SpA / 29 SpD / 29 Spe -- Arm Thrust -- Belly Drum -- Sand Attack -- Dig - -=== TRAINER_VICKY === -Name: VICKY -Class: Winstrate -Pic: Expert F -Gender: Female -Music: Intense -Double Battle: No -AI: Basic Trainer - -Meditite -Level: 18 -IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe -- High Jump Kick -- Meditate -- Confusion -- Detect - -=== TRAINER_SHELBY_1 === -Name: SHELBY -Class: Expert -Pic: Expert F -Gender: Female -Music: Intense -Double Battle: No -AI: Basic Trainer - -Meditite -Level: 21 -IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe - -Makuhita -Level: 21 -IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe - -=== TRAINER_SHELBY_2 === -Name: SHELBY -Class: Expert -Pic: Expert F -Gender: Female -Music: Intense -Double Battle: No -AI: Basic Trainer - -Meditite -Level: 30 -IVs: 25 HP / 25 Atk / 25 Def / 25 SpA / 25 SpD / 25 Spe - -Makuhita -Level: 30 -IVs: 25 HP / 25 Atk / 25 Def / 25 SpA / 25 SpD / 25 Spe - -=== TRAINER_SHELBY_3 === -Name: SHELBY -Class: Expert -Pic: Expert F -Gender: Female -Music: Intense -Double Battle: No -AI: Basic Trainer - -Medicham -Level: 33 -IVs: 26 HP / 26 Atk / 26 Def / 26 SpA / 26 SpD / 26 Spe - -Hariyama -Level: 33 -IVs: 26 HP / 26 Atk / 26 Def / 26 SpA / 26 SpD / 26 Spe - -=== TRAINER_SHELBY_4 === -Name: SHELBY -Class: Expert -Pic: Expert F -Gender: Female -Music: Intense -Double Battle: No -AI: Basic Trainer - -Medicham -Level: 36 -IVs: 27 HP / 27 Atk / 27 Def / 27 SpA / 27 SpD / 27 Spe - -Hariyama -Level: 36 -IVs: 27 HP / 27 Atk / 27 Def / 27 SpA / 27 SpD / 27 Spe - -=== TRAINER_SHELBY_5 === -Name: SHELBY -Class: Expert -Pic: Expert F -Gender: Female -Music: Intense -Double Battle: No -AI: Basic Trainer - -Medicham -Level: 39 -IVs: 29 HP / 29 Atk / 29 Def / 29 SpA / 29 SpD / 29 Spe - -Hariyama -Level: 39 -IVs: 29 HP / 29 Atk / 29 Def / 29 SpA / 29 SpD / 29 Spe - -=== TRAINER_CALVIN_1 === -Name: CALVIN -Class: Youngster -Pic: Youngster -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Poochyena -Level: 5 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_BILLY === -Name: BILLY -Class: Youngster -Pic: Youngster -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Zigzagoon -Level: 5 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Seedot -Level: 7 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_JOSH === -Name: JOSH -Class: Youngster -Pic: Youngster -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Geodude -Level: 10 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Tackle - -=== TRAINER_TOMMY === -Name: TOMMY -Class: Youngster -Pic: Youngster -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Geodude -Level: 8 -IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe - -Geodude -Level: 8 -IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe - -=== TRAINER_JOEY === -Name: JOEY -Class: Youngster -Pic: Youngster -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Machop -Level: 9 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_BEN === -Name: BEN -Class: Youngster -Pic: Youngster -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Zigzagoon -Level: 17 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe -- Headbutt -- Sand Attack -- Growl -- Thunderbolt - -Gulpin -Level: 17 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe -- Amnesia -- Sludge -- Yawn -- Pound - -=== TRAINER_QUINCY === -Name: QUINCY -Class: Cooltrainer -Pic: Cooltrainer M -Gender: Male -Music: Cool -Items: Full Restore -Double Battle: No -AI: Basic Trainer - -Slaking -Level: 43 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Attract -- Ice Beam -- Thunderbolt -- Flamethrower - -Dusclops -Level: 43 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Skill Swap -- Protect -- Will O Wisp -- Toxic - -=== TRAINER_KATELYNN === -Name: KATELYNN -Class: Cooltrainer -Pic: Cooltrainer F -Gender: Female -Music: Cool -Items: Full Restore -Double Battle: No -AI: Basic Trainer - -Gardevoir -Level: 43 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Skill Swap -- Psychic -- Thunderbolt -- Calm Mind - -Slaking -Level: 43 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Earthquake -- Shadow Ball -- Aerial Ace -- Brick Break - -=== TRAINER_JAYLEN === -Name: JAYLEN -Class: Youngster -Pic: Youngster -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Trapinch -Level: 19 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_DILLON === -Name: DILLON -Class: Youngster -Pic: Youngster -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Aron -Level: 19 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_CALVIN_2 === -Name: CALVIN -Class: Youngster -Pic: Youngster -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Mightyena -Level: 27 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_CALVIN_3 === -Name: CALVIN -Class: Youngster -Pic: Youngster -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Swellow -Level: 28 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Mightyena -Level: 30 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_CALVIN_4 === -Name: CALVIN -Class: Youngster -Pic: Youngster -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Swellow -Level: 31 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Linoone -Level: 29 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Mightyena -Level: 33 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_CALVIN_5 === -Name: CALVIN -Class: Youngster -Pic: Youngster -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Swellow -Level: 34 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Linoone -Level: 32 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Mightyena -Level: 36 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_EDDIE === -Name: EDDIE -Class: Youngster -Pic: Youngster -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Zigzagoon -Level: 14 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Zigzagoon -Level: 16 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_ALLEN === -Name: ALLEN -Class: Youngster -Pic: Youngster -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Zigzagoon -Level: 4 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Taillow -Level: 3 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_TIMMY === -Name: TIMMY -Class: Youngster -Pic: Youngster -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Aron -Level: 15 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Electrike -Level: 13 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_WALLACE === -Name: WALLACE -Class: Champion -Pic: Champion Wallace -Gender: Male -Music: Male -Items: Full Restore / Full Restore / Full Restore / Full Restore -Double Battle: No -AI: Basic Trainer -Mugshot: Yellow - -Wailord -Level: 57 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Rain Dance -- Water Spout -- Double Edge -- Blizzard - -Tentacruel -Level: 55 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Toxic -- Hydro Pump -- Sludge Bomb -- Ice Beam - -Ludicolo -Level: 56 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Giga Drain -- Surf -- Leech Seed -- Double Team - -Whiscash -Level: 56 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Earthquake -- Surf -- Amnesia -- Hyper Beam - -Gyarados -Level: 56 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Dragon Dance -- Earthquake -- Hyper Beam -- Surf - -Milotic @ Sitrus Berry -Level: 58 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Recover -- Surf -- Ice Beam -- Toxic - -=== TRAINER_ANDREW === -Name: ANDREW -Class: Fisherman -Pic: Fisherman -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Magikarp -Level: 5 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Tentacool -Level: 10 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Magikarp -Level: 15 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_IVAN === -Name: IVAN -Class: Fisherman -Pic: Fisherman -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Magikarp -Level: 5 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Magikarp -Level: 6 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Magikarp -Level: 7 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_CLAUDE === -Name: CLAUDE -Class: Fisherman -Pic: Fisherman -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Magikarp -Level: 16 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Goldeen -Level: 17 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Barboach -Level: 18 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_ELLIOT_1 === -Name: ELLIOT -Class: Fisherman -Pic: Fisherman -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Magikarp -Level: 10 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Tentacool -Level: 7 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Magikarp -Level: 10 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_NED === -Name: NED -Class: Fisherman -Pic: Fisherman -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Tentacool -Level: 11 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_DALE === -Name: DALE -Class: Fisherman -Pic: Fisherman -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Tentacool -Level: 11 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Wailmer -Level: 14 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Tentacool -Level: 11 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Wailmer -Level: 14 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_NOLAN === -Name: NOLAN -Class: Fisherman -Pic: Fisherman -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Barboach -Level: 19 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_BARNY === -Name: BARNY -Class: Fisherman -Pic: Fisherman -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Tentacool -Level: 25 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Carvanha -Level: 25 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_WADE === -Name: WADE -Class: Fisherman -Pic: Fisherman -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Tentacool -Level: 16 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_CARTER === -Name: CARTER -Class: Fisherman -Pic: Fisherman -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Wailmer -Level: 25 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Tentacruel -Level: 25 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_ELLIOT_2 === -Name: ELLIOT -Class: Fisherman -Pic: Fisherman -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Tentacool -Level: 24 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Gyarados -Level: 27 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Gyarados -Level: 27 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_ELLIOT_3 === -Name: ELLIOT -Class: Fisherman -Pic: Fisherman -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Gyarados -Level: 29 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Carvanha -Level: 26 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Tentacool -Level: 26 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Gyarados -Level: 29 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_ELLIOT_4 === -Name: ELLIOT -Class: Fisherman -Pic: Fisherman -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Gyarados -Level: 31 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Carvanha -Level: 30 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Tentacruel -Level: 30 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Gyarados -Level: 31 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_ELLIOT_5 === -Name: ELLIOT -Class: Fisherman -Pic: Fisherman -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move / Try To Faint - -Gyarados -Level: 33 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Sharpedo -Level: 33 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Gyarados -Level: 33 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Tentacruel -Level: 35 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_RONALD === -Name: RONALD -Class: Fisherman -Pic: Fisherman -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Magikarp -Level: 19 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Gyarados -Level: 21 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Gyarados -Level: 23 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Gyarados -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Gyarados -Level: 30 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Gyarados -Level: 35 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_JACOB === -Name: JACOB -Class: Triathlete -Pic: Cycling Triathlete M -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Voltorb -Level: 6 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Voltorb -Level: 6 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Magnemite -Level: 14 -IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe - -=== TRAINER_ANTHONY === -Name: ANTHONY -Class: Triathlete -Pic: Cycling Triathlete M -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Magnemite -Level: 14 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Magnemite -Level: 14 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_BENJAMIN_1 === -Name: BENJAMIN -Class: Triathlete -Pic: Cycling Triathlete M -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Magnemite -Level: 16 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_BENJAMIN_2 === -Name: BENJAMIN -Class: Triathlete -Pic: Cycling Triathlete M -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Magnemite -Level: 30 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_BENJAMIN_3 === -Name: BENJAMIN -Class: Triathlete -Pic: Cycling Triathlete M -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Magnemite -Level: 33 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_BENJAMIN_4 === -Name: BENJAMIN -Class: Triathlete -Pic: Cycling Triathlete M -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Magneton -Level: 36 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_BENJAMIN_5 === -Name: BENJAMIN -Class: Triathlete -Pic: Cycling Triathlete M -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Magneton -Level: 39 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_ABIGAIL_1 === -Name: ABIGAIL -Class: Triathlete -Pic: Cycling Triathlete F -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Magnemite -Level: 16 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_JASMINE === -Name: JASMINE -Class: Triathlete -Pic: Cycling Triathlete F -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Magnemite -Level: 14 -IVs: 9 HP / 9 Atk / 9 Def / 9 SpA / 9 SpD / 9 Spe - -Magnemite -Level: 14 -IVs: 9 HP / 9 Atk / 9 Def / 9 SpA / 9 SpD / 9 Spe - -Voltorb -Level: 6 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_ABIGAIL_2 === -Name: ABIGAIL -Class: Triathlete -Pic: Cycling Triathlete F -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Magnemite -Level: 28 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_ABIGAIL_3 === -Name: ABIGAIL -Class: Triathlete -Pic: Cycling Triathlete F -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Magnemite -Level: 31 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_ABIGAIL_4 === -Name: ABIGAIL -Class: Triathlete -Pic: Cycling Triathlete F -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Magneton -Level: 34 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_ABIGAIL_5 === -Name: ABIGAIL -Class: Triathlete -Pic: Cycling Triathlete F -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Magneton -Level: 37 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_DYLAN_1 === -Name: DYLAN -Class: Triathlete -Pic: Running Triathlete M -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Doduo -Level: 17 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_DYLAN_2 === -Name: DYLAN -Class: Triathlete -Pic: Running Triathlete M -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Doduo -Level: 28 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_DYLAN_3 === -Name: DYLAN -Class: Triathlete -Pic: Running Triathlete M -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Doduo -Level: 31 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_DYLAN_4 === -Name: DYLAN -Class: Triathlete -Pic: Running Triathlete M -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Dodrio -Level: 34 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_DYLAN_5 === -Name: DYLAN -Class: Triathlete -Pic: Running Triathlete M -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Dodrio -Level: 37 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_MARIA_1 === -Name: MARIA -Class: Triathlete -Pic: Running Triathlete F -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Doduo -Level: 17 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_MARIA_2 === -Name: MARIA -Class: Triathlete -Pic: Running Triathlete F -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Doduo -Level: 28 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_MARIA_3 === -Name: MARIA -Class: Triathlete -Pic: Running Triathlete F -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Doduo -Level: 31 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_MARIA_4 === -Name: MARIA -Class: Triathlete -Pic: Running Triathlete F -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Dodrio -Level: 34 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_MARIA_5 === -Name: MARIA -Class: Triathlete -Pic: Running Triathlete F -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Dodrio -Level: 37 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_CAMDEN === -Name: CAMDEN -Class: Triathlete -Pic: Swimming Triathlete M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Staryu -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Staryu -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_DEMETRIUS === -Name: DEMETRIUS -Class: Youngster -Pic: Youngster -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Zigzagoon -Level: 25 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Electrike -Level: 25 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_ISAIAH_1 === -Name: ISAIAH -Class: Triathlete -Pic: Swimming Triathlete M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Staryu -Level: 35 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_PABLO_1 === -Name: PABLO -Class: Triathlete -Pic: Swimming Triathlete M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Staryu -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Staryu -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_CHASE === -Name: CHASE -Class: Triathlete -Pic: Swimming Triathlete M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Wingull -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Staryu -Level: 34 -IVs: 9 HP / 9 Atk / 9 Def / 9 SpA / 9 SpD / 9 Spe - -=== TRAINER_ISAIAH_2 === -Name: ISAIAH -Class: Triathlete -Pic: Swimming Triathlete M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Staryu -Level: 39 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_ISAIAH_3 === -Name: ISAIAH -Class: Triathlete -Pic: Swimming Triathlete M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Staryu -Level: 42 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_ISAIAH_4 === -Name: ISAIAH -Class: Triathlete -Pic: Swimming Triathlete M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Starmie -Level: 45 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_ISAIAH_5 === -Name: ISAIAH -Class: Triathlete -Pic: Swimming Triathlete M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Starmie -Level: 48 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_ISOBEL === -Name: ISOBEL -Class: Triathlete -Pic: Swimming Triathlete F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Staryu -Level: 34 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_DONNY === -Name: DONNY -Class: Triathlete -Pic: Swimming Triathlete F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Wingull -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Staryu -Level: 34 -IVs: 19 HP / 19 Atk / 19 Def / 19 SpA / 19 SpD / 19 Spe - -=== TRAINER_TALIA === -Name: TALIA -Class: Triathlete -Pic: Swimming Triathlete F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Staryu -Level: 34 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_KATELYN_1 === -Name: KATELYN -Class: Triathlete -Pic: Swimming Triathlete F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Staryu -Level: 35 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_ALLISON === -Name: ALLISON -Class: Triathlete -Pic: Swimming Triathlete F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Wingull -Level: 27 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Staryu -Level: 33 -IVs: 29 HP / 29 Atk / 29 Def / 29 SpA / 29 SpD / 29 Spe - -=== TRAINER_KATELYN_2 === -Name: KATELYN -Class: Triathlete -Pic: Swimming Triathlete F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Staryu -Level: 39 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_KATELYN_3 === -Name: KATELYN -Class: Triathlete -Pic: Swimming Triathlete F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Staryu -Level: 42 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_KATELYN_4 === -Name: KATELYN -Class: Triathlete -Pic: Swimming Triathlete F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Starmie -Level: 45 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_KATELYN_5 === -Name: KATELYN -Class: Triathlete -Pic: Swimming Triathlete F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Starmie -Level: 48 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_NICOLAS_1 === -Name: NICOLAS -Class: Dragon Tamer -Pic: Dragon Tamer -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Altaria -Level: 37 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Altaria -Level: 37 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_NICOLAS_2 === -Name: NICOLAS -Class: Dragon Tamer -Pic: Dragon Tamer -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Altaria -Level: 41 -IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe - -Altaria -Level: 41 -IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe - -=== TRAINER_NICOLAS_3 === -Name: NICOLAS -Class: Dragon Tamer -Pic: Dragon Tamer -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Altaria -Level: 44 -IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe - -Altaria -Level: 44 -IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe - -=== TRAINER_NICOLAS_4 === -Name: NICOLAS -Class: Dragon Tamer -Pic: Dragon Tamer -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Bagon -Level: 46 -IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe - -Altaria -Level: 46 -IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe - -Altaria -Level: 46 -IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe - -=== TRAINER_NICOLAS_5 === -Name: NICOLAS -Class: Dragon Tamer -Pic: Dragon Tamer -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Altaria -Level: 49 -IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe - -Altaria -Level: 49 -IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe - -Shelgon @ Dragon Fang -Level: 49 -IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe - -=== TRAINER_AARON === -Name: AARON -Class: Dragon Tamer -Pic: Dragon Tamer -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Bagon -Level: 34 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Dragon Breath -- Headbutt -- Focus Energy -- Ember - -=== TRAINER_PERRY === -Name: PERRY -Class: Bird Keeper -Pic: Bird Keeper -Gender: Male -Music: Cool -Double Battle: No -AI: Check Bad Move - -Wingull -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_HUGH === -Name: HUGH -Class: Bird Keeper -Pic: Bird Keeper -Gender: Male -Music: Cool -Double Battle: No -AI: Check Bad Move - -Wingull -Level: 25 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Tropius -Level: 25 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_PHIL === -Name: PHIL -Class: Bird Keeper -Pic: Bird Keeper -Gender: Male -Music: Cool -Double Battle: No -AI: Check Bad Move - -Swellow -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_JARED === -Name: JARED -Class: Bird Keeper -Pic: Bird Keeper -Gender: Male -Music: Cool -Double Battle: No -AI: Check Bad Move - -Doduo -Level: 27 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Skarmory -Level: 27 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Tropius -Level: 27 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_HUMBERTO === -Name: HUMBERTO -Class: Bird Keeper -Pic: Bird Keeper -Gender: Male -Music: Cool -Double Battle: No -AI: Check Bad Move - -Skarmory -Level: 30 -IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe - -=== TRAINER_PRESLEY === -Name: PRESLEY -Class: Bird Keeper -Pic: Bird Keeper -Gender: Male -Music: Cool -Double Battle: No -AI: Check Bad Move - -Tropius -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Xatu -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_EDWARDO === -Name: EDWARDO -Class: Bird Keeper -Pic: Bird Keeper -Gender: Male -Music: Cool -Double Battle: No -AI: Check Bad Move - -Doduo -Level: 29 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -Pelipper -Level: 29 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -=== TRAINER_COLIN === -Name: COLIN -Class: Bird Keeper -Pic: Bird Keeper -Gender: Male -Music: Cool -Double Battle: No -AI: Check Bad Move - -Wingull -Level: 28 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Natu -Level: 28 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_ROBERT_1 === -Name: ROBERT -Class: Bird Keeper -Pic: Bird Keeper -Gender: Male -Music: Cool -Double Battle: No -AI: Check Bad Move - -Swablu -Level: 29 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_BENNY === -Name: BENNY -Class: Bird Keeper -Pic: Bird Keeper -Gender: Male -Music: Cool -Double Battle: No -AI: Check Bad Move - -Swellow -Level: 36 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Pelipper -Level: 36 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Xatu -Level: 36 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_CHESTER === -Name: CHESTER -Class: Bird Keeper -Pic: Bird Keeper -Gender: Male -Music: Cool -Double Battle: No -AI: Check Bad Move - -Taillow -Level: 25 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Swellow -Level: 25 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_ROBERT_2 === -Name: ROBERT -Class: Bird Keeper -Pic: Bird Keeper -Gender: Male -Music: Cool -Double Battle: No -AI: Check Bad Move - -Natu -Level: 32 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Swablu -Level: 32 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_ROBERT_3 === -Name: ROBERT -Class: Bird Keeper -Pic: Bird Keeper -Gender: Male -Music: Cool -Double Battle: No -AI: Check Bad Move - -Natu -Level: 35 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Altaria -Level: 35 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_ROBERT_4 === -Name: ROBERT -Class: Bird Keeper -Pic: Bird Keeper -Gender: Male -Music: Cool -Double Battle: No -AI: Check Bad Move - -Natu -Level: 38 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Altaria -Level: 38 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_ROBERT_5 === -Name: ROBERT -Class: Bird Keeper -Pic: Bird Keeper -Gender: Male -Music: Cool -Double Battle: No -AI: Check Bad Move - -Altaria -Level: 41 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Xatu -Level: 41 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_ALEX === -Name: ALEX -Class: Bird Keeper -Pic: Bird Keeper -Gender: Male -Music: Cool -Double Battle: No -AI: Check Bad Move - -Natu -Level: 33 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -Swellow -Level: 33 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -=== TRAINER_BECK === -Name: BECK -Class: Bird Keeper -Pic: Bird Keeper -Gender: Male -Music: Cool -Double Battle: No -AI: Check Bad Move - -Tropius -Level: 34 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_YASU === -Name: YASU -Class: Ninja Boy -Pic: Ninja Boy -Gender: Male -Music: Suspicious -Double Battle: No -AI: Check Bad Move / Try To Faint - -Ninjask -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_TAKASHI === -Name: TAKASHI -Class: Ninja Boy -Pic: Ninja Boy -Gender: Male -Music: Suspicious -Double Battle: No -AI: Check Bad Move / Try To Faint - -Ninjask -Level: 25 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Koffing -Level: 25 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_DIANNE === -Name: DIANNE -Class: Cooltrainer -Pic: Cooltrainer F -Gender: Female -Music: Cool -Items: Full Restore -Double Battle: No - -Claydol -Level: 43 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Skill Swap -- Earthquake - -Lanturn -Level: 43 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Thunderbolt -- Earthquake - -=== TRAINER_JANI === -Name: JANI -Class: Tuber F -Pic: Tuber F -Gender: Female -Music: Girl -Double Battle: No - -Marill -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_LAO_1 === -Name: LAO -Class: Ninja Boy -Pic: Ninja Boy -Gender: Male -Music: Suspicious -Double Battle: No - -Koffing -Level: 17 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Poison Gas -- Tackle -- Smog -- Self Destruct - -Koffing -Level: 17 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Poison Gas -- Tackle -- Smog -- Self Destruct - -Koffing -Level: 17 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Poison Gas -- Tackle -- Sludge -- Self Destruct - -=== TRAINER_LUNG === -Name: LUNG -Class: Ninja Boy -Pic: Ninja Boy -Gender: Male -Music: Suspicious -Double Battle: No - -Koffing -Level: 18 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Ninjask -Level: 18 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_LAO_2 === -Name: LAO -Class: Ninja Boy -Pic: Ninja Boy -Gender: Male -Music: Suspicious -Double Battle: No - -Koffing -Level: 24 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Poison Gas -- Tackle -- Sludge -- Self Destruct - -Koffing -Level: 24 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Poison Gas -- Tackle -- Sludge - -Koffing -Level: 24 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Poison Gas -- Tackle -- Sludge -- Self Destruct - -Koffing -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Tackle -- Sludge - -=== TRAINER_LAO_3 === -Name: LAO -Class: Ninja Boy -Pic: Ninja Boy -Gender: Male -Music: Suspicious -Double Battle: No - -Koffing -Level: 27 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe -- Poison Gas -- Tackle -- Sludge -- Self Destruct - -Koffing -Level: 27 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe -- Poison Gas -- Tackle -- Sludge -- Self Destruct - -Koffing -Level: 27 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe -- Poison Gas -- Tackle -- Sludge - -Koffing -Level: 29 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe -- Tackle -- Sludge - -=== TRAINER_LAO_4 === -Name: LAO -Class: Ninja Boy -Pic: Ninja Boy -Gender: Male -Music: Suspicious -Double Battle: No - -Koffing -Level: 30 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe -- Poison Gas -- Tackle -- Sludge - -Koffing -Level: 30 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe -- Poison Gas -- Tackle -- Sludge - -Koffing -Level: 30 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe -- Poison Gas -- Tackle -- Sludge - -Koffing -Level: 32 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe -- Tackle -- Sludge - -=== TRAINER_LAO_5 === -Name: LAO -Class: Ninja Boy -Pic: Ninja Boy -Gender: Male -Music: Suspicious -Double Battle: No - -Koffing -Level: 33 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe -- Poison Gas -- Tackle -- Sludge - -Koffing -Level: 33 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe -- Poison Gas -- Tackle -- Sludge -- Self Destruct - -Koffing -Level: 33 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe -- Poison Gas -- Tackle -- Sludge -- Self Destruct - -Weezing @ Smoke Ball -Level: 35 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe -- Tackle -- Sludge - -=== TRAINER_JOCELYN === -Name: JOCELYN -Class: Battle Girl -Pic: Battle Girl -Gender: Female -Music: Intense -Double Battle: No -AI: Check Bad Move - -Meditite -Level: 13 -IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe - -=== TRAINER_LAURA === -Name: LAURA -Class: Battle Girl -Pic: Battle Girl -Gender: Female -Music: Intense -Double Battle: No -AI: Check Bad Move - -Meditite -Level: 13 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -=== TRAINER_CYNDY_1 === -Name: CYNDY -Class: Battle Girl -Pic: Battle Girl -Gender: Female -Music: Intense -Double Battle: No -AI: Check Bad Move - -Meditite -Level: 18 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Makuhita -Level: 18 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_CORA === -Name: CORA -Class: Battle Girl -Pic: Battle Girl -Gender: Female -Music: Intense -Double Battle: No -AI: Check Bad Move - -Meditite -Level: 27 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_PAULA === -Name: PAULA -Class: Battle Girl -Pic: Battle Girl -Gender: Female -Music: Intense -Double Battle: No -AI: Check Bad Move - -Breloom -Level: 27 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_CYNDY_2 === -Name: CYNDY -Class: Battle Girl -Pic: Battle Girl -Gender: Female -Music: Intense -Double Battle: No -AI: Check Bad Move - -Meditite -Level: 26 -IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe - -Makuhita -Level: 26 -IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe - -=== TRAINER_CYNDY_3 === -Name: CYNDY -Class: Battle Girl -Pic: Battle Girl -Gender: Female -Music: Intense -Double Battle: No -AI: Check Bad Move - -Meditite -Level: 29 -IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe - -Makuhita -Level: 29 -IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe - -=== TRAINER_CYNDY_4 === -Name: CYNDY -Class: Battle Girl -Pic: Battle Girl -Gender: Female -Music: Intense -Double Battle: No -AI: Check Bad Move - -Medicham -Level: 32 -IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe - -Hariyama -Level: 32 -IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe - -=== TRAINER_CYNDY_5 === -Name: CYNDY -Class: Battle Girl -Pic: Battle Girl -Gender: Female -Music: Intense -Double Battle: No -AI: Check Bad Move - -Medicham -Level: 35 -IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe - -Hariyama -Level: 35 -IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe - -=== TRAINER_MADELINE_1 === -Name: MADELINE -Class: Parasol Lady -Pic: Parasol Lady -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Numel -Level: 19 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Ember -- Tackle -- Magnitude -- Sunny Day - -=== TRAINER_CLARISSA === -Name: CLARISSA -Class: Parasol Lady -Pic: Parasol Lady -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Roselia -Level: 28 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Wailmer -Level: 28 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_ANGELICA === -Name: ANGELICA -Class: Parasol Lady -Pic: Parasol Lady -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Castform -Level: 30 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe -- Rain Dance -- Weather Ball -- Thunder -- Water Pulse - -=== TRAINER_MADELINE_2 === -Name: MADELINE -Class: Parasol Lady -Pic: Parasol Lady -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Numel -Level: 29 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe -- Ember -- Tackle -- Magnitude -- Sunny Day - -=== TRAINER_MADELINE_3 === -Name: MADELINE -Class: Parasol Lady -Pic: Parasol Lady -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Numel -Level: 32 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe -- Ember -- Take Down -- Magnitude -- Sunny Day - -=== TRAINER_MADELINE_4 === -Name: MADELINE -Class: Parasol Lady -Pic: Parasol Lady -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Roselia -Level: 34 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe -- Leech Seed -- Mega Drain -- Grass Whistle -- Sunny Day - -Numel -Level: 34 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe -- Flamethrower -- Take Down -- Magnitude -- Sunny Day - -=== TRAINER_MADELINE_5 === -Name: MADELINE -Class: Parasol Lady -Pic: Parasol Lady -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Roselia -Level: 37 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe -- Leech Seed -- Giga Drain -- Solar Beam -- Sunny Day - -Camerupt -Level: 37 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe -- Flamethrower -- Take Down -- Earthquake -- Sunny Day - -=== TRAINER_BEVERLY === -Name: BEVERLY -Class: Swimmer F -Pic: Swimmer F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Wingull -Level: 25 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Wailmer -Level: 25 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_IMANI === -Name: IMANI -Class: Swimmer F -Pic: Swimmer F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Marill -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_KYLA === -Name: KYLA -Class: Swimmer F -Pic: Swimmer F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Wailmer -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_DENISE === -Name: DENISE -Class: Swimmer F -Pic: Swimmer F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Wingull -Level: 25 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Goldeen -Level: 25 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_BETH === -Name: BETH -Class: Swimmer F -Pic: Swimmer F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Goldeen -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_TARA === -Name: TARA -Class: Swimmer F -Pic: Swimmer F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Horsea -Level: 25 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Marill -Level: 25 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_MISSY === -Name: MISSY -Class: Swimmer F -Pic: Swimmer F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Goldeen -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_ALICE === -Name: ALICE -Class: Swimmer F -Pic: Swimmer F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Goldeen -Level: 24 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Wingull -Level: 24 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Goldeen -Level: 24 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_JENNY_1 === -Name: JENNY -Class: Swimmer F -Pic: Swimmer F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Wailmer -Level: 34 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRACE === -Name: GRACE -Class: Swimmer F -Pic: Swimmer F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Marill -Level: 34 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_TANYA === -Name: TANYA -Class: Swimmer F -Pic: Swimmer F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Luvdisc -Level: 34 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_SHARON === -Name: SHARON -Class: Swimmer F -Pic: Swimmer F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Seaking -Level: 34 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_NIKKI === -Name: NIKKI -Class: Swimmer F -Pic: Swimmer F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Marill -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Spheal -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_BRENDA === -Name: BRENDA -Class: Swimmer F -Pic: Swimmer F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Goldeen -Level: 34 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_KATIE === -Name: KATIE -Class: Swimmer F -Pic: Swimmer F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Goldeen -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Spheal -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_SUSIE === -Name: SUSIE -Class: Swimmer F -Pic: Swimmer F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Luvdisc -Level: 34 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_KARA === -Name: KARA -Class: Swimmer F -Pic: Swimmer F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Seaking -Level: 34 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_DANA === -Name: DANA -Class: Swimmer F -Pic: Swimmer F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Azumarill -Level: 34 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_SIENNA === -Name: SIENNA -Class: Swimmer F -Pic: Swimmer F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Luvdisc -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Luvdisc -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_DEBRA === -Name: DEBRA -Class: Swimmer F -Pic: Swimmer F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Seaking -Level: 34 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_LINDA === -Name: LINDA -Class: Swimmer F -Pic: Swimmer F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Horsea -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Seadra -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_KAYLEE === -Name: KAYLEE -Class: Swimmer F -Pic: Swimmer F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Lanturn -Level: 34 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Pelipper -Level: 34 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_LAUREL === -Name: LAUREL -Class: Swimmer F -Pic: Swimmer F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Luvdisc -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Luvdisc -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_CARLEE === -Name: CARLEE -Class: Swimmer F -Pic: Swimmer F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Seaking -Level: 35 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_JENNY_2 === -Name: JENNY -Class: Swimmer F -Pic: Swimmer F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Wailmer -Level: 38 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_JENNY_3 === -Name: JENNY -Class: Swimmer F -Pic: Swimmer F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Wailmer -Level: 41 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_JENNY_4 === -Name: JENNY -Class: Swimmer F -Pic: Swimmer F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Staryu -Level: 43 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Wailmer -Level: 43 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_JENNY_5 === -Name: JENNY -Class: Swimmer F -Pic: Swimmer F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Luvdisc -Level: 45 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Wailmer -Level: 45 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Starmie -Level: 45 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_HEIDI === -Name: HEIDI -Class: Picnicker -Pic: Picnicker -Gender: Female -Music: Girl -Double Battle: No -AI: Check Bad Move - -Sandshrew -Level: 22 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Dig -- Sand Attack -- Poison Sting -- Slash - -Baltoy -Level: 22 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Rapid Spin -- Mud Slap -- Psybeam -- Rock Tomb - -=== TRAINER_BECKY === -Name: BECKY -Class: Picnicker -Pic: Picnicker -Gender: Female -Music: Girl -Double Battle: No -AI: Check Bad Move - -Sandshrew -Level: 22 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Sand Attack -- Poison Sting -- Slash -- Dig - -Marill -Level: 22 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Rollout -- Bubble Beam -- Tail Whip -- Defense Curl - -=== TRAINER_CAROL === -Name: CAROL -Class: Picnicker -Pic: Picnicker -Gender: Female -Music: Girl -Double Battle: No -AI: Check Bad Move - -Taillow -Level: 17 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Lombre -Level: 17 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_NANCY === -Name: NANCY -Class: Picnicker -Pic: Picnicker -Gender: Female -Music: Girl -Double Battle: No -AI: Check Bad Move - -Marill -Level: 18 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Lombre -Level: 18 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_MARTHA === -Name: MARTHA -Class: Picnicker -Pic: Picnicker -Gender: Female -Music: Girl -Double Battle: No -AI: Check Bad Move - -Skitty -Level: 23 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Swablu -Level: 23 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_DIANA_1 === -Name: DIANA -Class: Picnicker -Pic: Picnicker -Gender: Female -Music: Girl -Double Battle: No -AI: Check Bad Move - -Shroomish -Level: 19 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Oddish -Level: 19 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Swablu -Level: 19 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_CEDRIC === -Name: CEDRIC -Class: Psychic -Pic: Psychic M -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Wobbuffet -Level: 32 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Destiny Bond -- Safeguard -- Counter -- Mirror Coat - -=== TRAINER_IRENE === -Name: IRENE -Class: Picnicker -Pic: Picnicker -Gender: Female -Music: Girl -Double Battle: No -AI: Check Bad Move - -Shroomish -Level: 17 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Marill -Level: 17 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_DIANA_2 === -Name: DIANA -Class: Picnicker -Pic: Picnicker -Gender: Female -Music: Girl -Double Battle: No -AI: Check Bad Move - -Shroomish -Level: 25 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Gloom -Level: 25 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Swablu -Level: 25 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_DIANA_3 === -Name: DIANA -Class: Picnicker -Pic: Picnicker -Gender: Female -Music: Girl -Double Battle: No -AI: Check Bad Move - -Breloom -Level: 28 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Gloom -Level: 28 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Swablu -Level: 28 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_DIANA_4 === -Name: DIANA -Class: Picnicker -Pic: Picnicker -Gender: Female -Music: Girl -Double Battle: No -AI: Check Bad Move - -Breloom -Level: 31 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Gloom -Level: 31 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Swablu -Level: 31 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_DIANA_5 === -Name: DIANA -Class: Picnicker -Pic: Picnicker -Gender: Female -Music: Girl -Double Battle: No -AI: Check Bad Move - -Breloom -Level: 40 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Vileplume -Level: 40 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Altaria -Level: 40 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_AMY_AND_LIV_1 === -Name: AMY & LIV -Class: Twins -Pic: Twins -Gender: Male -Music: Twins -Double Battle: Yes -AI: Check Bad Move - -Plusle -Level: 15 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Minun -Level: 15 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_AMY_AND_LIV_2 === -Name: AMY & LIV -Class: Twins -Pic: Twins -Gender: Male -Music: Twins -Double Battle: Yes -AI: Check Bad Move - -Plusle -Level: 27 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Minun -Level: 27 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_GINA_AND_MIA_1 === -Name: GINA & MIA -Class: Twins -Pic: Twins -Gender: Male -Music: Twins -Double Battle: Yes -AI: Check Bad Move - -Seedot -Level: 6 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Lotad -Level: 6 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_MIU_AND_YUKI === -Name: MIU & YUKI -Class: Twins -Pic: Twins -Gender: Male -Music: Twins -Double Battle: Yes -AI: Check Bad Move - -Beautifly -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Dustox -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_AMY_AND_LIV_3 === -Name: AMY & LIV -Class: Twins -Pic: Twins -Gender: Male -Music: Twins -Double Battle: Yes -AI: Check Bad Move - -Plusle -Level: 9 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Minun -Level: 9 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GINA_AND_MIA_2 === -Name: GINA & MIA -Class: Twins -Pic: Twins -Gender: Male -Music: Twins -Double Battle: Yes -AI: Check Bad Move - -Duskull -Level: 10 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Night Shade -- Disable - -Shroomish -Level: 10 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Absorb -- Leech Seed - -=== TRAINER_AMY_AND_LIV_4 === -Name: AMY & LIV -Class: Twins -Pic: Twins -Gender: Male -Music: Twins -Double Battle: Yes -AI: Check Bad Move - -Plusle -Level: 30 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Minun -Level: 30 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_AMY_AND_LIV_5 === -Name: AMY & LIV -Class: Twins -Pic: Twins -Gender: Male -Music: Twins -Double Battle: Yes -AI: Check Bad Move - -Plusle -Level: 33 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe -- Spark -- Charge -- Fake Tears -- Helping Hand - -Minun -Level: 33 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe -- Spark -- Charge -- Charm -- Helping Hand - -=== TRAINER_AMY_AND_LIV_6 === -Name: AMY & LIV -Class: Twins -Pic: Twins -Gender: Male -Music: Twins -Double Battle: Yes -AI: Check Bad Move - -Plusle -Level: 36 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe -- Thunder -- Charge -- Fake Tears -- Helping Hand - -Minun -Level: 36 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe -- Thunder -- Charge -- Charm -- Helping Hand - -=== TRAINER_HUEY === -Name: HUEY -Class: Sailor -Pic: Sailor -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Wingull -Level: 12 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Machop -Level: 12 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_EDMOND === -Name: EDMOND -Class: Sailor -Pic: Sailor -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Wingull -Level: 13 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_ERNEST_1 === -Name: ERNEST -Class: Sailor -Pic: Sailor -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Wingull -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Machoke -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_DWAYNE === -Name: DWAYNE -Class: Sailor -Pic: Sailor -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Wingull -Level: 11 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Machop -Level: 11 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Tentacool -Level: 11 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_PHILLIP === -Name: PHILLIP -Class: Sailor -Pic: Sailor -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Tentacruel -Level: 44 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Machoke -Level: 44 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_LEONARD === -Name: LEONARD -Class: Sailor -Pic: Sailor -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Machop -Level: 43 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Pelipper -Level: 43 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Machoke -Level: 43 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_DUNCAN === -Name: DUNCAN -Class: Sailor -Pic: Sailor -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Spheal -Level: 25 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Machoke -Level: 25 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_ERNEST_2 === -Name: ERNEST -Class: Sailor -Pic: Sailor -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Wingull -Level: 36 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Tentacool -Level: 36 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Machoke -Level: 36 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_ERNEST_3 === -Name: ERNEST -Class: Sailor -Pic: Sailor -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Pelipper -Level: 39 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Tentacool -Level: 39 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Machoke -Level: 39 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_ERNEST_4 === -Name: ERNEST -Class: Sailor -Pic: Sailor -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Pelipper -Level: 42 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Tentacool -Level: 42 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Machoke -Level: 42 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_ERNEST_5 === -Name: ERNEST -Class: Sailor -Pic: Sailor -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Pelipper -Level: 45 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Machoke -Level: 45 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Tentacruel -Level: 45 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_ELI === -Name: ELI -Class: Hiker -Pic: Hiker -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Numel -Level: 23 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_ANNIKA === -Name: ANNIKA -Class: Pokefan -Pic: Pokefan F -Gender: Female -Music: Twins -Double Battle: No -AI: Check Bad Move - -Feebas @ Oran Berry -Level: 39 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Flail -- Water Pulse -- Return -- Attract - -Feebas @ Oran Berry -Level: 39 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Flail -- Water Pulse -- Return -- Attract - -=== TRAINER_JAZMYN === -Name: JAZMYN -Class: Cooltrainer 2 -Pic: Cooltrainer F -Gender: Female -Music: Cool -Items: Hyper Potion -Double Battle: No -AI: Basic Trainer - -Absol -Level: 27 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_JONAS === -Name: JONAS -Class: Ninja Boy -Pic: Ninja Boy -Gender: Male -Music: Suspicious -Double Battle: No -AI: Basic Trainer - -Koffing -Level: 31 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Toxic -- Thunder -- Self Destruct -- Sludge Bomb - -=== TRAINER_KAYLEY === -Name: KAYLEY -Class: Parasol Lady -Pic: Parasol Lady -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Castform -Level: 31 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Sunny Day -- Weather Ball -- Flamethrower -- Solar Beam - -=== TRAINER_AURON === -Name: AURON -Class: Expert -Pic: Expert M -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Manectric -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Machamp -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_KELVIN === -Name: KELVIN -Class: Sailor -Pic: Sailor -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Machoke -Level: 33 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -Spheal -Level: 33 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -=== TRAINER_MARLEY === -Name: MARLEY -Class: Cooltrainer -Pic: Cooltrainer F -Gender: Female -Music: Cool -Items: Hyper Potion -Double Battle: No -AI: Basic Trainer - -Manectric -Level: 34 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Bite -- Roar -- Thunder Wave -- Thunderbolt - -=== TRAINER_REYNA === -Name: REYNA -Class: Battle Girl -Pic: Battle Girl -Gender: Female -Music: Intense -Double Battle: No -AI: Check Bad Move - -Meditite -Level: 33 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -Hariyama -Level: 33 -IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe - -=== TRAINER_HUDSON === -Name: HUDSON -Class: Sailor -Pic: Sailor -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Wailmer -Level: 34 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_CONOR === -Name: CONOR -Class: Expert -Pic: Expert M -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Chinchou -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Hariyama -Level: 33 -IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe - -=== TRAINER_EDWIN_1 === -Name: EDWIN -Class: Collector -Pic: Collector -Gender: Male -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Lombre -Level: 14 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Nuzleaf -Level: 14 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_HECTOR === -Name: HECTOR -Class: Collector -Pic: Collector -Gender: Male -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Zangoose -Level: 18 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Seviper -Level: 18 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_TABITHA_MOSSDEEP === -Name: TABITHA -Class: Magma Admin -Pic: Magma Admin -Gender: Male -Music: Magma -Double Battle: No -AI: Check Bad Move - -Camerupt -Level: 36 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Mightyena -Level: 38 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Golbat -Level: 40 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_EDWIN_2 === -Name: EDWIN -Class: Collector -Pic: Collector -Gender: Male -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Lombre -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Nuzleaf -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_EDWIN_3 === -Name: EDWIN -Class: Collector -Pic: Collector -Gender: Male -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Lombre -Level: 29 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Nuzleaf -Level: 29 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_EDWIN_4 === -Name: EDWIN -Class: Collector -Pic: Collector -Gender: Male -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Lombre -Level: 32 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Nuzleaf -Level: 32 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_EDWIN_5 === -Name: EDWIN -Class: Collector -Pic: Collector -Gender: Male -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Ludicolo -Level: 35 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Shiftry -Level: 35 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_WALLY_VR_1 === -Name: WALLY -Class: Rival -Pic: Wally -Gender: Male -Music: Male -Items: Full Restore / Full Restore -Double Battle: No -AI: Basic Trainer - -Altaria -Level: 44 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe -- Aerial Ace -- Safeguard -- Dragon Breath -- Dragon Dance - -Delcatty -Level: 43 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe -- Sing -- Assist -- Charm -- Feint Attack - -Roselia -Level: 44 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe -- Magical Leaf -- Leech Seed -- Giga Drain -- Toxic - -Magneton -Level: 41 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe -- Supersonic -- Thunderbolt -- Tri Attack -- Screech - -Gardevoir -Level: 45 -IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe -- Double Team -- Calm Mind -- Psychic -- Future Sight - -=== TRAINER_BRENDAN_ROUTE_103_MUDKIP === -Name: BRENDAN -Class: Rival -Pic: Brendan -Gender: Male -Music: Male -Double Battle: No -AI: Basic Trainer - -Treecko -Level: 5 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_BRENDAN_ROUTE_110_MUDKIP === -Name: BRENDAN -Class: Rival -Pic: Brendan -Gender: Male -Music: Male -Double Battle: No -AI: Basic Trainer - -Slugma -Level: 18 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -Wingull -Level: 18 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -Grovyle -Level: 20 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_BRENDAN_ROUTE_119_MUDKIP === -Name: BRENDAN -Class: Rival -Pic: Brendan -Gender: Male -Music: Male -Double Battle: No -AI: Basic Trainer - -Slugma -Level: 29 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Pelipper -Level: 29 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Grovyle -Level: 31 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -=== TRAINER_BRENDAN_ROUTE_103_TREECKO === -Name: BRENDAN -Class: Rival -Pic: Brendan -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move / Try To Faint / Force Setup First Turn - -Torchic -Level: 5 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_BRENDAN_ROUTE_110_TREECKO === -Name: BRENDAN -Class: Rival -Pic: Brendan -Gender: Male -Music: Male -Double Battle: No -AI: Basic Trainer - -Wingull -Level: 18 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -Lombre -Level: 18 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -Combusken -Level: 20 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_BRENDAN_ROUTE_119_TREECKO === -Name: BRENDAN -Class: Rival -Pic: Brendan -Gender: Male -Music: Male -Double Battle: No -AI: Basic Trainer - -Pelipper -Level: 29 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Lombre -Level: 29 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Combusken -Level: 31 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -=== TRAINER_BRENDAN_ROUTE_103_TORCHIC === -Name: BRENDAN -Class: Rival -Pic: Brendan -Gender: Male -Music: Male -Double Battle: No -AI: Basic Trainer - -Mudkip -Level: 5 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_BRENDAN_ROUTE_110_TORCHIC === -Name: BRENDAN -Class: Rival -Pic: Brendan -Gender: Male -Music: Male -Double Battle: No -AI: Basic Trainer - -Lombre -Level: 18 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -Slugma -Level: 18 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -Marshtomp -Level: 20 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_BRENDAN_ROUTE_119_TORCHIC === -Name: BRENDAN -Class: Rival -Pic: Brendan -Gender: Male -Music: Male -Double Battle: No -AI: Basic Trainer - -Lombre -Level: 29 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Slugma -Level: 29 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Marshtomp -Level: 31 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -=== TRAINER_MAY_ROUTE_103_MUDKIP === -Name: MAY -Class: Rival -Pic: May -Gender: Female -Music: Female -Double Battle: No -AI: Basic Trainer - -Treecko -Level: 5 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_MAY_ROUTE_110_MUDKIP === -Name: MAY -Class: Rival -Pic: May -Gender: Female -Music: Female -Double Battle: No -AI: Basic Trainer - -Wingull -Level: 18 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -Slugma -Level: 18 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -Grovyle -Level: 20 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_MAY_ROUTE_119_MUDKIP === -Name: MAY -Class: Rival -Pic: May -Gender: Female -Music: Female -Double Battle: No -AI: Basic Trainer - -Slugma -Level: 29 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Lombre -Level: 29 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Grovyle -Level: 31 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -=== TRAINER_MAY_ROUTE_103_TREECKO === -Name: MAY -Class: Rival -Pic: May -Gender: Female -Music: Female -Double Battle: No -AI: Basic Trainer - -Torchic -Level: 5 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_MAY_ROUTE_110_TREECKO === -Name: MAY -Class: Rival -Pic: May -Gender: Female -Music: Female -Double Battle: No -AI: Basic Trainer - -Wingull -Level: 18 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -Lombre -Level: 18 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -Combusken -Level: 20 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_MAY_ROUTE_119_TREECKO === -Name: MAY -Class: Rival -Pic: May -Gender: Female -Music: Female -Double Battle: No -AI: Basic Trainer - -Pelipper -Level: 29 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Lombre -Level: 29 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Combusken -Level: 31 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -=== TRAINER_MAY_ROUTE_103_TORCHIC === -Name: MAY -Class: Rival -Pic: May -Gender: Female -Music: Female -Double Battle: No -AI: Basic Trainer - -Mudkip -Level: 5 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_MAY_ROUTE_110_TORCHIC === -Name: MAY -Class: Rival -Pic: May -Gender: Female -Music: Female -Double Battle: No -AI: Basic Trainer - -Lombre -Level: 18 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -Slugma -Level: 18 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -Marshtomp -Level: 20 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_MAY_ROUTE_119_TORCHIC === -Name: MAY -Class: Rival -Pic: May -Gender: Female -Music: Female -Double Battle: No -AI: Basic Trainer - -Lombre -Level: 29 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Slugma -Level: 29 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Marshtomp -Level: 31 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -=== TRAINER_ISAAC_1 === -Name: ISAAC -Class: Pkmn Breeder -Pic: Pokemon Breeder M -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Whismur -Level: 11 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Zigzagoon -Level: 11 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Aron -Level: 11 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Poochyena -Level: 11 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Taillow -Level: 11 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Makuhita -Level: 11 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_DAVIS === -Name: DAVIS -Class: Bug Catcher -Pic: Bug Catcher -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Pinsir -Level: 27 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_MITCHELL === -Name: MITCHELL -Class: Cooltrainer -Pic: Cooltrainer M -Gender: Male -Music: Cool -Double Battle: No -AI: Basic Trainer - -Lunatone -Level: 43 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Explosion -- Reflect -- Light Screen -- Psychic - -Solrock -Level: 43 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Explosion -- Reflect -- Light Screen -- Shadow Ball - -=== TRAINER_ISAAC_2 === -Name: ISAAC -Class: Pkmn Breeder -Pic: Pokemon Breeder M -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Loudred -Level: 22 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Linoone -Level: 22 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Aron -Level: 22 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Mightyena -Level: 22 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Swellow -Level: 22 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Makuhita -Level: 22 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_ISAAC_3 === -Name: ISAAC -Class: Pkmn Breeder -Pic: Pokemon Breeder M -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Loudred -Level: 25 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Linoone -Level: 25 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Aron -Level: 25 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Mightyena -Level: 25 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Swellow -Level: 25 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Hariyama -Level: 25 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_ISAAC_4 === -Name: ISAAC -Class: Pkmn Breeder -Pic: Pokemon Breeder M -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Loudred -Level: 28 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Linoone -Level: 28 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Aron -Level: 28 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Mightyena -Level: 28 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Swellow -Level: 28 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Hariyama -Level: 28 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_ISAAC_5 === -Name: ISAAC -Class: Pkmn Breeder -Pic: Pokemon Breeder M -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Loudred -Level: 31 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Linoone -Level: 31 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Lairon -Level: 31 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Mightyena -Level: 31 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Swellow -Level: 31 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Hariyama -Level: 31 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_LYDIA_1 === -Name: LYDIA -Class: Pkmn Breeder -Pic: Pokemon Breeder F -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Wingull -Level: 11 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Shroomish -Level: 11 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Marill -Level: 11 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Roselia -Level: 11 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Skitty -Level: 11 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Goldeen -Level: 11 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_HALLE === -Name: HALLE -Class: Cooltrainer -Pic: Cooltrainer F -Gender: Female -Music: Cool -Items: Full Restore -Double Battle: No -AI: Basic Trainer - -Sableye -Level: 43 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Absol -Level: 43 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GARRISON === -Name: GARRISON -Class: Ruin Maniac -Pic: Ruin Maniac -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Sandslash -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_LYDIA_2 === -Name: LYDIA -Class: Pkmn Breeder -Pic: Pokemon Breeder F -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Wingull -Level: 22 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Shroomish -Level: 22 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Marill -Level: 22 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Roselia -Level: 22 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Skitty -Level: 22 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Goldeen -Level: 22 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_LYDIA_3 === -Name: LYDIA -Class: Pkmn Breeder -Pic: Pokemon Breeder F -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Pelipper -Level: 25 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Breloom -Level: 25 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Marill -Level: 25 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Roselia -Level: 25 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Delcatty -Level: 25 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Goldeen -Level: 25 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_LYDIA_4 === -Name: LYDIA -Class: Pkmn Breeder -Pic: Pokemon Breeder F -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Pelipper -Level: 28 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Breloom -Level: 28 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Marill -Level: 28 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Roselia -Level: 28 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Delcatty -Level: 28 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Goldeen -Level: 28 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_LYDIA_5 === -Name: LYDIA -Class: Pkmn Breeder -Pic: Pokemon Breeder F -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Pelipper -Level: 31 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Breloom -Level: 31 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Azumarill -Level: 31 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Roselia -Level: 31 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Delcatty -Level: 31 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Seaking -Level: 31 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_JACKSON_1 === -Name: JACKSON -Class: Pkmn Ranger -Pic: Pokemon Ranger M -Gender: Male -Music: Cool -Items: Full Restore -Double Battle: No -AI: Basic Trainer - -Breloom -Level: 27 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -=== TRAINER_LORENZO === -Name: LORENZO -Class: Pkmn Ranger -Pic: Pokemon Ranger M -Gender: Male -Music: Cool -Items: Full Restore -Double Battle: No -AI: Basic Trainer - -Seedot -Level: 28 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -Nuzleaf -Level: 28 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -Lombre -Level: 28 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -=== TRAINER_SEBASTIAN === -Name: SEBASTIAN -Class: Pkmn Ranger -Pic: Pokemon Ranger M -Gender: Male -Music: Cool -Items: Full Restore -Double Battle: No -AI: Basic Trainer - -Cacturne -Level: 39 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -=== TRAINER_JACKSON_2 === -Name: JACKSON -Class: Pkmn Ranger -Pic: Pokemon Ranger M -Gender: Male -Music: Cool -Items: Full Restore -Double Battle: No -AI: Check Bad Move / Try To Faint / Force Setup First Turn - -Breloom -Level: 31 -IVs: 7 HP / 7 Atk / 7 Def / 7 SpA / 7 SpD / 7 Spe - -=== TRAINER_JACKSON_3 === -Name: JACKSON -Class: Pkmn Ranger -Pic: Pokemon Ranger M -Gender: Male -Music: Cool -Items: Full Restore -Double Battle: No -AI: Basic Trainer - -Breloom -Level: 34 -IVs: 8 HP / 8 Atk / 8 Def / 8 SpA / 8 SpD / 8 Spe - -=== TRAINER_JACKSON_4 === -Name: JACKSON -Class: Pkmn Ranger -Pic: Pokemon Ranger M -Gender: Male -Music: Cool -Items: Full Restore -Double Battle: No -AI: Check Bad Move / Try To Faint / Force Setup First Turn - -Breloom -Level: 37 -IVs: 9 HP / 9 Atk / 9 Def / 9 SpA / 9 SpD / 9 Spe - -=== TRAINER_JACKSON_5 === -Name: JACKSON -Class: Pkmn Ranger -Pic: Pokemon Ranger M -Gender: Male -Music: Cool -Items: Full Restore -Double Battle: No -AI: Basic Trainer - -Kecleon -Level: 39 -IVs: 10 HP / 10 Atk / 10 Def / 10 SpA / 10 SpD / 10 Spe - -Breloom -Level: 39 -IVs: 10 HP / 10 Atk / 10 Def / 10 SpA / 10 SpD / 10 Spe - -=== TRAINER_CATHERINE_1 === -Name: CATHERINE -Class: Pkmn Ranger -Pic: Pokemon Ranger F -Gender: Female -Music: Cool -Items: Full Restore -Double Battle: No -AI: Check Bad Move / Try To Faint / Force Setup First Turn - -Gloom -Level: 26 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -Roselia -Level: 26 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -=== TRAINER_JENNA === -Name: JENNA -Class: Pkmn Ranger -Pic: Pokemon Ranger F -Gender: Female -Music: Cool -Items: Full Restore -Double Battle: No -AI: Check Bad Move / Try To Faint / Force Setup First Turn - -Lotad -Level: 28 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -Lombre -Level: 28 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -Nuzleaf -Level: 28 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -=== TRAINER_SOPHIA === -Name: SOPHIA -Class: Pkmn Ranger -Pic: Pokemon Ranger F -Gender: Female -Music: Cool -Items: Full Restore -Double Battle: No -AI: Basic Trainer - -Swablu -Level: 38 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -Roselia -Level: 38 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -=== TRAINER_CATHERINE_2 === -Name: CATHERINE -Class: Pkmn Ranger -Pic: Pokemon Ranger F -Gender: Female -Music: Cool -Items: Full Restore -Double Battle: No -AI: Check Bad Move / Try To Faint / Force Setup First Turn - -Gloom -Level: 30 -IVs: 7 HP / 7 Atk / 7 Def / 7 SpA / 7 SpD / 7 Spe - -Roselia -Level: 30 -IVs: 7 HP / 7 Atk / 7 Def / 7 SpA / 7 SpD / 7 Spe - -=== TRAINER_CATHERINE_3 === -Name: CATHERINE -Class: Pkmn Ranger -Pic: Pokemon Ranger F -Gender: Female -Music: Cool -Items: Full Restore -Double Battle: No -AI: Basic Trainer - -Gloom -Level: 33 -IVs: 8 HP / 8 Atk / 8 Def / 8 SpA / 8 SpD / 8 Spe - -Roselia -Level: 33 -IVs: 8 HP / 8 Atk / 8 Def / 8 SpA / 8 SpD / 8 Spe - -=== TRAINER_CATHERINE_4 === -Name: CATHERINE -Class: Pkmn Ranger -Pic: Pokemon Ranger F -Gender: Female -Music: Cool -Items: Full Restore -Double Battle: No -AI: Check Bad Move / Try To Faint / Force Setup First Turn - -Gloom -Level: 36 -IVs: 9 HP / 9 Atk / 9 Def / 9 SpA / 9 SpD / 9 Spe - -Roselia -Level: 36 -IVs: 9 HP / 9 Atk / 9 Def / 9 SpA / 9 SpD / 9 Spe - -=== TRAINER_CATHERINE_5 === -Name: CATHERINE -Class: Pkmn Ranger -Pic: Pokemon Ranger F -Gender: Female -Music: Cool -Items: Full Restore -Double Battle: No -AI: Basic Trainer - -Bellossom -Level: 39 -IVs: 10 HP / 10 Atk / 10 Def / 10 SpA / 10 SpD / 10 Spe - -Roselia -Level: 39 -IVs: 10 HP / 10 Atk / 10 Def / 10 SpA / 10 SpD / 10 Spe - -=== TRAINER_JULIO === -Name: JULIO -Class: Triathlete -Pic: Cycling Triathlete M -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Magnemite -Level: 21 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_SEAFLOOR_CAVERN_5 === -Name: GRUNT -Class: Team Aqua -Pic: Aqua Grunt M -Gender: Male -Music: Aqua -Double Battle: No -AI: Check Bad Move - -Mightyena -Level: 35 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -Golbat -Level: 35 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -=== TRAINER_GRUNT_UNUSED === -Name: GRUNT -Class: Team Magma -Pic: Aqua Grunt F -Gender: Female -Music: Aqua -Double Battle: No -AI: Check Bad Move - -Wailmer -Level: 31 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Zubat -Level: 31 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_MT_PYRE_4 === -Name: GRUNT -Class: Team Aqua -Pic: Aqua Grunt F -Gender: Female -Music: Aqua -Double Battle: No -AI: Check Bad Move - -Wailmer -Level: 30 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Zubat -Level: 30 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_JAGGED_PASS === -Name: GRUNT -Class: Team Magma -Pic: Magma Grunt M -Gender: Male -Music: Magma -Double Battle: No -AI: Check Bad Move - -Poochyena -Level: 22 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -Numel -Level: 22 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -=== TRAINER_MARC === -Name: MARC -Class: Hiker -Pic: Hiker -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Geodude -Level: 8 -IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe - -Geodude -Level: 8 -IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe - -=== TRAINER_BRENDEN === -Name: BRENDEN -Class: Sailor -Pic: Sailor -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Machop -Level: 13 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_LILITH === -Name: LILITH -Class: Battle Girl -Pic: Battle Girl -Gender: Female -Music: Intense -Double Battle: No -AI: Check Bad Move - -Meditite -Level: 13 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -=== TRAINER_CRISTIAN === -Name: CRISTIAN -Class: Black Belt -Pic: Black Belt -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Makuhita -Level: 13 -IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe - -=== TRAINER_SYLVIA === -Name: SYLVIA -Class: Hex Maniac -Pic: Hex Maniac -Gender: Female -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Meditite -Level: 36 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_LEONARDO === -Name: LEONARDO -Class: Swimmer M -Pic: Swimmer M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Carvanha -Level: 34 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_ATHENA === -Name: ATHENA -Class: Cooltrainer -Pic: Cooltrainer F -Gender: Female -Music: Cool -Items: Hyper Potion -Double Battle: No -AI: Basic Trainer - -Manectric -Level: 32 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Thunder -- Thunder Wave -- Quick Attack - -Linoone -Level: 32 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Surf -- Thief - -=== TRAINER_HARRISON === -Name: HARRISON -Class: Swimmer M -Pic: Swimmer M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Tentacruel -Level: 35 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_MT_CHIMNEY_2 === -Name: GRUNT -Class: Team Magma -Pic: Magma Grunt M -Gender: Male -Music: Magma -Double Battle: No -AI: Check Bad Move - -Zubat -Level: 20 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_CLARENCE === -Name: CLARENCE -Class: Swimmer M -Pic: Swimmer M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Sharpedo -Level: 34 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_TERRY === -Name: TERRY -Class: Psychic -Pic: Psychic F -Gender: Female -Music: Intense -Double Battle: No -AI: Check Bad Move - -Girafarig -Level: 37 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_NATE === -Name: NATE -Class: Gentleman -Pic: Gentleman -Gender: Male -Music: Rich -Double Battle: No -AI: Check Bad Move - -Spoink -Level: 36 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_KATHLEEN === -Name: KATHLEEN -Class: Hex Maniac -Pic: Hex Maniac -Gender: Female -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Kadabra -Level: 36 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_CLIFFORD === -Name: CLIFFORD -Class: Gentleman -Pic: Gentleman -Gender: Male -Music: Rich -Double Battle: No -AI: Check Bad Move - -Girafarig -Level: 36 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_NICHOLAS === -Name: NICHOLAS -Class: Psychic -Pic: Psychic M -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Wobbuffet -Level: 36 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_SPACE_CENTER_3 === -Name: GRUNT -Class: Team Magma -Pic: Magma Grunt F -Gender: Female -Music: Magma -Double Battle: No -AI: Check Bad Move - -Zubat -Level: 31 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Poochyena -Level: 31 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_SPACE_CENTER_4 === -Name: GRUNT -Class: Team Magma -Pic: Magma Grunt M -Gender: Male -Music: Magma -Double Battle: No -AI: Check Bad Move - -Baltoy -Level: 32 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_SPACE_CENTER_5 === -Name: GRUNT -Class: Team Magma -Pic: Magma Grunt M -Gender: Male -Music: Magma -Double Battle: No -AI: Check Bad Move - -Zubat -Level: 32 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_SPACE_CENTER_6 === -Name: GRUNT -Class: Team Magma -Pic: Magma Grunt M -Gender: Male -Music: Magma -Double Battle: No -AI: Check Bad Move - -Mightyena -Level: 32 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_SPACE_CENTER_7 === -Name: GRUNT -Class: Team Magma -Pic: Magma Grunt M -Gender: Male -Music: Magma -Double Battle: No -AI: Check Bad Move - -Baltoy -Level: 32 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_MACEY === -Name: MACEY -Class: Psychic -Pic: Psychic F -Gender: Female -Music: Intense -Double Battle: No -AI: Check Bad Move - -Natu -Level: 36 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_BRENDAN_RUSTBORO_TREECKO === -Name: BRENDAN -Class: Rival -Pic: Brendan -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Lotad -Level: 13 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Torchic -Level: 15 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -=== TRAINER_BRENDAN_RUSTBORO_MUDKIP === -Name: BRENDAN -Class: Rival -Pic: Brendan -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Wingull -Level: 13 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Treecko -Level: 15 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -=== TRAINER_PAXTON === -Name: PAXTON -Class: Expert -Pic: Expert M -Gender: Male -Music: Intense -Double Battle: No -AI: Basic Trainer - -Swellow -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Breloom -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_ISABELLA === -Name: ISABELLA -Class: Triathlete -Pic: Swimming Triathlete F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Staryu -Level: 34 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_WEATHER_INST_5 === -Name: GRUNT -Class: Team Aqua -Pic: Aqua Grunt F -Gender: Female -Music: Aqua -Double Battle: No -AI: Check Bad Move - -Zubat -Level: 27 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Poochyena -Level: 27 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_TABITHA_MT_CHIMNEY === -Name: TABITHA -Class: Magma Admin -Pic: Magma Admin -Gender: Male -Music: Magma -Double Battle: No -AI: Basic Trainer - -Numel -Level: 18 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -Poochyena -Level: 20 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -Numel -Level: 22 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -Zubat -Level: 22 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -=== TRAINER_JONATHAN === -Name: JONATHAN -Class: Cooltrainer -Pic: Cooltrainer M -Gender: Male -Music: Cool -Items: Hyper Potion -Double Battle: No -AI: Check Bad Move / Try To Faint / Force Setup First Turn - -Kecleon -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Loudred -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_BRENDAN_RUSTBORO_TORCHIC === -Name: BRENDAN -Class: Rival -Pic: Brendan -Gender: Male -Music: Male -Double Battle: No -AI: Basic Trainer - -Slugma -Level: 13 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Mudkip -Level: 15 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -=== TRAINER_MAY_RUSTBORO_MUDKIP === -Name: MAY -Class: Rival -Pic: May -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move / Try To Faint / Force Setup First Turn - -Wingull -Level: 13 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Treecko -Level: 15 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -=== TRAINER_MAXIE_MAGMA_HIDEOUT === -Name: MAXIE -Class: Magma Leader -Pic: Magma Leader Maxie -Gender: Male -Music: Magma -Items: Super Potion / Super Potion -Double Battle: No -AI: Basic Trainer - -Mightyena -Level: 37 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -Crobat -Level: 38 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -Camerupt -Level: 39 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -=== TRAINER_MAXIE_MT_CHIMNEY === -Name: MAXIE -Class: Magma Leader -Pic: Magma Leader Maxie -Gender: Male -Music: Magma -Items: Super Potion / Super Potion -Double Battle: No -AI: Basic Trainer - -Mightyena -Level: 24 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -Zubat -Level: 24 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -Camerupt -Level: 25 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -=== TRAINER_TIANA === -Name: TIANA -Class: Lass -Pic: Lass -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Zigzagoon -Level: 4 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Shroomish -Level: 4 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_HALEY_1 === -Name: HALEY -Class: Lass -Pic: Lass -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Lotad -Level: 6 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Shroomish -Level: 6 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_JANICE === -Name: JANICE -Class: Lass -Pic: Lass -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Marill -Level: 9 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_VIVI === -Name: VIVI -Class: Winstrate -Pic: Lass -Gender: Female -Music: Female -Double Battle: No -AI: Basic Trainer - -Marill -Level: 15 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Shroomish -Level: 15 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Numel -Level: 15 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_HALEY_2 === -Name: HALEY -Class: Lass -Pic: Lass -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Lombre -Level: 26 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Shroomish -Level: 26 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_HALEY_3 === -Name: HALEY -Class: Lass -Pic: Lass -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Lombre -Level: 29 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Breloom -Level: 29 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_HALEY_4 === -Name: HALEY -Class: Lass -Pic: Lass -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Lombre -Level: 32 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Breloom -Level: 32 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_HALEY_5 === -Name: HALEY -Class: Lass -Pic: Lass -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Swellow -Level: 34 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Lombre -Level: 34 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Breloom -Level: 34 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_SALLY === -Name: SALLY -Class: Lass -Pic: Lass -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Oddish -Level: 16 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_ROBIN === -Name: ROBIN -Class: Lass -Pic: Lass -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Skitty -Level: 14 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Shroomish -Level: 14 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Marill -Level: 14 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_ANDREA === -Name: ANDREA -Class: Lass -Pic: Lass -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Luvdisc -Level: 40 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_CRISSY === -Name: CRISSY -Class: Lass -Pic: Lass -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Goldeen -Level: 39 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Wailmer -Level: 39 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_RICK === -Name: RICK -Class: Bug Catcher -Pic: Bug Catcher -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Wurmple -Level: 4 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Wurmple -Level: 4 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_LYLE === -Name: LYLE -Class: Bug Catcher -Pic: Bug Catcher -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Wurmple -Level: 3 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Wurmple -Level: 3 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Wurmple -Level: 3 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Wurmple -Level: 3 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_JOSE === -Name: JOSE -Class: Bug Catcher -Pic: Bug Catcher -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Wurmple -Level: 8 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -Nincada -Level: 8 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -=== TRAINER_DOUG === -Name: DOUG -Class: Bug Catcher -Pic: Bug Catcher -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Nincada -Level: 28 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Ninjask -Level: 28 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GREG === -Name: GREG -Class: Bug Catcher -Pic: Bug Catcher -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Volbeat -Level: 25 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Illumise -Level: 25 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_KENT === -Name: KENT -Class: Bug Catcher -Pic: Bug Catcher -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Ninjask -Level: 25 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_JAMES_1 === -Name: JAMES -Class: Bug Catcher -Pic: Bug Catcher -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Nincada -Level: 6 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Nincada -Level: 6 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_JAMES_2 === -Name: JAMES -Class: Bug Catcher -Pic: Bug Catcher -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Ninjask -Level: 27 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_JAMES_3 === -Name: JAMES -Class: Bug Catcher -Pic: Bug Catcher -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Dustox -Level: 29 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Ninjask -Level: 29 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_JAMES_4 === -Name: JAMES -Class: Bug Catcher -Pic: Bug Catcher -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Surskit -Level: 31 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Dustox -Level: 31 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Ninjask -Level: 31 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_JAMES_5 === -Name: JAMES -Class: Bug Catcher -Pic: Bug Catcher -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Surskit -Level: 33 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Ninjask -Level: 33 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Dustox -Level: 33 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Ninjask -Level: 33 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_BRICE === -Name: BRICE -Class: Hiker -Pic: Hiker -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Numel -Level: 17 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Machop -Level: 17 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_TRENT_1 === -Name: TRENT -Class: Hiker -Pic: Hiker -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Geodude -Level: 16 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Geodude -Level: 17 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Geodude -Level: 16 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_LENNY === -Name: LENNY -Class: Hiker -Pic: Hiker -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Geodude -Level: 18 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Machop -Level: 18 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_LUCAS_1 === -Name: LUCAS -Class: Hiker -Pic: Hiker -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Geodude -Level: 18 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Numel -Level: 18 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_ALAN === -Name: ALAN -Class: Hiker -Pic: Hiker -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Geodude -Level: 22 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Nosepass -Level: 22 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Graveler -Level: 22 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_CLARK === -Name: CLARK -Class: Hiker -Pic: Hiker -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Geodude -Level: 8 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_ERIC === -Name: ERIC -Class: Hiker -Pic: Hiker -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Geodude -Level: 20 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Baltoy -Level: 20 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_LUCAS_2 === -Name: LUCAS -Class: Hiker -Pic: Hiker -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Wailmer -Level: 9 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Splash -- Water Gun - -=== TRAINER_MIKE_1 === -Name: MIKE -Class: Hiker -Pic: Hiker -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Pelipper -Level: 10 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Gust -- Growl - -Poochyena -Level: 10 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Bite -- Scary Face - -=== TRAINER_MIKE_2 === -Name: MIKE -Class: Hiker -Pic: Hiker -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Geodude -Level: 16 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Geodude -Level: 16 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Machop -Level: 16 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_TRENT_2 === -Name: TRENT -Class: Hiker -Pic: Hiker -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Geodude -Level: 24 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Geodude -Level: 24 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Geodude -Level: 24 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Graveler -Level: 24 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_TRENT_3 === -Name: TRENT -Class: Hiker -Pic: Hiker -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Geodude -Level: 27 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Geodude -Level: 27 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Graveler -Level: 27 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Graveler -Level: 27 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_TRENT_4 === -Name: TRENT -Class: Hiker -Pic: Hiker -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Geodude -Level: 30 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Graveler -Level: 30 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Graveler -Level: 30 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Graveler -Level: 30 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_TRENT_5 === -Name: TRENT -Class: Hiker -Pic: Hiker -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Graveler -Level: 33 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Graveler -Level: 33 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Graveler -Level: 33 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Golem -Level: 33 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_DEZ_AND_LUKE === -Name: DEZ & LUKE -Class: Young Couple -Pic: Young Couple -Gender: Male -Music: Girl -Double Battle: Yes -AI: Check Bad Move - -Delcatty -Level: 31 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Manectric -Level: 31 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_LEA_AND_JED === -Name: LEA & JED -Class: Young Couple -Pic: Young Couple -Gender: Male -Music: Girl -Double Battle: Yes -AI: Check Bad Move - -Luvdisc -Level: 45 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Luvdisc -Level: 45 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_KIRA_AND_DAN_1 === -Name: KIRA & DAN -Class: Young Couple -Pic: Young Couple -Gender: Male -Music: Girl -Double Battle: Yes -AI: Check Bad Move - -Volbeat -Level: 25 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Illumise -Level: 25 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_KIRA_AND_DAN_2 === -Name: KIRA & DAN -Class: Young Couple -Pic: Young Couple -Gender: Male -Music: Girl -Double Battle: Yes -AI: Check Bad Move - -Volbeat -Level: 30 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Illumise -Level: 30 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_KIRA_AND_DAN_3 === -Name: KIRA & DAN -Class: Young Couple -Pic: Young Couple -Gender: Male -Music: Girl -Double Battle: Yes -AI: Check Bad Move - -Volbeat -Level: 33 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Illumise -Level: 33 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_KIRA_AND_DAN_4 === -Name: KIRA & DAN -Class: Young Couple -Pic: Young Couple -Gender: Male -Music: Girl -Double Battle: Yes -AI: Check Bad Move - -Volbeat -Level: 36 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Illumise -Level: 36 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_KIRA_AND_DAN_5 === -Name: KIRA & DAN -Class: Young Couple -Pic: Young Couple -Gender: Male -Music: Girl -Double Battle: Yes -AI: Check Bad Move - -Volbeat -Level: 39 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Illumise -Level: 39 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_JOHANNA === -Name: JOHANNA -Class: Beauty -Pic: Beauty -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Goldeen -Level: 13 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GERALD === -Name: GERALD -Class: Cooltrainer -Pic: Cooltrainer M -Gender: Male -Music: Cool -Items: Hyper Potion -Double Battle: No -AI: Basic Trainer - -Kecleon -Level: 23 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Flamethrower -- Fury Swipes -- Feint Attack -- Bind - -=== TRAINER_VIVIAN === -Name: VIVIAN -Class: Battle Girl -Pic: Battle Girl -Gender: Female -Music: Intense -Double Battle: No -AI: Check Bad Move - -Meditite -Level: 17 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Bide -- Detect -- Confusion -- Thunder Punch - -Meditite -Level: 17 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Thunder Punch -- Detect -- Confusion -- Meditate - -=== TRAINER_DANIELLE === -Name: DANIELLE -Class: Battle Girl -Pic: Battle Girl -Gender: Female -Music: Intense -Double Battle: No -AI: Check Bad Move - -Meditite -Level: 23 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Bide -- Detect -- Confusion -- Fire Punch - -=== TRAINER_HIDEO === -Name: HIDEO -Class: Ninja Boy -Pic: Ninja Boy -Gender: Male -Music: Suspicious -Double Battle: No -AI: Check Bad Move / Try To Faint - -Koffing -Level: 25 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Tackle -- Self Destruct -- Sludge -- Smokescreen - -Koffing -Level: 25 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Tackle -- Poison Gas -- Sludge -- Smokescreen - -=== TRAINER_KEIGO === -Name: KEIGO -Class: Ninja Boy -Pic: Ninja Boy -Gender: Male -Music: Suspicious -Double Battle: No -AI: Check Bad Move / Try To Faint - -Koffing -Level: 28 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Poison Gas -- Self Destruct -- Sludge -- Smokescreen - -Ninjask -Level: 28 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Sand Attack -- Double Team -- Fury Cutter -- Swords Dance - -=== TRAINER_RILEY === -Name: RILEY -Class: Ninja Boy -Pic: Ninja Boy -Gender: Male -Music: Suspicious -Double Battle: No -AI: Check Bad Move / Try To Faint - -Nincada -Level: 28 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Leech Life -- Fury Swipes -- Mind Reader -- Dig - -Koffing -Level: 28 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Tackle -- Self Destruct -- Sludge -- Smokescreen - -=== TRAINER_FLINT === -Name: FLINT -Class: Camper -Pic: Camper -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Swellow -Level: 29 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -Xatu -Level: 29 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -=== TRAINER_ASHLEY === -Name: ASHLEY -Class: Picnicker -Pic: Picnicker -Gender: Female -Music: Girl -Double Battle: No -AI: Check Bad Move - -Swablu -Level: 27 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Swablu -Level: 27 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Swablu -Level: 27 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_WALLY_MAUVILLE === -Name: WALLY -Class: Rival -Pic: Wally -Gender: Male -Music: Male -Double Battle: No -AI: Basic Trainer - -Ralts -Level: 16 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_WALLY_VR_2 === -Name: WALLY -Class: Rival -Pic: Wally -Gender: Male -Music: Male -Items: Full Restore / Full Restore -Double Battle: No -AI: Basic Trainer - -Altaria -Level: 47 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe -- Aerial Ace -- Safeguard -- Dragon Breath -- Dragon Dance - -Delcatty -Level: 46 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe -- Sing -- Assist -- Charm -- Feint Attack - -Roselia -Level: 47 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe -- Magical Leaf -- Leech Seed -- Giga Drain -- Toxic - -Magneton -Level: 44 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe -- Supersonic -- Thunderbolt -- Tri Attack -- Screech - -Gardevoir -Level: 48 -IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe -- Double Team -- Calm Mind -- Psychic -- Future Sight - -=== TRAINER_WALLY_VR_3 === -Name: WALLY -Class: Rival -Pic: Wally -Gender: Male -Music: Male -Items: Full Restore / Full Restore -Double Battle: No -AI: Basic Trainer - -Altaria -Level: 50 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe -- Aerial Ace -- Safeguard -- Dragon Breath -- Dragon Dance - -Delcatty -Level: 49 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe -- Sing -- Assist -- Charm -- Feint Attack - -Roselia -Level: 50 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe -- Magical Leaf -- Leech Seed -- Giga Drain -- Toxic - -Magneton -Level: 47 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe -- Supersonic -- Thunderbolt -- Tri Attack -- Screech - -Gardevoir -Level: 51 -IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe -- Double Team -- Calm Mind -- Psychic -- Future Sight - -=== TRAINER_WALLY_VR_4 === -Name: WALLY -Class: Rival -Pic: Wally -Gender: Male -Music: Male -Items: Full Restore / Full Restore -Double Battle: No -AI: Basic Trainer - -Altaria -Level: 53 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe -- Aerial Ace -- Safeguard -- Dragon Breath -- Dragon Dance - -Delcatty -Level: 52 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe -- Sing -- Assist -- Charm -- Feint Attack - -Roselia -Level: 53 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe -- Magical Leaf -- Leech Seed -- Giga Drain -- Toxic - -Magneton -Level: 50 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe -- Supersonic -- Thunderbolt -- Tri Attack -- Screech - -Gardevoir -Level: 54 -IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe -- Double Team -- Calm Mind -- Psychic -- Future Sight - -=== TRAINER_WALLY_VR_5 === -Name: WALLY -Class: Rival -Pic: Wally -Gender: Male -Music: Male -Items: Full Restore / Full Restore -Double Battle: No -AI: Basic Trainer - -Altaria -Level: 56 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe -- Aerial Ace -- Safeguard -- Dragon Breath -- Dragon Dance - -Delcatty -Level: 55 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe -- Sing -- Assist -- Charm -- Feint Attack - -Roselia -Level: 56 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe -- Magical Leaf -- Leech Seed -- Giga Drain -- Toxic - -Magneton -Level: 53 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe -- Supersonic -- Thunderbolt -- Tri Attack -- Screech - -Gardevoir -Level: 57 -IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe -- Double Team -- Calm Mind -- Psychic -- Future Sight - -=== TRAINER_BRENDAN_LILYCOVE_MUDKIP === -Name: BRENDAN -Class: Rival -Pic: Brendan -Gender: Male -Music: Male -Double Battle: No -AI: Basic Trainer - -Tropius -Level: 31 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -Slugma -Level: 32 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -Pelipper -Level: 32 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -Grovyle -Level: 34 -IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe - -=== TRAINER_BRENDAN_LILYCOVE_TREECKO === -Name: BRENDAN -Class: Rival -Pic: Brendan -Gender: Male -Music: Male -Double Battle: No -AI: Basic Trainer - -Tropius -Level: 31 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -Pelipper -Level: 32 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -Ludicolo -Level: 32 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -Combusken -Level: 34 -IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe - -=== TRAINER_BRENDAN_LILYCOVE_TORCHIC === -Name: BRENDAN -Class: Rival -Pic: Brendan -Gender: Male -Music: Male -Double Battle: No -AI: Basic Trainer - -Tropius -Level: 31 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -Ludicolo -Level: 32 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -Slugma -Level: 32 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -Marshtomp -Level: 34 -IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe - -=== TRAINER_MAY_LILYCOVE_MUDKIP === -Name: MAY -Class: Rival -Pic: May -Gender: Female -Music: Female -Double Battle: No -AI: Basic Trainer - -Tropius -Level: 31 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -Slugma -Level: 32 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -Pelipper -Level: 32 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -Grovyle -Level: 34 -IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe - -=== TRAINER_MAY_LILYCOVE_TREECKO === -Name: MAY -Class: Rival -Pic: May -Gender: Female -Music: Female -Double Battle: No -AI: Basic Trainer - -Tropius -Level: 31 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -Pelipper -Level: 32 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -Ludicolo -Level: 32 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -Combusken -Level: 34 -IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe - -=== TRAINER_MAY_LILYCOVE_TORCHIC === -Name: MAY -Class: Rival -Pic: May -Gender: Female -Music: Female -Double Battle: No -AI: Basic Trainer - -Tropius -Level: 31 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -Ludicolo -Level: 32 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -Slugma -Level: 32 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -Marshtomp -Level: 34 -IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe - -=== TRAINER_JONAH === -Name: JONAH -Class: Fisherman -Pic: Fisherman -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Wailmer -Level: 30 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Tentacool -Level: 31 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Sharpedo -Level: 32 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_HENRY === -Name: HENRY -Class: Fisherman -Pic: Fisherman -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Carvanha -Level: 31 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Tentacruel -Level: 34 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_ROGER === -Name: ROGER -Class: Fisherman -Pic: Fisherman -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Magikarp -Level: 15 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Magikarp -Level: 25 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Gyarados -Level: 35 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_ALEXA === -Name: ALEXA -Class: Cooltrainer -Pic: Cooltrainer F -Gender: Female -Music: Cool -Items: Full Restore -Double Battle: No -AI: Basic Trainer - -Gloom -Level: 34 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Azumarill -Level: 34 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_RUBEN === -Name: RUBEN -Class: Cooltrainer -Pic: Cooltrainer M -Gender: Male -Music: Cool -Items: Hyper Potion -Double Battle: No -AI: Basic Trainer - -Shiftry -Level: 34 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Nosepass -Level: 34 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_KOJI_1 === -Name: KOJI -Class: Black Belt -Pic: Black Belt -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Machoke -Level: 34 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_WAYNE === -Name: WAYNE -Class: Fisherman -Pic: Fisherman -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Tentacool -Level: 31 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Tentacool -Level: 31 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Wailmer -Level: 36 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_AIDAN === -Name: AIDAN -Class: Bird Keeper -Pic: Bird Keeper -Gender: Male -Music: Cool -Double Battle: No -AI: Check Bad Move - -Swellow -Level: 32 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Skarmory -Level: 32 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_REED === -Name: REED -Class: Swimmer M -Pic: Swimmer M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Spheal -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Sharpedo -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_TISHA === -Name: TISHA -Class: Swimmer F -Pic: Swimmer F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Chinchou -Level: 34 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_TORI_AND_TIA === -Name: TORI & TIA -Class: Twins -Pic: Twins -Gender: Male -Music: Twins -Double Battle: Yes -AI: Check Bad Move - -Spinda -Level: 19 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Spinda -Level: 19 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_KIM_AND_IRIS === -Name: KIM & IRIS -Class: Sr And Jr -Pic: Sr And Jr -Gender: Male -Music: Twins -Double Battle: Yes -AI: Check Bad Move - -Swablu -Level: 32 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Sing -- Fury Attack -- Safeguard -- Aerial Ace - -Numel -Level: 35 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Flamethrower -- Take Down -- Rest -- Earthquake - -=== TRAINER_TYRA_AND_IVY === -Name: TYRA & IVY -Class: Sr And Jr -Pic: Sr And Jr -Gender: Male -Music: Twins -Double Battle: Yes -AI: Check Bad Move - -Roselia -Level: 18 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Growth -- Stun Spore -- Mega Drain -- Leech Seed - -Graveler -Level: 20 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Defense Curl -- Rollout -- Mud Sport -- Rock Throw - -=== TRAINER_MEL_AND_PAUL === -Name: MEL & PAUL -Class: Young Couple -Pic: Young Couple -Gender: Male -Music: Girl -Double Battle: Yes -AI: Check Bad Move - -Dustox -Level: 27 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Gust -- Psybeam -- Toxic -- Protect - -Beautifly -Level: 27 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe -- Gust -- Mega Drain -- Attract -- Stun Spore - -=== TRAINER_JOHN_AND_JAY_1 === -Name: JOHN & JAY -Class: Old Couple -Pic: Old Couple -Gender: Male -Music: Intense -Double Battle: Yes -AI: Basic Trainer - -Medicham -Level: 39 -IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe -- Psychic -- Fire Punch -- Psych Up -- Protect - -Hariyama -Level: 39 -IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe -- Focus Punch -- Rock Tomb -- Rest -- Belly Drum - -=== TRAINER_JOHN_AND_JAY_2 === -Name: JOHN & JAY -Class: Old Couple -Pic: Old Couple -Gender: Male -Music: Intense -Double Battle: Yes -AI: Basic Trainer - -Medicham -Level: 43 -IVs: 25 HP / 25 Atk / 25 Def / 25 SpA / 25 SpD / 25 Spe -- Psychic -- Fire Punch -- Psych Up -- Protect - -Hariyama -Level: 43 -IVs: 25 HP / 25 Atk / 25 Def / 25 SpA / 25 SpD / 25 Spe -- Focus Punch -- Rock Tomb -- Rest -- Belly Drum - -=== TRAINER_JOHN_AND_JAY_3 === -Name: JOHN & JAY -Class: Old Couple -Pic: Old Couple -Gender: Male -Music: Intense -Double Battle: Yes -AI: Basic Trainer - -Medicham -Level: 46 -IVs: 26 HP / 26 Atk / 26 Def / 26 SpA / 26 SpD / 26 Spe -- Psychic -- Fire Punch -- Psych Up -- Protect - -Hariyama -Level: 46 -IVs: 26 HP / 26 Atk / 26 Def / 26 SpA / 26 SpD / 26 Spe -- Focus Punch -- Rock Tomb -- Rest -- Belly Drum - -=== TRAINER_JOHN_AND_JAY_4 === -Name: JOHN & JAY -Class: Old Couple -Pic: Old Couple -Gender: Male -Music: Intense -Double Battle: Yes -AI: Check Bad Move / Try To Faint / Force Setup First Turn - -Medicham -Level: 49 -IVs: 27 HP / 27 Atk / 27 Def / 27 SpA / 27 SpD / 27 Spe -- Psychic -- Fire Punch -- Psych Up -- Protect - -Hariyama -Level: 49 -IVs: 27 HP / 27 Atk / 27 Def / 27 SpA / 27 SpD / 27 Spe -- Focus Punch -- Rock Tomb -- Rest -- Belly Drum - -=== TRAINER_JOHN_AND_JAY_5 === -Name: JOHN & JAY -Class: Old Couple -Pic: Old Couple -Gender: Male -Music: Intense -Double Battle: Yes -AI: Basic Trainer - -Medicham -Level: 52 -IVs: 29 HP / 29 Atk / 29 Def / 29 SpA / 29 SpD / 29 Spe -- Psychic -- Fire Punch -- Psych Up -- Protect - -Hariyama -Level: 52 -IVs: 29 HP / 29 Atk / 29 Def / 29 SpA / 29 SpD / 29 Spe -- Focus Punch -- Rock Tomb -- Rest -- Belly Drum - -=== TRAINER_RELI_AND_IAN === -Name: RELI & IAN -Class: Sis And Bro -Pic: Sis And Bro -Gender: Male -Music: Swimmer -Double Battle: Yes -AI: Check Bad Move - -Azumarill -Level: 35 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Wingull -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_LILA_AND_ROY_1 === -Name: LILA & ROY -Class: Sis And Bro -Pic: Sis And Bro -Gender: Male -Music: Swimmer -Double Battle: Yes -AI: Check Bad Move - -Chinchou -Level: 34 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Carvanha -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_LILA_AND_ROY_2 === -Name: LILA & ROY -Class: Sis And Bro -Pic: Sis And Bro -Gender: Male -Music: Swimmer -Double Battle: Yes -AI: Check Bad Move - -Chinchou -Level: 42 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Carvanha -Level: 40 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_LILA_AND_ROY_3 === -Name: LILA & ROY -Class: Sis And Bro -Pic: Sis And Bro -Gender: Male -Music: Swimmer -Double Battle: Yes -AI: Check Bad Move - -Lanturn -Level: 45 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Carvanha -Level: 43 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_LILA_AND_ROY_4 === -Name: LILA & ROY -Class: Sis And Bro -Pic: Sis And Bro -Gender: Male -Music: Swimmer -Double Battle: Yes -AI: Check Bad Move - -Lanturn -Level: 48 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Sharpedo -Level: 46 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_LILA_AND_ROY_5 === -Name: LILA & ROY -Class: Sis And Bro -Pic: Sis And Bro -Gender: Male -Music: Swimmer -Double Battle: Yes -AI: Check Bad Move - -Lanturn -Level: 51 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Sharpedo -Level: 49 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_LISA_AND_RAY === -Name: LISA & RAY -Class: Sis And Bro -Pic: Sis And Bro -Gender: Male -Music: Swimmer -Double Battle: Yes -AI: Check Bad Move - -Goldeen -Level: 27 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Tentacool -Level: 25 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_CHRIS === -Name: CHRIS -Class: Fisherman -Pic: Fisherman -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Magikarp -Level: 29 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Tentacool -Level: 20 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Feebas -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Carvanha -Level: 23 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_DAWSON === -Name: DAWSON -Class: Rich Boy -Pic: Rich Boy -Gender: Male -Music: Rich -Double Battle: No -AI: Check Bad Move - -Zigzagoon @ Nugget -Level: 8 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Poochyena -Level: 8 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_SARAH === -Name: SARAH -Class: Lady -Pic: Lady -Gender: Female -Music: Female -Items: Full Restore -Double Battle: No -AI: Check Bad Move - -Lotad -Level: 8 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Zigzagoon @ Nugget -Level: 8 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_DARIAN === -Name: DARIAN -Class: Fisherman -Pic: Fisherman -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Magikarp -Level: 9 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_HAILEY === -Name: HAILEY -Class: Tuber F -Pic: Tuber F -Gender: Female -Music: Girl -Double Battle: No -AI: Check Bad Move - -Marill -Level: 13 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_CHANDLER === -Name: CHANDLER -Class: Tuber M -Pic: Tuber M -Gender: Male -Music: Girl -Double Battle: No -AI: Check Bad Move - -Tentacool -Level: 12 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Tentacool -Level: 12 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_KALEB === -Name: KALEB -Class: Pokefan -Pic: Pokefan M -Gender: Male -Music: Twins -Double Battle: No -AI: Check Bad Move - -Minun @ Oran Berry -Level: 14 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Plusle @ Oran Berry -Level: 14 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_JOSEPH === -Name: JOSEPH -Class: Guitarist -Pic: Guitarist -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Electrike -Level: 14 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Voltorb -Level: 14 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_ALYSSA === -Name: ALYSSA -Class: Triathlete -Pic: Cycling Triathlete F -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Magnemite -Level: 15 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_MARCOS === -Name: MARCOS -Class: Guitarist -Pic: Guitarist -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Voltorb -Level: 15 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_RHETT === -Name: RHETT -Class: Black Belt -Pic: Black Belt -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Makuhita -Level: 15 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_TYRON === -Name: TYRON -Class: Camper -Pic: Camper -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Sandshrew -Level: 19 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_CELINA === -Name: CELINA -Class: Aroma Lady -Pic: Aroma Lady -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Roselia -Level: 18 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_BIANCA === -Name: BIANCA -Class: Picnicker -Pic: Picnicker -Gender: Female -Music: Girl -Double Battle: No -AI: Check Bad Move - -Shroomish -Level: 18 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_HAYDEN === -Name: HAYDEN -Class: Kindler -Pic: Kindler -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Numel -Level: 18 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_SOPHIE === -Name: SOPHIE -Class: Picnicker -Pic: Picnicker -Gender: Female -Music: Girl -Double Battle: No -AI: Check Bad Move - -Marill -Level: 17 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Lombre -Level: 19 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_COBY === -Name: COBY -Class: Bird Keeper -Pic: Bird Keeper -Gender: Male -Music: Cool -Double Battle: No -AI: Check Bad Move - -Skarmory -Level: 17 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Swellow -Level: 19 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_LAWRENCE === -Name: LAWRENCE -Class: Camper -Pic: Camper -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Baltoy -Level: 18 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Sandshrew -Level: 18 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_WYATT === -Name: WYATT -Class: Pokemaniac -Pic: Pokemaniac -Gender: Male -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Aron -Level: 18 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Aron -Level: 18 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_ANGELINA === -Name: ANGELINA -Class: Picnicker -Pic: Picnicker -Gender: Female -Music: Girl -Double Battle: No -AI: Check Bad Move - -Lombre -Level: 18 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Marill -Level: 18 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_KAI === -Name: KAI -Class: Fisherman -Pic: Fisherman -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Barboach -Level: 19 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_CHARLOTTE === -Name: CHARLOTTE -Class: Picnicker -Pic: Picnicker -Gender: Female -Music: Girl -Double Battle: No -AI: Check Bad Move - -Nuzleaf -Level: 19 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_DEANDRE === -Name: DEANDRE -Class: Youngster -Pic: Youngster -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Zigzagoon -Level: 14 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Aron -Level: 14 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Electrike -Level: 14 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_MAGMA_HIDEOUT_1 === -Name: GRUNT -Class: Team Magma -Pic: Magma Grunt M -Gender: Male -Music: Magma -Double Battle: No -AI: Check Bad Move - -Zubat -Level: 29 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_MAGMA_HIDEOUT_2 === -Name: GRUNT -Class: Team Magma -Pic: Magma Grunt M -Gender: Male -Music: Magma -Double Battle: No -AI: Check Bad Move - -Poochyena -Level: 29 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_MAGMA_HIDEOUT_3 === -Name: GRUNT -Class: Team Magma -Pic: Magma Grunt M -Gender: Male -Music: Magma -Double Battle: No -AI: Check Bad Move - -Numel -Level: 29 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_MAGMA_HIDEOUT_4 === -Name: GRUNT -Class: Team Magma -Pic: Magma Grunt M -Gender: Male -Music: Magma -Double Battle: No -AI: Check Bad Move - -Baltoy -Level: 28 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Zubat -Level: 28 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_MAGMA_HIDEOUT_5 === -Name: GRUNT -Class: Team Magma -Pic: Magma Grunt M -Gender: Male -Music: Magma -Double Battle: No -AI: Check Bad Move - -Baltoy -Level: 28 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Numel -Level: 28 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_MAGMA_HIDEOUT_6 === -Name: GRUNT -Class: Team Magma -Pic: Magma Grunt M -Gender: Male -Music: Magma -Double Battle: No -AI: Check Bad Move - -Mightyena -Level: 29 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_MAGMA_HIDEOUT_7 === -Name: GRUNT -Class: Team Magma -Pic: Magma Grunt M -Gender: Male -Music: Magma -Double Battle: No -AI: Check Bad Move - -Zubat -Level: 29 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_MAGMA_HIDEOUT_8 === -Name: GRUNT -Class: Team Magma -Pic: Magma Grunt M -Gender: Male -Music: Magma -Double Battle: No -AI: Check Bad Move - -Poochyena -Level: 29 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_MAGMA_HIDEOUT_9 === -Name: GRUNT -Class: Team Magma -Pic: Magma Grunt M -Gender: Male -Music: Magma -Double Battle: No -AI: Check Bad Move - -Zubat -Level: 29 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_MAGMA_HIDEOUT_10 === -Name: GRUNT -Class: Team Magma -Pic: Magma Grunt M -Gender: Male -Music: Magma -Double Battle: No -AI: Check Bad Move - -Mightyena -Level: 29 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_MAGMA_HIDEOUT_11 === -Name: GRUNT -Class: Team Magma -Pic: Magma Grunt M -Gender: Male -Music: Magma -Double Battle: No -AI: Check Bad Move - -Baltoy -Level: 29 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_MAGMA_HIDEOUT_12 === -Name: GRUNT -Class: Team Magma -Pic: Magma Grunt M -Gender: Male -Music: Magma -Double Battle: No -AI: Check Bad Move - -Numel -Level: 29 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_MAGMA_HIDEOUT_13 === -Name: GRUNT -Class: Team Magma -Pic: Magma Grunt M -Gender: Male -Music: Magma -Double Battle: No -AI: Check Bad Move - -Zubat -Level: 29 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_MAGMA_HIDEOUT_14 === -Name: GRUNT -Class: Team Magma -Pic: Magma Grunt F -Gender: Female -Music: Magma -Double Battle: No -AI: Check Bad Move - -Mightyena -Level: 29 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_MAGMA_HIDEOUT_15 === -Name: GRUNT -Class: Team Magma -Pic: Magma Grunt F -Gender: Female -Music: Magma -Double Battle: No -AI: Check Bad Move - -Numel -Level: 29 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRUNT_MAGMA_HIDEOUT_16 === -Name: GRUNT -Class: Team Magma -Pic: Magma Grunt F -Gender: Female -Music: Magma -Double Battle: No -AI: Check Bad Move - -Baltoy -Level: 29 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_TABITHA_MAGMA_HIDEOUT === -Name: TABITHA -Class: Magma Admin -Pic: Magma Admin -Gender: Male -Music: Magma -Double Battle: No -AI: Check Bad Move - -Numel -Level: 26 -IVs: 9 HP / 9 Atk / 9 Def / 9 SpA / 9 SpD / 9 Spe - -Mightyena -Level: 28 -IVs: 9 HP / 9 Atk / 9 Def / 9 SpA / 9 SpD / 9 Spe - -Zubat -Level: 30 -IVs: 9 HP / 9 Atk / 9 Def / 9 SpA / 9 SpD / 9 Spe - -Camerupt -Level: 33 -IVs: 9 HP / 9 Atk / 9 Def / 9 SpA / 9 SpD / 9 Spe - -=== TRAINER_DARCY === -Name: DARCY -Class: Cooltrainer -Pic: Cooltrainer F -Gender: Female -Music: Cool -Items: Hyper Potion -Double Battle: No -AI: Basic Trainer - -Pelipper -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Camerupt -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_MAXIE_MOSSDEEP === -Name: MAXIE -Class: Magma Leader -Pic: Magma Leader Maxie -Gender: Male -Music: Magma -Double Battle: No -AI: Basic Trainer - -Mightyena -Level: 42 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -Crobat -Level: 43 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -Camerupt -Level: 44 -IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe - -=== TRAINER_PETE === -Name: PETE -Class: Swimmer M -Pic: Swimmer M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Tentacool -Level: 15 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_ISABELLE === -Name: ISABELLE -Class: Swimmer F -Pic: Swimmer F -Gender: Female -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Marill -Level: 15 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_ANDRES_1 === -Name: ANDRES -Class: Ruin Maniac -Pic: Ruin Maniac -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Sandshrew -Level: 25 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -Sandshrew -Level: 25 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -=== TRAINER_JOSUE === -Name: JOSUE -Class: Bird Keeper -Pic: Bird Keeper -Gender: Male -Music: Cool -Double Battle: No -AI: Check Bad Move - -Taillow -Level: 25 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -Wingull -Level: 25 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -=== TRAINER_CAMRON === -Name: CAMRON -Class: Triathlete -Pic: Swimming Triathlete M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Staryu -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_CORY_1 === -Name: CORY -Class: Sailor -Pic: Sailor -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Wingull -Level: 24 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Machop -Level: 24 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Tentacool -Level: 24 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_CAROLINA === -Name: CAROLINA -Class: Cooltrainer -Pic: Cooltrainer F -Gender: Female -Music: Cool -Items: Hyper Potion -Double Battle: No -AI: Basic Trainer - -Manectric -Level: 24 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -Swellow -Level: 24 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -Manectric -Level: 24 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -=== TRAINER_ELIJAH === -Name: ELIJAH -Class: Bird Keeper -Pic: Bird Keeper -Gender: Male -Music: Cool -Double Battle: No -AI: Check Bad Move - -Skarmory -Level: 25 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Skarmory -Level: 25 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_CELIA === -Name: CELIA -Class: Picnicker -Pic: Picnicker -Gender: Female -Music: Girl -Double Battle: No -AI: Check Bad Move - -Marill -Level: 22 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Lombre -Level: 22 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_BRYAN === -Name: BRYAN -Class: Ruin Maniac -Pic: Ruin Maniac -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Sandshrew -Level: 22 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Sandslash -Level: 22 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_BRANDEN === -Name: BRANDEN -Class: Camper -Pic: Camper -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Taillow -Level: 22 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Nuzleaf -Level: 22 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_BRYANT === -Name: BRYANT -Class: Kindler -Pic: Kindler -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Numel -Level: 18 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Slugma -Level: 18 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_SHAYLA === -Name: SHAYLA -Class: Aroma Lady -Pic: Aroma Lady -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Shroomish -Level: 18 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Roselia -Level: 18 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_KYRA === -Name: KYRA -Class: Triathlete -Pic: Running Triathlete F -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Doduo -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Dodrio -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_JAIDEN === -Name: JAIDEN -Class: Ninja Boy -Pic: Ninja Boy -Gender: Male -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Ninjask -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Gulpin -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_ALIX === -Name: ALIX -Class: Psychic -Pic: Psychic F -Gender: Female -Music: Intense -Double Battle: No -AI: Check Bad Move - -Kadabra -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Kirlia -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_HELENE === -Name: HELENE -Class: Battle Girl -Pic: Battle Girl -Gender: Female -Music: Intense -Double Battle: No -AI: Check Bad Move - -Meditite -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Makuhita -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_MARLENE === -Name: MARLENE -Class: Psychic -Pic: Psychic F -Gender: Female -Music: Intense -Double Battle: No -AI: Check Bad Move - -Meditite -Level: 18 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Spoink -Level: 18 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_DEVAN === -Name: DEVAN -Class: Hiker -Pic: Hiker -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Geodude -Level: 8 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Geodude -Level: 8 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_JOHNSON === -Name: JOHNSON -Class: Youngster -Pic: Youngster -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Shroomish -Level: 8 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Lotad -Level: 8 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_MELINA === -Name: MELINA -Class: Triathlete -Pic: Running Triathlete F -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Doduo -Level: 17 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_BRANDI === -Name: BRANDI -Class: Psychic -Pic: Psychic F -Gender: Female -Music: Intense -Double Battle: No -AI: Check Bad Move - -Ralts -Level: 17 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_AISHA === -Name: AISHA -Class: Battle Girl -Pic: Battle Girl -Gender: Female -Music: Intense -Double Battle: No -AI: Check Bad Move - -Meditite -Level: 17 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_MAKAYLA === -Name: MAKAYLA -Class: Expert -Pic: Expert F -Gender: Female -Music: Intense -Items: Hyper Potion -Double Battle: No -AI: Basic Trainer - -Roselia -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Medicham -Level: 33 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_FABIAN === -Name: FABIAN -Class: Guitarist -Pic: Guitarist -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Manectric -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_DAYTON === -Name: DAYTON -Class: Kindler -Pic: Kindler -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Slugma -Level: 25 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Numel -Level: 25 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_RACHEL === -Name: RACHEL -Class: Parasol Lady -Pic: Parasol Lady -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Goldeen -Level: 26 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_LEONEL === -Name: LEONEL -Class: Cooltrainer -Pic: Cooltrainer M -Gender: Male -Music: Cool -Items: Hyper Potion -Double Battle: No -AI: Basic Trainer - -Manectric -Level: 30 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Thunder -- Quick Attack -- Thunder Wave - -=== TRAINER_CALLIE === -Name: CALLIE -Class: Battle Girl -Pic: Battle Girl -Gender: Female -Music: Intense -Double Battle: No -AI: Check Bad Move - -Meditite -Level: 28 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Makuhita -Level: 28 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_CALE === -Name: CALE -Class: Bug Maniac -Pic: Bug Maniac -Gender: Male -Music: Suspicious -Double Battle: No -AI: Check Bad Move - -Dustox -Level: 29 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Beautifly -Level: 29 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_MYLES === -Name: MYLES -Class: Pkmn Breeder -Pic: Pokemon Breeder M -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Makuhita -Level: 25 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Wingull -Level: 25 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Tropius -Level: 25 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Zigzagoon -Level: 25 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Electrike -Level: 25 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Numel -Level: 25 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_PAT === -Name: PAT -Class: Pkmn Breeder -Pic: Pokemon Breeder F -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Poochyena -Level: 25 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Shroomish -Level: 25 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Electrike -Level: 25 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Marill -Level: 25 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Sandshrew -Level: 25 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Gulpin -Level: 25 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_CRISTIN_1 === -Name: CRISTIN -Class: Cooltrainer -Pic: Cooltrainer F -Gender: Female -Music: Cool -Items: Hyper Potion -Double Battle: No -AI: Basic Trainer - -Loudred -Level: 29 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -Vigoroth -Level: 29 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_MAY_RUSTBORO_TREECKO === -Name: MAY -Class: Rival -Pic: May -Gender: Female -Music: Female -Double Battle: No -AI: Basic Trainer - -Lotad -Level: 13 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Torchic -Level: 15 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -=== TRAINER_MAY_RUSTBORO_TORCHIC === -Name: MAY -Class: Rival -Pic: May -Gender: Female -Music: Female -Double Battle: No -AI: Basic Trainer - -Torkoal -Level: 13 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Mudkip -Level: 15 -IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe - -=== TRAINER_ROXANNE_2 === -Name: ROXANNE -Class: Leader -Pic: Leader Roxanne -Gender: Female -Music: Female -Items: Full Restore / Full Restore / Full Restore -Double Battle: Yes -AI: Basic Trainer - -Golem -Level: 32 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Protect -- Rollout -- Magnitude -- Explosion - -Kabuto @ Sitrus Berry -Level: 35 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Swords Dance -- Ice Beam -- Surf -- Rock Slide - -Onix -Level: 35 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Iron Tail -- Explosion -- Roar -- Rock Slide - -Nosepass @ Sitrus Berry -Level: 37 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Double Team -- Explosion -- Protect -- Rock Slide - -=== TRAINER_ROXANNE_3 === -Name: ROXANNE -Class: Leader -Pic: Leader Roxanne -Gender: Female -Music: Female -Items: Full Restore / Full Restore / Full Restore -Double Battle: Yes -AI: Basic Trainer - -Omanyte -Level: 37 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Protect -- Ice Beam -- Rock Slide -- Surf - -Golem -Level: 37 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Protect -- Rollout -- Magnitude -- Explosion - -Kabutops @ Sitrus Berry -Level: 40 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Swords Dance -- Ice Beam -- Surf -- Rock Slide - -Onix -Level: 40 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Iron Tail -- Explosion -- Roar -- Rock Slide - -Nosepass @ Sitrus Berry -Level: 42 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Double Team -- Explosion -- Protect -- Rock Slide - -=== TRAINER_ROXANNE_4 === -Name: ROXANNE -Class: Leader -Pic: Leader Roxanne -Gender: Female -Music: Female -Items: Full Restore / Full Restore / Full Restore -Double Battle: Yes -AI: Basic Trainer - -Omastar -Level: 42 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Protect -- Ice Beam -- Rock Slide -- Surf - -Golem -Level: 42 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Protect -- Rollout -- Earthquake -- Explosion - -Kabutops @ Sitrus Berry -Level: 45 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Swords Dance -- Ice Beam -- Surf -- Rock Slide - -Onix -Level: 45 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Iron Tail -- Explosion -- Roar -- Rock Slide - -Nosepass @ Sitrus Berry -Level: 47 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Double Team -- Explosion -- Protect -- Rock Slide - -=== TRAINER_ROXANNE_5 === -Name: ROXANNE -Class: Leader -Pic: Leader Roxanne -Gender: Female -Music: Female -Items: Full Restore / Full Restore / Full Restore -Double Battle: Yes -AI: Basic Trainer - -Aerodactyl -Level: 47 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Rock Slide -- Hyper Beam -- Supersonic -- Protect - -Golem -Level: 47 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Focus Punch -- Rollout -- Earthquake -- Explosion - -Omastar -Level: 47 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Protect -- Ice Beam -- Rock Slide -- Surf - -Kabutops @ Sitrus Berry -Level: 50 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Swords Dance -- Ice Beam -- Surf -- Rock Slide - -Steelix -Level: 50 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Iron Tail -- Explosion -- Roar -- Rock Slide - -Nosepass @ Sitrus Berry -Level: 52 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Double Team -- Explosion -- Protect -- Rock Slide - -=== TRAINER_BRAWLY_2 === -Name: BRAWLY -Class: Leader -Pic: Leader Brawly -Gender: Male -Music: Male -Items: Full Restore / Full Restore / Full Restore -Double Battle: Yes -AI: Basic Trainer - -Machamp @ Sitrus Berry -Level: 33 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Karate Chop -- Rock Slide -- Focus Punch -- Bulk Up - -Meditite -Level: 33 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Psychic -- Light Screen -- Reflect -- Focus Punch - -Hitmontop -Level: 35 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Pursuit -- Counter -- Protect -- Triple Kick - -Hariyama @ Sitrus Berry -Level: 37 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Fake Out -- Focus Punch -- Belly Drum -- Earthquake - -=== TRAINER_BRAWLY_3 === -Name: BRAWLY -Class: Leader -Pic: Leader Brawly -Gender: Male -Music: Male -Items: Full Restore / Full Restore / Full Restore -Double Battle: Yes -AI: Basic Trainer - -Machamp @ Sitrus Berry -Level: 38 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Karate Chop -- Rock Slide -- Focus Punch -- Bulk Up - -Medicham -Level: 38 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Psychic -- Light Screen -- Reflect -- Focus Punch - -Hitmontop -Level: 40 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Pursuit -- Counter -- Protect -- Triple Kick - -Hariyama @ Sitrus Berry -Level: 42 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Fake Out -- Focus Punch -- Belly Drum -- Earthquake - -=== TRAINER_BRAWLY_4 === -Name: BRAWLY -Class: Leader -Pic: Leader Brawly -Gender: Male -Music: Male -Items: Full Restore / Full Restore / Full Restore -Double Battle: Yes -AI: Basic Trainer - -Hitmonchan -Level: 40 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Sky Uppercut -- Protect -- Fire Punch -- Ice Punch - -Machamp @ Sitrus Berry -Level: 43 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Karate Chop -- Rock Slide -- Focus Punch -- Bulk Up - -Medicham -Level: 43 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Focus Punch -- Light Screen -- Reflect -- Psychic - -Hitmontop -Level: 45 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Pursuit -- Counter -- Protect -- Triple Kick - -Hariyama @ Sitrus Berry -Level: 47 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Fake Out -- Focus Punch -- Belly Drum -- Earthquake - -=== TRAINER_BRAWLY_5 === -Name: BRAWLY -Class: Leader -Pic: Leader Brawly -Gender: Male -Music: Male -Items: Full Restore / Full Restore / Full Restore -Double Battle: Yes -AI: Basic Trainer - -Hitmonlee -Level: 46 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Mega Kick -- Focus Punch -- Earthquake -- Bulk Up - -Hitmonchan -Level: 46 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Sky Uppercut -- Protect -- Fire Punch -- Ice Punch - -Machamp @ Sitrus Berry -Level: 48 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Cross Chop -- Rock Slide -- Focus Punch -- Bulk Up - -Medicham -Level: 48 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Focus Punch -- Light Screen -- Reflect -- Psychic - -Hitmontop -Level: 50 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Pursuit -- Counter -- Protect -- Triple Kick - -Hariyama @ Sitrus Berry -Level: 52 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Fake Out -- Focus Punch -- Belly Drum -- Earthquake - -=== TRAINER_WATTSON_2 === -Name: WATTSON -Class: Leader -Pic: Leader Wattson -Gender: Male -Music: Male -Items: Full Restore / Full Restore / Full Restore -Double Battle: Yes -AI: Basic Trainer - -Mareep -Level: 36 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Thunder -- Protect -- Thunder Wave -- Light Screen - -Electrode -Level: 36 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Rollout -- Thunder -- Explosion -- Rain Dance - -Magneton @ Sitrus Berry -Level: 38 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Supersonic -- Protect -- Thunder -- Rain Dance - -Manectric @ Sitrus Berry -Level: 40 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Bite -- Thunder Wave -- Thunder -- Protect - -=== TRAINER_WATTSON_3 === -Name: WATTSON -Class: Leader -Pic: Leader Wattson -Gender: Male -Music: Male -Items: Full Restore / Full Restore / Full Restore -Double Battle: Yes -AI: Basic Trainer - -Pikachu -Level: 39 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Thunder -- Slam -- Rain Dance -- Shock Wave - -Flaaffy -Level: 41 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Thunder -- Protect -- Thunder Wave -- Light Screen - -Electrode -Level: 41 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Rollout -- Thunder -- Explosion -- Rain Dance - -Magneton @ Sitrus Berry -Level: 43 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Supersonic -- Protect -- Thunder -- Rain Dance - -Manectric @ Sitrus Berry -Level: 45 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Bite -- Thunder Wave -- Thunder -- Protect - -=== TRAINER_WATTSON_4 === -Name: WATTSON -Class: Leader -Pic: Leader Wattson -Gender: Male -Music: Male -Items: Full Restore / Full Restore / Full Restore -Double Battle: Yes -AI: Basic Trainer - -Raichu -Level: 44 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Thunder -- Slam -- Rain Dance -- Protect - -Ampharos -Level: 46 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Thunder -- Protect -- Thunder Wave -- Light Screen - -Electrode -Level: 46 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Rollout -- Thunder -- Explosion -- Rain Dance - -Magneton @ Sitrus Berry -Level: 48 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Supersonic -- Protect -- Thunder -- Rain Dance - -Manectric @ Sitrus Berry -Level: 50 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Bite -- Thunder Wave -- Thunder -- Protect - -=== TRAINER_WATTSON_5 === -Name: WATTSON -Class: Leader -Pic: Leader Wattson -Gender: Male -Music: Male -Items: Full Restore / Full Restore / Full Restore -Double Battle: Yes -AI: Basic Trainer - -Electabuzz -Level: 50 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Swift -- Focus Punch -- Thunder Punch -- Light Screen - -Raichu -Level: 51 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Thunder -- Slam -- Rain Dance -- Protect - -Ampharos -Level: 51 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Thunder -- Protect -- Thunder Wave -- Light Screen - -Electrode -Level: 53 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Rollout -- Thunder -- Explosion -- Rain Dance - -Magneton @ Sitrus Berry -Level: 53 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Supersonic -- Protect -- Thunder -- Rain Dance - -Manectric @ Sitrus Berry -Level: 55 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Bite -- Thunder Wave -- Thunder -- Protect - -=== TRAINER_FLANNERY_2 === -Name: FLANNERY -Class: Leader -Pic: Leader Flannery -Gender: Female -Music: Female -Items: Full Restore / Full Restore / Full Restore -Double Battle: Yes -AI: Basic Trainer - -Magcargo @ White Herb -Level: 38 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Overheat -- Attract -- Light Screen -- Rock Slide - -Ponyta -Level: 36 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Flamethrower -- Attract -- Solar Beam -- Bounce - -Camerupt @ White Herb -Level: 38 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Overheat -- Sunny Day -- Earthquake -- Attract - -Torkoal @ White Herb -Level: 40 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Overheat -- Sunny Day -- Explosion -- Attract - -=== TRAINER_FLANNERY_3 === -Name: FLANNERY -Class: Leader -Pic: Leader Flannery -Gender: Female -Music: Female -Items: Full Restore / Full Restore / Full Restore -Double Battle: Yes -AI: Basic Trainer - -Growlithe -Level: 41 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Helping Hand -- Flamethrower -- Roar -- Sunny Day - -Magcargo @ White Herb -Level: 43 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Overheat -- Attract -- Light Screen -- Rock Slide - -Ponyta -Level: 41 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Flamethrower -- Attract -- Solar Beam -- Bounce - -Camerupt @ White Herb -Level: 43 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Overheat -- Sunny Day -- Earthquake -- Attract - -Torkoal @ White Herb -Level: 45 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Overheat -- Sunny Day -- Explosion -- Attract - -=== TRAINER_FLANNERY_4 === -Name: FLANNERY -Class: Leader -Pic: Leader Flannery -Gender: Female -Music: Female -Items: Full Restore / Full Restore / Full Restore -Double Battle: Yes -AI: Basic Trainer - -Houndour -Level: 46 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Roar -- Solar Beam -- Taunt -- Sunny Day - -Growlithe -Level: 46 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Helping Hand -- Flamethrower -- Sunny Day -- Roar - -Magcargo @ White Herb -Level: 48 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Overheat -- Attract -- Light Screen -- Rock Slide - -Rapidash -Level: 46 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Flamethrower -- Attract -- Solar Beam -- Bounce - -Camerupt @ White Herb -Level: 48 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Overheat -- Sunny Day -- Earthquake -- Attract - -Torkoal @ White Herb -Level: 50 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Overheat -- Sunny Day -- Explosion -- Attract - -=== TRAINER_FLANNERY_5 === -Name: FLANNERY -Class: Leader -Pic: Leader Flannery -Gender: Female -Music: Female -Items: Full Restore / Full Restore / Full Restore -Double Battle: Yes -AI: Basic Trainer - -Arcanine -Level: 51 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Helping Hand -- Flamethrower -- Sunny Day -- Roar - -Magcargo @ White Herb -Level: 53 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Overheat -- Attract -- Light Screen -- Rock Slide - -Houndoom -Level: 51 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Roar -- Solar Beam -- Taunt -- Sunny Day - -Rapidash -Level: 51 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Flamethrower -- Attract -- Solar Beam -- Bounce - -Camerupt @ White Herb -Level: 53 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Overheat -- Sunny Day -- Earthquake -- Attract - -Torkoal @ White Herb -Level: 55 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Overheat -- Sunny Day -- Explosion -- Attract - -=== TRAINER_NORMAN_2 === -Name: NORMAN -Class: Leader -Pic: Leader Norman -Gender: Male -Music: Male -Items: Full Restore / Full Restore / Full Restore -Double Battle: Yes -AI: Basic Trainer - -Chansey -Level: 42 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Light Screen -- Sing -- Skill Swap -- Focus Punch - -Slaking @ Sitrus Berry -Level: 42 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Blizzard -- Shadow Ball -- Double Edge -- Fire Blast - -Spinda -Level: 43 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Teeter Dance -- Skill Swap -- Facade -- Hypnosis - -Slaking @ Sitrus Berry -Level: 45 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Hyper Beam -- Flamethrower -- Thunderbolt -- Shadow Ball - -=== TRAINER_NORMAN_3 === -Name: NORMAN -Class: Leader -Pic: Leader Norman -Gender: Male -Music: Male -Items: Full Restore / Full Restore / Full Restore -Double Battle: Yes -AI: Basic Trainer - -Slaking @ Sitrus Berry -Level: 47 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Blizzard -- Shadow Ball -- Double Edge -- Fire Blast - -Chansey -Level: 47 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Light Screen -- Sing -- Skill Swap -- Focus Punch - -Kangaskhan -Level: 45 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Fake Out -- Dizzy Punch -- Endure -- Reversal - -Spinda -Level: 48 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Teeter Dance -- Skill Swap -- Facade -- Hypnosis - -Slaking @ Sitrus Berry -Level: 50 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Hyper Beam -- Flamethrower -- Thunderbolt -- Shadow Ball - -=== TRAINER_NORMAN_4 === -Name: NORMAN -Class: Leader -Pic: Leader Norman -Gender: Male -Music: Male -Items: Full Restore / Full Restore / Full Restore -Double Battle: Yes -AI: Basic Trainer - -Slaking @ Sitrus Berry -Level: 52 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Blizzard -- Shadow Ball -- Double Edge -- Fire Blast - -Blissey -Level: 52 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Light Screen -- Sing -- Skill Swap -- Focus Punch - -Kangaskhan -Level: 50 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Fake Out -- Dizzy Punch -- Endure -- Reversal - -Spinda -Level: 53 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Teeter Dance -- Skill Swap -- Facade -- Hypnosis - -Slaking @ Sitrus Berry -Level: 55 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Hyper Beam -- Flamethrower -- Thunderbolt -- Shadow Ball - -=== TRAINER_NORMAN_5 === -Name: NORMAN -Class: Leader -Pic: Leader Norman -Gender: Male -Music: Male -Items: Full Restore / Full Restore / Full Restore -Double Battle: Yes -AI: Basic Trainer - -Slaking @ Sitrus Berry -Level: 57 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Blizzard -- Shadow Ball -- Double Edge -- Fire Blast - -Blissey -Level: 57 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Protect -- Sing -- Skill Swap -- Focus Punch - -Kangaskhan -Level: 55 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Fake Out -- Dizzy Punch -- Endure -- Reversal - -Tauros -Level: 57 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Take Down -- Protect -- Fire Blast -- Earthquake - -Spinda -Level: 58 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Teeter Dance -- Skill Swap -- Facade -- Hypnosis - -Slaking @ Sitrus Berry -Level: 60 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Hyper Beam -- Flamethrower -- Thunderbolt -- Shadow Ball - -=== TRAINER_WINONA_2 === -Name: WINONA -Class: Leader -Pic: Leader Winona -Gender: Female -Music: Female -Items: Full Restore / Full Restore / Full Restore -Double Battle: Yes -AI: Basic Trainer / Risky - -Dratini @ Sitrus Berry -Level: 40 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Thunder Wave -- Thunderbolt -- Protect -- Ice Beam - -Tropius -Level: 38 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Sunny Day -- Aerial Ace -- Solar Beam -- Earthquake - -Pelipper -Level: 41 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Surf -- Supersonic -- Protect -- Aerial Ace - -Skarmory -Level: 43 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Whirlwind -- Spikes -- Steel Wing -- Aerial Ace - -Altaria @ Chesto Berry -Level: 45 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Aerial Ace -- Rest -- Dragon Dance -- Earthquake - -=== TRAINER_WINONA_3 === -Name: WINONA -Class: Leader -Pic: Leader Winona -Gender: Female -Music: Female -Items: Full Restore / Full Restore / Full Restore -Double Battle: Yes -AI: Basic Trainer / Risky - -Hoothoot -Level: 43 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Hypnosis -- Psychic -- Reflect -- Dream Eater - -Tropius -Level: 43 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Sunny Day -- Aerial Ace -- Solar Beam -- Earthquake - -Dragonair @ Sitrus Berry -Level: 45 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Thunder Wave -- Thunderbolt -- Protect -- Ice Beam - -Pelipper -Level: 46 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Surf -- Supersonic -- Protect -- Aerial Ace - -Skarmory -Level: 48 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Whirlwind -- Spikes -- Steel Wing -- Aerial Ace - -Altaria @ Chesto Berry -Level: 50 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Aerial Ace -- Rest -- Dragon Dance -- Earthquake - -=== TRAINER_WINONA_4 === -Name: WINONA -Class: Leader -Pic: Leader Winona -Gender: Female -Music: Female -Items: Full Restore / Full Restore / Full Restore -Double Battle: Yes -AI: Basic Trainer / Risky - -Noctowl -Level: 48 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Hypnosis -- Psychic -- Reflect -- Dream Eater - -Tropius -Level: 49 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Sunny Day -- Aerial Ace -- Solar Beam -- Earthquake - -Dragonair @ Sitrus Berry -Level: 50 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Thunder Wave -- Thunderbolt -- Protect -- Ice Beam - -Pelipper -Level: 51 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Surf -- Supersonic -- Protect -- Aerial Ace - -Skarmory -Level: 53 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Whirlwind -- Spikes -- Steel Wing -- Aerial Ace - -Altaria @ Chesto Berry -Level: 55 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Aerial Ace -- Rest -- Dragon Dance -- Earthquake - -=== TRAINER_WINONA_5 === -Name: WINONA -Class: Leader -Pic: Leader Winona -Gender: Female -Music: Female -Items: Full Restore / Full Restore / Full Restore -Double Battle: Yes -AI: Basic Trainer / Risky - -Noctowl -Level: 53 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Hypnosis -- Psychic -- Reflect -- Dream Eater - -Tropius -Level: 54 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Sunny Day -- Aerial Ace -- Solar Beam -- Earthquake - -Pelipper -Level: 55 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Surf -- Supersonic -- Protect -- Aerial Ace - -Dragonite @ Sitrus Berry -Level: 55 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Hyper Beam -- Thunderbolt -- Earthquake -- Ice Beam - -Skarmory -Level: 58 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Whirlwind -- Spikes -- Steel Wing -- Aerial Ace - -Altaria @ Chesto Berry -Level: 60 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Sky Attack -- Rest -- Dragon Dance -- Earthquake - -=== TRAINER_TATE_AND_LIZA_2 === -Name: TATE&LIZA -Class: Leader -Pic: Leader Tate And Liza -Gender: Male -Music: Female -Items: Full Restore / Full Restore / Full Restore -Double Battle: Yes -AI: Basic Trainer - -Slowpoke -Level: 48 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Yawn -- Psychic -- Calm Mind -- Protect - -Claydol -Level: 49 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Earthquake -- Ancient Power -- Psychic -- Light Screen - -Xatu @ Chesto Berry -Level: 49 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Psychic -- Rest -- Confuse Ray -- Calm Mind - -Lunatone @ Chesto Berry -Level: 50 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Earthquake -- Psychic -- Rest -- Calm Mind - -Solrock @ Sitrus Berry -Level: 50 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Sunny Day -- Solar Beam -- Psychic -- Flamethrower - -=== TRAINER_TATE_AND_LIZA_3 === -Name: TATE&LIZA -Class: Leader -Pic: Leader Tate And Liza -Gender: Male -Music: Female -Items: Full Restore / Full Restore / Full Restore -Double Battle: Yes -AI: Basic Trainer - -Drowzee -Level: 53 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Hypnosis -- Dream Eater -- Headbutt -- Protect - -Slowpoke -Level: 53 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Yawn -- Psychic -- Calm Mind -- Protect - -Claydol -Level: 54 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Earthquake -- Explosion -- Psychic -- Light Screen - -Xatu @ Chesto Berry -Level: 54 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Psychic -- Rest -- Confuse Ray -- Calm Mind - -Lunatone @ Chesto Berry -Level: 55 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Earthquake -- Psychic -- Rest -- Calm Mind - -Solrock @ Sitrus Berry -Level: 55 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Sunny Day -- Solar Beam -- Psychic -- Flamethrower - -=== TRAINER_TATE_AND_LIZA_4 === -Name: TATE&LIZA -Class: Leader -Pic: Leader Tate And Liza -Gender: Male -Music: Female -Items: Full Restore / Full Restore / Full Restore -Double Battle: Yes -AI: Basic Trainer - -Hypno -Level: 58 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Hypnosis -- Dream Eater -- Headbutt -- Protect - -Claydol -Level: 59 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Earthquake -- Explosion -- Psychic -- Light Screen - -Slowpoke -Level: 58 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Yawn -- Psychic -- Calm Mind -- Protect - -Xatu @ Chesto Berry -Level: 59 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Psychic -- Rest -- Confuse Ray -- Calm Mind - -Lunatone @ Chesto Berry -Level: 60 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Earthquake -- Psychic -- Rest -- Calm Mind - -Solrock @ Sitrus Berry -Level: 60 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Sunny Day -- Solar Beam -- Psychic -- Flamethrower - -=== TRAINER_TATE_AND_LIZA_5 === -Name: TATE&LIZA -Class: Leader -Pic: Leader Tate And Liza -Gender: Male -Music: Female -Items: Full Restore / Full Restore / Full Restore -Double Battle: Yes -AI: Basic Trainer - -Hypno -Level: 63 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Hypnosis -- Dream Eater -- Headbutt -- Protect - -Claydol -Level: 64 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Earthquake -- Explosion -- Psychic -- Light Screen - -Slowking -Level: 63 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Yawn -- Psychic -- Calm Mind -- Protect - -Xatu @ Chesto Berry -Level: 64 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Psychic -- Rest -- Confuse Ray -- Calm Mind - -Lunatone @ Chesto Berry -Level: 65 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Earthquake -- Psychic -- Rest -- Calm Mind - -Solrock @ Sitrus Berry -Level: 65 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Sunny Day -- Solar Beam -- Psychic -- Flamethrower - -=== TRAINER_JUAN_2 === -Name: JUAN -Class: Leader -Pic: Leader Juan -Gender: Male -Music: Male -Items: Full Restore / Full Restore / Full Restore -Double Battle: Yes -AI: Basic Trainer - -Poliwag -Level: 46 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Hypnosis -- Rain Dance -- Protect -- Hydro Pump - -Whiscash -Level: 46 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Rain Dance -- Water Pulse -- Double Team -- Fissure - -Walrein -Level: 48 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Water Pulse -- Body Slam -- Protect -- Ice Beam - -Crawdaunt @ Chesto Berry -Level: 48 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Rest -- Crabhammer -- Taunt -- Double Team - -Kingdra @ Chesto Berry -Level: 51 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Water Pulse -- Double Team -- Ice Beam -- Rest - -=== TRAINER_JUAN_3 === -Name: JUAN -Class: Leader -Pic: Leader Juan -Gender: Male -Music: Male -Items: Full Restore / Full Restore / Full Restore -Double Battle: Yes -AI: Basic Trainer - -Poliwhirl -Level: 50 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Hypnosis -- Rain Dance -- Protect -- Hydro Pump - -Whiscash -Level: 51 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Rain Dance -- Water Pulse -- Double Team -- Fissure - -Walrein -Level: 53 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Water Pulse -- Body Slam -- Protect -- Ice Beam - -Crawdaunt @ Chesto Berry -Level: 53 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Rest -- Guillotine -- Taunt -- Double Team - -Kingdra @ Chesto Berry -Level: 56 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Water Pulse -- Double Team -- Ice Beam -- Rest - -=== TRAINER_JUAN_4 === -Name: JUAN -Class: Leader -Pic: Leader Juan -Gender: Male -Music: Male -Items: Full Restore / Full Restore / Full Restore -Double Battle: Yes -AI: Basic Trainer - -Lapras -Level: 56 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Hydro Pump -- Perish Song -- Ice Beam -- Confuse Ray - -Whiscash -Level: 58 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Rain Dance -- Water Pulse -- Double Team -- Fissure - -Poliwhirl -Level: 56 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Hypnosis -- Rain Dance -- Protect -- Hydro Pump - -Walrein -Level: 58 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Water Pulse -- Body Slam -- Protect -- Ice Beam - -Crawdaunt @ Chesto Berry -Level: 58 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Rest -- Guillotine -- Taunt -- Double Team - -Kingdra @ Chesto Berry -Level: 61 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Water Pulse -- Double Team -- Ice Beam -- Rest - -=== TRAINER_JUAN_5 === -Name: JUAN -Class: Leader -Pic: Leader Juan -Gender: Male -Music: Male -Items: Full Restore / Full Restore / Full Restore -Double Battle: Yes -AI: Basic Trainer - -Lapras -Level: 61 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Hydro Pump -- Perish Song -- Ice Beam -- Confuse Ray - -Whiscash -Level: 63 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Rain Dance -- Water Pulse -- Double Team -- Fissure - -Politoed -Level: 61 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Hypnosis -- Rain Dance -- Hydro Pump -- Perish Song - -Walrein -Level: 63 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Water Pulse -- Body Slam -- Protect -- Sheer Cold - -Crawdaunt @ Chesto Berry -Level: 63 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Rest -- Guillotine -- Taunt -- Double Team - -Kingdra @ Chesto Berry -Level: 66 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Water Pulse -- Double Team -- Ice Beam -- Rest - -=== TRAINER_ANGELO === -Name: ANGELO -Class: Bug Maniac -Pic: Bug Maniac -Gender: Male -Music: Suspicious -Double Battle: No -AI: Basic Trainer - -Illumise -Level: 17 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Shock Wave -- Quick Attack -- Charm - -Volbeat -Level: 17 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe -- Shock Wave -- Quick Attack -- Confuse Ray - -=== TRAINER_DARIUS === -Name: DARIUS -Class: Bird Keeper -Pic: Bird Keeper -Gender: Male -Music: Cool -Double Battle: No -AI: Basic Trainer - -Tropius -Level: 30 -IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe - -=== TRAINER_STEVEN === -Name: STEVEN -Class: Rival -Pic: Steven -Gender: Male -Music: Male -Items: Full Restore / Full Restore / Full Restore / Full Restore -Double Battle: No -AI: Basic Trainer - -Skarmory -Level: 77 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Toxic -- Aerial Ace -- Spikes -- Steel Wing - -Claydol -Level: 75 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Reflect -- Light Screen -- Ancient Power -- Earthquake - -Aggron -Level: 76 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Thunder -- Earthquake -- Solar Beam -- Dragon Claw - -Cradily -Level: 76 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Giga Drain -- Ancient Power -- Ingrain -- Confuse Ray - -Armaldo -Level: 76 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Water Pulse -- Ancient Power -- Aerial Ace -- Slash - -Metagross @ Sitrus Berry -Level: 78 -IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe -- Earthquake -- Psychic -- Meteor Mash -- Shadow Ball - -=== TRAINER_ANABEL === -Name: ANABEL -Class: Salon Maiden -Pic: Salon Maiden Anabel -Gender: Female -Music: Male -Double Battle: No -AI: Basic Trainer - -Beldum -Level: 5 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_TUCKER === -Name: TUCKER -Class: Dome Ace -Pic: Dome Ace Tucker -Gender: Male -Music: Male -Double Battle: No -AI: Basic Trainer - -Beldum -Level: 5 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_SPENSER === -Name: SPENSER -Class: Palace Maven -Pic: Palace Maven Spenser -Gender: Male -Music: Male -Double Battle: No -AI: Basic Trainer - -Beldum -Level: 5 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_GRETA === -Name: GRETA -Class: Arena Tycoon -Pic: Arena Tycoon Greta -Gender: Female -Music: Male -Double Battle: No -AI: Basic Trainer - -Beldum -Level: 5 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_NOLAND === -Name: NOLAND -Class: Factory Head -Pic: Factory Head Noland -Gender: Male -Music: Male -Double Battle: No -AI: Basic Trainer - -Beldum -Level: 5 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_LUCY === -Name: LUCY -Class: Pike Queen -Pic: Pike Queen Lucy -Gender: Female -Music: Male -Double Battle: No -AI: Basic Trainer - -Beldum -Level: 5 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_BRANDON === -Name: BRANDON -Class: Pyramid King -Pic: Pyramid King Brandon -Gender: Male -Music: Male -Double Battle: No -AI: Basic Trainer - -Beldum -Level: 5 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_ANDRES_2 === -Name: ANDRES -Class: Ruin Maniac -Pic: Ruin Maniac -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Sandshrew -Level: 31 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Sandshrew -Level: 31 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_ANDRES_3 === -Name: ANDRES -Class: Ruin Maniac -Pic: Ruin Maniac -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Nosepass -Level: 33 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Sandshrew -Level: 33 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Sandshrew -Level: 33 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_ANDRES_4 === -Name: ANDRES -Class: Ruin Maniac -Pic: Ruin Maniac -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Nosepass -Level: 35 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Sandshrew -Level: 35 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Sandshrew -Level: 35 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_ANDRES_5 === -Name: ANDRES -Class: Ruin Maniac -Pic: Ruin Maniac -Gender: Male -Music: Hiker -Double Battle: No -AI: Check Bad Move - -Nosepass -Level: 37 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Sandslash -Level: 37 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Sandslash -Level: 37 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_CORY_2 === -Name: CORY -Class: Sailor -Pic: Sailor -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Wingull -Level: 30 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Machop -Level: 30 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Tentacool -Level: 30 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_CORY_3 === -Name: CORY -Class: Sailor -Pic: Sailor -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Pelipper -Level: 32 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Machop -Level: 32 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Tentacool -Level: 32 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_CORY_4 === -Name: CORY -Class: Sailor -Pic: Sailor -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Pelipper -Level: 34 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Machop -Level: 34 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Tentacruel -Level: 34 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_CORY_5 === -Name: CORY -Class: Sailor -Pic: Sailor -Gender: Male -Music: Male -Double Battle: No -AI: Check Bad Move - -Pelipper -Level: 36 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Machoke -Level: 36 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Tentacruel -Level: 36 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_PABLO_2 === -Name: PABLO -Class: Triathlete -Pic: Swimming Triathlete M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Staryu -Level: 37 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Staryu -Level: 37 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_PABLO_3 === -Name: PABLO -Class: Triathlete -Pic: Swimming Triathlete M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Wingull -Level: 39 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Staryu -Level: 39 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Staryu -Level: 39 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_PABLO_4 === -Name: PABLO -Class: Triathlete -Pic: Swimming Triathlete M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Pelipper -Level: 41 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Staryu -Level: 41 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Staryu -Level: 41 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_PABLO_5 === -Name: PABLO -Class: Triathlete -Pic: Swimming Triathlete M -Gender: Male -Music: Swimmer -Double Battle: No -AI: Check Bad Move - -Pelipper -Level: 43 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Starmie -Level: 43 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Starmie -Level: 43 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_KOJI_2 === -Name: KOJI -Class: Black Belt -Pic: Black Belt -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Machoke -Level: 37 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Machoke -Level: 37 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_KOJI_3 === -Name: KOJI -Class: Black Belt -Pic: Black Belt -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Makuhita -Level: 39 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Machoke -Level: 39 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Machoke -Level: 39 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_KOJI_4 === -Name: KOJI -Class: Black Belt -Pic: Black Belt -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Hariyama -Level: 41 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Machoke -Level: 41 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Machoke -Level: 41 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_KOJI_5 === -Name: KOJI -Class: Black Belt -Pic: Black Belt -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Hariyama -Level: 43 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Machamp -Level: 43 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Machamp -Level: 43 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_CRISTIN_2 === -Name: CRISTIN -Class: Cooltrainer -Pic: Cooltrainer F -Gender: Female -Music: Cool -Items: Hyper Potion -Double Battle: No -AI: Basic Trainer - -Loudred -Level: 35 -IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe - -Vigoroth -Level: 35 -IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe - -=== TRAINER_CRISTIN_3 === -Name: CRISTIN -Class: Cooltrainer -Pic: Cooltrainer F -Gender: Female -Music: Cool -Items: Hyper Potion -Double Battle: No -AI: Basic Trainer - -Spinda -Level: 37 -IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe - -Loudred -Level: 37 -IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe - -Vigoroth -Level: 37 -IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe - -=== TRAINER_CRISTIN_4 === -Name: CRISTIN -Class: Cooltrainer -Pic: Cooltrainer F -Gender: Female -Music: Cool -Items: Hyper Potion -Double Battle: No -AI: Basic Trainer - -Spinda -Level: 39 -IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe - -Loudred -Level: 39 -IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe - -Vigoroth -Level: 39 -IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe - -=== TRAINER_CRISTIN_5 === -Name: CRISTIN -Class: Cooltrainer -Pic: Cooltrainer F -Gender: Female -Music: Cool -Items: Hyper Potion -Double Battle: No -AI: Basic Trainer - -Spinda -Level: 41 -IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe - -Exploud -Level: 41 -IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe - -Slaking -Level: 41 -IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe - -=== TRAINER_FERNANDO_2 === -Name: FERNANDO -Class: Guitarist -Pic: Guitarist -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Electrike -Level: 35 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Electrike -Level: 35 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Loudred -Level: 35 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_FERNANDO_3 === -Name: FERNANDO -Class: Guitarist -Pic: Guitarist -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Electrike -Level: 37 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Manectric -Level: 37 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Loudred -Level: 37 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_FERNANDO_4 === -Name: FERNANDO -Class: Guitarist -Pic: Guitarist -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Manectric -Level: 39 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Manectric -Level: 39 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Loudred -Level: 39 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_FERNANDO_5 === -Name: FERNANDO -Class: Guitarist -Pic: Guitarist -Gender: Male -Music: Intense -Double Battle: No -AI: Check Bad Move - -Manectric -Level: 41 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Manectric -Level: 41 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Exploud -Level: 41 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_SAWYER_2 === -Name: SAWYER -Class: Hiker -Pic: Hiker -Gender: Male -Music: Hiker -Double Battle: No -AI: Basic Trainer - -Geodude -Level: 26 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Numel -Level: 26 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_SAWYER_3 === -Name: SAWYER -Class: Hiker -Pic: Hiker -Gender: Male -Music: Hiker -Double Battle: No -AI: Basic Trainer - -Machop -Level: 28 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Numel -Level: 28 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Graveler -Level: 28 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_SAWYER_4 === -Name: SAWYER -Class: Hiker -Pic: Hiker -Gender: Male -Music: Hiker -Double Battle: No -AI: Basic Trainer - -Machop -Level: 30 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Numel -Level: 30 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Graveler -Level: 30 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_SAWYER_5 === -Name: SAWYER -Class: Hiker -Pic: Hiker -Gender: Male -Music: Hiker -Double Battle: No -AI: Basic Trainer - -Machoke -Level: 33 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Camerupt -Level: 33 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Golem -Level: 33 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_GABRIELLE_2 === -Name: GABRIELLE -Class: Pkmn Breeder -Pic: Pokemon Breeder F -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Skitty -Level: 31 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Mightyena -Level: 31 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Zigzagoon -Level: 31 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Lotad -Level: 31 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Seedot -Level: 31 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Taillow -Level: 31 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_GABRIELLE_3 === -Name: GABRIELLE -Class: Pkmn Breeder -Pic: Pokemon Breeder F -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Skitty -Level: 33 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Mightyena -Level: 33 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Linoone -Level: 33 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Lombre -Level: 33 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Nuzleaf -Level: 33 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Taillow -Level: 33 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_GABRIELLE_4 === -Name: GABRIELLE -Class: Pkmn Breeder -Pic: Pokemon Breeder F -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Delcatty -Level: 35 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Mightyena -Level: 35 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Linoone -Level: 35 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Lombre -Level: 35 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Nuzleaf -Level: 35 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Swellow -Level: 35 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_GABRIELLE_5 === -Name: GABRIELLE -Class: Pkmn Breeder -Pic: Pokemon Breeder F -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Delcatty -Level: 37 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Mightyena -Level: 37 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Linoone -Level: 37 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Ludicolo -Level: 37 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Shiftry -Level: 37 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Swellow -Level: 37 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_THALIA_2 === -Name: THALIA -Class: Beauty -Pic: Beauty -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Wailmer -Level: 34 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -Horsea -Level: 34 -IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe - -=== TRAINER_THALIA_3 === -Name: THALIA -Class: Beauty -Pic: Beauty -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Luvdisc -Level: 36 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Wailmer -Level: 36 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -Seadra -Level: 36 -IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe - -=== TRAINER_THALIA_4 === -Name: THALIA -Class: Beauty -Pic: Beauty -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Luvdisc -Level: 38 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Wailmer -Level: 38 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -Seadra -Level: 38 -IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe - -=== TRAINER_THALIA_5 === -Name: THALIA -Class: Beauty -Pic: Beauty -Gender: Female -Music: Female -Double Battle: No -AI: Check Bad Move - -Luvdisc -Level: 40 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Wailord -Level: 40 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -Kingdra -Level: 40 -IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe - -=== TRAINER_MARIELA === -Name: MARIELA -Class: Psychic -Pic: Psychic F -Gender: Female -Music: Intense -Double Battle: No - -Chimecho -Level: 41 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_ALVARO === -Name: ALVARO -Class: Psychic -Pic: Psychic M -Gender: Male -Music: Intense -Double Battle: No - -Banette -Level: 41 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Kadabra -Level: 41 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_EVERETT === -Name: EVERETT -Class: Gentleman -Pic: Gentleman -Gender: Male -Music: Rich -Double Battle: No - -Wobbuffet -Level: 41 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_RED === -Name: RED -Class: Rival -Pic: Red -Gender: Male -Music: Male -Double Battle: No - -Charmander -Level: 5 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_LEAF === -Name: LEAF -Class: Rival -Pic: Leaf -Gender: Female -Music: Male -Double Battle: No - -Bulbasaur -Level: 5 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_BRENDAN_PLACEHOLDER === -Name: BRENDAN -Class: RS Protag -Pic: RS Brendan -Gender: Male -Music: Male -Double Battle: No - -Groudon -Level: 5 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== TRAINER_MAY_PLACEHOLDER === -Name: MAY -Class: RS Protag -Pic: RS May -Gender: Female -Music: Male -Double Battle: No - -Kyogre -Level: 5 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +/* +Trainers and their parties defined with Competetive Syntax. +Compatible with Pokemon Showdown exports. +https://github.com/smogon/pokemon-showdown/blob/master/sim/TEAMS.md + +A trainer specification starts with "=== TRAINER_XXXX ===" +and includes everything until the next line that starts with "===" +or the file ends. +A blank line is required between the trainer and their Pokemon +and between their Pokemon. +TRAINER_XXXX is how the trainer is referred to within code. + +Fields with description and/or example of usage +Required fields for trainers: + - Name + - Pic +Optional (but still recommended) fields for trainers: + - Class (if not specified, PkMn Trainer will be used) + - Gender (Male/Female, affects random gender weights of party if not specified) + - Music + - Items (Some Item / Another Item / Third Item) + (Can also be specified with ITEM_SOME_ITEM) + - Double Battle (Yes/No, defaults to No) + - AI (Ai Flag / Another Flag / Third Flag / ... + see "constants/battle_ai.h" for all flags) + - Mugshot (enable Mugshots during battle transition + set to one of Purple, Green, Pink, Blue or Yellow) + - Starting Status (see include/constants/battle.h for values) + +Pokemon are then specified using the Showdown Export format. +If a field is not specified, it will use it's default value. + +Required fields for Pokemon: + - Species (Either as SPECIES_ABRA or Abra) + This line also specifies Gender, Nickname and Held item. + Alfred (Abra) (M) @ Eviolite + Roberta (SPECIES_ABRA) (F) @ ITEM_CHOICE_SPECS + Both lines are valid. Gender (M) or (F) must use a capital letter. + Nickname length is limited to 10 characters using standard letters. + With narrow font it's increased to 12. Longer strings will be silently shortened. + +Optional fields for Pokemon: + - Level (Number between 1 and 100, defaults to 100) + - Ability (Ability Name or ABILITY_ABILITY_NAME) + - IVs (0 HP / 1 Atk / 2 Def / 3 SpA / 4 SpD / 5 Spe, defaults to all 31) + (Order does not matter) + - EVs (252 HP / 128 Spe / 48 Def, defaults to all 0, is not capped at 512 total) + (Order does not matter) + - Ball (Poke Ball or ITEM_POKE_BALL, defaults to Poke Ball) + - Happiness (Number between 1 and 255) + - Nature (Rash or NATURE_RASH, defaults to Hardy) + - Shiny (Yes/No, defaults to No) + - Dynamax Level (Number between 0 and 10, default 10, also sets "shouldDynamax" to True) + - Gigantamax (Yes/No, sets to Gigantamax factor) + (doesn't do anything to Pokemon without a Gigantamax form, also sets "shouldDynamax" to True) + - Tera Type (Set to a Type, either Fire or TYPE_FIRE, also sets "shouldTerastal" to True) +Moves are defined with a - (dash) followed by a single space, then the move name. +Either "- Tackle" or "- MOVE_TACKLE" works. One move per line. +Moves have to be the last lines of a Pokemon. +If no moves are specified, the Pokemon will use the last 4 moves it learns +through levelup at its level. + +Default IVs and Level can be changed in the "main" function of tools/trainerproc/main.c + +This file is processed with a custom preprocessor. +*/ + +/* +Comments can be added as C comment blocks +// cannot be used as comments +*/ + +/*Comments can also be on a single line*/ + + +=== TRAINER_NONE === +Name: +Class: Pkmn Trainer 1 +Pic: Hiker +Gender: Male +Music: Male +Double Battle: No + +=== TRAINER_SAWYER_1 === +Name: SAWYER +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Basic Trainer + +Geodude +Level: 21 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_AQUA_HIDEOUT_1 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Poochyena +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_AQUA_HIDEOUT_2 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Zubat +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Carvanha +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_AQUA_HIDEOUT_3 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Zubat +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_AQUA_HIDEOUT_4 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Carvanha +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_SEAFLOOR_CAVERN_1 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Poochyena +Level: 36 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_SEAFLOOR_CAVERN_2 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Carvanha +Level: 36 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_SEAFLOOR_CAVERN_3 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Zubat +Level: 36 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GABRIELLE_1 === +Name: GABRIELLE +Class: Pkmn Breeder +Pic: Pokemon Breeder F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Skitty +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Poochyena +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Zigzagoon +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Lotad +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Seedot +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Taillow +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_PETALBURG_WOODS === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Poochyena +Level: 9 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MARCEL === +Name: MARCEL +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Basic Trainer + +Manectric +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Shiftry +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_ALBERTO === +Name: ALBERTO +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Pelipper +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Xatu +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ED === +Name: ED +Class: Collector +Pic: Collector +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Zangoose +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Seviper +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_SEAFLOOR_CAVERN_4 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt F +Gender: Female +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Carvanha +Level: 36 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DECLAN === +Name: DECLAN +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Gyarados +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_RUSTURF_TUNNEL === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Poochyena +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_WEATHER_INST_1 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Zubat +Level: 27 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Poochyena +Level: 27 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_WEATHER_INST_2 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Poochyena +Level: 27 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Carvanha +Level: 27 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_WEATHER_INST_3 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Poochyena +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Zubat +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Carvanha +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MUSEUM_1 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Carvanha +Level: 15 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MUSEUM_2 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Zubat +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Carvanha +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_SPACE_CENTER_1 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Numel +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MT_PYRE_1 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Zubat +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MT_PYRE_2 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Carvanha +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MT_PYRE_3 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Poochyena +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Carvanha +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_WEATHER_INST_4 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt F +Gender: Female +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Carvanha +Level: 28 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_AQUA_HIDEOUT_5 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt F +Gender: Female +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Carvanha +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_AQUA_HIDEOUT_6 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt F +Gender: Female +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Zubat +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_FREDRICK === +Name: FREDRICK +Class: Expert +Pic: Expert M +Gender: Male +Music: Intense +Double Battle: No +AI: Basic Trainer + +Makuhita +Level: 30 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Machoke +Level: 30 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_MATT === +Name: MATT +Class: Aqua Admin +Pic: Aqua Admin M +Gender: Male +Music: Aqua +Items: Super Potion +Double Battle: No +AI: Basic Trainer + +Mightyena +Level: 34 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Golbat +Level: 34 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_ZANDER === +Name: ZANDER +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Hariyama +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_SHELLY_WEATHER_INSTITUTE === +Name: SHELLY +Class: Aqua Admin +Pic: Aqua Admin F +Gender: Female +Music: Aqua +Double Battle: No +AI: Basic Trainer + +Carvanha +Level: 28 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Mightyena +Level: 28 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_SHELLY_SEAFLOOR_CAVERN === +Name: SHELLY +Class: Aqua Admin +Pic: Aqua Admin F +Gender: Female +Music: Aqua +Double Battle: No +AI: Basic Trainer + +Sharpedo +Level: 37 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Mightyena +Level: 37 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_ARCHIE === +Name: ARCHIE +Class: Aqua Leader +Pic: Aqua Leader Archie +Gender: Male +Music: Aqua +Items: Super Potion / Super Potion +Double Battle: No +AI: Basic Trainer + +Mightyena +Level: 41 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Crobat +Level: 41 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Sharpedo +Level: 43 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_LEAH === +Name: LEAH +Class: Hex Maniac +Pic: Hex Maniac +Gender: Female +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Spoink +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DAISY === +Name: DAISY +Class: Aroma Lady +Pic: Aroma Lady +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Shroomish +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Roselia +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ROSE_1 === +Name: ROSE +Class: Aroma Lady +Pic: Aroma Lady +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Roselia +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Shroomish +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Roselia +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_FELIX === +Name: FELIX +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Basic Trainer + +Medicham +Level: 43 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Psychic + +Claydol +Level: 43 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Skill Swap +- Earthquake + +=== TRAINER_VIOLET === +Name: VIOLET +Class: Aroma Lady +Pic: Aroma Lady +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Roselia +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Gloom +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ROSE_2 === +Name: ROSE +Class: Aroma Lady +Pic: Aroma Lady +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Shroomish +Level: 26 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Roselia +Level: 26 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_ROSE_3 === +Name: ROSE +Class: Aroma Lady +Pic: Aroma Lady +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Shroomish +Level: 28 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Gloom +Level: 28 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Roselia +Level: 28 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_ROSE_4 === +Name: ROSE +Class: Aroma Lady +Pic: Aroma Lady +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Shroomish +Level: 31 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Gloom +Level: 31 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Roselia +Level: 31 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_ROSE_5 === +Name: ROSE +Class: Aroma Lady +Pic: Aroma Lady +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Breloom +Level: 34 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Gloom +Level: 34 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Roselia +Level: 34 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_DUSTY_1 === +Name: DUSTY +Class: Ruin Maniac +Pic: Ruin Maniac +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Sandslash +Level: 23 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe +- Dig +- Slash +- Sand Attack +- Poison Sting + +=== TRAINER_CHIP === +Name: CHIP +Class: Ruin Maniac +Pic: Ruin Maniac +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Baltoy +Level: 27 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe +- Psybeam +- Self Destruct +- Sandstorm +- Ancient Power + +Sandshrew +Level: 27 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe +- Dig +- Slash +- Sand Attack +- Poison Sting + +Sandslash +Level: 27 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe +- Dig +- Slash +- Sand Attack +- Poison Sting + +=== TRAINER_FOSTER === +Name: FOSTER +Class: Ruin Maniac +Pic: Ruin Maniac +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Sandshrew +Level: 25 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Dig +- Slash +- Sand Attack +- Poison Sting + +Sandslash +Level: 25 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Dig +- Slash +- Sand Attack +- Poison Sting + +=== TRAINER_DUSTY_2 === +Name: DUSTY +Class: Ruin Maniac +Pic: Ruin Maniac +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Sandslash +Level: 27 +IVs: 7 HP / 7 Atk / 7 Def / 7 SpA / 7 SpD / 7 Spe +- Dig +- Slash +- Sand Attack +- Poison Sting + +=== TRAINER_DUSTY_3 === +Name: DUSTY +Class: Ruin Maniac +Pic: Ruin Maniac +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Sandslash +Level: 30 +IVs: 8 HP / 8 Atk / 8 Def / 8 SpA / 8 SpD / 8 Spe +- Dig +- Slash +- Sand Attack +- Poison Sting + +=== TRAINER_DUSTY_4 === +Name: DUSTY +Class: Ruin Maniac +Pic: Ruin Maniac +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Sandslash +Level: 33 +IVs: 9 HP / 9 Atk / 9 Def / 9 SpA / 9 SpD / 9 Spe +- Dig +- Slash +- Sand Attack +- Poison Sting + +=== TRAINER_DUSTY_5 === +Name: DUSTY +Class: Ruin Maniac +Pic: Ruin Maniac +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Sandslash +Level: 36 +IVs: 10 HP / 10 Atk / 10 Def / 10 SpA / 10 SpD / 10 Spe +- Dig +- Slash +- Sand Attack +- Poison Sting + +=== TRAINER_GABBY_AND_TY_1 === +Name: GABBY & TY +Class: Interviewer +Pic: Interviewer +Gender: Male +Music: Interviewer +Double Battle: Yes +AI: Check Bad Move + +Magnemite +Level: 17 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Whismur +Level: 17 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_GABBY_AND_TY_2 === +Name: GABBY & TY +Class: Interviewer +Pic: Interviewer +Gender: Male +Music: Interviewer +Double Battle: Yes +AI: Check Bad Move + +Magnemite +Level: 27 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Loudred +Level: 27 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_GABBY_AND_TY_3 === +Name: GABBY & TY +Class: Interviewer +Pic: Interviewer +Gender: Male +Music: Interviewer +Double Battle: Yes +AI: Check Bad Move + +Magneton +Level: 30 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Loudred +Level: 30 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_GABBY_AND_TY_4 === +Name: GABBY & TY +Class: Interviewer +Pic: Interviewer +Gender: Male +Music: Interviewer +Double Battle: Yes +AI: Check Bad Move + +Magneton +Level: 33 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +Loudred +Level: 33 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +=== TRAINER_GABBY_AND_TY_5 === +Name: GABBY & TY +Class: Interviewer +Pic: Interviewer +Gender: Male +Music: Interviewer +Double Battle: Yes +AI: Check Bad Move + +Magneton +Level: 36 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe + +Loudred +Level: 36 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe + +=== TRAINER_GABBY_AND_TY_6 === +Name: GABBY & TY +Class: Interviewer +Pic: Interviewer +Gender: Male +Music: Interviewer +Double Battle: Yes +AI: Check Bad Move + +Magneton +Level: 39 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Sonic Boom +- Thunder Wave +- Metal Sound +- Thunderbolt + +Exploud +Level: 39 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Astonish +- Stomp +- Supersonic +- Hyper Voice + +=== TRAINER_LOLA_1 === +Name: LOLA +Class: Tuber F +Pic: Tuber F +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Azurill +Level: 12 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Azurill +Level: 12 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_AUSTINA === +Name: AUSTINA +Class: Tuber F +Pic: Tuber F +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Marill +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GWEN === +Name: GWEN +Class: Tuber F +Pic: Tuber F +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Marill +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LOLA_2 === +Name: LOLA +Class: Tuber F +Pic: Tuber F +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Marill +Level: 26 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Marill +Level: 26 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_LOLA_3 === +Name: LOLA +Class: Tuber F +Pic: Tuber F +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Marill +Level: 29 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Marill +Level: 29 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_LOLA_4 === +Name: LOLA +Class: Tuber F +Pic: Tuber F +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Marill +Level: 32 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Marill +Level: 32 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_LOLA_5 === +Name: LOLA +Class: Tuber F +Pic: Tuber F +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Azumarill +Level: 35 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Azumarill +Level: 35 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_RICKY_1 === +Name: RICKY +Class: Tuber M +Pic: Tuber M +Gender: Male +Music: Girl +Double Battle: No +AI: Check Bad Move + +Zigzagoon +Level: 13 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe +- Sand Attack +- Headbutt +- Tail Whip +- Surf + +=== TRAINER_SIMON === +Name: SIMON +Class: Tuber M +Pic: Tuber M +Gender: Male +Music: Girl +Double Battle: No +AI: Check Bad Move + +Azurill +Level: 12 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Marill +Level: 12 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CHARLIE === +Name: CHARLIE +Class: Tuber M +Pic: Tuber M +Gender: Male +Music: Girl +Double Battle: No +AI: Check Bad Move + +Marill +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_RICKY_2 === +Name: RICKY +Class: Tuber M +Pic: Tuber M +Gender: Male +Music: Girl +Double Battle: No +AI: Check Bad Move + +Linoone +Level: 27 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe +- Sand Attack +- Pin Missile +- Tail Whip +- Surf + +=== TRAINER_RICKY_3 === +Name: RICKY +Class: Tuber M +Pic: Tuber M +Gender: Male +Music: Girl +Double Battle: No +AI: Check Bad Move + +Linoone +Level: 30 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe +- Sand Attack +- Pin Missile +- Tail Whip +- Surf + +=== TRAINER_RICKY_4 === +Name: RICKY +Class: Tuber M +Pic: Tuber M +Gender: Male +Music: Girl +Double Battle: No +AI: Check Bad Move + +Linoone +Level: 33 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe +- Sand Attack +- Pin Missile +- Tail Whip +- Surf + +=== TRAINER_RICKY_5 === +Name: RICKY +Class: Tuber M +Pic: Tuber M +Gender: Male +Music: Girl +Double Battle: No +AI: Check Bad Move + +Linoone +Level: 36 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe +- Sand Attack +- Pin Missile +- Tail Whip +- Surf + +=== TRAINER_RANDALL === +Name: RANDALL +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Basic Trainer + +Swellow +Level: 26 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Quick Attack +- Agility +- Wing Attack + +=== TRAINER_PARKER === +Name: PARKER +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Basic Trainer + +Spinda +Level: 26 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Teeter Dance +- Dizzy Punch +- Focus Punch + +=== TRAINER_GEORGE === +Name: GEORGE +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Basic Trainer + +Slakoth @ Sitrus Berry +Level: 26 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Slack Off +- Counter +- Shadow Ball + +=== TRAINER_BERKE === +Name: BERKE +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Basic Trainer + +Vigoroth +Level: 26 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Focus Energy +- Slash + +=== TRAINER_BRAXTON === +Name: BRAXTON +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Basic Trainer + +Swellow +Level: 28 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Focus Energy +- Quick Attack +- Wing Attack +- Endeavor + +Trapinch +Level: 28 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Bite +- Dig +- Feint Attack +- Sand Tomb + +Wailmer +Level: 28 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Rollout +- Whirlpool +- Astonish +- Water Pulse + +Magneton +Level: 28 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Thunderbolt +- Supersonic +- Thunder Wave +- Sonic Boom + +Shiftry +Level: 28 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Giga Drain +- Feint Attack +- Double Team +- Swagger + +=== TRAINER_VINCENT === +Name: VINCENT +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Basic Trainer + +Sableye +Level: 44 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Medicham +Level: 44 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Sharpedo +Level: 44 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_LEROY === +Name: LEROY +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Basic Trainer + +Mawile +Level: 46 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Starmie +Level: 46 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_WILTON_1 === +Name: WILTON +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Super Potion +Double Battle: No +AI: Basic Trainer + +Electrike +Level: 17 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Wailmer +Level: 17 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Makuhita +Level: 17 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_EDGAR === +Name: EDGAR +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Basic Trainer + +Cacturne +Level: 43 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Pelipper +Level: 43 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_ALBERT === +Name: ALBERT +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Basic Trainer + +Magneton +Level: 43 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Muk +Level: 43 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_SAMUEL === +Name: SAMUEL +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Basic Trainer + +Swellow +Level: 42 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Mawile +Level: 42 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Kadabra +Level: 42 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_VITO === +Name: VITO +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Basic Trainer + +Dodrio +Level: 42 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Kadabra +Level: 42 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Electrode +Level: 42 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Shiftry +Level: 42 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_OWEN === +Name: OWEN +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Basic Trainer + +Kecleon +Level: 42 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Graveler +Level: 42 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Wailord +Level: 42 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_WILTON_2 === +Name: WILTON +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Basic Trainer + +Electrike +Level: 26 +IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe + +Wailmer +Level: 26 +IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe + +Makuhita +Level: 26 +IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe + +=== TRAINER_WILTON_3 === +Name: WILTON +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Basic Trainer + +Manectric +Level: 29 +IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe + +Wailmer +Level: 29 +IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe + +Makuhita +Level: 29 +IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe + +=== TRAINER_WILTON_4 === +Name: WILTON +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Basic Trainer + +Manectric +Level: 32 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +Wailmer +Level: 32 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +Makuhita +Level: 32 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +=== TRAINER_WILTON_5 === +Name: WILTON +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Basic Trainer + +Manectric +Level: 35 +IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe + +Wailmer +Level: 35 +IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe + +Hariyama +Level: 35 +IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe + +=== TRAINER_WARREN === +Name: WARREN +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Basic Trainer + +Graveler +Level: 33 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Ludicolo +Level: 33 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_MARY === +Name: MARY +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Basic Trainer + +Delcatty +Level: 26 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Feint Attack +- Shock Wave + +=== TRAINER_ALEXIA === +Name: ALEXIA +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Basic Trainer + +Wigglytuff +Level: 26 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Defense Curl +- Double Edge +- Shadow Ball + +=== TRAINER_JODY === +Name: JODY +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Force Setup First Turn + +Zangoose +Level: 26 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Swords Dance +- Slash + +=== TRAINER_WENDY === +Name: WENDY +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Force Setup First Turn + +Mawile +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Baton Pass +- Feint Attack +- Fake Tears +- Bite + +Roselia +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Mega Drain +- Magical Leaf +- Grass Whistle +- Leech Seed + +Pelipper +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Fly +- Water Gun +- Mist +- Protect + +=== TRAINER_KEIRA === +Name: KEIRA +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Force Setup First Turn + +Lairon +Level: 45 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Manectric +Level: 45 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_BROOKE_1 === +Name: BROOKE +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Super Potion +Double Battle: No +AI: Basic Trainer + +Wingull +Level: 17 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Numel +Level: 17 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Roselia +Level: 17 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_JENNIFER === +Name: JENNIFER +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Basic Trainer + +Sableye +Level: 30 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +=== TRAINER_HOPE === +Name: HOPE +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Basic Trainer + +Roselia +Level: 45 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_SHANNON === +Name: SHANNON +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Basic Trainer + +Claydol +Level: 45 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_MICHELLE === +Name: MICHELLE +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Basic Trainer + +Torkoal +Level: 42 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Medicham +Level: 42 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Ludicolo +Level: 42 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_CAROLINE === +Name: CAROLINE +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Basic Trainer + +Skarmory +Level: 43 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Sableye +Level: 43 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_JULIE === +Name: JULIE +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Basic Trainer + +Sandslash +Level: 42 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Ninetales +Level: 42 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Tropius +Level: 42 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_BROOKE_2 === +Name: BROOKE +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Basic Trainer + +Wingull +Level: 26 +IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe + +Numel +Level: 26 +IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe + +Roselia +Level: 26 +IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe + +=== TRAINER_BROOKE_3 === +Name: BROOKE +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Basic Trainer + +Pelipper +Level: 29 +IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe + +Numel +Level: 29 +IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe + +Roselia +Level: 29 +IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe + +=== TRAINER_BROOKE_4 === +Name: BROOKE +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Basic Trainer + +Pelipper +Level: 32 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +Numel +Level: 32 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +Roselia +Level: 32 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +=== TRAINER_BROOKE_5 === +Name: BROOKE +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Basic Trainer + +Pelipper +Level: 34 +IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe + +Camerupt +Level: 34 +IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe + +Roselia +Level: 34 +IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe + +=== TRAINER_PATRICIA === +Name: PATRICIA +Class: Hex Maniac +Pic: Hex Maniac +Gender: Female +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Banette +Level: 41 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Lunatone +Level: 41 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_KINDRA === +Name: KINDRA +Class: Hex Maniac +Pic: Hex Maniac +Gender: Female +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Duskull +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Shuppet +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_TAMMY === +Name: TAMMY +Class: Hex Maniac +Pic: Hex Maniac +Gender: Female +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Duskull +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Shuppet +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_VALERIE_1 === +Name: VALERIE +Class: Hex Maniac +Pic: Hex Maniac +Gender: Female +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Sableye +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_TASHA === +Name: TASHA +Class: Hex Maniac +Pic: Hex Maniac +Gender: Female +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Shuppet +Level: 32 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_VALERIE_2 === +Name: VALERIE +Class: Hex Maniac +Pic: Hex Maniac +Gender: Female +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Sableye +Level: 31 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Spoink +Level: 31 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_VALERIE_3 === +Name: VALERIE +Class: Hex Maniac +Pic: Hex Maniac +Gender: Female +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Spoink +Level: 35 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Sableye +Level: 35 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_VALERIE_4 === +Name: VALERIE +Class: Hex Maniac +Pic: Hex Maniac +Gender: Female +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Spoink +Level: 40 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Sableye +Level: 40 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_VALERIE_5 === +Name: VALERIE +Class: Hex Maniac +Pic: Hex Maniac +Gender: Female +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Duskull +Level: 42 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Sableye +Level: 42 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Grumpig +Level: 42 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_CINDY_1 === +Name: CINDY +Class: Lady +Pic: Lady +Gender: Female +Music: Female +Items: Full Restore +Double Battle: No +AI: Check Bad Move + +Zigzagoon @ Nugget +Level: 7 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DAPHNE === +Name: DAPHNE +Class: Lady +Pic: Lady +Gender: Female +Music: Female +Items: Full Restore +Double Battle: No +AI: Check Bad Move + +Luvdisc @ Nugget +Level: 39 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Attract +- Sweet Kiss +- Flail +- Water Pulse + +Luvdisc @ Nugget +Level: 39 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Attract +- Safeguard +- Take Down +- Water Pulse + +=== TRAINER_GRUNT_SPACE_CENTER_2 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Mightyena +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Mightyena +Level: 28 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Numel +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CINDY_2 === +Name: CINDY +Class: Lady +Pic: Lady +Gender: Female +Music: Female +Items: Full Restore +Double Battle: No +AI: Check Bad Move + +Zigzagoon @ Nugget +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Tackle +- Tail Whip + +=== TRAINER_BRIANNA === +Name: BRIANNA +Class: Lady +Pic: Lady +Gender: Female +Music: Female +Items: Full Restore +Double Battle: No +AI: Check Bad Move + +Seaking @ Nugget +Level: 40 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_NAOMI === +Name: NAOMI +Class: Lady +Pic: Lady +Gender: Female +Music: Female +Items: Full Restore +Double Battle: No +AI: Check Bad Move + +Roselia @ Nugget +Level: 45 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_CINDY_3 === +Name: CINDY +Class: Lady +Pic: Lady +Gender: Female +Music: Female +Items: Full Restore +Double Battle: No +AI: Check Bad Move + +Linoone @ Nugget +Level: 27 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_CINDY_4 === +Name: CINDY +Class: Lady +Pic: Lady +Gender: Female +Music: Female +Items: Full Restore +Double Battle: No +AI: Check Bad Move + +Linoone @ Nugget +Level: 30 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_CINDY_5 === +Name: CINDY +Class: Lady +Pic: Lady +Gender: Female +Music: Female +Items: Full Restore +Double Battle: No +AI: Check Bad Move + +Linoone @ Nugget +Level: 33 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_CINDY_6 === +Name: CINDY +Class: Lady +Pic: Lady +Gender: Female +Music: Female +Items: Full Restore +Double Battle: No +AI: Check Bad Move + +Linoone @ Nugget +Level: 36 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe +- Fury Swipes +- Mud Sport +- Odor Sleuth +- Sand Attack + +=== TRAINER_MELISSA === +Name: MELISSA +Class: Beauty +Pic: Beauty +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Marill +Level: 21 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_SHEILA === +Name: SHEILA +Class: Beauty +Pic: Beauty +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Shroomish +Level: 21 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_SHIRLEY === +Name: SHIRLEY +Class: Beauty +Pic: Beauty +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Numel +Level: 21 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JESSICA_1 === +Name: JESSICA +Class: Beauty +Pic: Beauty +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Kecleon +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Bind +- Lick +- Fury Swipes +- Feint Attack + +Seviper +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Poison Tail +- Screech +- Glare +- Crunch + +=== TRAINER_CONNIE === +Name: CONNIE +Class: Beauty +Pic: Beauty +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Goldeen +Level: 40 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_BRIDGET === +Name: BRIDGET +Class: Beauty +Pic: Beauty +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Azumarill +Level: 40 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_OLIVIA === +Name: OLIVIA +Class: Beauty +Pic: Beauty +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Clamperl +Level: 35 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Iron Defense +- Whirlpool +- Rain Dance +- Water Pulse + +Corphish +Level: 37 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Taunt +- Crabhammer +- Water Pulse + +Lombre +Level: 39 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Uproar +- Fury Swipes +- Fake Out +- Water Pulse + +=== TRAINER_TIFFANY === +Name: TIFFANY +Class: Beauty +Pic: Beauty +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Carvanha +Level: 39 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Sharpedo +Level: 39 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_JESSICA_2 === +Name: JESSICA +Class: Beauty +Pic: Beauty +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Kecleon +Level: 35 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe +- Bind +- Lick +- Fury Swipes +- Feint Attack + +Seviper +Level: 35 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe +- Poison Tail +- Screech +- Glare +- Crunch + +=== TRAINER_JESSICA_3 === +Name: JESSICA +Class: Beauty +Pic: Beauty +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Kecleon +Level: 38 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe +- Bind +- Lick +- Fury Swipes +- Feint Attack + +Seviper +Level: 38 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe +- Poison Tail +- Screech +- Glare +- Crunch + +=== TRAINER_JESSICA_4 === +Name: JESSICA +Class: Beauty +Pic: Beauty +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Kecleon +Level: 41 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe +- Bind +- Lick +- Fury Swipes +- Feint Attack + +Seviper +Level: 41 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe +- Poison Tail +- Screech +- Glare +- Crunch + +=== TRAINER_JESSICA_5 === +Name: JESSICA +Class: Beauty +Pic: Beauty +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Kecleon +Level: 44 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe +- Bind +- Lick +- Fury Swipes +- Feint Attack + +Seviper +Level: 44 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe +- Poison Tail +- Screech +- Glare +- Crunch + +=== TRAINER_WINSTON_1 === +Name: WINSTON +Class: Rich Boy +Pic: Rich Boy +Gender: Male +Music: Rich +Items: Full Restore +Double Battle: No +AI: Check Bad Move + +Zigzagoon @ Nugget +Level: 7 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MOLLIE === +Name: MOLLIE +Class: Expert +Pic: Expert F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Whiscash +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Meditite +Level: 33 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +=== TRAINER_GARRET === +Name: GARRET +Class: Rich Boy +Pic: Rich Boy +Gender: Male +Music: Rich +Items: Full Restore +Double Battle: No +AI: Check Bad Move + +Azumarill @ Nugget +Level: 45 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_WINSTON_2 === +Name: WINSTON +Class: Rich Boy +Pic: Rich Boy +Gender: Male +Music: Rich +Items: Full Restore +Double Battle: No +AI: Check Bad Move + +Linoone @ Nugget +Level: 27 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_WINSTON_3 === +Name: WINSTON +Class: Rich Boy +Pic: Rich Boy +Gender: Male +Music: Rich +Items: Full Restore +Double Battle: No +AI: Check Bad Move + +Linoone @ Nugget +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_WINSTON_4 === +Name: WINSTON +Class: Rich Boy +Pic: Rich Boy +Gender: Male +Music: Rich +Items: Full Restore +Double Battle: No +AI: Check Bad Move + +Linoone @ Nugget +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_WINSTON_5 === +Name: WINSTON +Class: Rich Boy +Pic: Rich Boy +Gender: Male +Music: Rich +Items: Full Restore +Double Battle: No +AI: Check Bad Move + +Linoone @ Nugget +Level: 36 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Fury Swipes +- Mud Sport +- Odor Sleuth +- Sand Attack + +=== TRAINER_STEVE_1 === +Name: STEVE +Class: Pokemaniac +Pic: Pokemaniac +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Aron +Level: 19 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_THALIA_1 === +Name: THALIA +Class: Beauty +Pic: Beauty +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Wailmer +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Horsea +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MARK === +Name: MARK +Class: Pokemaniac +Pic: Pokemaniac +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Rhyhorn +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MT_CHIMNEY_1 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt F +Gender: Female +Music: Magma +Double Battle: No +AI: Check Bad Move + +Numel +Level: 20 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_STEVE_2 === +Name: STEVE +Class: Pokemaniac +Pic: Pokemaniac +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Lairon +Level: 27 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_STEVE_3 === +Name: STEVE +Class: Pokemaniac +Pic: Pokemaniac +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Lairon +Level: 29 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Rhyhorn +Level: 29 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_STEVE_4 === +Name: STEVE +Class: Pokemaniac +Pic: Pokemaniac +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Lairon +Level: 32 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Rhyhorn +Level: 32 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_STEVE_5 === +Name: STEVE +Class: Pokemaniac +Pic: Pokemaniac +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Aggron +Level: 35 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Rhydon +Level: 35 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_LUIS === +Name: LUIS +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Carvanha +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DOMINIK === +Name: DOMINIK +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Tentacool +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DOUGLAS === +Name: DOUGLAS +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Tentacool +Level: 24 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Tentacool +Level: 24 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_DARRIN === +Name: DARRIN +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Tentacool +Level: 24 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Wingull +Level: 24 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Tentacool +Level: 24 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_TONY_1 === +Name: TONY +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Carvanha +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JEROME === +Name: JEROME +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Tentacruel +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MATTHEW === +Name: MATTHEW +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Carvanha +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DAVID === +Name: DAVID +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Tentacool +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Carvanha +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_SPENCER === +Name: SPENCER +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Tentacool +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wingull +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ROLAND === +Name: ROLAND +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Carvanha +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_NOLEN === +Name: NOLEN +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Tentacruel +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_STAN === +Name: STAN +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Horsea +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BARRY === +Name: BARRY +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Gyarados +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DEAN === +Name: DEAN +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Carvanha +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wingull +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Carvanha +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_RODNEY === +Name: RODNEY +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Gyarados +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_RICHARD === +Name: RICHARD +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Pelipper +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_HERMAN === +Name: HERMAN +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Tentacruel +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_SANTIAGO === +Name: SANTIAGO +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Tentacruel +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wailmer +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GILBERT === +Name: GILBERT +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Sharpedo +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_FRANKLIN === +Name: FRANKLIN +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Sealeo +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_KEVIN === +Name: KEVIN +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Spheal +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JACK === +Name: JACK +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Gyarados +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DUDLEY === +Name: DUDLEY +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Tentacool +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wingull +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Tentacruel +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CHAD === +Name: CHAD +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Tentacool +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wailmer +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_TONY_2 === +Name: TONY +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Sharpedo +Level: 30 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_TONY_3 === +Name: TONY +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Sharpedo +Level: 33 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_TONY_4 === +Name: TONY +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Staryu +Level: 34 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Sharpedo +Level: 36 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_TONY_5 === +Name: TONY +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Starmie +Level: 37 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Sharpedo +Level: 39 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_TAKAO === +Name: TAKAO +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Machop +Level: 13 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +=== TRAINER_HITOSHI === +Name: HITOSHI +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Machop +Level: 32 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Machoke +Level: 32 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +=== TRAINER_KIYO === +Name: KIYO +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Hariyama +Level: 34 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_KOICHI === +Name: KOICHI +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Machop +Level: 24 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Machoke +Level: 28 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_NOB_1 === +Name: NOB +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Machop +Level: 19 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_NOB_2 === +Name: NOB +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Machoke +Level: 27 +IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe + +=== TRAINER_NOB_3 === +Name: NOB +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Machop +Level: 29 +IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe + +Machoke +Level: 29 +IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe + +=== TRAINER_NOB_4 === +Name: NOB +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Machop +Level: 31 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +Machoke +Level: 31 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +Machoke +Level: 31 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +=== TRAINER_NOB_5 === +Name: NOB +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Machop +Level: 33 +IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe + +Machoke +Level: 33 +IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe + +Machoke +Level: 33 +IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe + +Machamp @ Black Belt +Level: 33 +IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe + +=== TRAINER_YUJI === +Name: YUJI +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Makuhita +Level: 26 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Machoke +Level: 26 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_DAISUKE === +Name: DAISUKE +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Machop +Level: 19 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_ATSUSHI === +Name: ATSUSHI +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Hariyama +Level: 32 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_KIRK === +Name: KIRK +Class: Guitarist +Pic: Guitarist +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Electrike +Level: 17 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Quick Attack +- Thunder Wave +- Spark +- Leer + +Voltorb +Level: 17 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Charge +- Shock Wave +- Screech + +=== TRAINER_GRUNT_AQUA_HIDEOUT_7 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt F +Gender: Female +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Poochyena +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Zubat +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_AQUA_HIDEOUT_8 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Carvanha +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_SHAWN === +Name: SHAWN +Class: Guitarist +Pic: Guitarist +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Voltorb +Level: 17 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Magnemite +Level: 17 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_FERNANDO_1 === +Name: FERNANDO +Class: Guitarist +Pic: Guitarist +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Electrike +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Loudred +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DALTON_1 === +Name: DALTON +Class: Guitarist +Pic: Guitarist +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Magnemite +Level: 15 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Whismur +Level: 15 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DALTON_2 === +Name: DALTON +Class: Guitarist +Pic: Guitarist +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Magnemite +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Whismur +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Magnemite +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_DALTON_3 === +Name: DALTON +Class: Guitarist +Pic: Guitarist +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Magnemite +Level: 28 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Loudred +Level: 28 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Magnemite +Level: 28 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_DALTON_4 === +Name: DALTON +Class: Guitarist +Pic: Guitarist +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Magneton +Level: 31 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Loudred +Level: 31 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Magneton +Level: 31 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_DALTON_5 === +Name: DALTON +Class: Guitarist +Pic: Guitarist +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Magneton +Level: 34 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Exploud +Level: 34 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Magneton +Level: 34 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_COLE === +Name: COLE +Class: Kindler +Pic: Kindler +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Numel +Level: 23 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_JEFF === +Name: JEFF +Class: Kindler +Pic: Kindler +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Slugma +Level: 22 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Slugma +Level: 22 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_AXLE === +Name: AXLE +Class: Kindler +Pic: Kindler +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Numel +Level: 23 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_JACE === +Name: JACE +Class: Kindler +Pic: Kindler +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Slugma +Level: 23 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_KEEGAN === +Name: KEEGAN +Class: Kindler +Pic: Kindler +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Slugma +Level: 23 +IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe + +=== TRAINER_BERNIE_1 === +Name: BERNIE +Class: Kindler +Pic: Kindler +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Slugma +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wingull +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BERNIE_2 === +Name: BERNIE +Class: Kindler +Pic: Kindler +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Slugma +Level: 26 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Wingull +Level: 26 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_BERNIE_3 === +Name: BERNIE +Class: Kindler +Pic: Kindler +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Slugma +Level: 29 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Pelipper +Level: 29 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_BERNIE_4 === +Name: BERNIE +Class: Kindler +Pic: Kindler +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Slugma +Level: 32 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Pelipper +Level: 32 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_BERNIE_5 === +Name: BERNIE +Class: Kindler +Pic: Kindler +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Magcargo +Level: 35 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Pelipper +Level: 35 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_DREW === +Name: DREW +Class: Camper +Pic: Camper +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Sandshrew +Level: 23 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Dig +- Sand Attack +- Poison Sting +- Slash + +=== TRAINER_BEAU === +Name: BEAU +Class: Camper +Pic: Camper +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Baltoy +Level: 21 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Rapid Spin +- Mud Slap +- Psybeam +- Rock Tomb + +Sandshrew +Level: 21 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Poison Sting +- Sand Attack +- Scratch +- Dig + +Baltoy +Level: 21 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Rapid Spin +- Mud Slap +- Psybeam +- Rock Tomb + +=== TRAINER_LARRY === +Name: LARRY +Class: Camper +Pic: Camper +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Nuzleaf +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_SHANE === +Name: SHANE +Class: Camper +Pic: Camper +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Sandshrew +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Nuzleaf +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JUSTIN === +Name: JUSTIN +Class: Camper +Pic: Camper +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Kecleon +Level: 24 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ETHAN_1 === +Name: ETHAN +Class: Camper +Pic: Camper +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Zigzagoon +Level: 20 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Taillow +Level: 20 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_AUTUMN === +Name: AUTUMN +Class: Picnicker +Pic: Picnicker +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Shroomish +Level: 21 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_TRAVIS === +Name: TRAVIS +Class: Camper +Pic: Camper +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Sandshrew +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ETHAN_2 === +Name: ETHAN +Class: Camper +Pic: Camper +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Zigzagoon +Level: 26 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Taillow +Level: 26 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_ETHAN_3 === +Name: ETHAN +Class: Camper +Pic: Camper +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Linoone +Level: 29 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Swellow +Level: 29 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_ETHAN_4 === +Name: ETHAN +Class: Camper +Pic: Camper +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Sandshrew +Level: 31 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Swellow +Level: 31 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Linoone +Level: 31 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_ETHAN_5 === +Name: ETHAN +Class: Camper +Pic: Camper +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Swellow +Level: 34 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Sandslash +Level: 34 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Linoone +Level: 34 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_BRENT === +Name: BRENT +Class: Bug Maniac +Pic: Bug Maniac +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Surskit +Level: 26 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_DONALD === +Name: DONALD +Class: Bug Maniac +Pic: Bug Maniac +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Wurmple +Level: 24 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Silcoon +Level: 24 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Beautifly +Level: 24 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_TAYLOR === +Name: TAYLOR +Class: Bug Maniac +Pic: Bug Maniac +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Wurmple +Level: 27 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Cascoon +Level: 27 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Dustox +Level: 27 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_JEFFREY_1 === +Name: JEFFREY +Class: Bug Maniac +Pic: Bug Maniac +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Surskit +Level: 27 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Surskit +Level: 27 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Surskit +Level: 27 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DEREK === +Name: DEREK +Class: Bug Maniac +Pic: Bug Maniac +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Dustox +Level: 16 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Beautifly +Level: 16 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_JEFFREY_2 === +Name: JEFFREY +Class: Bug Maniac +Pic: Bug Maniac +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Surskit +Level: 31 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Surskit +Level: 31 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Surskit +Level: 31 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_JEFFREY_3 === +Name: JEFFREY +Class: Bug Maniac +Pic: Bug Maniac +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Surskit +Level: 34 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Surskit +Level: 34 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Masquerain +Level: 34 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_JEFFREY_4 === +Name: JEFFREY +Class: Bug Maniac +Pic: Bug Maniac +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Surskit +Level: 36 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Wurmple +Level: 36 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Surskit +Level: 36 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Masquerain +Level: 36 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_JEFFREY_5 === +Name: JEFFREY +Class: Bug Maniac +Pic: Bug Maniac +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Surskit +Level: 38 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Dustox +Level: 38 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Surskit +Level: 38 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Masquerain @ Silver Powder +Level: 38 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Beautifly +Level: 38 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_EDWARD === +Name: EDWARD +Class: Psychic +Pic: Psychic M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Abra +Level: 15 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Hidden Power + +=== TRAINER_PRESTON === +Name: PRESTON +Class: Psychic +Pic: Psychic M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Kirlia +Level: 36 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_VIRGIL === +Name: VIRGIL +Class: Psychic +Pic: Psychic M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Ralts +Level: 36 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_BLAKE === +Name: BLAKE +Class: Psychic +Pic: Psychic M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Girafarig +Level: 36 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_WILLIAM === +Name: WILLIAM +Class: Psychic +Pic: Psychic M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Ralts +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Ralts +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Kirlia +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JOSHUA === +Name: JOSHUA +Class: Psychic +Pic: Psychic M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Kadabra +Level: 41 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Solrock +Level: 41 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CAMERON_1 === +Name: CAMERON +Class: Psychic +Pic: Psychic M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Solrock +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CAMERON_2 === +Name: CAMERON +Class: Psychic +Pic: Psychic M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Kadabra +Level: 33 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Solrock +Level: 33 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_CAMERON_3 === +Name: CAMERON +Class: Psychic +Pic: Psychic M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Kadabra +Level: 38 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Solrock +Level: 38 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_CAMERON_4 === +Name: CAMERON +Class: Psychic +Pic: Psychic M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Kadabra +Level: 41 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Solrock +Level: 41 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_CAMERON_5 === +Name: CAMERON +Class: Psychic +Pic: Psychic M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Solrock +Level: 45 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Alakazam +Level: 45 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_JACLYN === +Name: JACLYN +Class: Psychic +Pic: Psychic F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Abra +Level: 16 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Hidden Power + +=== TRAINER_HANNAH === +Name: HANNAH +Class: Psychic +Pic: Psychic F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Kirlia +Level: 36 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_SAMANTHA === +Name: SAMANTHA +Class: Psychic +Pic: Psychic F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Xatu +Level: 36 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_MAURA === +Name: MAURA +Class: Psychic +Pic: Psychic F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Kadabra +Level: 36 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_KAYLA === +Name: KAYLA +Class: Psychic +Pic: Psychic F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Wobbuffet +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Natu +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Kadabra +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ALEXIS === +Name: ALEXIS +Class: Psychic +Pic: Psychic F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Kirlia +Level: 41 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Xatu +Level: 41 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JACKI_1 === +Name: JACKI +Class: Psychic +Pic: Psychic F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Kadabra +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Lunatone +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JACKI_2 === +Name: JACKI +Class: Psychic +Pic: Psychic F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Kadabra +Level: 34 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Lunatone +Level: 34 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_JACKI_3 === +Name: JACKI +Class: Psychic +Pic: Psychic F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Kadabra +Level: 37 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Lunatone +Level: 37 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_JACKI_4 === +Name: JACKI +Class: Psychic +Pic: Psychic F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Kadabra +Level: 40 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Lunatone +Level: 40 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_JACKI_5 === +Name: JACKI +Class: Psychic +Pic: Psychic F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Lunatone +Level: 43 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Alakazam +Level: 43 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_WALTER_1 === +Name: WALTER +Class: Gentleman +Pic: Gentleman +Gender: Male +Music: Rich +Double Battle: No +AI: Check Bad Move + +Manectric +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MICAH === +Name: MICAH +Class: Gentleman +Pic: Gentleman +Gender: Male +Music: Rich +Double Battle: No +AI: Check Bad Move + +Manectric +Level: 44 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Manectric +Level: 44 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_THOMAS === +Name: THOMAS +Class: Gentleman +Pic: Gentleman +Gender: Male +Music: Rich +Double Battle: No +AI: Check Bad Move + +Zangoose +Level: 45 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_WALTER_2 === +Name: WALTER +Class: Gentleman +Pic: Gentleman +Gender: Male +Music: Rich +Double Battle: No +AI: Check Bad Move + +Manectric +Level: 34 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_WALTER_3 === +Name: WALTER +Class: Gentleman +Pic: Gentleman +Gender: Male +Music: Rich +Double Battle: No +AI: Check Bad Move + +Linoone +Level: 36 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe +- Headbutt +- Sand Attack +- Odor Sleuth +- Fury Swipes + +Manectric +Level: 36 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe +- Quick Attack +- Spark +- Odor Sleuth +- Roar + +=== TRAINER_WALTER_4 === +Name: WALTER +Class: Gentleman +Pic: Gentleman +Gender: Male +Music: Rich +Double Battle: No +AI: Check Bad Move + +Linoone +Level: 39 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe +- Headbutt +- Sand Attack +- Odor Sleuth +- Fury Swipes + +Manectric +Level: 39 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe +- Quick Attack +- Spark +- Odor Sleuth + +=== TRAINER_WALTER_5 === +Name: WALTER +Class: Gentleman +Pic: Gentleman +Gender: Male +Music: Rich +Double Battle: No +AI: Check Bad Move + +Linoone +Level: 41 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe +- Headbutt +- Sand Attack +- Odor Sleuth +- Fury Swipes + +Golduck +Level: 41 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe +- Fury Swipes +- Disable +- Confusion +- Psych Up + +Manectric +Level: 41 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe +- Quick Attack +- Spark +- Odor Sleuth +- Roar + +=== TRAINER_SIDNEY === +Name: SIDNEY +Class: Elite Four +Pic: Elite Four Sidney +Gender: Male +Music: Elite Four +Items: Full Restore / Full Restore +Double Battle: No +AI: Basic Trainer / Force Setup First Turn +Mugshot: Purple + +Mightyena +Level: 46 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Roar +- Double Edge +- Sand Attack +- Crunch + +Shiftry +Level: 48 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Torment +- Double Team +- Swagger +- Extrasensory + +Cacturne +Level: 46 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Leech Seed +- Feint Attack +- Needle Arm +- Cotton Spore + +Crawdaunt +Level: 48 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Surf +- Swords Dance +- Strength +- Facade + +Absol @ Sitrus Berry +Level: 49 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Aerial Ace +- Rock Slide +- Swords Dance +- Slash + +=== TRAINER_PHOEBE === +Name: PHOEBE +Class: Elite Four +Pic: Elite Four Phoebe +Gender: Female +Music: Elite Four +Items: Full Restore / Full Restore +Double Battle: No +AI: Basic Trainer +Mugshot: Green + +Dusclops +Level: 48 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Shadow Punch +- Confuse Ray +- Curse +- Protect + +Banette +Level: 49 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Shadow Ball +- Grudge +- Will O Wisp +- Feint Attack + +Sableye +Level: 50 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Shadow Ball +- Double Team +- Night Shade +- Feint Attack + +Banette +Level: 49 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Shadow Ball +- Psychic +- Thunderbolt +- Facade + +Dusclops @ Sitrus Berry +Level: 51 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Shadow Ball +- Ice Beam +- Rock Slide +- Earthquake + +=== TRAINER_GLACIA === +Name: GLACIA +Class: Elite Four +Pic: Elite Four Glacia +Gender: Female +Music: Elite Four +Items: Full Restore / Full Restore +Double Battle: No +AI: Basic Trainer +Mugshot: Pink + +Sealeo +Level: 50 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Encore +- Body Slam +- Hail +- Ice Ball + +Glalie +Level: 50 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Light Screen +- Crunch +- Icy Wind +- Ice Beam + +Sealeo +Level: 52 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Attract +- Double Edge +- Hail +- Blizzard + +Glalie +Level: 52 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Shadow Ball +- Explosion +- Hail +- Ice Beam + +Walrein @ Sitrus Berry +Level: 53 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Surf +- Body Slam +- Ice Beam +- Sheer Cold + +=== TRAINER_DRAKE === +Name: DRAKE +Class: Elite Four +Pic: Elite Four Drake +Gender: Male +Music: Elite Four +Items: Full Restore / Full Restore +Double Battle: No +AI: Basic Trainer +Mugshot: Blue + +Shelgon +Level: 52 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Rock Tomb +- Dragon Claw +- Protect +- Double Edge + +Altaria +Level: 54 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Double Edge +- Dragon Breath +- Dragon Dance +- Aerial Ace + +Kingdra +Level: 53 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Smokescreen +- Dragon Dance +- Surf +- Body Slam + +Flygon +Level: 53 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Flamethrower +- Crunch +- Dragon Breath +- Earthquake + +Salamence @ Sitrus Berry +Level: 55 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Flamethrower +- Dragon Claw +- Rock Slide +- Crunch + +=== TRAINER_ROXANNE_1 === +Name: ROXANNE +Class: Leader +Pic: Leader Roxanne +Gender: Female +Music: Female +Items: Potion / Potion +Double Battle: No +AI: Basic Trainer + +Geodude +Level: 12 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Tackle +- Defense Curl +- Rock Throw +- Rock Tomb + +Geodude +Level: 12 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Tackle +- Defense Curl +- Rock Throw +- Rock Tomb + +Nosepass @ Oran Berry +Level: 15 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe +- Block +- Harden +- Tackle +- Rock Tomb + +=== TRAINER_BRAWLY_1 === +Name: BRAWLY +Class: Leader +Pic: Leader Brawly +Gender: Male +Music: Male +Items: Super Potion / Super Potion +Double Battle: No +AI: Basic Trainer + +Machop +Level: 16 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Karate Chop +- Low Kick +- Seismic Toss +- Bulk Up + +Meditite +Level: 16 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Focus Punch +- Light Screen +- Reflect +- Bulk Up + +Makuhita @ Sitrus Berry +Level: 19 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe +- Arm Thrust +- Vital Throw +- Reversal +- Bulk Up + +=== TRAINER_WATTSON_1 === +Name: WATTSON +Class: Leader +Pic: Leader Wattson +Gender: Male +Music: Male +Items: Super Potion / Super Potion +Double Battle: No +AI: Basic Trainer + +Voltorb +Level: 20 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe +- Rollout +- Spark +- Self Destruct +- Shock Wave + +Electrike +Level: 20 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe +- Shock Wave +- Leer +- Quick Attack +- Howl + +Magneton +Level: 22 +IVs: 26 HP / 26 Atk / 26 Def / 26 SpA / 26 SpD / 26 Spe +- Supersonic +- Shock Wave +- Thunder Wave +- Sonic Boom + +Manectric @ Sitrus Berry +Level: 24 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Quick Attack +- Thunder Wave +- Shock Wave +- Howl + +=== TRAINER_FLANNERY_1 === +Name: FLANNERY +Class: Leader +Pic: Leader Flannery +Gender: Female +Music: Female +Items: Hyper Potion / Hyper Potion +Double Battle: No +AI: Basic Trainer + +Numel +Level: 24 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe +- Overheat +- Take Down +- Magnitude +- Sunny Day + +Slugma +Level: 24 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe +- Overheat +- Smog +- Light Screen +- Sunny Day + +Camerupt +Level: 26 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Overheat +- Tackle +- Sunny Day +- Attract + +Torkoal @ White Herb +Level: 29 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Overheat +- Sunny Day +- Body Slam +- Attract + +=== TRAINER_NORMAN_1 === +Name: NORMAN +Class: Leader +Pic: Leader Norman +Gender: Male +Music: Male +Items: Hyper Potion / Hyper Potion +Double Battle: No +AI: Basic Trainer + +Spinda +Level: 27 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe +- Teeter Dance +- Psybeam +- Facade +- Encore + +Vigoroth +Level: 27 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe +- Slash +- Facade +- Encore +- Feint Attack + +Linoone +Level: 29 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe +- Slash +- Belly Drum +- Facade +- Headbutt + +Slaking @ Sitrus Berry +Level: 31 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Counter +- Yawn +- Facade +- Feint Attack + +=== TRAINER_WINONA_1 === +Name: WINONA +Class: Leader +Pic: Leader Winona +Gender: Female +Music: Female +Items: Hyper Potion / Hyper Potion +Double Battle: No +AI: Basic Trainer / Risky + +Swablu +Level: 29 +IVs: 25 HP / 25 Atk / 25 Def / 25 SpA / 25 SpD / 25 Spe +- Perish Song +- Mirror Move +- Safeguard +- Aerial Ace + +Tropius +Level: 29 +IVs: 25 HP / 25 Atk / 25 Def / 25 SpA / 25 SpD / 25 Spe +- Sunny Day +- Aerial Ace +- Solar Beam +- Synthesis + +Pelipper +Level: 30 +IVs: 25 HP / 25 Atk / 25 Def / 25 SpA / 25 SpD / 25 Spe +- Water Gun +- Supersonic +- Protect +- Aerial Ace + +Skarmory +Level: 31 +IVs: 26 HP / 26 Atk / 26 Def / 26 SpA / 26 SpD / 26 Spe +- Sand Attack +- Fury Attack +- Steel Wing +- Aerial Ace + +Altaria @ Oran Berry +Level: 33 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Earthquake +- Dragon Breath +- Dragon Dance +- Aerial Ace + +=== TRAINER_TATE_AND_LIZA_1 === +Name: TATE&LIZA +Class: Leader +Pic: Leader Tate And Liza +Gender: Male +Music: Female +Items: Hyper Potion / Hyper Potion / Hyper Potion / Hyper Potion +Double Battle: Yes +AI: Basic Trainer + +Claydol +Level: 41 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Earthquake +- Ancient Power +- Psychic +- Light Screen + +Xatu +Level: 41 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Psychic +- Sunny Day +- Confuse Ray +- Calm Mind + +Lunatone @ Sitrus Berry +Level: 42 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Light Screen +- Psychic +- Hypnosis +- Calm Mind + +Solrock @ Sitrus Berry +Level: 42 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Sunny Day +- Solar Beam +- Psychic +- Flamethrower + +=== TRAINER_JUAN_1 === +Name: JUAN +Class: Leader +Pic: Leader Juan +Gender: Male +Music: Male +Items: Hyper Potion / Hyper Potion +Double Battle: No +AI: Basic Trainer + +Luvdisc +Level: 41 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe +- Water Pulse +- Attract +- Sweet Kiss +- Flail + +Whiscash +Level: 41 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe +- Rain Dance +- Water Pulse +- Amnesia +- Earthquake + +Sealeo +Level: 43 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe +- Encore +- Body Slam +- Aurora Beam +- Water Pulse + +Crawdaunt +Level: 43 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe +- Water Pulse +- Crabhammer +- Taunt +- Leer + +Kingdra @ Chesto Berry +Level: 46 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Water Pulse +- Double Team +- Ice Beam +- Rest + +=== TRAINER_JERRY_1 === +Name: JERRY +Class: School Kid +Pic: School Kid M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Ralts +Level: 9 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_TED === +Name: TED +Class: School Kid +Pic: School Kid M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Ralts +Level: 17 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_PAUL === +Name: PAUL +Class: School Kid +Pic: School Kid M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Numel +Level: 15 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Oddish +Level: 15 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Wingull +Level: 15 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_JERRY_2 === +Name: JERRY +Class: School Kid +Pic: School Kid M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Ralts +Level: 26 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Meditite +Level: 26 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_JERRY_3 === +Name: JERRY +Class: School Kid +Pic: School Kid M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Kirlia +Level: 29 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Meditite +Level: 29 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_JERRY_4 === +Name: JERRY +Class: School Kid +Pic: School Kid M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Kirlia +Level: 32 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Medicham +Level: 32 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_JERRY_5 === +Name: JERRY +Class: School Kid +Pic: School Kid M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Kirlia +Level: 34 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Banette +Level: 34 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Medicham +Level: 34 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_KAREN_1 === +Name: KAREN +Class: School Kid +Pic: School Kid F +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Shroomish +Level: 9 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_GEORGIA === +Name: GEORGIA +Class: School Kid +Pic: School Kid F +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Shroomish +Level: 16 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Beautifly +Level: 16 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_KAREN_2 === +Name: KAREN +Class: School Kid +Pic: School Kid F +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Shroomish +Level: 26 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Whismur +Level: 26 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_KAREN_3 === +Name: KAREN +Class: School Kid +Pic: School Kid F +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Shroomish +Level: 29 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Loudred +Level: 29 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_KAREN_4 === +Name: KAREN +Class: School Kid +Pic: School Kid F +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Breloom +Level: 32 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Loudred +Level: 32 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_KAREN_5 === +Name: KAREN +Class: School Kid +Pic: School Kid F +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Breloom +Level: 35 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Exploud +Level: 35 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_KATE_AND_JOY === +Name: KATE & JOY +Class: Sr And Jr +Pic: Sr And Jr +Gender: Male +Music: Twins +Double Battle: Yes +AI: Check Bad Move + +Spinda +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Hypnosis +- Psybeam +- Dizzy Punch +- Teeter Dance + +Slaking +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Focus Punch +- Yawn +- Slack Off +- Feint Attack + +=== TRAINER_ANNA_AND_MEG_1 === +Name: ANNA & MEG +Class: Sr And Jr +Pic: Sr And Jr +Gender: Male +Music: Twins +Double Battle: Yes +AI: Check Bad Move + +Zigzagoon +Level: 15 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Growl +- Tail Whip +- Headbutt +- Odor Sleuth + +Makuhita +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Tackle +- Focus Energy +- Arm Thrust + +=== TRAINER_ANNA_AND_MEG_2 === +Name: ANNA & MEG +Class: Sr And Jr +Pic: Sr And Jr +Gender: Male +Music: Twins +Double Battle: Yes +AI: Check Bad Move + +Zigzagoon +Level: 28 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe +- Growl +- Tail Whip +- Headbutt +- Odor Sleuth + +Makuhita +Level: 30 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe +- Tackle +- Focus Energy +- Arm Thrust + +=== TRAINER_ANNA_AND_MEG_3 === +Name: ANNA & MEG +Class: Sr And Jr +Pic: Sr And Jr +Gender: Male +Music: Twins +Double Battle: Yes +AI: Check Bad Move + +Zigzagoon +Level: 31 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe +- Growl +- Tail Whip +- Headbutt +- Odor Sleuth + +Makuhita +Level: 33 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe +- Tackle +- Focus Energy +- Arm Thrust + +=== TRAINER_ANNA_AND_MEG_4 === +Name: ANNA & MEG +Class: Sr And Jr +Pic: Sr And Jr +Gender: Male +Music: Twins +Double Battle: Yes +AI: Check Bad Move + +Linoone +Level: 34 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe +- Growl +- Tail Whip +- Headbutt +- Odor Sleuth + +Makuhita +Level: 36 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe +- Tackle +- Focus Energy +- Arm Thrust + +=== TRAINER_ANNA_AND_MEG_5 === +Name: ANNA & MEG +Class: Sr And Jr +Pic: Sr And Jr +Gender: Male +Music: Twins +Double Battle: Yes +AI: Check Bad Move + +Linoone +Level: 36 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe +- Growl +- Tail Whip +- Headbutt +- Odor Sleuth + +Hariyama +Level: 38 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe +- Tackle +- Focus Energy +- Arm Thrust + +=== TRAINER_VICTOR === +Name: VICTOR +Class: Winstrate +Pic: Pokefan M +Gender: Male +Music: Twins +Double Battle: No +AI: Check Bad Move + +Taillow @ Oran Berry +Level: 16 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Zigzagoon @ Oran Berry +Level: 16 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_MIGUEL_1 === +Name: MIGUEL +Class: Pokefan +Pic: Pokefan M +Gender: Male +Music: Twins +Double Battle: No +AI: Check Bad Move + +Skitty @ Oran Berry +Level: 15 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_COLTON === +Name: COLTON +Class: Pokefan +Pic: Pokefan M +Gender: Male +Music: Twins +Double Battle: No +AI: Check Bad Move + +Skitty @ Oran Berry +Level: 22 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Assist +- Charm +- Feint Attack +- Heal Bell + +Skitty @ Oran Berry +Level: 36 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Assist +- Charm +- Feint Attack +- Heal Bell + +Skitty @ Oran Berry +Level: 40 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Assist +- Charm +- Feint Attack +- Heal Bell + +Skitty @ Oran Berry +Level: 12 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Assist +- Charm +- Feint Attack +- Heal Bell + +Skitty @ Oran Berry +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Assist +- Charm +- Feint Attack +- Heal Bell + +Delcatty @ Oran Berry +Level: 42 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Assist +- Charm +- Feint Attack +- Heal Bell + +=== TRAINER_MIGUEL_2 === +Name: MIGUEL +Class: Pokefan +Pic: Pokefan M +Gender: Male +Music: Twins +Double Battle: No +AI: Check Bad Move + +Skitty @ Oran Berry +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MIGUEL_3 === +Name: MIGUEL +Class: Pokefan +Pic: Pokefan M +Gender: Male +Music: Twins +Double Battle: No +AI: Check Bad Move + +Skitty @ Oran Berry +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MIGUEL_4 === +Name: MIGUEL +Class: Pokefan +Pic: Pokefan M +Gender: Male +Music: Twins +Double Battle: No +AI: Check Bad Move + +Delcatty @ Oran Berry +Level: 35 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MIGUEL_5 === +Name: MIGUEL +Class: Pokefan +Pic: Pokefan M +Gender: Male +Music: Twins +Double Battle: No +AI: Check Bad Move + +Delcatty @ Sitrus Berry +Level: 38 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_VICTORIA === +Name: VICTORIA +Class: Winstrate +Pic: Pokefan F +Gender: Female +Music: Twins +Double Battle: No +AI: Check Bad Move / Try To Faint + +Roselia @ Oran Berry +Level: 17 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_VANESSA === +Name: VANESSA +Class: Pokefan +Pic: Pokefan F +Gender: Female +Music: Twins +Double Battle: No +AI: Check Bad Move + +Pikachu @ Oran Berry +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BETHANY === +Name: BETHANY +Class: Pokefan +Pic: Pokefan F +Gender: Female +Music: Twins +Double Battle: No +AI: Check Bad Move + +Azurill @ Oran Berry +Level: 35 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Marill @ Oran Berry +Level: 37 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Azumarill @ Oran Berry +Level: 39 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_ISABEL_1 === +Name: ISABEL +Class: Pokefan +Pic: Pokefan F +Gender: Female +Music: Twins +Double Battle: No +AI: Check Bad Move + +Plusle @ Oran Berry +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Minun @ Oran Berry +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ISABEL_2 === +Name: ISABEL +Class: Pokefan +Pic: Pokefan F +Gender: Female +Music: Twins +Double Battle: No +AI: Check Bad Move + +Plusle @ Oran Berry +Level: 26 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Minun @ Oran Berry +Level: 26 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_ISABEL_3 === +Name: ISABEL +Class: Pokefan +Pic: Pokefan F +Gender: Female +Music: Twins +Double Battle: No +AI: Check Bad Move + +Plusle @ Oran Berry +Level: 29 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Minun @ Oran Berry +Level: 29 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_ISABEL_4 === +Name: ISABEL +Class: Pokefan +Pic: Pokefan F +Gender: Female +Music: Twins +Double Battle: No +AI: Check Bad Move + +Plusle @ Oran Berry +Level: 32 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Minun @ Oran Berry +Level: 32 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_ISABEL_5 === +Name: ISABEL +Class: Pokefan +Pic: Pokefan F +Gender: Female +Music: Twins +Double Battle: No +AI: Check Bad Move + +Plusle @ Sitrus Berry +Level: 35 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Minun @ Sitrus Berry +Level: 35 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_TIMOTHY_1 === +Name: TIMOTHY +Class: Expert +Pic: Expert M +Gender: Male +Music: Intense +Double Battle: No +AI: Basic Trainer + +Hariyama +Level: 27 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +=== TRAINER_TIMOTHY_2 === +Name: TIMOTHY +Class: Expert +Pic: Expert M +Gender: Male +Music: Intense +Double Battle: No +AI: Basic Trainer + +Hariyama +Level: 33 +IVs: 25 HP / 25 Atk / 25 Def / 25 SpA / 25 SpD / 25 Spe +- Arm Thrust +- Knock Off +- Sand Attack +- Dig + +=== TRAINER_TIMOTHY_3 === +Name: TIMOTHY +Class: Expert +Pic: Expert M +Gender: Male +Music: Intense +Double Battle: No +AI: Basic Trainer + +Hariyama +Level: 36 +IVs: 26 HP / 26 Atk / 26 Def / 26 SpA / 26 SpD / 26 Spe +- Arm Thrust +- Knock Off +- Sand Attack +- Dig + +=== TRAINER_TIMOTHY_4 === +Name: TIMOTHY +Class: Expert +Pic: Expert M +Gender: Male +Music: Intense +Double Battle: No +AI: Basic Trainer + +Hariyama +Level: 39 +IVs: 27 HP / 27 Atk / 27 Def / 27 SpA / 27 SpD / 27 Spe +- Arm Thrust +- Belly Drum +- Sand Attack +- Dig + +=== TRAINER_TIMOTHY_5 === +Name: TIMOTHY +Class: Expert +Pic: Expert M +Gender: Male +Music: Intense +Double Battle: No +AI: Basic Trainer + +Hariyama +Level: 42 +IVs: 29 HP / 29 Atk / 29 Def / 29 SpA / 29 SpD / 29 Spe +- Arm Thrust +- Belly Drum +- Sand Attack +- Dig + +=== TRAINER_VICKY === +Name: VICKY +Class: Winstrate +Pic: Expert F +Gender: Female +Music: Intense +Double Battle: No +AI: Basic Trainer + +Meditite +Level: 18 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe +- High Jump Kick +- Meditate +- Confusion +- Detect + +=== TRAINER_SHELBY_1 === +Name: SHELBY +Class: Expert +Pic: Expert F +Gender: Female +Music: Intense +Double Battle: No +AI: Basic Trainer + +Meditite +Level: 21 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +Makuhita +Level: 21 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +=== TRAINER_SHELBY_2 === +Name: SHELBY +Class: Expert +Pic: Expert F +Gender: Female +Music: Intense +Double Battle: No +AI: Basic Trainer + +Meditite +Level: 30 +IVs: 25 HP / 25 Atk / 25 Def / 25 SpA / 25 SpD / 25 Spe + +Makuhita +Level: 30 +IVs: 25 HP / 25 Atk / 25 Def / 25 SpA / 25 SpD / 25 Spe + +=== TRAINER_SHELBY_3 === +Name: SHELBY +Class: Expert +Pic: Expert F +Gender: Female +Music: Intense +Double Battle: No +AI: Basic Trainer + +Medicham +Level: 33 +IVs: 26 HP / 26 Atk / 26 Def / 26 SpA / 26 SpD / 26 Spe + +Hariyama +Level: 33 +IVs: 26 HP / 26 Atk / 26 Def / 26 SpA / 26 SpD / 26 Spe + +=== TRAINER_SHELBY_4 === +Name: SHELBY +Class: Expert +Pic: Expert F +Gender: Female +Music: Intense +Double Battle: No +AI: Basic Trainer + +Medicham +Level: 36 +IVs: 27 HP / 27 Atk / 27 Def / 27 SpA / 27 SpD / 27 Spe + +Hariyama +Level: 36 +IVs: 27 HP / 27 Atk / 27 Def / 27 SpA / 27 SpD / 27 Spe + +=== TRAINER_SHELBY_5 === +Name: SHELBY +Class: Expert +Pic: Expert F +Gender: Female +Music: Intense +Double Battle: No +AI: Basic Trainer + +Medicham +Level: 39 +IVs: 29 HP / 29 Atk / 29 Def / 29 SpA / 29 SpD / 29 Spe + +Hariyama +Level: 39 +IVs: 29 HP / 29 Atk / 29 Def / 29 SpA / 29 SpD / 29 Spe + +=== TRAINER_CALVIN_1 === +Name: CALVIN +Class: Youngster +Pic: Youngster +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Poochyena +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BILLY === +Name: BILLY +Class: Youngster +Pic: Youngster +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Zigzagoon +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Seedot +Level: 7 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JOSH === +Name: JOSH +Class: Youngster +Pic: Youngster +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Geodude +Level: 10 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Tackle + +=== TRAINER_TOMMY === +Name: TOMMY +Class: Youngster +Pic: Youngster +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Geodude +Level: 8 +IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe + +Geodude +Level: 8 +IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe + +=== TRAINER_JOEY === +Name: JOEY +Class: Youngster +Pic: Youngster +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Machop +Level: 9 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BEN === +Name: BEN +Class: Youngster +Pic: Youngster +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Zigzagoon +Level: 17 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Headbutt +- Sand Attack +- Growl +- Thunderbolt + +Gulpin +Level: 17 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Amnesia +- Sludge +- Yawn +- Pound + +=== TRAINER_QUINCY === +Name: QUINCY +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Basic Trainer + +Slaking +Level: 43 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Attract +- Ice Beam +- Thunderbolt +- Flamethrower + +Dusclops +Level: 43 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Skill Swap +- Protect +- Will O Wisp +- Toxic + +=== TRAINER_KATELYNN === +Name: KATELYNN +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Basic Trainer + +Gardevoir +Level: 43 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Skill Swap +- Psychic +- Thunderbolt +- Calm Mind + +Slaking +Level: 43 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Earthquake +- Shadow Ball +- Aerial Ace +- Brick Break + +=== TRAINER_JAYLEN === +Name: JAYLEN +Class: Youngster +Pic: Youngster +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Trapinch +Level: 19 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DILLON === +Name: DILLON +Class: Youngster +Pic: Youngster +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Aron +Level: 19 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CALVIN_2 === +Name: CALVIN +Class: Youngster +Pic: Youngster +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Mightyena +Level: 27 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_CALVIN_3 === +Name: CALVIN +Class: Youngster +Pic: Youngster +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Swellow +Level: 28 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Mightyena +Level: 30 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_CALVIN_4 === +Name: CALVIN +Class: Youngster +Pic: Youngster +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Swellow +Level: 31 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Linoone +Level: 29 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Mightyena +Level: 33 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_CALVIN_5 === +Name: CALVIN +Class: Youngster +Pic: Youngster +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Swellow +Level: 34 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Linoone +Level: 32 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Mightyena +Level: 36 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_EDDIE === +Name: EDDIE +Class: Youngster +Pic: Youngster +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Zigzagoon +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Zigzagoon +Level: 16 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ALLEN === +Name: ALLEN +Class: Youngster +Pic: Youngster +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Zigzagoon +Level: 4 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Taillow +Level: 3 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_TIMMY === +Name: TIMMY +Class: Youngster +Pic: Youngster +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Aron +Level: 15 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Electrike +Level: 13 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_WALLACE === +Name: WALLACE +Class: Champion +Pic: Champion Wallace +Gender: Male +Music: Male +Items: Full Restore / Full Restore / Full Restore / Full Restore +Double Battle: No +AI: Basic Trainer +Mugshot: Yellow + +Wailord +Level: 57 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Rain Dance +- Water Spout +- Double Edge +- Blizzard + +Tentacruel +Level: 55 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Toxic +- Hydro Pump +- Sludge Bomb +- Ice Beam + +Ludicolo +Level: 56 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Giga Drain +- Surf +- Leech Seed +- Double Team + +Whiscash +Level: 56 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Earthquake +- Surf +- Amnesia +- Hyper Beam + +Gyarados +Level: 56 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Dragon Dance +- Earthquake +- Hyper Beam +- Surf + +Milotic @ Sitrus Berry +Level: 58 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Recover +- Surf +- Ice Beam +- Toxic + +=== TRAINER_ANDREW === +Name: ANDREW +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Magikarp +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Tentacool +Level: 10 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Magikarp +Level: 15 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_IVAN === +Name: IVAN +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Magikarp +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Magikarp +Level: 6 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Magikarp +Level: 7 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CLAUDE === +Name: CLAUDE +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Magikarp +Level: 16 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Goldeen +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Barboach +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ELLIOT_1 === +Name: ELLIOT +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Magikarp +Level: 10 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Tentacool +Level: 7 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Magikarp +Level: 10 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_NED === +Name: NED +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Tentacool +Level: 11 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_DALE === +Name: DALE +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Tentacool +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wailmer +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Tentacool +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wailmer +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_NOLAN === +Name: NOLAN +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Barboach +Level: 19 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BARNY === +Name: BARNY +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Tentacool +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Carvanha +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_WADE === +Name: WADE +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Tentacool +Level: 16 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CARTER === +Name: CARTER +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Wailmer +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Tentacruel +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_ELLIOT_2 === +Name: ELLIOT +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Tentacool +Level: 24 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Gyarados +Level: 27 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Gyarados +Level: 27 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_ELLIOT_3 === +Name: ELLIOT +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Gyarados +Level: 29 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Carvanha +Level: 26 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Tentacool +Level: 26 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Gyarados +Level: 29 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_ELLIOT_4 === +Name: ELLIOT +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Gyarados +Level: 31 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Carvanha +Level: 30 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Tentacruel +Level: 30 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Gyarados +Level: 31 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_ELLIOT_5 === +Name: ELLIOT +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move / Try To Faint + +Gyarados +Level: 33 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Sharpedo +Level: 33 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Gyarados +Level: 33 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Tentacruel +Level: 35 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_RONALD === +Name: RONALD +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Magikarp +Level: 19 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Gyarados +Level: 21 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Gyarados +Level: 23 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Gyarados +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Gyarados +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Gyarados +Level: 35 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JACOB === +Name: JACOB +Class: Triathlete +Pic: Cycling Triathlete M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Voltorb +Level: 6 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Voltorb +Level: 6 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Magnemite +Level: 14 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +=== TRAINER_ANTHONY === +Name: ANTHONY +Class: Triathlete +Pic: Cycling Triathlete M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Magnemite +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Magnemite +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BENJAMIN_1 === +Name: BENJAMIN +Class: Triathlete +Pic: Cycling Triathlete M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Magnemite +Level: 16 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BENJAMIN_2 === +Name: BENJAMIN +Class: Triathlete +Pic: Cycling Triathlete M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Magnemite +Level: 30 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_BENJAMIN_3 === +Name: BENJAMIN +Class: Triathlete +Pic: Cycling Triathlete M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Magnemite +Level: 33 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_BENJAMIN_4 === +Name: BENJAMIN +Class: Triathlete +Pic: Cycling Triathlete M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Magneton +Level: 36 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_BENJAMIN_5 === +Name: BENJAMIN +Class: Triathlete +Pic: Cycling Triathlete M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Magneton +Level: 39 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_ABIGAIL_1 === +Name: ABIGAIL +Class: Triathlete +Pic: Cycling Triathlete F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Magnemite +Level: 16 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JASMINE === +Name: JASMINE +Class: Triathlete +Pic: Cycling Triathlete F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Magnemite +Level: 14 +IVs: 9 HP / 9 Atk / 9 Def / 9 SpA / 9 SpD / 9 Spe + +Magnemite +Level: 14 +IVs: 9 HP / 9 Atk / 9 Def / 9 SpA / 9 SpD / 9 Spe + +Voltorb +Level: 6 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ABIGAIL_2 === +Name: ABIGAIL +Class: Triathlete +Pic: Cycling Triathlete F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Magnemite +Level: 28 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_ABIGAIL_3 === +Name: ABIGAIL +Class: Triathlete +Pic: Cycling Triathlete F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Magnemite +Level: 31 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_ABIGAIL_4 === +Name: ABIGAIL +Class: Triathlete +Pic: Cycling Triathlete F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Magneton +Level: 34 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_ABIGAIL_5 === +Name: ABIGAIL +Class: Triathlete +Pic: Cycling Triathlete F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Magneton +Level: 37 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_DYLAN_1 === +Name: DYLAN +Class: Triathlete +Pic: Running Triathlete M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Doduo +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DYLAN_2 === +Name: DYLAN +Class: Triathlete +Pic: Running Triathlete M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Doduo +Level: 28 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_DYLAN_3 === +Name: DYLAN +Class: Triathlete +Pic: Running Triathlete M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Doduo +Level: 31 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_DYLAN_4 === +Name: DYLAN +Class: Triathlete +Pic: Running Triathlete M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Dodrio +Level: 34 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_DYLAN_5 === +Name: DYLAN +Class: Triathlete +Pic: Running Triathlete M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Dodrio +Level: 37 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_MARIA_1 === +Name: MARIA +Class: Triathlete +Pic: Running Triathlete F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Doduo +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MARIA_2 === +Name: MARIA +Class: Triathlete +Pic: Running Triathlete F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Doduo +Level: 28 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_MARIA_3 === +Name: MARIA +Class: Triathlete +Pic: Running Triathlete F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Doduo +Level: 31 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_MARIA_4 === +Name: MARIA +Class: Triathlete +Pic: Running Triathlete F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Dodrio +Level: 34 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_MARIA_5 === +Name: MARIA +Class: Triathlete +Pic: Running Triathlete F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Dodrio +Level: 37 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_CAMDEN === +Name: CAMDEN +Class: Triathlete +Pic: Swimming Triathlete M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Staryu +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Staryu +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DEMETRIUS === +Name: DEMETRIUS +Class: Youngster +Pic: Youngster +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Zigzagoon +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Electrike +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ISAIAH_1 === +Name: ISAIAH +Class: Triathlete +Pic: Swimming Triathlete M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Staryu +Level: 35 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_PABLO_1 === +Name: PABLO +Class: Triathlete +Pic: Swimming Triathlete M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Staryu +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Staryu +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CHASE === +Name: CHASE +Class: Triathlete +Pic: Swimming Triathlete M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Staryu +Level: 34 +IVs: 9 HP / 9 Atk / 9 Def / 9 SpA / 9 SpD / 9 Spe + +=== TRAINER_ISAIAH_2 === +Name: ISAIAH +Class: Triathlete +Pic: Swimming Triathlete M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Staryu +Level: 39 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_ISAIAH_3 === +Name: ISAIAH +Class: Triathlete +Pic: Swimming Triathlete M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Staryu +Level: 42 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_ISAIAH_4 === +Name: ISAIAH +Class: Triathlete +Pic: Swimming Triathlete M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Starmie +Level: 45 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_ISAIAH_5 === +Name: ISAIAH +Class: Triathlete +Pic: Swimming Triathlete M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Starmie +Level: 48 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_ISOBEL === +Name: ISOBEL +Class: Triathlete +Pic: Swimming Triathlete F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Staryu +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DONNY === +Name: DONNY +Class: Triathlete +Pic: Swimming Triathlete F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Staryu +Level: 34 +IVs: 19 HP / 19 Atk / 19 Def / 19 SpA / 19 SpD / 19 Spe + +=== TRAINER_TALIA === +Name: TALIA +Class: Triathlete +Pic: Swimming Triathlete F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Staryu +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_KATELYN_1 === +Name: KATELYN +Class: Triathlete +Pic: Swimming Triathlete F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Staryu +Level: 35 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ALLISON === +Name: ALLISON +Class: Triathlete +Pic: Swimming Triathlete F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 27 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Staryu +Level: 33 +IVs: 29 HP / 29 Atk / 29 Def / 29 SpA / 29 SpD / 29 Spe + +=== TRAINER_KATELYN_2 === +Name: KATELYN +Class: Triathlete +Pic: Swimming Triathlete F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Staryu +Level: 39 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_KATELYN_3 === +Name: KATELYN +Class: Triathlete +Pic: Swimming Triathlete F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Staryu +Level: 42 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_KATELYN_4 === +Name: KATELYN +Class: Triathlete +Pic: Swimming Triathlete F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Starmie +Level: 45 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_KATELYN_5 === +Name: KATELYN +Class: Triathlete +Pic: Swimming Triathlete F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Starmie +Level: 48 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_NICOLAS_1 === +Name: NICOLAS +Class: Dragon Tamer +Pic: Dragon Tamer +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Altaria +Level: 37 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Altaria +Level: 37 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_NICOLAS_2 === +Name: NICOLAS +Class: Dragon Tamer +Pic: Dragon Tamer +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Altaria +Level: 41 +IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe + +Altaria +Level: 41 +IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe + +=== TRAINER_NICOLAS_3 === +Name: NICOLAS +Class: Dragon Tamer +Pic: Dragon Tamer +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Altaria +Level: 44 +IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe + +Altaria +Level: 44 +IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe + +=== TRAINER_NICOLAS_4 === +Name: NICOLAS +Class: Dragon Tamer +Pic: Dragon Tamer +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Bagon +Level: 46 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +Altaria +Level: 46 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +Altaria +Level: 46 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +=== TRAINER_NICOLAS_5 === +Name: NICOLAS +Class: Dragon Tamer +Pic: Dragon Tamer +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Altaria +Level: 49 +IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe + +Altaria +Level: 49 +IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe + +Shelgon @ Dragon Fang +Level: 49 +IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe + +=== TRAINER_AARON === +Name: AARON +Class: Dragon Tamer +Pic: Dragon Tamer +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Bagon +Level: 34 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Dragon Breath +- Headbutt +- Focus Energy +- Ember + +=== TRAINER_PERRY === +Name: PERRY +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_HUGH === +Name: HUGH +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Tropius +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_PHIL === +Name: PHIL +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Swellow +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JARED === +Name: JARED +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Doduo +Level: 27 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Skarmory +Level: 27 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Tropius +Level: 27 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_HUMBERTO === +Name: HUMBERTO +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Skarmory +Level: 30 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe + +=== TRAINER_PRESLEY === +Name: PRESLEY +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Tropius +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Xatu +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_EDWARDO === +Name: EDWARDO +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Doduo +Level: 29 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Pelipper +Level: 29 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_COLIN === +Name: COLIN +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 28 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Natu +Level: 28 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ROBERT_1 === +Name: ROBERT +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Swablu +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BENNY === +Name: BENNY +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Swellow +Level: 36 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Pelipper +Level: 36 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Xatu +Level: 36 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CHESTER === +Name: CHESTER +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Taillow +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Swellow +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ROBERT_2 === +Name: ROBERT +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Natu +Level: 32 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Swablu +Level: 32 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_ROBERT_3 === +Name: ROBERT +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Natu +Level: 35 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Altaria +Level: 35 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_ROBERT_4 === +Name: ROBERT +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Natu +Level: 38 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Altaria +Level: 38 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_ROBERT_5 === +Name: ROBERT +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Altaria +Level: 41 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Xatu +Level: 41 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_ALEX === +Name: ALEX +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Natu +Level: 33 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Swellow +Level: 33 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_BECK === +Name: BECK +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Tropius +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_YASU === +Name: YASU +Class: Ninja Boy +Pic: Ninja Boy +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move / Try To Faint + +Ninjask +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_TAKASHI === +Name: TAKASHI +Class: Ninja Boy +Pic: Ninja Boy +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move / Try To Faint + +Ninjask +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Koffing +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DIANNE === +Name: DIANNE +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No + +Claydol +Level: 43 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Skill Swap +- Earthquake + +Lanturn +Level: 43 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Thunderbolt +- Earthquake + +=== TRAINER_JANI === +Name: JANI +Class: Tuber F +Pic: Tuber F +Gender: Female +Music: Girl +Double Battle: No + +Marill +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LAO_1 === +Name: LAO +Class: Ninja Boy +Pic: Ninja Boy +Gender: Male +Music: Suspicious +Double Battle: No + +Koffing +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Poison Gas +- Tackle +- Smog +- Self Destruct + +Koffing +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Poison Gas +- Tackle +- Smog +- Self Destruct + +Koffing +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Poison Gas +- Tackle +- Sludge +- Self Destruct + +=== TRAINER_LUNG === +Name: LUNG +Class: Ninja Boy +Pic: Ninja Boy +Gender: Male +Music: Suspicious +Double Battle: No + +Koffing +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Ninjask +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LAO_2 === +Name: LAO +Class: Ninja Boy +Pic: Ninja Boy +Gender: Male +Music: Suspicious +Double Battle: No + +Koffing +Level: 24 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Poison Gas +- Tackle +- Sludge +- Self Destruct + +Koffing +Level: 24 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Poison Gas +- Tackle +- Sludge + +Koffing +Level: 24 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Poison Gas +- Tackle +- Sludge +- Self Destruct + +Koffing +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Tackle +- Sludge + +=== TRAINER_LAO_3 === +Name: LAO +Class: Ninja Boy +Pic: Ninja Boy +Gender: Male +Music: Suspicious +Double Battle: No + +Koffing +Level: 27 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe +- Poison Gas +- Tackle +- Sludge +- Self Destruct + +Koffing +Level: 27 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe +- Poison Gas +- Tackle +- Sludge +- Self Destruct + +Koffing +Level: 27 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe +- Poison Gas +- Tackle +- Sludge + +Koffing +Level: 29 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe +- Tackle +- Sludge + +=== TRAINER_LAO_4 === +Name: LAO +Class: Ninja Boy +Pic: Ninja Boy +Gender: Male +Music: Suspicious +Double Battle: No + +Koffing +Level: 30 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe +- Poison Gas +- Tackle +- Sludge + +Koffing +Level: 30 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe +- Poison Gas +- Tackle +- Sludge + +Koffing +Level: 30 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe +- Poison Gas +- Tackle +- Sludge + +Koffing +Level: 32 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe +- Tackle +- Sludge + +=== TRAINER_LAO_5 === +Name: LAO +Class: Ninja Boy +Pic: Ninja Boy +Gender: Male +Music: Suspicious +Double Battle: No + +Koffing +Level: 33 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe +- Poison Gas +- Tackle +- Sludge + +Koffing +Level: 33 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe +- Poison Gas +- Tackle +- Sludge +- Self Destruct + +Koffing +Level: 33 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe +- Poison Gas +- Tackle +- Sludge +- Self Destruct + +Weezing @ Smoke Ball +Level: 35 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe +- Tackle +- Sludge + +=== TRAINER_JOCELYN === +Name: JOCELYN +Class: Battle Girl +Pic: Battle Girl +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Meditite +Level: 13 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +=== TRAINER_LAURA === +Name: LAURA +Class: Battle Girl +Pic: Battle Girl +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Meditite +Level: 13 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_CYNDY_1 === +Name: CYNDY +Class: Battle Girl +Pic: Battle Girl +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Meditite +Level: 18 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Makuhita +Level: 18 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_CORA === +Name: CORA +Class: Battle Girl +Pic: Battle Girl +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Meditite +Level: 27 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_PAULA === +Name: PAULA +Class: Battle Girl +Pic: Battle Girl +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Breloom +Level: 27 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_CYNDY_2 === +Name: CYNDY +Class: Battle Girl +Pic: Battle Girl +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Meditite +Level: 26 +IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe + +Makuhita +Level: 26 +IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe + +=== TRAINER_CYNDY_3 === +Name: CYNDY +Class: Battle Girl +Pic: Battle Girl +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Meditite +Level: 29 +IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe + +Makuhita +Level: 29 +IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe + +=== TRAINER_CYNDY_4 === +Name: CYNDY +Class: Battle Girl +Pic: Battle Girl +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Medicham +Level: 32 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +Hariyama +Level: 32 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +=== TRAINER_CYNDY_5 === +Name: CYNDY +Class: Battle Girl +Pic: Battle Girl +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Medicham +Level: 35 +IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe + +Hariyama +Level: 35 +IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe + +=== TRAINER_MADELINE_1 === +Name: MADELINE +Class: Parasol Lady +Pic: Parasol Lady +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Numel +Level: 19 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Ember +- Tackle +- Magnitude +- Sunny Day + +=== TRAINER_CLARISSA === +Name: CLARISSA +Class: Parasol Lady +Pic: Parasol Lady +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Roselia +Level: 28 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wailmer +Level: 28 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ANGELICA === +Name: ANGELICA +Class: Parasol Lady +Pic: Parasol Lady +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Castform +Level: 30 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe +- Rain Dance +- Weather Ball +- Thunder +- Water Pulse + +=== TRAINER_MADELINE_2 === +Name: MADELINE +Class: Parasol Lady +Pic: Parasol Lady +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Numel +Level: 29 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe +- Ember +- Tackle +- Magnitude +- Sunny Day + +=== TRAINER_MADELINE_3 === +Name: MADELINE +Class: Parasol Lady +Pic: Parasol Lady +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Numel +Level: 32 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe +- Ember +- Take Down +- Magnitude +- Sunny Day + +=== TRAINER_MADELINE_4 === +Name: MADELINE +Class: Parasol Lady +Pic: Parasol Lady +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Roselia +Level: 34 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe +- Leech Seed +- Mega Drain +- Grass Whistle +- Sunny Day + +Numel +Level: 34 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe +- Flamethrower +- Take Down +- Magnitude +- Sunny Day + +=== TRAINER_MADELINE_5 === +Name: MADELINE +Class: Parasol Lady +Pic: Parasol Lady +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Roselia +Level: 37 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe +- Leech Seed +- Giga Drain +- Solar Beam +- Sunny Day + +Camerupt +Level: 37 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe +- Flamethrower +- Take Down +- Earthquake +- Sunny Day + +=== TRAINER_BEVERLY === +Name: BEVERLY +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wailmer +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_IMANI === +Name: IMANI +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Marill +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_KYLA === +Name: KYLA +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Wailmer +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DENISE === +Name: DENISE +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Goldeen +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BETH === +Name: BETH +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Goldeen +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_TARA === +Name: TARA +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Horsea +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Marill +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MISSY === +Name: MISSY +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Goldeen +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ALICE === +Name: ALICE +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Goldeen +Level: 24 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wingull +Level: 24 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Goldeen +Level: 24 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JENNY_1 === +Name: JENNY +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Wailmer +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRACE === +Name: GRACE +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Marill +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_TANYA === +Name: TANYA +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Luvdisc +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_SHARON === +Name: SHARON +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Seaking +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_NIKKI === +Name: NIKKI +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Marill +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Spheal +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BRENDA === +Name: BRENDA +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Goldeen +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_KATIE === +Name: KATIE +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Goldeen +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Spheal +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_SUSIE === +Name: SUSIE +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Luvdisc +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_KARA === +Name: KARA +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Seaking +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DANA === +Name: DANA +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Azumarill +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_SIENNA === +Name: SIENNA +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Luvdisc +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Luvdisc +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DEBRA === +Name: DEBRA +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Seaking +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LINDA === +Name: LINDA +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Horsea +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Seadra +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_KAYLEE === +Name: KAYLEE +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Lanturn +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Pelipper +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LAUREL === +Name: LAUREL +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Luvdisc +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Luvdisc +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CARLEE === +Name: CARLEE +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Seaking +Level: 35 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JENNY_2 === +Name: JENNY +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Wailmer +Level: 38 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JENNY_3 === +Name: JENNY +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Wailmer +Level: 41 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JENNY_4 === +Name: JENNY +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Staryu +Level: 43 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wailmer +Level: 43 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JENNY_5 === +Name: JENNY +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Luvdisc +Level: 45 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wailmer +Level: 45 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Starmie +Level: 45 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_HEIDI === +Name: HEIDI +Class: Picnicker +Pic: Picnicker +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Sandshrew +Level: 22 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Dig +- Sand Attack +- Poison Sting +- Slash + +Baltoy +Level: 22 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Rapid Spin +- Mud Slap +- Psybeam +- Rock Tomb + +=== TRAINER_BECKY === +Name: BECKY +Class: Picnicker +Pic: Picnicker +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Sandshrew +Level: 22 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Sand Attack +- Poison Sting +- Slash +- Dig + +Marill +Level: 22 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Rollout +- Bubble Beam +- Tail Whip +- Defense Curl + +=== TRAINER_CAROL === +Name: CAROL +Class: Picnicker +Pic: Picnicker +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Taillow +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Lombre +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_NANCY === +Name: NANCY +Class: Picnicker +Pic: Picnicker +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Marill +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Lombre +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MARTHA === +Name: MARTHA +Class: Picnicker +Pic: Picnicker +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Skitty +Level: 23 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Swablu +Level: 23 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DIANA_1 === +Name: DIANA +Class: Picnicker +Pic: Picnicker +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Shroomish +Level: 19 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Oddish +Level: 19 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Swablu +Level: 19 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CEDRIC === +Name: CEDRIC +Class: Psychic +Pic: Psychic M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Wobbuffet +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Destiny Bond +- Safeguard +- Counter +- Mirror Coat + +=== TRAINER_IRENE === +Name: IRENE +Class: Picnicker +Pic: Picnicker +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Shroomish +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Marill +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DIANA_2 === +Name: DIANA +Class: Picnicker +Pic: Picnicker +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Shroomish +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Gloom +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Swablu +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_DIANA_3 === +Name: DIANA +Class: Picnicker +Pic: Picnicker +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Breloom +Level: 28 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Gloom +Level: 28 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Swablu +Level: 28 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_DIANA_4 === +Name: DIANA +Class: Picnicker +Pic: Picnicker +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Breloom +Level: 31 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Gloom +Level: 31 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Swablu +Level: 31 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_DIANA_5 === +Name: DIANA +Class: Picnicker +Pic: Picnicker +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Breloom +Level: 40 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Vileplume +Level: 40 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Altaria +Level: 40 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_AMY_AND_LIV_1 === +Name: AMY & LIV +Class: Twins +Pic: Twins +Gender: Male +Music: Twins +Double Battle: Yes +AI: Check Bad Move + +Plusle +Level: 15 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Minun +Level: 15 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_AMY_AND_LIV_2 === +Name: AMY & LIV +Class: Twins +Pic: Twins +Gender: Male +Music: Twins +Double Battle: Yes +AI: Check Bad Move + +Plusle +Level: 27 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Minun +Level: 27 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_GINA_AND_MIA_1 === +Name: GINA & MIA +Class: Twins +Pic: Twins +Gender: Male +Music: Twins +Double Battle: Yes +AI: Check Bad Move + +Seedot +Level: 6 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Lotad +Level: 6 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MIU_AND_YUKI === +Name: MIU & YUKI +Class: Twins +Pic: Twins +Gender: Male +Music: Twins +Double Battle: Yes +AI: Check Bad Move + +Beautifly +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Dustox +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_AMY_AND_LIV_3 === +Name: AMY & LIV +Class: Twins +Pic: Twins +Gender: Male +Music: Twins +Double Battle: Yes +AI: Check Bad Move + +Plusle +Level: 9 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Minun +Level: 9 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GINA_AND_MIA_2 === +Name: GINA & MIA +Class: Twins +Pic: Twins +Gender: Male +Music: Twins +Double Battle: Yes +AI: Check Bad Move + +Duskull +Level: 10 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Night Shade +- Disable + +Shroomish +Level: 10 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Absorb +- Leech Seed + +=== TRAINER_AMY_AND_LIV_4 === +Name: AMY & LIV +Class: Twins +Pic: Twins +Gender: Male +Music: Twins +Double Battle: Yes +AI: Check Bad Move + +Plusle +Level: 30 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Minun +Level: 30 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_AMY_AND_LIV_5 === +Name: AMY & LIV +Class: Twins +Pic: Twins +Gender: Male +Music: Twins +Double Battle: Yes +AI: Check Bad Move + +Plusle +Level: 33 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe +- Spark +- Charge +- Fake Tears +- Helping Hand + +Minun +Level: 33 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe +- Spark +- Charge +- Charm +- Helping Hand + +=== TRAINER_AMY_AND_LIV_6 === +Name: AMY & LIV +Class: Twins +Pic: Twins +Gender: Male +Music: Twins +Double Battle: Yes +AI: Check Bad Move + +Plusle +Level: 36 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe +- Thunder +- Charge +- Fake Tears +- Helping Hand + +Minun +Level: 36 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe +- Thunder +- Charge +- Charm +- Helping Hand + +=== TRAINER_HUEY === +Name: HUEY +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 12 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Machop +Level: 12 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_EDMOND === +Name: EDMOND +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 13 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ERNEST_1 === +Name: ERNEST +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Machoke +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DWAYNE === +Name: DWAYNE +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Machop +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Tentacool +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_PHILLIP === +Name: PHILLIP +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Tentacruel +Level: 44 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Machoke +Level: 44 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LEONARD === +Name: LEONARD +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Machop +Level: 43 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Pelipper +Level: 43 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Machoke +Level: 43 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DUNCAN === +Name: DUNCAN +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Spheal +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Machoke +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ERNEST_2 === +Name: ERNEST +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 36 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Tentacool +Level: 36 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Machoke +Level: 36 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_ERNEST_3 === +Name: ERNEST +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Pelipper +Level: 39 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Tentacool +Level: 39 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Machoke +Level: 39 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_ERNEST_4 === +Name: ERNEST +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Pelipper +Level: 42 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Tentacool +Level: 42 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Machoke +Level: 42 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_ERNEST_5 === +Name: ERNEST +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Pelipper +Level: 45 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Machoke +Level: 45 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Tentacruel +Level: 45 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_ELI === +Name: ELI +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Numel +Level: 23 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_ANNIKA === +Name: ANNIKA +Class: Pokefan +Pic: Pokefan F +Gender: Female +Music: Twins +Double Battle: No +AI: Check Bad Move + +Feebas @ Oran Berry +Level: 39 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Flail +- Water Pulse +- Return +- Attract + +Feebas @ Oran Berry +Level: 39 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Flail +- Water Pulse +- Return +- Attract + +=== TRAINER_JAZMYN === +Name: JAZMYN +Class: Cooltrainer 2 +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Basic Trainer + +Absol +Level: 27 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JONAS === +Name: JONAS +Class: Ninja Boy +Pic: Ninja Boy +Gender: Male +Music: Suspicious +Double Battle: No +AI: Basic Trainer + +Koffing +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Toxic +- Thunder +- Self Destruct +- Sludge Bomb + +=== TRAINER_KAYLEY === +Name: KAYLEY +Class: Parasol Lady +Pic: Parasol Lady +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Castform +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Sunny Day +- Weather Ball +- Flamethrower +- Solar Beam + +=== TRAINER_AURON === +Name: AURON +Class: Expert +Pic: Expert M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Manectric +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Machamp +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_KELVIN === +Name: KELVIN +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Machoke +Level: 33 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Spheal +Level: 33 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_MARLEY === +Name: MARLEY +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Basic Trainer + +Manectric +Level: 34 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Bite +- Roar +- Thunder Wave +- Thunderbolt + +=== TRAINER_REYNA === +Name: REYNA +Class: Battle Girl +Pic: Battle Girl +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Meditite +Level: 33 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Hariyama +Level: 33 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +=== TRAINER_HUDSON === +Name: HUDSON +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Wailmer +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CONOR === +Name: CONOR +Class: Expert +Pic: Expert M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Chinchou +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Hariyama +Level: 33 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +=== TRAINER_EDWIN_1 === +Name: EDWIN +Class: Collector +Pic: Collector +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Lombre +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Nuzleaf +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_HECTOR === +Name: HECTOR +Class: Collector +Pic: Collector +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Zangoose +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Seviper +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_TABITHA_MOSSDEEP === +Name: TABITHA +Class: Magma Admin +Pic: Magma Admin +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Camerupt +Level: 36 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Mightyena +Level: 38 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Golbat +Level: 40 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_EDWIN_2 === +Name: EDWIN +Class: Collector +Pic: Collector +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Lombre +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Nuzleaf +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_EDWIN_3 === +Name: EDWIN +Class: Collector +Pic: Collector +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Lombre +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Nuzleaf +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_EDWIN_4 === +Name: EDWIN +Class: Collector +Pic: Collector +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Lombre +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Nuzleaf +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_EDWIN_5 === +Name: EDWIN +Class: Collector +Pic: Collector +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Ludicolo +Level: 35 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Shiftry +Level: 35 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_WALLY_VR_1 === +Name: WALLY +Class: Rival +Pic: Wally +Gender: Male +Music: Male +Items: Full Restore / Full Restore +Double Battle: No +AI: Basic Trainer + +Altaria +Level: 44 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Aerial Ace +- Safeguard +- Dragon Breath +- Dragon Dance + +Delcatty +Level: 43 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Sing +- Assist +- Charm +- Feint Attack + +Roselia +Level: 44 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Magical Leaf +- Leech Seed +- Giga Drain +- Toxic + +Magneton +Level: 41 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Supersonic +- Thunderbolt +- Tri Attack +- Screech + +Gardevoir +Level: 45 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Double Team +- Calm Mind +- Psychic +- Future Sight + +=== TRAINER_BRENDAN_ROUTE_103_MUDKIP === +Name: BRENDAN +Class: Rival +Pic: Brendan +Gender: Male +Music: Male +Double Battle: No +AI: Basic Trainer + +Treecko +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BRENDAN_ROUTE_110_MUDKIP === +Name: BRENDAN +Class: Rival +Pic: Brendan +Gender: Male +Music: Male +Double Battle: No +AI: Basic Trainer + +Slugma +Level: 18 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Wingull +Level: 18 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Grovyle +Level: 20 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_BRENDAN_ROUTE_119_MUDKIP === +Name: BRENDAN +Class: Rival +Pic: Brendan +Gender: Male +Music: Male +Double Battle: No +AI: Basic Trainer + +Slugma +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Pelipper +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Grovyle +Level: 31 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_BRENDAN_ROUTE_103_TREECKO === +Name: BRENDAN +Class: Rival +Pic: Brendan +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move / Try To Faint / Force Setup First Turn + +Torchic +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BRENDAN_ROUTE_110_TREECKO === +Name: BRENDAN +Class: Rival +Pic: Brendan +Gender: Male +Music: Male +Double Battle: No +AI: Basic Trainer + +Wingull +Level: 18 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Lombre +Level: 18 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Combusken +Level: 20 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_BRENDAN_ROUTE_119_TREECKO === +Name: BRENDAN +Class: Rival +Pic: Brendan +Gender: Male +Music: Male +Double Battle: No +AI: Basic Trainer + +Pelipper +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Lombre +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Combusken +Level: 31 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_BRENDAN_ROUTE_103_TORCHIC === +Name: BRENDAN +Class: Rival +Pic: Brendan +Gender: Male +Music: Male +Double Battle: No +AI: Basic Trainer + +Mudkip +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BRENDAN_ROUTE_110_TORCHIC === +Name: BRENDAN +Class: Rival +Pic: Brendan +Gender: Male +Music: Male +Double Battle: No +AI: Basic Trainer + +Lombre +Level: 18 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Slugma +Level: 18 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Marshtomp +Level: 20 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_BRENDAN_ROUTE_119_TORCHIC === +Name: BRENDAN +Class: Rival +Pic: Brendan +Gender: Male +Music: Male +Double Battle: No +AI: Basic Trainer + +Lombre +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Slugma +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Marshtomp +Level: 31 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_MAY_ROUTE_103_MUDKIP === +Name: MAY +Class: Rival +Pic: May +Gender: Female +Music: Female +Double Battle: No +AI: Basic Trainer + +Treecko +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MAY_ROUTE_110_MUDKIP === +Name: MAY +Class: Rival +Pic: May +Gender: Female +Music: Female +Double Battle: No +AI: Basic Trainer + +Wingull +Level: 18 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Slugma +Level: 18 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Grovyle +Level: 20 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_MAY_ROUTE_119_MUDKIP === +Name: MAY +Class: Rival +Pic: May +Gender: Female +Music: Female +Double Battle: No +AI: Basic Trainer + +Slugma +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Lombre +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Grovyle +Level: 31 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_MAY_ROUTE_103_TREECKO === +Name: MAY +Class: Rival +Pic: May +Gender: Female +Music: Female +Double Battle: No +AI: Basic Trainer + +Torchic +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MAY_ROUTE_110_TREECKO === +Name: MAY +Class: Rival +Pic: May +Gender: Female +Music: Female +Double Battle: No +AI: Basic Trainer + +Wingull +Level: 18 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Lombre +Level: 18 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Combusken +Level: 20 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_MAY_ROUTE_119_TREECKO === +Name: MAY +Class: Rival +Pic: May +Gender: Female +Music: Female +Double Battle: No +AI: Basic Trainer + +Pelipper +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Lombre +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Combusken +Level: 31 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_MAY_ROUTE_103_TORCHIC === +Name: MAY +Class: Rival +Pic: May +Gender: Female +Music: Female +Double Battle: No +AI: Basic Trainer + +Mudkip +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MAY_ROUTE_110_TORCHIC === +Name: MAY +Class: Rival +Pic: May +Gender: Female +Music: Female +Double Battle: No +AI: Basic Trainer + +Lombre +Level: 18 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Slugma +Level: 18 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Marshtomp +Level: 20 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_MAY_ROUTE_119_TORCHIC === +Name: MAY +Class: Rival +Pic: May +Gender: Female +Music: Female +Double Battle: No +AI: Basic Trainer + +Lombre +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Slugma +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Marshtomp +Level: 31 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_ISAAC_1 === +Name: ISAAC +Class: Pkmn Breeder +Pic: Pokemon Breeder M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Whismur +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Zigzagoon +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Aron +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Poochyena +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Taillow +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Makuhita +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DAVIS === +Name: DAVIS +Class: Bug Catcher +Pic: Bug Catcher +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Pinsir +Level: 27 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MITCHELL === +Name: MITCHELL +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Double Battle: No +AI: Basic Trainer + +Lunatone +Level: 43 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Explosion +- Reflect +- Light Screen +- Psychic + +Solrock +Level: 43 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Explosion +- Reflect +- Light Screen +- Shadow Ball + +=== TRAINER_ISAAC_2 === +Name: ISAAC +Class: Pkmn Breeder +Pic: Pokemon Breeder M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Loudred +Level: 22 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Linoone +Level: 22 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Aron +Level: 22 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Mightyena +Level: 22 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Swellow +Level: 22 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Makuhita +Level: 22 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_ISAAC_3 === +Name: ISAAC +Class: Pkmn Breeder +Pic: Pokemon Breeder M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Loudred +Level: 25 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Linoone +Level: 25 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Aron +Level: 25 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Mightyena +Level: 25 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Swellow +Level: 25 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Hariyama +Level: 25 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_ISAAC_4 === +Name: ISAAC +Class: Pkmn Breeder +Pic: Pokemon Breeder M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Loudred +Level: 28 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Linoone +Level: 28 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Aron +Level: 28 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Mightyena +Level: 28 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Swellow +Level: 28 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Hariyama +Level: 28 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_ISAAC_5 === +Name: ISAAC +Class: Pkmn Breeder +Pic: Pokemon Breeder M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Loudred +Level: 31 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Linoone +Level: 31 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Lairon +Level: 31 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Mightyena +Level: 31 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Swellow +Level: 31 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Hariyama +Level: 31 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_LYDIA_1 === +Name: LYDIA +Class: Pkmn Breeder +Pic: Pokemon Breeder F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Shroomish +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Marill +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Roselia +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Skitty +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Goldeen +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_HALLE === +Name: HALLE +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Basic Trainer + +Sableye +Level: 43 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Absol +Level: 43 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GARRISON === +Name: GARRISON +Class: Ruin Maniac +Pic: Ruin Maniac +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Sandslash +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LYDIA_2 === +Name: LYDIA +Class: Pkmn Breeder +Pic: Pokemon Breeder F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 22 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Shroomish +Level: 22 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Marill +Level: 22 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Roselia +Level: 22 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Skitty +Level: 22 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Goldeen +Level: 22 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_LYDIA_3 === +Name: LYDIA +Class: Pkmn Breeder +Pic: Pokemon Breeder F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Pelipper +Level: 25 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Breloom +Level: 25 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Marill +Level: 25 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Roselia +Level: 25 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Delcatty +Level: 25 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Goldeen +Level: 25 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_LYDIA_4 === +Name: LYDIA +Class: Pkmn Breeder +Pic: Pokemon Breeder F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Pelipper +Level: 28 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Breloom +Level: 28 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Marill +Level: 28 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Roselia +Level: 28 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Delcatty +Level: 28 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Goldeen +Level: 28 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_LYDIA_5 === +Name: LYDIA +Class: Pkmn Breeder +Pic: Pokemon Breeder F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Pelipper +Level: 31 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Breloom +Level: 31 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Azumarill +Level: 31 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Roselia +Level: 31 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Delcatty +Level: 31 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Seaking +Level: 31 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_JACKSON_1 === +Name: JACKSON +Class: Pkmn Ranger +Pic: Pokemon Ranger M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Basic Trainer + +Breloom +Level: 27 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_LORENZO === +Name: LORENZO +Class: Pkmn Ranger +Pic: Pokemon Ranger M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Basic Trainer + +Seedot +Level: 28 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Nuzleaf +Level: 28 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Lombre +Level: 28 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_SEBASTIAN === +Name: SEBASTIAN +Class: Pkmn Ranger +Pic: Pokemon Ranger M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Basic Trainer + +Cacturne +Level: 39 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_JACKSON_2 === +Name: JACKSON +Class: Pkmn Ranger +Pic: Pokemon Ranger M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Force Setup First Turn + +Breloom +Level: 31 +IVs: 7 HP / 7 Atk / 7 Def / 7 SpA / 7 SpD / 7 Spe + +=== TRAINER_JACKSON_3 === +Name: JACKSON +Class: Pkmn Ranger +Pic: Pokemon Ranger M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Basic Trainer + +Breloom +Level: 34 +IVs: 8 HP / 8 Atk / 8 Def / 8 SpA / 8 SpD / 8 Spe + +=== TRAINER_JACKSON_4 === +Name: JACKSON +Class: Pkmn Ranger +Pic: Pokemon Ranger M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Force Setup First Turn + +Breloom +Level: 37 +IVs: 9 HP / 9 Atk / 9 Def / 9 SpA / 9 SpD / 9 Spe + +=== TRAINER_JACKSON_5 === +Name: JACKSON +Class: Pkmn Ranger +Pic: Pokemon Ranger M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Basic Trainer + +Kecleon +Level: 39 +IVs: 10 HP / 10 Atk / 10 Def / 10 SpA / 10 SpD / 10 Spe + +Breloom +Level: 39 +IVs: 10 HP / 10 Atk / 10 Def / 10 SpA / 10 SpD / 10 Spe + +=== TRAINER_CATHERINE_1 === +Name: CATHERINE +Class: Pkmn Ranger +Pic: Pokemon Ranger F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Force Setup First Turn + +Gloom +Level: 26 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Roselia +Level: 26 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_JENNA === +Name: JENNA +Class: Pkmn Ranger +Pic: Pokemon Ranger F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Force Setup First Turn + +Lotad +Level: 28 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Lombre +Level: 28 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Nuzleaf +Level: 28 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_SOPHIA === +Name: SOPHIA +Class: Pkmn Ranger +Pic: Pokemon Ranger F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Basic Trainer + +Swablu +Level: 38 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Roselia +Level: 38 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_CATHERINE_2 === +Name: CATHERINE +Class: Pkmn Ranger +Pic: Pokemon Ranger F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Force Setup First Turn + +Gloom +Level: 30 +IVs: 7 HP / 7 Atk / 7 Def / 7 SpA / 7 SpD / 7 Spe + +Roselia +Level: 30 +IVs: 7 HP / 7 Atk / 7 Def / 7 SpA / 7 SpD / 7 Spe + +=== TRAINER_CATHERINE_3 === +Name: CATHERINE +Class: Pkmn Ranger +Pic: Pokemon Ranger F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Basic Trainer + +Gloom +Level: 33 +IVs: 8 HP / 8 Atk / 8 Def / 8 SpA / 8 SpD / 8 Spe + +Roselia +Level: 33 +IVs: 8 HP / 8 Atk / 8 Def / 8 SpA / 8 SpD / 8 Spe + +=== TRAINER_CATHERINE_4 === +Name: CATHERINE +Class: Pkmn Ranger +Pic: Pokemon Ranger F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Force Setup First Turn + +Gloom +Level: 36 +IVs: 9 HP / 9 Atk / 9 Def / 9 SpA / 9 SpD / 9 Spe + +Roselia +Level: 36 +IVs: 9 HP / 9 Atk / 9 Def / 9 SpA / 9 SpD / 9 Spe + +=== TRAINER_CATHERINE_5 === +Name: CATHERINE +Class: Pkmn Ranger +Pic: Pokemon Ranger F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Basic Trainer + +Bellossom +Level: 39 +IVs: 10 HP / 10 Atk / 10 Def / 10 SpA / 10 SpD / 10 Spe + +Roselia +Level: 39 +IVs: 10 HP / 10 Atk / 10 Def / 10 SpA / 10 SpD / 10 Spe + +=== TRAINER_JULIO === +Name: JULIO +Class: Triathlete +Pic: Cycling Triathlete M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Magnemite +Level: 21 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_SEAFLOOR_CAVERN_5 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Mightyena +Level: 35 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Golbat +Level: 35 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_GRUNT_UNUSED === +Name: GRUNT +Class: Team Magma +Pic: Aqua Grunt F +Gender: Female +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Wailmer +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Zubat +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MT_PYRE_4 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt F +Gender: Female +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Wailmer +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Zubat +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_JAGGED_PASS === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Poochyena +Level: 22 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Numel +Level: 22 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_MARC === +Name: MARC +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Geodude +Level: 8 +IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe + +Geodude +Level: 8 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +=== TRAINER_BRENDEN === +Name: BRENDEN +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Machop +Level: 13 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_LILITH === +Name: LILITH +Class: Battle Girl +Pic: Battle Girl +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Meditite +Level: 13 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_CRISTIAN === +Name: CRISTIAN +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Makuhita +Level: 13 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +=== TRAINER_SYLVIA === +Name: SYLVIA +Class: Hex Maniac +Pic: Hex Maniac +Gender: Female +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Meditite +Level: 36 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_LEONARDO === +Name: LEONARDO +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Carvanha +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ATHENA === +Name: ATHENA +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Basic Trainer + +Manectric +Level: 32 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Thunder +- Thunder Wave +- Quick Attack + +Linoone +Level: 32 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Surf +- Thief + +=== TRAINER_HARRISON === +Name: HARRISON +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Tentacruel +Level: 35 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MT_CHIMNEY_2 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Zubat +Level: 20 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CLARENCE === +Name: CLARENCE +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Sharpedo +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_TERRY === +Name: TERRY +Class: Psychic +Pic: Psychic F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Girafarig +Level: 37 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_NATE === +Name: NATE +Class: Gentleman +Pic: Gentleman +Gender: Male +Music: Rich +Double Battle: No +AI: Check Bad Move + +Spoink +Level: 36 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_KATHLEEN === +Name: KATHLEEN +Class: Hex Maniac +Pic: Hex Maniac +Gender: Female +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Kadabra +Level: 36 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_CLIFFORD === +Name: CLIFFORD +Class: Gentleman +Pic: Gentleman +Gender: Male +Music: Rich +Double Battle: No +AI: Check Bad Move + +Girafarig +Level: 36 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_NICHOLAS === +Name: NICHOLAS +Class: Psychic +Pic: Psychic M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Wobbuffet +Level: 36 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_SPACE_CENTER_3 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt F +Gender: Female +Music: Magma +Double Battle: No +AI: Check Bad Move + +Zubat +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Poochyena +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_SPACE_CENTER_4 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Baltoy +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_SPACE_CENTER_5 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Zubat +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_SPACE_CENTER_6 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Mightyena +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_SPACE_CENTER_7 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Baltoy +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MACEY === +Name: MACEY +Class: Psychic +Pic: Psychic F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Natu +Level: 36 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BRENDAN_RUSTBORO_TREECKO === +Name: BRENDAN +Class: Rival +Pic: Brendan +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Lotad +Level: 13 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Torchic +Level: 15 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_BRENDAN_RUSTBORO_MUDKIP === +Name: BRENDAN +Class: Rival +Pic: Brendan +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 13 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Treecko +Level: 15 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_PAXTON === +Name: PAXTON +Class: Expert +Pic: Expert M +Gender: Male +Music: Intense +Double Battle: No +AI: Basic Trainer + +Swellow +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Breloom +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ISABELLA === +Name: ISABELLA +Class: Triathlete +Pic: Swimming Triathlete F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Staryu +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_WEATHER_INST_5 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt F +Gender: Female +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Zubat +Level: 27 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Poochyena +Level: 27 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_TABITHA_MT_CHIMNEY === +Name: TABITHA +Class: Magma Admin +Pic: Magma Admin +Gender: Male +Music: Magma +Double Battle: No +AI: Basic Trainer + +Numel +Level: 18 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Poochyena +Level: 20 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Numel +Level: 22 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Zubat +Level: 22 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_JONATHAN === +Name: JONATHAN +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Force Setup First Turn + +Kecleon +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Loudred +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BRENDAN_RUSTBORO_TORCHIC === +Name: BRENDAN +Class: Rival +Pic: Brendan +Gender: Male +Music: Male +Double Battle: No +AI: Basic Trainer + +Slugma +Level: 13 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Mudkip +Level: 15 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_MAY_RUSTBORO_MUDKIP === +Name: MAY +Class: Rival +Pic: May +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move / Try To Faint / Force Setup First Turn + +Wingull +Level: 13 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Treecko +Level: 15 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_MAXIE_MAGMA_HIDEOUT === +Name: MAXIE +Class: Magma Leader +Pic: Magma Leader Maxie +Gender: Male +Music: Magma +Items: Super Potion / Super Potion +Double Battle: No +AI: Basic Trainer + +Mightyena +Level: 37 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Crobat +Level: 38 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Camerupt +Level: 39 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_MAXIE_MT_CHIMNEY === +Name: MAXIE +Class: Magma Leader +Pic: Magma Leader Maxie +Gender: Male +Music: Magma +Items: Super Potion / Super Potion +Double Battle: No +AI: Basic Trainer + +Mightyena +Level: 24 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Zubat +Level: 24 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Camerupt +Level: 25 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_TIANA === +Name: TIANA +Class: Lass +Pic: Lass +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Zigzagoon +Level: 4 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Shroomish +Level: 4 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_HALEY_1 === +Name: HALEY +Class: Lass +Pic: Lass +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Lotad +Level: 6 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Shroomish +Level: 6 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JANICE === +Name: JANICE +Class: Lass +Pic: Lass +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Marill +Level: 9 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_VIVI === +Name: VIVI +Class: Winstrate +Pic: Lass +Gender: Female +Music: Female +Double Battle: No +AI: Basic Trainer + +Marill +Level: 15 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Shroomish +Level: 15 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Numel +Level: 15 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_HALEY_2 === +Name: HALEY +Class: Lass +Pic: Lass +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Lombre +Level: 26 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Shroomish +Level: 26 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_HALEY_3 === +Name: HALEY +Class: Lass +Pic: Lass +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Lombre +Level: 29 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Breloom +Level: 29 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_HALEY_4 === +Name: HALEY +Class: Lass +Pic: Lass +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Lombre +Level: 32 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Breloom +Level: 32 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_HALEY_5 === +Name: HALEY +Class: Lass +Pic: Lass +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Swellow +Level: 34 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Lombre +Level: 34 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Breloom +Level: 34 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_SALLY === +Name: SALLY +Class: Lass +Pic: Lass +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Oddish +Level: 16 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ROBIN === +Name: ROBIN +Class: Lass +Pic: Lass +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Skitty +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Shroomish +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Marill +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ANDREA === +Name: ANDREA +Class: Lass +Pic: Lass +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Luvdisc +Level: 40 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_CRISSY === +Name: CRISSY +Class: Lass +Pic: Lass +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Goldeen +Level: 39 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Wailmer +Level: 39 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_RICK === +Name: RICK +Class: Bug Catcher +Pic: Bug Catcher +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Wurmple +Level: 4 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wurmple +Level: 4 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LYLE === +Name: LYLE +Class: Bug Catcher +Pic: Bug Catcher +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Wurmple +Level: 3 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wurmple +Level: 3 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wurmple +Level: 3 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wurmple +Level: 3 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JOSE === +Name: JOSE +Class: Bug Catcher +Pic: Bug Catcher +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Wurmple +Level: 8 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Nincada +Level: 8 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_DOUG === +Name: DOUG +Class: Bug Catcher +Pic: Bug Catcher +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Nincada +Level: 28 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Ninjask +Level: 28 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GREG === +Name: GREG +Class: Bug Catcher +Pic: Bug Catcher +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Volbeat +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Illumise +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_KENT === +Name: KENT +Class: Bug Catcher +Pic: Bug Catcher +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Ninjask +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JAMES_1 === +Name: JAMES +Class: Bug Catcher +Pic: Bug Catcher +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Nincada +Level: 6 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Nincada +Level: 6 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JAMES_2 === +Name: JAMES +Class: Bug Catcher +Pic: Bug Catcher +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Ninjask +Level: 27 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_JAMES_3 === +Name: JAMES +Class: Bug Catcher +Pic: Bug Catcher +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Dustox +Level: 29 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Ninjask +Level: 29 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_JAMES_4 === +Name: JAMES +Class: Bug Catcher +Pic: Bug Catcher +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Surskit +Level: 31 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Dustox +Level: 31 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Ninjask +Level: 31 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_JAMES_5 === +Name: JAMES +Class: Bug Catcher +Pic: Bug Catcher +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Surskit +Level: 33 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Ninjask +Level: 33 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Dustox +Level: 33 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Ninjask +Level: 33 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_BRICE === +Name: BRICE +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Numel +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Machop +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_TRENT_1 === +Name: TRENT +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Geodude +Level: 16 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Geodude +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Geodude +Level: 16 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LENNY === +Name: LENNY +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Geodude +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Machop +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LUCAS_1 === +Name: LUCAS +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Geodude +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Numel +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ALAN === +Name: ALAN +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Geodude +Level: 22 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Nosepass +Level: 22 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Graveler +Level: 22 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CLARK === +Name: CLARK +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Geodude +Level: 8 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ERIC === +Name: ERIC +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Geodude +Level: 20 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Baltoy +Level: 20 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LUCAS_2 === +Name: LUCAS +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Wailmer +Level: 9 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Splash +- Water Gun + +=== TRAINER_MIKE_1 === +Name: MIKE +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Pelipper +Level: 10 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Gust +- Growl + +Poochyena +Level: 10 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Bite +- Scary Face + +=== TRAINER_MIKE_2 === +Name: MIKE +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Geodude +Level: 16 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Geodude +Level: 16 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Machop +Level: 16 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_TRENT_2 === +Name: TRENT +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Geodude +Level: 24 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Geodude +Level: 24 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Geodude +Level: 24 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Graveler +Level: 24 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_TRENT_3 === +Name: TRENT +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Geodude +Level: 27 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Geodude +Level: 27 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Graveler +Level: 27 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Graveler +Level: 27 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_TRENT_4 === +Name: TRENT +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Geodude +Level: 30 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Graveler +Level: 30 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Graveler +Level: 30 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Graveler +Level: 30 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_TRENT_5 === +Name: TRENT +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Graveler +Level: 33 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Graveler +Level: 33 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Graveler +Level: 33 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Golem +Level: 33 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_DEZ_AND_LUKE === +Name: DEZ & LUKE +Class: Young Couple +Pic: Young Couple +Gender: Male +Music: Girl +Double Battle: Yes +AI: Check Bad Move + +Delcatty +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Manectric +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LEA_AND_JED === +Name: LEA & JED +Class: Young Couple +Pic: Young Couple +Gender: Male +Music: Girl +Double Battle: Yes +AI: Check Bad Move + +Luvdisc +Level: 45 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Luvdisc +Level: 45 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_KIRA_AND_DAN_1 === +Name: KIRA & DAN +Class: Young Couple +Pic: Young Couple +Gender: Male +Music: Girl +Double Battle: Yes +AI: Check Bad Move + +Volbeat +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Illumise +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_KIRA_AND_DAN_2 === +Name: KIRA & DAN +Class: Young Couple +Pic: Young Couple +Gender: Male +Music: Girl +Double Battle: Yes +AI: Check Bad Move + +Volbeat +Level: 30 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Illumise +Level: 30 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_KIRA_AND_DAN_3 === +Name: KIRA & DAN +Class: Young Couple +Pic: Young Couple +Gender: Male +Music: Girl +Double Battle: Yes +AI: Check Bad Move + +Volbeat +Level: 33 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Illumise +Level: 33 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_KIRA_AND_DAN_4 === +Name: KIRA & DAN +Class: Young Couple +Pic: Young Couple +Gender: Male +Music: Girl +Double Battle: Yes +AI: Check Bad Move + +Volbeat +Level: 36 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Illumise +Level: 36 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_KIRA_AND_DAN_5 === +Name: KIRA & DAN +Class: Young Couple +Pic: Young Couple +Gender: Male +Music: Girl +Double Battle: Yes +AI: Check Bad Move + +Volbeat +Level: 39 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Illumise +Level: 39 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_JOHANNA === +Name: JOHANNA +Class: Beauty +Pic: Beauty +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Goldeen +Level: 13 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GERALD === +Name: GERALD +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Basic Trainer + +Kecleon +Level: 23 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Flamethrower +- Fury Swipes +- Feint Attack +- Bind + +=== TRAINER_VIVIAN === +Name: VIVIAN +Class: Battle Girl +Pic: Battle Girl +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Meditite +Level: 17 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Bide +- Detect +- Confusion +- Thunder Punch + +Meditite +Level: 17 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Thunder Punch +- Detect +- Confusion +- Meditate + +=== TRAINER_DANIELLE === +Name: DANIELLE +Class: Battle Girl +Pic: Battle Girl +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Meditite +Level: 23 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Bide +- Detect +- Confusion +- Fire Punch + +=== TRAINER_HIDEO === +Name: HIDEO +Class: Ninja Boy +Pic: Ninja Boy +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move / Try To Faint + +Koffing +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Tackle +- Self Destruct +- Sludge +- Smokescreen + +Koffing +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Tackle +- Poison Gas +- Sludge +- Smokescreen + +=== TRAINER_KEIGO === +Name: KEIGO +Class: Ninja Boy +Pic: Ninja Boy +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move / Try To Faint + +Koffing +Level: 28 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Poison Gas +- Self Destruct +- Sludge +- Smokescreen + +Ninjask +Level: 28 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Sand Attack +- Double Team +- Fury Cutter +- Swords Dance + +=== TRAINER_RILEY === +Name: RILEY +Class: Ninja Boy +Pic: Ninja Boy +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move / Try To Faint + +Nincada +Level: 28 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Leech Life +- Fury Swipes +- Mind Reader +- Dig + +Koffing +Level: 28 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Tackle +- Self Destruct +- Sludge +- Smokescreen + +=== TRAINER_FLINT === +Name: FLINT +Class: Camper +Pic: Camper +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Swellow +Level: 29 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Xatu +Level: 29 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_ASHLEY === +Name: ASHLEY +Class: Picnicker +Pic: Picnicker +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Swablu +Level: 27 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Swablu +Level: 27 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Swablu +Level: 27 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_WALLY_MAUVILLE === +Name: WALLY +Class: Rival +Pic: Wally +Gender: Male +Music: Male +Double Battle: No +AI: Basic Trainer + +Ralts +Level: 16 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_WALLY_VR_2 === +Name: WALLY +Class: Rival +Pic: Wally +Gender: Male +Music: Male +Items: Full Restore / Full Restore +Double Battle: No +AI: Basic Trainer + +Altaria +Level: 47 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Aerial Ace +- Safeguard +- Dragon Breath +- Dragon Dance + +Delcatty +Level: 46 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Sing +- Assist +- Charm +- Feint Attack + +Roselia +Level: 47 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Magical Leaf +- Leech Seed +- Giga Drain +- Toxic + +Magneton +Level: 44 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Supersonic +- Thunderbolt +- Tri Attack +- Screech + +Gardevoir +Level: 48 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Double Team +- Calm Mind +- Psychic +- Future Sight + +=== TRAINER_WALLY_VR_3 === +Name: WALLY +Class: Rival +Pic: Wally +Gender: Male +Music: Male +Items: Full Restore / Full Restore +Double Battle: No +AI: Basic Trainer + +Altaria +Level: 50 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Aerial Ace +- Safeguard +- Dragon Breath +- Dragon Dance + +Delcatty +Level: 49 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Sing +- Assist +- Charm +- Feint Attack + +Roselia +Level: 50 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Magical Leaf +- Leech Seed +- Giga Drain +- Toxic + +Magneton +Level: 47 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Supersonic +- Thunderbolt +- Tri Attack +- Screech + +Gardevoir +Level: 51 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Double Team +- Calm Mind +- Psychic +- Future Sight + +=== TRAINER_WALLY_VR_4 === +Name: WALLY +Class: Rival +Pic: Wally +Gender: Male +Music: Male +Items: Full Restore / Full Restore +Double Battle: No +AI: Basic Trainer + +Altaria +Level: 53 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Aerial Ace +- Safeguard +- Dragon Breath +- Dragon Dance + +Delcatty +Level: 52 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Sing +- Assist +- Charm +- Feint Attack + +Roselia +Level: 53 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Magical Leaf +- Leech Seed +- Giga Drain +- Toxic + +Magneton +Level: 50 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Supersonic +- Thunderbolt +- Tri Attack +- Screech + +Gardevoir +Level: 54 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Double Team +- Calm Mind +- Psychic +- Future Sight + +=== TRAINER_WALLY_VR_5 === +Name: WALLY +Class: Rival +Pic: Wally +Gender: Male +Music: Male +Items: Full Restore / Full Restore +Double Battle: No +AI: Basic Trainer + +Altaria +Level: 56 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Aerial Ace +- Safeguard +- Dragon Breath +- Dragon Dance + +Delcatty +Level: 55 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Sing +- Assist +- Charm +- Feint Attack + +Roselia +Level: 56 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Magical Leaf +- Leech Seed +- Giga Drain +- Toxic + +Magneton +Level: 53 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Supersonic +- Thunderbolt +- Tri Attack +- Screech + +Gardevoir +Level: 57 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Double Team +- Calm Mind +- Psychic +- Future Sight + +=== TRAINER_BRENDAN_LILYCOVE_MUDKIP === +Name: BRENDAN +Class: Rival +Pic: Brendan +Gender: Male +Music: Male +Double Battle: No +AI: Basic Trainer + +Tropius +Level: 31 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Slugma +Level: 32 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Pelipper +Level: 32 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Grovyle +Level: 34 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +=== TRAINER_BRENDAN_LILYCOVE_TREECKO === +Name: BRENDAN +Class: Rival +Pic: Brendan +Gender: Male +Music: Male +Double Battle: No +AI: Basic Trainer + +Tropius +Level: 31 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Pelipper +Level: 32 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Ludicolo +Level: 32 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Combusken +Level: 34 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +=== TRAINER_BRENDAN_LILYCOVE_TORCHIC === +Name: BRENDAN +Class: Rival +Pic: Brendan +Gender: Male +Music: Male +Double Battle: No +AI: Basic Trainer + +Tropius +Level: 31 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Ludicolo +Level: 32 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Slugma +Level: 32 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Marshtomp +Level: 34 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +=== TRAINER_MAY_LILYCOVE_MUDKIP === +Name: MAY +Class: Rival +Pic: May +Gender: Female +Music: Female +Double Battle: No +AI: Basic Trainer + +Tropius +Level: 31 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Slugma +Level: 32 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Pelipper +Level: 32 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Grovyle +Level: 34 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +=== TRAINER_MAY_LILYCOVE_TREECKO === +Name: MAY +Class: Rival +Pic: May +Gender: Female +Music: Female +Double Battle: No +AI: Basic Trainer + +Tropius +Level: 31 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Pelipper +Level: 32 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Ludicolo +Level: 32 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Combusken +Level: 34 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +=== TRAINER_MAY_LILYCOVE_TORCHIC === +Name: MAY +Class: Rival +Pic: May +Gender: Female +Music: Female +Double Battle: No +AI: Basic Trainer + +Tropius +Level: 31 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Ludicolo +Level: 32 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Slugma +Level: 32 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Marshtomp +Level: 34 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +=== TRAINER_JONAH === +Name: JONAH +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Wailmer +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Tentacool +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Sharpedo +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_HENRY === +Name: HENRY +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Carvanha +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Tentacruel +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ROGER === +Name: ROGER +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Magikarp +Level: 15 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Magikarp +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Gyarados +Level: 35 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ALEXA === +Name: ALEXA +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Basic Trainer + +Gloom +Level: 34 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Azumarill +Level: 34 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_RUBEN === +Name: RUBEN +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Basic Trainer + +Shiftry +Level: 34 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Nosepass +Level: 34 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_KOJI_1 === +Name: KOJI +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Machoke +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_WAYNE === +Name: WAYNE +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Tentacool +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Tentacool +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wailmer +Level: 36 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_AIDAN === +Name: AIDAN +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Swellow +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Skarmory +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_REED === +Name: REED +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Spheal +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Sharpedo +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_TISHA === +Name: TISHA +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Chinchou +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_TORI_AND_TIA === +Name: TORI & TIA +Class: Twins +Pic: Twins +Gender: Male +Music: Twins +Double Battle: Yes +AI: Check Bad Move + +Spinda +Level: 19 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Spinda +Level: 19 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_KIM_AND_IRIS === +Name: KIM & IRIS +Class: Sr And Jr +Pic: Sr And Jr +Gender: Male +Music: Twins +Double Battle: Yes +AI: Check Bad Move + +Swablu +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Sing +- Fury Attack +- Safeguard +- Aerial Ace + +Numel +Level: 35 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Flamethrower +- Take Down +- Rest +- Earthquake + +=== TRAINER_TYRA_AND_IVY === +Name: TYRA & IVY +Class: Sr And Jr +Pic: Sr And Jr +Gender: Male +Music: Twins +Double Battle: Yes +AI: Check Bad Move + +Roselia +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Growth +- Stun Spore +- Mega Drain +- Leech Seed + +Graveler +Level: 20 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Defense Curl +- Rollout +- Mud Sport +- Rock Throw + +=== TRAINER_MEL_AND_PAUL === +Name: MEL & PAUL +Class: Young Couple +Pic: Young Couple +Gender: Male +Music: Girl +Double Battle: Yes +AI: Check Bad Move + +Dustox +Level: 27 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Gust +- Psybeam +- Toxic +- Protect + +Beautifly +Level: 27 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Gust +- Mega Drain +- Attract +- Stun Spore + +=== TRAINER_JOHN_AND_JAY_1 === +Name: JOHN & JAY +Class: Old Couple +Pic: Old Couple +Gender: Male +Music: Intense +Double Battle: Yes +AI: Basic Trainer + +Medicham +Level: 39 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe +- Psychic +- Fire Punch +- Psych Up +- Protect + +Hariyama +Level: 39 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe +- Focus Punch +- Rock Tomb +- Rest +- Belly Drum + +=== TRAINER_JOHN_AND_JAY_2 === +Name: JOHN & JAY +Class: Old Couple +Pic: Old Couple +Gender: Male +Music: Intense +Double Battle: Yes +AI: Basic Trainer + +Medicham +Level: 43 +IVs: 25 HP / 25 Atk / 25 Def / 25 SpA / 25 SpD / 25 Spe +- Psychic +- Fire Punch +- Psych Up +- Protect + +Hariyama +Level: 43 +IVs: 25 HP / 25 Atk / 25 Def / 25 SpA / 25 SpD / 25 Spe +- Focus Punch +- Rock Tomb +- Rest +- Belly Drum + +=== TRAINER_JOHN_AND_JAY_3 === +Name: JOHN & JAY +Class: Old Couple +Pic: Old Couple +Gender: Male +Music: Intense +Double Battle: Yes +AI: Basic Trainer + +Medicham +Level: 46 +IVs: 26 HP / 26 Atk / 26 Def / 26 SpA / 26 SpD / 26 Spe +- Psychic +- Fire Punch +- Psych Up +- Protect + +Hariyama +Level: 46 +IVs: 26 HP / 26 Atk / 26 Def / 26 SpA / 26 SpD / 26 Spe +- Focus Punch +- Rock Tomb +- Rest +- Belly Drum + +=== TRAINER_JOHN_AND_JAY_4 === +Name: JOHN & JAY +Class: Old Couple +Pic: Old Couple +Gender: Male +Music: Intense +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Force Setup First Turn + +Medicham +Level: 49 +IVs: 27 HP / 27 Atk / 27 Def / 27 SpA / 27 SpD / 27 Spe +- Psychic +- Fire Punch +- Psych Up +- Protect + +Hariyama +Level: 49 +IVs: 27 HP / 27 Atk / 27 Def / 27 SpA / 27 SpD / 27 Spe +- Focus Punch +- Rock Tomb +- Rest +- Belly Drum + +=== TRAINER_JOHN_AND_JAY_5 === +Name: JOHN & JAY +Class: Old Couple +Pic: Old Couple +Gender: Male +Music: Intense +Double Battle: Yes +AI: Basic Trainer + +Medicham +Level: 52 +IVs: 29 HP / 29 Atk / 29 Def / 29 SpA / 29 SpD / 29 Spe +- Psychic +- Fire Punch +- Psych Up +- Protect + +Hariyama +Level: 52 +IVs: 29 HP / 29 Atk / 29 Def / 29 SpA / 29 SpD / 29 Spe +- Focus Punch +- Rock Tomb +- Rest +- Belly Drum + +=== TRAINER_RELI_AND_IAN === +Name: RELI & IAN +Class: Sis And Bro +Pic: Sis And Bro +Gender: Male +Music: Swimmer +Double Battle: Yes +AI: Check Bad Move + +Azumarill +Level: 35 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wingull +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LILA_AND_ROY_1 === +Name: LILA & ROY +Class: Sis And Bro +Pic: Sis And Bro +Gender: Male +Music: Swimmer +Double Battle: Yes +AI: Check Bad Move + +Chinchou +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Carvanha +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LILA_AND_ROY_2 === +Name: LILA & ROY +Class: Sis And Bro +Pic: Sis And Bro +Gender: Male +Music: Swimmer +Double Battle: Yes +AI: Check Bad Move + +Chinchou +Level: 42 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Carvanha +Level: 40 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LILA_AND_ROY_3 === +Name: LILA & ROY +Class: Sis And Bro +Pic: Sis And Bro +Gender: Male +Music: Swimmer +Double Battle: Yes +AI: Check Bad Move + +Lanturn +Level: 45 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Carvanha +Level: 43 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LILA_AND_ROY_4 === +Name: LILA & ROY +Class: Sis And Bro +Pic: Sis And Bro +Gender: Male +Music: Swimmer +Double Battle: Yes +AI: Check Bad Move + +Lanturn +Level: 48 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Sharpedo +Level: 46 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LILA_AND_ROY_5 === +Name: LILA & ROY +Class: Sis And Bro +Pic: Sis And Bro +Gender: Male +Music: Swimmer +Double Battle: Yes +AI: Check Bad Move + +Lanturn +Level: 51 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Sharpedo +Level: 49 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LISA_AND_RAY === +Name: LISA & RAY +Class: Sis And Bro +Pic: Sis And Bro +Gender: Male +Music: Swimmer +Double Battle: Yes +AI: Check Bad Move + +Goldeen +Level: 27 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Tentacool +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CHRIS === +Name: CHRIS +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Magikarp +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Tentacool +Level: 20 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Feebas +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Carvanha +Level: 23 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DAWSON === +Name: DAWSON +Class: Rich Boy +Pic: Rich Boy +Gender: Male +Music: Rich +Double Battle: No +AI: Check Bad Move + +Zigzagoon @ Nugget +Level: 8 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Poochyena +Level: 8 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_SARAH === +Name: SARAH +Class: Lady +Pic: Lady +Gender: Female +Music: Female +Items: Full Restore +Double Battle: No +AI: Check Bad Move + +Lotad +Level: 8 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Zigzagoon @ Nugget +Level: 8 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DARIAN === +Name: DARIAN +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Magikarp +Level: 9 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_HAILEY === +Name: HAILEY +Class: Tuber F +Pic: Tuber F +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Marill +Level: 13 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CHANDLER === +Name: CHANDLER +Class: Tuber M +Pic: Tuber M +Gender: Male +Music: Girl +Double Battle: No +AI: Check Bad Move + +Tentacool +Level: 12 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Tentacool +Level: 12 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_KALEB === +Name: KALEB +Class: Pokefan +Pic: Pokefan M +Gender: Male +Music: Twins +Double Battle: No +AI: Check Bad Move + +Minun @ Oran Berry +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Plusle @ Oran Berry +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JOSEPH === +Name: JOSEPH +Class: Guitarist +Pic: Guitarist +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Electrike +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Voltorb +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ALYSSA === +Name: ALYSSA +Class: Triathlete +Pic: Cycling Triathlete F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Magnemite +Level: 15 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MARCOS === +Name: MARCOS +Class: Guitarist +Pic: Guitarist +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Voltorb +Level: 15 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_RHETT === +Name: RHETT +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Makuhita +Level: 15 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_TYRON === +Name: TYRON +Class: Camper +Pic: Camper +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Sandshrew +Level: 19 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CELINA === +Name: CELINA +Class: Aroma Lady +Pic: Aroma Lady +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Roselia +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BIANCA === +Name: BIANCA +Class: Picnicker +Pic: Picnicker +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Shroomish +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_HAYDEN === +Name: HAYDEN +Class: Kindler +Pic: Kindler +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Numel +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_SOPHIE === +Name: SOPHIE +Class: Picnicker +Pic: Picnicker +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Marill +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Lombre +Level: 19 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_COBY === +Name: COBY +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Skarmory +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Swellow +Level: 19 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LAWRENCE === +Name: LAWRENCE +Class: Camper +Pic: Camper +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Baltoy +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Sandshrew +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_WYATT === +Name: WYATT +Class: Pokemaniac +Pic: Pokemaniac +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Aron +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Aron +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ANGELINA === +Name: ANGELINA +Class: Picnicker +Pic: Picnicker +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Lombre +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Marill +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_KAI === +Name: KAI +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Barboach +Level: 19 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CHARLOTTE === +Name: CHARLOTTE +Class: Picnicker +Pic: Picnicker +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Nuzleaf +Level: 19 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DEANDRE === +Name: DEANDRE +Class: Youngster +Pic: Youngster +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Zigzagoon +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Aron +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Electrike +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MAGMA_HIDEOUT_1 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Zubat +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MAGMA_HIDEOUT_2 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Poochyena +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MAGMA_HIDEOUT_3 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Numel +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MAGMA_HIDEOUT_4 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Baltoy +Level: 28 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Zubat +Level: 28 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MAGMA_HIDEOUT_5 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Baltoy +Level: 28 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Numel +Level: 28 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MAGMA_HIDEOUT_6 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Mightyena +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MAGMA_HIDEOUT_7 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Zubat +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MAGMA_HIDEOUT_8 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Poochyena +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MAGMA_HIDEOUT_9 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Zubat +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MAGMA_HIDEOUT_10 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Mightyena +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MAGMA_HIDEOUT_11 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Baltoy +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MAGMA_HIDEOUT_12 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Numel +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MAGMA_HIDEOUT_13 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Zubat +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MAGMA_HIDEOUT_14 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt F +Gender: Female +Music: Magma +Double Battle: No +AI: Check Bad Move + +Mightyena +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MAGMA_HIDEOUT_15 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt F +Gender: Female +Music: Magma +Double Battle: No +AI: Check Bad Move + +Numel +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MAGMA_HIDEOUT_16 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt F +Gender: Female +Music: Magma +Double Battle: No +AI: Check Bad Move + +Baltoy +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_TABITHA_MAGMA_HIDEOUT === +Name: TABITHA +Class: Magma Admin +Pic: Magma Admin +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Numel +Level: 26 +IVs: 9 HP / 9 Atk / 9 Def / 9 SpA / 9 SpD / 9 Spe + +Mightyena +Level: 28 +IVs: 9 HP / 9 Atk / 9 Def / 9 SpA / 9 SpD / 9 Spe + +Zubat +Level: 30 +IVs: 9 HP / 9 Atk / 9 Def / 9 SpA / 9 SpD / 9 Spe + +Camerupt +Level: 33 +IVs: 9 HP / 9 Atk / 9 Def / 9 SpA / 9 SpD / 9 Spe + +=== TRAINER_DARCY === +Name: DARCY +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Basic Trainer + +Pelipper +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Camerupt +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MAXIE_MOSSDEEP === +Name: MAXIE +Class: Magma Leader +Pic: Magma Leader Maxie +Gender: Male +Music: Magma +Double Battle: No +AI: Basic Trainer + +Mightyena +Level: 42 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Crobat +Level: 43 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Camerupt +Level: 44 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_PETE === +Name: PETE +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Tentacool +Level: 15 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ISABELLE === +Name: ISABELLE +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Marill +Level: 15 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ANDRES_1 === +Name: ANDRES +Class: Ruin Maniac +Pic: Ruin Maniac +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Sandshrew +Level: 25 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Sandshrew +Level: 25 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_JOSUE === +Name: JOSUE +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Taillow +Level: 25 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Wingull +Level: 25 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_CAMRON === +Name: CAMRON +Class: Triathlete +Pic: Swimming Triathlete M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Staryu +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CORY_1 === +Name: CORY +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 24 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Machop +Level: 24 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Tentacool +Level: 24 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CAROLINA === +Name: CAROLINA +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Basic Trainer + +Manectric +Level: 24 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Swellow +Level: 24 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Manectric +Level: 24 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_ELIJAH === +Name: ELIJAH +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Skarmory +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Skarmory +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CELIA === +Name: CELIA +Class: Picnicker +Pic: Picnicker +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Marill +Level: 22 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Lombre +Level: 22 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BRYAN === +Name: BRYAN +Class: Ruin Maniac +Pic: Ruin Maniac +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Sandshrew +Level: 22 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Sandslash +Level: 22 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BRANDEN === +Name: BRANDEN +Class: Camper +Pic: Camper +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Taillow +Level: 22 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Nuzleaf +Level: 22 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BRYANT === +Name: BRYANT +Class: Kindler +Pic: Kindler +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Numel +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Slugma +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_SHAYLA === +Name: SHAYLA +Class: Aroma Lady +Pic: Aroma Lady +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Shroomish +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Roselia +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_KYRA === +Name: KYRA +Class: Triathlete +Pic: Running Triathlete F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Doduo +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Dodrio +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JAIDEN === +Name: JAIDEN +Class: Ninja Boy +Pic: Ninja Boy +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Ninjask +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Gulpin +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ALIX === +Name: ALIX +Class: Psychic +Pic: Psychic F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Kadabra +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Kirlia +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_HELENE === +Name: HELENE +Class: Battle Girl +Pic: Battle Girl +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Meditite +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Makuhita +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MARLENE === +Name: MARLENE +Class: Psychic +Pic: Psychic F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Meditite +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Spoink +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DEVAN === +Name: DEVAN +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Geodude +Level: 8 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Geodude +Level: 8 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JOHNSON === +Name: JOHNSON +Class: Youngster +Pic: Youngster +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Shroomish +Level: 8 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Lotad +Level: 8 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MELINA === +Name: MELINA +Class: Triathlete +Pic: Running Triathlete F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Doduo +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BRANDI === +Name: BRANDI +Class: Psychic +Pic: Psychic F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Ralts +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_AISHA === +Name: AISHA +Class: Battle Girl +Pic: Battle Girl +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Meditite +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MAKAYLA === +Name: MAKAYLA +Class: Expert +Pic: Expert F +Gender: Female +Music: Intense +Items: Hyper Potion +Double Battle: No +AI: Basic Trainer + +Roselia +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Medicham +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_FABIAN === +Name: FABIAN +Class: Guitarist +Pic: Guitarist +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Manectric +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DAYTON === +Name: DAYTON +Class: Kindler +Pic: Kindler +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Slugma +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Numel +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_RACHEL === +Name: RACHEL +Class: Parasol Lady +Pic: Parasol Lady +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Goldeen +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LEONEL === +Name: LEONEL +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Basic Trainer + +Manectric +Level: 30 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Thunder +- Quick Attack +- Thunder Wave + +=== TRAINER_CALLIE === +Name: CALLIE +Class: Battle Girl +Pic: Battle Girl +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Meditite +Level: 28 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Makuhita +Level: 28 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CALE === +Name: CALE +Class: Bug Maniac +Pic: Bug Maniac +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Dustox +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Beautifly +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MYLES === +Name: MYLES +Class: Pkmn Breeder +Pic: Pokemon Breeder M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Makuhita +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Wingull +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Tropius +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Zigzagoon +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Electrike +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Numel +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_PAT === +Name: PAT +Class: Pkmn Breeder +Pic: Pokemon Breeder F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Poochyena +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Shroomish +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Electrike +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Marill +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Sandshrew +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Gulpin +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_CRISTIN_1 === +Name: CRISTIN +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Basic Trainer + +Loudred +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Vigoroth +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_MAY_RUSTBORO_TREECKO === +Name: MAY +Class: Rival +Pic: May +Gender: Female +Music: Female +Double Battle: No +AI: Basic Trainer + +Lotad +Level: 13 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Torchic +Level: 15 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_MAY_RUSTBORO_TORCHIC === +Name: MAY +Class: Rival +Pic: May +Gender: Female +Music: Female +Double Battle: No +AI: Basic Trainer + +Torkoal +Level: 13 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Mudkip +Level: 15 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_ROXANNE_2 === +Name: ROXANNE +Class: Leader +Pic: Leader Roxanne +Gender: Female +Music: Female +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Basic Trainer + +Golem +Level: 32 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Protect +- Rollout +- Magnitude +- Explosion + +Kabuto @ Sitrus Berry +Level: 35 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Swords Dance +- Ice Beam +- Surf +- Rock Slide + +Onix +Level: 35 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Iron Tail +- Explosion +- Roar +- Rock Slide + +Nosepass @ Sitrus Berry +Level: 37 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Double Team +- Explosion +- Protect +- Rock Slide + +=== TRAINER_ROXANNE_3 === +Name: ROXANNE +Class: Leader +Pic: Leader Roxanne +Gender: Female +Music: Female +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Basic Trainer + +Omanyte +Level: 37 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Protect +- Ice Beam +- Rock Slide +- Surf + +Golem +Level: 37 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Protect +- Rollout +- Magnitude +- Explosion + +Kabutops @ Sitrus Berry +Level: 40 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Swords Dance +- Ice Beam +- Surf +- Rock Slide + +Onix +Level: 40 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Iron Tail +- Explosion +- Roar +- Rock Slide + +Nosepass @ Sitrus Berry +Level: 42 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Double Team +- Explosion +- Protect +- Rock Slide + +=== TRAINER_ROXANNE_4 === +Name: ROXANNE +Class: Leader +Pic: Leader Roxanne +Gender: Female +Music: Female +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Basic Trainer + +Omastar +Level: 42 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Protect +- Ice Beam +- Rock Slide +- Surf + +Golem +Level: 42 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Protect +- Rollout +- Earthquake +- Explosion + +Kabutops @ Sitrus Berry +Level: 45 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Swords Dance +- Ice Beam +- Surf +- Rock Slide + +Onix +Level: 45 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Iron Tail +- Explosion +- Roar +- Rock Slide + +Nosepass @ Sitrus Berry +Level: 47 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Double Team +- Explosion +- Protect +- Rock Slide + +=== TRAINER_ROXANNE_5 === +Name: ROXANNE +Class: Leader +Pic: Leader Roxanne +Gender: Female +Music: Female +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Basic Trainer + +Aerodactyl +Level: 47 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Rock Slide +- Hyper Beam +- Supersonic +- Protect + +Golem +Level: 47 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Focus Punch +- Rollout +- Earthquake +- Explosion + +Omastar +Level: 47 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Protect +- Ice Beam +- Rock Slide +- Surf + +Kabutops @ Sitrus Berry +Level: 50 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Swords Dance +- Ice Beam +- Surf +- Rock Slide + +Steelix +Level: 50 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Iron Tail +- Explosion +- Roar +- Rock Slide + +Nosepass @ Sitrus Berry +Level: 52 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Double Team +- Explosion +- Protect +- Rock Slide + +=== TRAINER_BRAWLY_2 === +Name: BRAWLY +Class: Leader +Pic: Leader Brawly +Gender: Male +Music: Male +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Basic Trainer + +Machamp @ Sitrus Berry +Level: 33 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Karate Chop +- Rock Slide +- Focus Punch +- Bulk Up + +Meditite +Level: 33 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Psychic +- Light Screen +- Reflect +- Focus Punch + +Hitmontop +Level: 35 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Pursuit +- Counter +- Protect +- Triple Kick + +Hariyama @ Sitrus Berry +Level: 37 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Fake Out +- Focus Punch +- Belly Drum +- Earthquake + +=== TRAINER_BRAWLY_3 === +Name: BRAWLY +Class: Leader +Pic: Leader Brawly +Gender: Male +Music: Male +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Basic Trainer + +Machamp @ Sitrus Berry +Level: 38 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Karate Chop +- Rock Slide +- Focus Punch +- Bulk Up + +Medicham +Level: 38 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Psychic +- Light Screen +- Reflect +- Focus Punch + +Hitmontop +Level: 40 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Pursuit +- Counter +- Protect +- Triple Kick + +Hariyama @ Sitrus Berry +Level: 42 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Fake Out +- Focus Punch +- Belly Drum +- Earthquake + +=== TRAINER_BRAWLY_4 === +Name: BRAWLY +Class: Leader +Pic: Leader Brawly +Gender: Male +Music: Male +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Basic Trainer + +Hitmonchan +Level: 40 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Sky Uppercut +- Protect +- Fire Punch +- Ice Punch + +Machamp @ Sitrus Berry +Level: 43 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Karate Chop +- Rock Slide +- Focus Punch +- Bulk Up + +Medicham +Level: 43 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Focus Punch +- Light Screen +- Reflect +- Psychic + +Hitmontop +Level: 45 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Pursuit +- Counter +- Protect +- Triple Kick + +Hariyama @ Sitrus Berry +Level: 47 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Fake Out +- Focus Punch +- Belly Drum +- Earthquake + +=== TRAINER_BRAWLY_5 === +Name: BRAWLY +Class: Leader +Pic: Leader Brawly +Gender: Male +Music: Male +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Basic Trainer + +Hitmonlee +Level: 46 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Mega Kick +- Focus Punch +- Earthquake +- Bulk Up + +Hitmonchan +Level: 46 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Sky Uppercut +- Protect +- Fire Punch +- Ice Punch + +Machamp @ Sitrus Berry +Level: 48 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Cross Chop +- Rock Slide +- Focus Punch +- Bulk Up + +Medicham +Level: 48 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Focus Punch +- Light Screen +- Reflect +- Psychic + +Hitmontop +Level: 50 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Pursuit +- Counter +- Protect +- Triple Kick + +Hariyama @ Sitrus Berry +Level: 52 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Fake Out +- Focus Punch +- Belly Drum +- Earthquake + +=== TRAINER_WATTSON_2 === +Name: WATTSON +Class: Leader +Pic: Leader Wattson +Gender: Male +Music: Male +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Basic Trainer + +Mareep +Level: 36 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Thunder +- Protect +- Thunder Wave +- Light Screen + +Electrode +Level: 36 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Rollout +- Thunder +- Explosion +- Rain Dance + +Magneton @ Sitrus Berry +Level: 38 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Supersonic +- Protect +- Thunder +- Rain Dance + +Manectric @ Sitrus Berry +Level: 40 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Bite +- Thunder Wave +- Thunder +- Protect + +=== TRAINER_WATTSON_3 === +Name: WATTSON +Class: Leader +Pic: Leader Wattson +Gender: Male +Music: Male +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Basic Trainer + +Pikachu +Level: 39 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Thunder +- Slam +- Rain Dance +- Shock Wave + +Flaaffy +Level: 41 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Thunder +- Protect +- Thunder Wave +- Light Screen + +Electrode +Level: 41 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Rollout +- Thunder +- Explosion +- Rain Dance + +Magneton @ Sitrus Berry +Level: 43 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Supersonic +- Protect +- Thunder +- Rain Dance + +Manectric @ Sitrus Berry +Level: 45 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Bite +- Thunder Wave +- Thunder +- Protect + +=== TRAINER_WATTSON_4 === +Name: WATTSON +Class: Leader +Pic: Leader Wattson +Gender: Male +Music: Male +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Basic Trainer + +Raichu +Level: 44 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Thunder +- Slam +- Rain Dance +- Protect + +Ampharos +Level: 46 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Thunder +- Protect +- Thunder Wave +- Light Screen + +Electrode +Level: 46 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Rollout +- Thunder +- Explosion +- Rain Dance + +Magneton @ Sitrus Berry +Level: 48 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Supersonic +- Protect +- Thunder +- Rain Dance + +Manectric @ Sitrus Berry +Level: 50 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Bite +- Thunder Wave +- Thunder +- Protect + +=== TRAINER_WATTSON_5 === +Name: WATTSON +Class: Leader +Pic: Leader Wattson +Gender: Male +Music: Male +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Basic Trainer + +Electabuzz +Level: 50 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Swift +- Focus Punch +- Thunder Punch +- Light Screen + +Raichu +Level: 51 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Thunder +- Slam +- Rain Dance +- Protect + +Ampharos +Level: 51 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Thunder +- Protect +- Thunder Wave +- Light Screen + +Electrode +Level: 53 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Rollout +- Thunder +- Explosion +- Rain Dance + +Magneton @ Sitrus Berry +Level: 53 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Supersonic +- Protect +- Thunder +- Rain Dance + +Manectric @ Sitrus Berry +Level: 55 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Bite +- Thunder Wave +- Thunder +- Protect + +=== TRAINER_FLANNERY_2 === +Name: FLANNERY +Class: Leader +Pic: Leader Flannery +Gender: Female +Music: Female +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Basic Trainer + +Magcargo @ White Herb +Level: 38 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Overheat +- Attract +- Light Screen +- Rock Slide + +Ponyta +Level: 36 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Flamethrower +- Attract +- Solar Beam +- Bounce + +Camerupt @ White Herb +Level: 38 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Overheat +- Sunny Day +- Earthquake +- Attract + +Torkoal @ White Herb +Level: 40 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Overheat +- Sunny Day +- Explosion +- Attract + +=== TRAINER_FLANNERY_3 === +Name: FLANNERY +Class: Leader +Pic: Leader Flannery +Gender: Female +Music: Female +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Basic Trainer + +Growlithe +Level: 41 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Helping Hand +- Flamethrower +- Roar +- Sunny Day + +Magcargo @ White Herb +Level: 43 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Overheat +- Attract +- Light Screen +- Rock Slide + +Ponyta +Level: 41 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Flamethrower +- Attract +- Solar Beam +- Bounce + +Camerupt @ White Herb +Level: 43 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Overheat +- Sunny Day +- Earthquake +- Attract + +Torkoal @ White Herb +Level: 45 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Overheat +- Sunny Day +- Explosion +- Attract + +=== TRAINER_FLANNERY_4 === +Name: FLANNERY +Class: Leader +Pic: Leader Flannery +Gender: Female +Music: Female +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Basic Trainer + +Houndour +Level: 46 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Roar +- Solar Beam +- Taunt +- Sunny Day + +Growlithe +Level: 46 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Helping Hand +- Flamethrower +- Sunny Day +- Roar + +Magcargo @ White Herb +Level: 48 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Overheat +- Attract +- Light Screen +- Rock Slide + +Rapidash +Level: 46 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Flamethrower +- Attract +- Solar Beam +- Bounce + +Camerupt @ White Herb +Level: 48 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Overheat +- Sunny Day +- Earthquake +- Attract + +Torkoal @ White Herb +Level: 50 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Overheat +- Sunny Day +- Explosion +- Attract + +=== TRAINER_FLANNERY_5 === +Name: FLANNERY +Class: Leader +Pic: Leader Flannery +Gender: Female +Music: Female +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Basic Trainer + +Arcanine +Level: 51 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Helping Hand +- Flamethrower +- Sunny Day +- Roar + +Magcargo @ White Herb +Level: 53 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Overheat +- Attract +- Light Screen +- Rock Slide + +Houndoom +Level: 51 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Roar +- Solar Beam +- Taunt +- Sunny Day + +Rapidash +Level: 51 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Flamethrower +- Attract +- Solar Beam +- Bounce + +Camerupt @ White Herb +Level: 53 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Overheat +- Sunny Day +- Earthquake +- Attract + +Torkoal @ White Herb +Level: 55 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Overheat +- Sunny Day +- Explosion +- Attract + +=== TRAINER_NORMAN_2 === +Name: NORMAN +Class: Leader +Pic: Leader Norman +Gender: Male +Music: Male +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Basic Trainer + +Chansey +Level: 42 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Light Screen +- Sing +- Skill Swap +- Focus Punch + +Slaking @ Sitrus Berry +Level: 42 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Blizzard +- Shadow Ball +- Double Edge +- Fire Blast + +Spinda +Level: 43 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Teeter Dance +- Skill Swap +- Facade +- Hypnosis + +Slaking @ Sitrus Berry +Level: 45 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Hyper Beam +- Flamethrower +- Thunderbolt +- Shadow Ball + +=== TRAINER_NORMAN_3 === +Name: NORMAN +Class: Leader +Pic: Leader Norman +Gender: Male +Music: Male +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Basic Trainer + +Slaking @ Sitrus Berry +Level: 47 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Blizzard +- Shadow Ball +- Double Edge +- Fire Blast + +Chansey +Level: 47 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Light Screen +- Sing +- Skill Swap +- Focus Punch + +Kangaskhan +Level: 45 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Fake Out +- Dizzy Punch +- Endure +- Reversal + +Spinda +Level: 48 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Teeter Dance +- Skill Swap +- Facade +- Hypnosis + +Slaking @ Sitrus Berry +Level: 50 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Hyper Beam +- Flamethrower +- Thunderbolt +- Shadow Ball + +=== TRAINER_NORMAN_4 === +Name: NORMAN +Class: Leader +Pic: Leader Norman +Gender: Male +Music: Male +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Basic Trainer + +Slaking @ Sitrus Berry +Level: 52 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Blizzard +- Shadow Ball +- Double Edge +- Fire Blast + +Blissey +Level: 52 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Light Screen +- Sing +- Skill Swap +- Focus Punch + +Kangaskhan +Level: 50 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Fake Out +- Dizzy Punch +- Endure +- Reversal + +Spinda +Level: 53 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Teeter Dance +- Skill Swap +- Facade +- Hypnosis + +Slaking @ Sitrus Berry +Level: 55 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Hyper Beam +- Flamethrower +- Thunderbolt +- Shadow Ball + +=== TRAINER_NORMAN_5 === +Name: NORMAN +Class: Leader +Pic: Leader Norman +Gender: Male +Music: Male +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Basic Trainer + +Slaking @ Sitrus Berry +Level: 57 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Blizzard +- Shadow Ball +- Double Edge +- Fire Blast + +Blissey +Level: 57 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Protect +- Sing +- Skill Swap +- Focus Punch + +Kangaskhan +Level: 55 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Fake Out +- Dizzy Punch +- Endure +- Reversal + +Tauros +Level: 57 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Take Down +- Protect +- Fire Blast +- Earthquake + +Spinda +Level: 58 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Teeter Dance +- Skill Swap +- Facade +- Hypnosis + +Slaking @ Sitrus Berry +Level: 60 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Hyper Beam +- Flamethrower +- Thunderbolt +- Shadow Ball + +=== TRAINER_WINONA_2 === +Name: WINONA +Class: Leader +Pic: Leader Winona +Gender: Female +Music: Female +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Basic Trainer / Risky + +Dratini @ Sitrus Berry +Level: 40 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Thunder Wave +- Thunderbolt +- Protect +- Ice Beam + +Tropius +Level: 38 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Sunny Day +- Aerial Ace +- Solar Beam +- Earthquake + +Pelipper +Level: 41 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Surf +- Supersonic +- Protect +- Aerial Ace + +Skarmory +Level: 43 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Whirlwind +- Spikes +- Steel Wing +- Aerial Ace + +Altaria @ Chesto Berry +Level: 45 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Aerial Ace +- Rest +- Dragon Dance +- Earthquake + +=== TRAINER_WINONA_3 === +Name: WINONA +Class: Leader +Pic: Leader Winona +Gender: Female +Music: Female +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Basic Trainer / Risky + +Hoothoot +Level: 43 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Hypnosis +- Psychic +- Reflect +- Dream Eater + +Tropius +Level: 43 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Sunny Day +- Aerial Ace +- Solar Beam +- Earthquake + +Dragonair @ Sitrus Berry +Level: 45 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Thunder Wave +- Thunderbolt +- Protect +- Ice Beam + +Pelipper +Level: 46 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Surf +- Supersonic +- Protect +- Aerial Ace + +Skarmory +Level: 48 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Whirlwind +- Spikes +- Steel Wing +- Aerial Ace + +Altaria @ Chesto Berry +Level: 50 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Aerial Ace +- Rest +- Dragon Dance +- Earthquake + +=== TRAINER_WINONA_4 === +Name: WINONA +Class: Leader +Pic: Leader Winona +Gender: Female +Music: Female +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Basic Trainer / Risky + +Noctowl +Level: 48 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Hypnosis +- Psychic +- Reflect +- Dream Eater + +Tropius +Level: 49 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Sunny Day +- Aerial Ace +- Solar Beam +- Earthquake + +Dragonair @ Sitrus Berry +Level: 50 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Thunder Wave +- Thunderbolt +- Protect +- Ice Beam + +Pelipper +Level: 51 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Surf +- Supersonic +- Protect +- Aerial Ace + +Skarmory +Level: 53 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Whirlwind +- Spikes +- Steel Wing +- Aerial Ace + +Altaria @ Chesto Berry +Level: 55 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Aerial Ace +- Rest +- Dragon Dance +- Earthquake + +=== TRAINER_WINONA_5 === +Name: WINONA +Class: Leader +Pic: Leader Winona +Gender: Female +Music: Female +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Basic Trainer / Risky + +Noctowl +Level: 53 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Hypnosis +- Psychic +- Reflect +- Dream Eater + +Tropius +Level: 54 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Sunny Day +- Aerial Ace +- Solar Beam +- Earthquake + +Pelipper +Level: 55 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Surf +- Supersonic +- Protect +- Aerial Ace + +Dragonite @ Sitrus Berry +Level: 55 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Hyper Beam +- Thunderbolt +- Earthquake +- Ice Beam + +Skarmory +Level: 58 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Whirlwind +- Spikes +- Steel Wing +- Aerial Ace + +Altaria @ Chesto Berry +Level: 60 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Sky Attack +- Rest +- Dragon Dance +- Earthquake + +=== TRAINER_TATE_AND_LIZA_2 === +Name: TATE&LIZA +Class: Leader +Pic: Leader Tate And Liza +Gender: Male +Music: Female +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Basic Trainer + +Slowpoke +Level: 48 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Yawn +- Psychic +- Calm Mind +- Protect + +Claydol +Level: 49 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Earthquake +- Ancient Power +- Psychic +- Light Screen + +Xatu @ Chesto Berry +Level: 49 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Psychic +- Rest +- Confuse Ray +- Calm Mind + +Lunatone @ Chesto Berry +Level: 50 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Earthquake +- Psychic +- Rest +- Calm Mind + +Solrock @ Sitrus Berry +Level: 50 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Sunny Day +- Solar Beam +- Psychic +- Flamethrower + +=== TRAINER_TATE_AND_LIZA_3 === +Name: TATE&LIZA +Class: Leader +Pic: Leader Tate And Liza +Gender: Male +Music: Female +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Basic Trainer + +Drowzee +Level: 53 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Hypnosis +- Dream Eater +- Headbutt +- Protect + +Slowpoke +Level: 53 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Yawn +- Psychic +- Calm Mind +- Protect + +Claydol +Level: 54 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Earthquake +- Explosion +- Psychic +- Light Screen + +Xatu @ Chesto Berry +Level: 54 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Psychic +- Rest +- Confuse Ray +- Calm Mind + +Lunatone @ Chesto Berry +Level: 55 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Earthquake +- Psychic +- Rest +- Calm Mind + +Solrock @ Sitrus Berry +Level: 55 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Sunny Day +- Solar Beam +- Psychic +- Flamethrower + +=== TRAINER_TATE_AND_LIZA_4 === +Name: TATE&LIZA +Class: Leader +Pic: Leader Tate And Liza +Gender: Male +Music: Female +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Basic Trainer + +Hypno +Level: 58 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Hypnosis +- Dream Eater +- Headbutt +- Protect + +Claydol +Level: 59 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Earthquake +- Explosion +- Psychic +- Light Screen + +Slowpoke +Level: 58 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Yawn +- Psychic +- Calm Mind +- Protect + +Xatu @ Chesto Berry +Level: 59 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Psychic +- Rest +- Confuse Ray +- Calm Mind + +Lunatone @ Chesto Berry +Level: 60 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Earthquake +- Psychic +- Rest +- Calm Mind + +Solrock @ Sitrus Berry +Level: 60 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Sunny Day +- Solar Beam +- Psychic +- Flamethrower + +=== TRAINER_TATE_AND_LIZA_5 === +Name: TATE&LIZA +Class: Leader +Pic: Leader Tate And Liza +Gender: Male +Music: Female +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Basic Trainer + +Hypno +Level: 63 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Hypnosis +- Dream Eater +- Headbutt +- Protect + +Claydol +Level: 64 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Earthquake +- Explosion +- Psychic +- Light Screen + +Slowking +Level: 63 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Yawn +- Psychic +- Calm Mind +- Protect + +Xatu @ Chesto Berry +Level: 64 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Psychic +- Rest +- Confuse Ray +- Calm Mind + +Lunatone @ Chesto Berry +Level: 65 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Earthquake +- Psychic +- Rest +- Calm Mind + +Solrock @ Sitrus Berry +Level: 65 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Sunny Day +- Solar Beam +- Psychic +- Flamethrower + +=== TRAINER_JUAN_2 === +Name: JUAN +Class: Leader +Pic: Leader Juan +Gender: Male +Music: Male +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Basic Trainer + +Poliwag +Level: 46 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Hypnosis +- Rain Dance +- Protect +- Hydro Pump + +Whiscash +Level: 46 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Rain Dance +- Water Pulse +- Double Team +- Fissure + +Walrein +Level: 48 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Water Pulse +- Body Slam +- Protect +- Ice Beam + +Crawdaunt @ Chesto Berry +Level: 48 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Rest +- Crabhammer +- Taunt +- Double Team + +Kingdra @ Chesto Berry +Level: 51 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Water Pulse +- Double Team +- Ice Beam +- Rest + +=== TRAINER_JUAN_3 === +Name: JUAN +Class: Leader +Pic: Leader Juan +Gender: Male +Music: Male +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Basic Trainer + +Poliwhirl +Level: 50 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Hypnosis +- Rain Dance +- Protect +- Hydro Pump + +Whiscash +Level: 51 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Rain Dance +- Water Pulse +- Double Team +- Fissure + +Walrein +Level: 53 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Water Pulse +- Body Slam +- Protect +- Ice Beam + +Crawdaunt @ Chesto Berry +Level: 53 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Rest +- Guillotine +- Taunt +- Double Team + +Kingdra @ Chesto Berry +Level: 56 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Water Pulse +- Double Team +- Ice Beam +- Rest + +=== TRAINER_JUAN_4 === +Name: JUAN +Class: Leader +Pic: Leader Juan +Gender: Male +Music: Male +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Basic Trainer + +Lapras +Level: 56 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Hydro Pump +- Perish Song +- Ice Beam +- Confuse Ray + +Whiscash +Level: 58 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Rain Dance +- Water Pulse +- Double Team +- Fissure + +Poliwhirl +Level: 56 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Hypnosis +- Rain Dance +- Protect +- Hydro Pump + +Walrein +Level: 58 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Water Pulse +- Body Slam +- Protect +- Ice Beam + +Crawdaunt @ Chesto Berry +Level: 58 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Rest +- Guillotine +- Taunt +- Double Team + +Kingdra @ Chesto Berry +Level: 61 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Water Pulse +- Double Team +- Ice Beam +- Rest + +=== TRAINER_JUAN_5 === +Name: JUAN +Class: Leader +Pic: Leader Juan +Gender: Male +Music: Male +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Basic Trainer + +Lapras +Level: 61 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Hydro Pump +- Perish Song +- Ice Beam +- Confuse Ray + +Whiscash +Level: 63 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Rain Dance +- Water Pulse +- Double Team +- Fissure + +Politoed +Level: 61 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Hypnosis +- Rain Dance +- Hydro Pump +- Perish Song + +Walrein +Level: 63 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Water Pulse +- Body Slam +- Protect +- Sheer Cold + +Crawdaunt @ Chesto Berry +Level: 63 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Rest +- Guillotine +- Taunt +- Double Team + +Kingdra @ Chesto Berry +Level: 66 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Water Pulse +- Double Team +- Ice Beam +- Rest + +=== TRAINER_ANGELO === +Name: ANGELO +Class: Bug Maniac +Pic: Bug Maniac +Gender: Male +Music: Suspicious +Double Battle: No +AI: Basic Trainer + +Illumise +Level: 17 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Shock Wave +- Quick Attack +- Charm + +Volbeat +Level: 17 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Shock Wave +- Quick Attack +- Confuse Ray + +=== TRAINER_DARIUS === +Name: DARIUS +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Basic Trainer + +Tropius +Level: 30 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +=== TRAINER_STEVEN === +Name: STEVEN +Class: Rival +Pic: Steven +Gender: Male +Music: Male +Items: Full Restore / Full Restore / Full Restore / Full Restore +Double Battle: No +AI: Basic Trainer + +Skarmory +Level: 77 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Toxic +- Aerial Ace +- Spikes +- Steel Wing + +Claydol +Level: 75 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Reflect +- Light Screen +- Ancient Power +- Earthquake + +Aggron +Level: 76 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Thunder +- Earthquake +- Solar Beam +- Dragon Claw + +Cradily +Level: 76 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Giga Drain +- Ancient Power +- Ingrain +- Confuse Ray + +Armaldo +Level: 76 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Water Pulse +- Ancient Power +- Aerial Ace +- Slash + +Metagross @ Sitrus Berry +Level: 78 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Earthquake +- Psychic +- Meteor Mash +- Shadow Ball + +=== TRAINER_ANABEL === +Name: ANABEL +Class: Salon Maiden +Pic: Salon Maiden Anabel +Gender: Female +Music: Male +Double Battle: No +AI: Basic Trainer + +Beldum +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_TUCKER === +Name: TUCKER +Class: Dome Ace +Pic: Dome Ace Tucker +Gender: Male +Music: Male +Double Battle: No +AI: Basic Trainer + +Beldum +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_SPENSER === +Name: SPENSER +Class: Palace Maven +Pic: Palace Maven Spenser +Gender: Male +Music: Male +Double Battle: No +AI: Basic Trainer + +Beldum +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRETA === +Name: GRETA +Class: Arena Tycoon +Pic: Arena Tycoon Greta +Gender: Female +Music: Male +Double Battle: No +AI: Basic Trainer + +Beldum +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_NOLAND === +Name: NOLAND +Class: Factory Head +Pic: Factory Head Noland +Gender: Male +Music: Male +Double Battle: No +AI: Basic Trainer + +Beldum +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LUCY === +Name: LUCY +Class: Pike Queen +Pic: Pike Queen Lucy +Gender: Female +Music: Male +Double Battle: No +AI: Basic Trainer + +Beldum +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BRANDON === +Name: BRANDON +Class: Pyramid King +Pic: Pyramid King Brandon +Gender: Male +Music: Male +Double Battle: No +AI: Basic Trainer + +Beldum +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ANDRES_2 === +Name: ANDRES +Class: Ruin Maniac +Pic: Ruin Maniac +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Sandshrew +Level: 31 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Sandshrew +Level: 31 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_ANDRES_3 === +Name: ANDRES +Class: Ruin Maniac +Pic: Ruin Maniac +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Nosepass +Level: 33 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Sandshrew +Level: 33 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Sandshrew +Level: 33 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_ANDRES_4 === +Name: ANDRES +Class: Ruin Maniac +Pic: Ruin Maniac +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Nosepass +Level: 35 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Sandshrew +Level: 35 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Sandshrew +Level: 35 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_ANDRES_5 === +Name: ANDRES +Class: Ruin Maniac +Pic: Ruin Maniac +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Nosepass +Level: 37 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Sandslash +Level: 37 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Sandslash +Level: 37 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_CORY_2 === +Name: CORY +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 30 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Machop +Level: 30 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Tentacool +Level: 30 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_CORY_3 === +Name: CORY +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Pelipper +Level: 32 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Machop +Level: 32 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Tentacool +Level: 32 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_CORY_4 === +Name: CORY +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Pelipper +Level: 34 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Machop +Level: 34 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Tentacruel +Level: 34 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_CORY_5 === +Name: CORY +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Pelipper +Level: 36 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Machoke +Level: 36 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Tentacruel +Level: 36 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_PABLO_2 === +Name: PABLO +Class: Triathlete +Pic: Swimming Triathlete M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Staryu +Level: 37 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Staryu +Level: 37 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_PABLO_3 === +Name: PABLO +Class: Triathlete +Pic: Swimming Triathlete M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 39 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Staryu +Level: 39 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Staryu +Level: 39 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_PABLO_4 === +Name: PABLO +Class: Triathlete +Pic: Swimming Triathlete M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Pelipper +Level: 41 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Staryu +Level: 41 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Staryu +Level: 41 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_PABLO_5 === +Name: PABLO +Class: Triathlete +Pic: Swimming Triathlete M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Pelipper +Level: 43 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Starmie +Level: 43 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Starmie +Level: 43 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_KOJI_2 === +Name: KOJI +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Machoke +Level: 37 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Machoke +Level: 37 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_KOJI_3 === +Name: KOJI +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Makuhita +Level: 39 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Machoke +Level: 39 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Machoke +Level: 39 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_KOJI_4 === +Name: KOJI +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Hariyama +Level: 41 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Machoke +Level: 41 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Machoke +Level: 41 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_KOJI_5 === +Name: KOJI +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Hariyama +Level: 43 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Machamp +Level: 43 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Machamp +Level: 43 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_CRISTIN_2 === +Name: CRISTIN +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Basic Trainer + +Loudred +Level: 35 +IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe + +Vigoroth +Level: 35 +IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe + +=== TRAINER_CRISTIN_3 === +Name: CRISTIN +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Basic Trainer + +Spinda +Level: 37 +IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe + +Loudred +Level: 37 +IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe + +Vigoroth +Level: 37 +IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe + +=== TRAINER_CRISTIN_4 === +Name: CRISTIN +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Basic Trainer + +Spinda +Level: 39 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +Loudred +Level: 39 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +Vigoroth +Level: 39 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_CRISTIN_5 === +Name: CRISTIN +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Basic Trainer + +Spinda +Level: 41 +IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe + +Exploud +Level: 41 +IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe + +Slaking +Level: 41 +IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe + +=== TRAINER_FERNANDO_2 === +Name: FERNANDO +Class: Guitarist +Pic: Guitarist +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Electrike +Level: 35 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Electrike +Level: 35 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Loudred +Level: 35 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_FERNANDO_3 === +Name: FERNANDO +Class: Guitarist +Pic: Guitarist +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Electrike +Level: 37 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Manectric +Level: 37 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Loudred +Level: 37 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_FERNANDO_4 === +Name: FERNANDO +Class: Guitarist +Pic: Guitarist +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Manectric +Level: 39 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Manectric +Level: 39 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Loudred +Level: 39 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_FERNANDO_5 === +Name: FERNANDO +Class: Guitarist +Pic: Guitarist +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Manectric +Level: 41 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Manectric +Level: 41 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Exploud +Level: 41 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_SAWYER_2 === +Name: SAWYER +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Basic Trainer + +Geodude +Level: 26 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Numel +Level: 26 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_SAWYER_3 === +Name: SAWYER +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Basic Trainer + +Machop +Level: 28 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Numel +Level: 28 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Graveler +Level: 28 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_SAWYER_4 === +Name: SAWYER +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Basic Trainer + +Machop +Level: 30 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Numel +Level: 30 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Graveler +Level: 30 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_SAWYER_5 === +Name: SAWYER +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Basic Trainer + +Machoke +Level: 33 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Camerupt +Level: 33 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Golem +Level: 33 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_GABRIELLE_2 === +Name: GABRIELLE +Class: Pkmn Breeder +Pic: Pokemon Breeder F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Skitty +Level: 31 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Mightyena +Level: 31 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Zigzagoon +Level: 31 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Lotad +Level: 31 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Seedot +Level: 31 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Taillow +Level: 31 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_GABRIELLE_3 === +Name: GABRIELLE +Class: Pkmn Breeder +Pic: Pokemon Breeder F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Skitty +Level: 33 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Mightyena +Level: 33 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Linoone +Level: 33 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Lombre +Level: 33 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Nuzleaf +Level: 33 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Taillow +Level: 33 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_GABRIELLE_4 === +Name: GABRIELLE +Class: Pkmn Breeder +Pic: Pokemon Breeder F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Delcatty +Level: 35 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Mightyena +Level: 35 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Linoone +Level: 35 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Lombre +Level: 35 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Nuzleaf +Level: 35 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Swellow +Level: 35 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_GABRIELLE_5 === +Name: GABRIELLE +Class: Pkmn Breeder +Pic: Pokemon Breeder F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Delcatty +Level: 37 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Mightyena +Level: 37 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Linoone +Level: 37 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Ludicolo +Level: 37 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Shiftry +Level: 37 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Swellow +Level: 37 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_THALIA_2 === +Name: THALIA +Class: Beauty +Pic: Beauty +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Wailmer +Level: 34 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Horsea +Level: 34 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_THALIA_3 === +Name: THALIA +Class: Beauty +Pic: Beauty +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Luvdisc +Level: 36 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Wailmer +Level: 36 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Seadra +Level: 36 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_THALIA_4 === +Name: THALIA +Class: Beauty +Pic: Beauty +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Luvdisc +Level: 38 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Wailmer +Level: 38 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Seadra +Level: 38 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_THALIA_5 === +Name: THALIA +Class: Beauty +Pic: Beauty +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Luvdisc +Level: 40 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Wailord +Level: 40 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Kingdra +Level: 40 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_MARIELA === +Name: MARIELA +Class: Psychic +Pic: Psychic F +Gender: Female +Music: Intense +Double Battle: No + +Chimecho +Level: 41 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ALVARO === +Name: ALVARO +Class: Psychic +Pic: Psychic M +Gender: Male +Music: Intense +Double Battle: No + +Banette +Level: 41 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Kadabra +Level: 41 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_EVERETT === +Name: EVERETT +Class: Gentleman +Pic: Gentleman +Gender: Male +Music: Rich +Double Battle: No + +Wobbuffet +Level: 41 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_RED === +Name: RED +Class: Rival +Pic: Red +Gender: Male +Music: Male +Double Battle: No + +Charmander +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LEAF === +Name: LEAF +Class: Rival +Pic: Leaf +Gender: Female +Music: Male +Double Battle: No + +Bulbasaur +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BRENDAN_PLACEHOLDER === +Name: BRENDAN +Class: RS Protag +Pic: RS Brendan +Gender: Male +Music: Male +Double Battle: No + +Groudon +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MAY_PLACEHOLDER === +Name: MAY +Class: RS Protag +Pic: RS May +Gender: Female +Music: Male +Double Battle: No + +Kyogre +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe diff --git a/test/battle/trainer_control.party b/test/battle/trainer_control.party index b4ba68c6b1..6494399644 100644 --- a/test/battle/trainer_control.party +++ b/test/battle/trainer_control.party @@ -1,215 +1,215 @@ -=== 0 === -Name: Test1 -Class: Pkmn Trainer 1 -Pic: Red -Gender: Male -Music: Male -Double Battle: No - -Bubbles (Wobbuffet) (F) @ Assault Vest -Hasty Nature -Level: 67 -Ability: Telepathy -IVs: 25 HP / 26 Atk / 27 Def / 29 SpA / 30 SpD / 28 Spe -EVs: 252 HP / 4 SpA / 252 Spe -Happiness: 42 -Shiny: Yes -Ball: Master Ball -Dynamax Level: 5 -- Air Slash -- Barrier -- Solar Beam -- Explosion - -Wobbuffet -Level: 5 -Ability: Shadow Tag -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -Wynaut -Level: 5 -IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe - -=== 1 === -Name: Test2 -Class: Pkmn Trainer 1 -Pic: Red -Gender: Male -Music: Male -Double Battle: No -Difficulty: Normal - -Mewtwo -Level: 5 - -=== 2 === -Name: Test2 -Class: Pkmn Trainer 1 -Pic: Red -Gender: Male -Music: Male -Double Battle: No -Difficulty: Normal - -Mewtwo -Level: 50 - -=== 2 === -Name: Test2 -Class: Pkmn Trainer 1 -Pic: Red -Gender: Male -Music: Male -Double Battle: No -Difficulty: Easy - -Metapod -Level: 1 - -=== 2 === -Name: Test2 -Class: Pkmn Trainer 1 -Pic: Red -Gender: Male -Music: Male -Double Battle: No -Difficulty: Hard - -Arceus -Level: 99 - -=== 3 === -Name: Test3 -Class: Pkmn Trainer 1 -Pic: Red -Gender: Male -Music: Male -Double Battle: No -Party Size: 1 - -Wynaut - -Wobbuffet - -Eevee - -Mew - -=== 4 === -Name: Test4 -Class: Pkmn Trainer 1 -Pic: Red -Gender: Male -Music: Male -Double Battle: No -Party Size: 3 - -Wynaut - -Wobbuffet -Tags: Lead - -Eevee -Tags: Ace - -Mew - -Oddish -Tags: Ace - -Aron -Tags: Lead - -=== 5 === -Name: Test5 -Class: Pkmn Trainer 1 -Pic: Red -Gender: Male -Music: Male -Double Battle: Yes -Party Size: 3 -Pool Rules: Weather Doubles - -Wynaut -Tags: Lead - -Wobbuffet -Tags: Lead - -Vulpix -Tags: Lead / Weather Setter - -Bulbasaur -Tags: Lead / Weather Abuser - -Torkoal -Tags: Lead / Weather Setter - -Cherrim -Tags: Lead / Weather Abuser - -Mew -Tags: Lead - -Aron -Tags: Lead - -Oddish - -Eevee - -=== 6 === -Name: Test6 -Class: Pkmn Trainer 1 -Pic: Red -Gender: Male -Music: Male -Double Battle: No -Party Size: 2 -Pool Rules: Basic - -Wynaut -Tags: Lead - -Wobbuffet -Tags: Lead - -Eevee -Tags: Lead - -=== 7 === -Name: Test1 -Class: Pkmn Trainer 1 -Pic: Red -Gender: Male -Music: Male -Double Battle: No -Party Size: 2 -Pool Rules: Basic -Pool Prune: Test - -Wynaut - -Wobbuffet -Tags: Lead - -Eevee - -=== 8 === -Name: Test1 -Class: Pkmn Trainer 1 -Pic: Red -Gender: Male -Music: Male -Double Battle: No -Party Size: 2 -Pool Rules: Basic -Pool Pick Functions: Lowest - -Wynaut -Tags: Ace - -Wobbuffet - -Eevee -Tags: Lead +=== 0 === +Name: Test1 +Class: Pkmn Trainer 1 +Pic: Red +Gender: Male +Music: Male +Double Battle: No + +Bubbles (Wobbuffet) (F) @ Assault Vest +Hasty Nature +Level: 67 +Ability: Telepathy +IVs: 25 HP / 26 Atk / 27 Def / 29 SpA / 30 SpD / 28 Spe +EVs: 252 HP / 4 SpA / 252 Spe +Happiness: 42 +Shiny: Yes +Ball: Master Ball +Dynamax Level: 5 +- Air Slash +- Barrier +- Solar Beam +- Explosion + +Wobbuffet +Level: 5 +Ability: Shadow Tag +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wynaut +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== 1 === +Name: Test2 +Class: Pkmn Trainer 1 +Pic: Red +Gender: Male +Music: Male +Double Battle: No +Difficulty: Normal + +Mewtwo +Level: 5 + +=== 2 === +Name: Test2 +Class: Pkmn Trainer 1 +Pic: Red +Gender: Male +Music: Male +Double Battle: No +Difficulty: Normal + +Mewtwo +Level: 50 + +=== 2 === +Name: Test2 +Class: Pkmn Trainer 1 +Pic: Red +Gender: Male +Music: Male +Double Battle: No +Difficulty: Easy + +Metapod +Level: 1 + +=== 2 === +Name: Test2 +Class: Pkmn Trainer 1 +Pic: Red +Gender: Male +Music: Male +Double Battle: No +Difficulty: Hard + +Arceus +Level: 99 + +=== 3 === +Name: Test3 +Class: Pkmn Trainer 1 +Pic: Red +Gender: Male +Music: Male +Double Battle: No +Party Size: 1 + +Wynaut + +Wobbuffet + +Eevee + +Mew + +=== 4 === +Name: Test4 +Class: Pkmn Trainer 1 +Pic: Red +Gender: Male +Music: Male +Double Battle: No +Party Size: 3 + +Wynaut + +Wobbuffet +Tags: Lead + +Eevee +Tags: Ace + +Mew + +Oddish +Tags: Ace + +Aron +Tags: Lead + +=== 5 === +Name: Test5 +Class: Pkmn Trainer 1 +Pic: Red +Gender: Male +Music: Male +Double Battle: Yes +Party Size: 3 +Pool Rules: Weather Doubles + +Wynaut +Tags: Lead + +Wobbuffet +Tags: Lead + +Vulpix +Tags: Lead / Weather Setter + +Bulbasaur +Tags: Lead / Weather Abuser + +Torkoal +Tags: Lead / Weather Setter + +Cherrim +Tags: Lead / Weather Abuser + +Mew +Tags: Lead + +Aron +Tags: Lead + +Oddish + +Eevee + +=== 6 === +Name: Test6 +Class: Pkmn Trainer 1 +Pic: Red +Gender: Male +Music: Male +Double Battle: No +Party Size: 2 +Pool Rules: Basic + +Wynaut +Tags: Lead + +Wobbuffet +Tags: Lead + +Eevee +Tags: Lead + +=== 7 === +Name: Test1 +Class: Pkmn Trainer 1 +Pic: Red +Gender: Male +Music: Male +Double Battle: No +Party Size: 2 +Pool Rules: Basic +Pool Prune: Test + +Wynaut + +Wobbuffet +Tags: Lead + +Eevee + +=== 8 === +Name: Test1 +Class: Pkmn Trainer 1 +Pic: Red +Gender: Male +Music: Male +Double Battle: No +Party Size: 2 +Pool Rules: Basic +Pool Pick Functions: Lowest + +Wynaut +Tags: Ace + +Wobbuffet + +Eevee +Tags: Lead diff --git a/tools/aif2pcm/LICENSE b/tools/aif2pcm/LICENSE index 966b92bd69..ce51485925 100644 --- a/tools/aif2pcm/LICENSE +++ b/tools/aif2pcm/LICENSE @@ -1,20 +1,20 @@ -Copyright (c) 2016 huderlem -Copyright (c) 2005, 2006 by Marco Trillo - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +Copyright (c) 2016 huderlem +Copyright (c) 2005, 2006 by Marco Trillo + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/tools/bin2c/LICENSE b/tools/bin2c/LICENSE index 534d15349e..3ef9505a6a 100644 --- a/tools/bin2c/LICENSE +++ b/tools/bin2c/LICENSE @@ -1,19 +1,19 @@ -Copyright (c) 2016 YamaArashi - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +Copyright (c) 2016 YamaArashi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/tools/gbafix/COPYING b/tools/gbafix/COPYING index 94a9ed024d..818433ecc0 100644 --- a/tools/gbafix/COPYING +++ b/tools/gbafix/COPYING @@ -1,674 +1,674 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/tools/gbagfx/LICENSE b/tools/gbagfx/LICENSE index b66bf81c0f..01c9d12933 100644 --- a/tools/gbagfx/LICENSE +++ b/tools/gbagfx/LICENSE @@ -1,19 +1,19 @@ -Copyright (c) 2015 YamaArashi - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +Copyright (c) 2015 YamaArashi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/tools/learnset_helpers/teachable.py b/tools/learnset_helpers/teachable.py index eb109e7a46..f4d74ceb6a 100644 --- a/tools/learnset_helpers/teachable.py +++ b/tools/learnset_helpers/teachable.py @@ -1,214 +1,214 @@ -import glob -import re -import json -import os - -# before all else, abort if the config is off -with open("./include/config/pokemon.h", "r") as file: - learnset_config = re.findall(r"#define P_LEARNSET_HELPER_TEACHABLE *([^ ]*)", file.read()) - if len(learnset_config) != 1: - quit() - if learnset_config[0] != "TRUE": - quit() - -def parse_mon_name(name): - return re.sub(r'(?!^)([A-Z]+)', r'_\1', name).upper() - -tm_moves = [] -tutor_moves = [] - -# scan incs -incs_to_check = glob.glob('./data/scripts/*.inc') # all .incs in the script folder -incs_to_check += glob.glob('./data/maps/*/scripts.inc') # all map scripts - -if len(incs_to_check) == 0: # disabled if no jsons present - quit() - -for file in incs_to_check: - with open(file, 'r') as f2: - raw = f2.read() - if 'special ChooseMonForMoveTutor' in raw: - for x in re.findall(r'setvar VAR_0x8005, (MOVE_.*)', raw): - if not x in tutor_moves: - tutor_moves.append(x) - -# scan TMs and HMs -with open("./include/constants/tms_hms.h", 'r') as file: - for x in re.findall(r'F\((.*)\)', file.read()): - if not 'MOVE_' + x in tm_moves: - tm_moves.append('MOVE_' + x) - -# look up universal moves to exclude them -universal_moves = [] -with open("./src/pokemon.c", "r") as file: - for x in re.findall(r"static const u16 sUniversalMoves\[\] =(.|\n)*?{((.|\n)*?)};", file.read())[0]: - x = x.replace("\n", "") - for y in x.split(","): - y = y.strip() - if y == "": - continue - universal_moves.append(y) - -# get compatibility from jsons -def construct_compatibility_dict(force_custom_check): - dict_out = {} - for pth in glob.glob('./tools/learnset_helpers/porymoves_files/*.json'): - f = open(pth, 'r') - data = json.load(f) - for mon in data.keys(): - if not mon in dict_out: - dict_out[mon] = [] - for move in data[mon]['LevelMoves']: - if not move['Move'] in dict_out[mon]: - dict_out[mon].append(move['Move']) - #for move in data[mon]['PreEvoMoves']: - # if not move in dict_out[mon]: - # dict_out[mon].append(move) - for move in data[mon]['TMMoves']: - if not move in dict_out[mon]: - dict_out[mon].append(move) - for move in data[mon]['EggMoves']: - if not move in dict_out[mon]: - dict_out[mon].append(move) - for move in data[mon]['TutorMoves']: - if not move in dict_out[mon]: - dict_out[mon].append(move) - - # if the file was not previously generated, check if there is custom data there that needs to be preserved - with open("./src/data/pokemon/teachable_learnsets.h", 'r') as file: - raw = file.read() - if not "// DO NOT MODIFY THIS FILE!" in raw and force_custom_check == True: - custom_teachable_compatibilities = {} - for entry in re.findall(r"static const u16 s(.*)TeachableLearnset\[\] = {\n((.|\n)*?)\n};", raw): - monname = parse_mon_name(entry[0]) - if monname == "NONE": - continue - compatibility = entry[1].split("\n") - if not monname in custom_teachable_compatibilities: - custom_teachable_compatibilities[monname] = [] - if not monname in dict_out: - # this mon is unknown, so all data needs to be preserved - for move in compatibility: - move = move.replace(",", "").strip() - if move == "" or move == "MOVE_UNAVAILABLE": - continue - custom_teachable_compatibilities[monname].append(move) - else: - # this mon is known, so check if the moves in the old teachable_learnsets.h are not in the jsons - for move in compatibility: - move = move.replace(",", "").strip() - if move == "" or move == "MOVE_UNAVAILABLE": - continue - if not move in dict_out[monname]: - custom_teachable_compatibilities[monname].append(move) - # actually store the data in custom.json - if os.path.exists("./tools/learnset_helpers/porymoves_files/custom.json"): - f2 = open("./tools/learnset_helpers/porymoves_files/custom.json", "r") - custom_json = json.load(f2) - f2.close() - else: - custom_json = {} - for x in custom_teachable_compatibilities: - if len(custom_teachable_compatibilities[x]) == 0: - continue - if not x in custom_json: - custom_json[x] = {"LevelMoves": [], "PreEvoMoves": [], "TMMoves": [], "EggMoves": [], "TutorMoves": []} - for move in custom_teachable_compatibilities[x]: - custom_json[x]["TutorMoves"].append(move) - f2 = open("./tools/learnset_helpers/porymoves_files/custom.json", "w") - f2.write(json.dumps(custom_json, indent=2)) - f2.close() - print("FIRST RUN: Updated custom.json with teachable_learnsets.h's data") - # rerun the process - dict_out = construct_compatibility_dict(False) - return dict_out - -compatibility_dict = construct_compatibility_dict(True) - -# actually prepare the file -with open("./src/data/pokemon/teachable_learnsets.h", 'r') as file: - out = file.read() - list_of_mons = re.findall(r'static const u16 s(.*)TeachableLearnset', out) -for mon in list_of_mons: - mon_parsed = parse_mon_name(mon) - tm_learnset = [] - tutor_learnset = [] - if mon_parsed == "NONE" or mon_parsed == "MEW": - continue - if not mon_parsed in compatibility_dict: - print("Unable to find %s in json" % mon) - continue - for move in tm_moves: - if move in universal_moves: - continue - if move in tm_learnset: - continue - if move in compatibility_dict[mon_parsed]: - tm_learnset.append(move) - continue - for move in tutor_moves: - if move in universal_moves: - continue - if move in tutor_learnset: - continue - if move in compatibility_dict[mon_parsed]: - tutor_learnset.append(move) - continue - tm_learnset.sort() - tutor_learnset.sort() - tm_learnset += tutor_learnset - repl = "static const u16 s%sTeachableLearnset[] = {\n " % mon - if len(tm_learnset) > 0: - repl += ",\n ".join(tm_learnset) + ",\n " - repl += "MOVE_UNAVAILABLE,\n};" - newout = re.sub(r'static const u16 s%sTeachableLearnset\[\] = {[\s\S]*?};' % mon, repl, out) - if newout != out: - out = newout - print("Updated %s" % mon) - -# add/update header -header = "//\n// DO NOT MODIFY THIS FILE! It is auto-generated from tools/learnset_helpers/teachable.py\n//\n\n" -longest_move_name = 0 -for move in tm_moves + tutor_moves: - if len(move) > longest_move_name: - longest_move_name = len(move) -longest_move_name += 2 # + 2 for a hyphen and a space - -universal_title = "Near-universal moves found in sUniversalMoves:" -tmhm_title = "TM/HM moves found in \"include/constants/tms_hms.h\":" -tutor_title = "Tutor moves found in map scripts:" - -if longest_move_name < len(universal_title): - longest_move_name = len(universal_title) -if longest_move_name < len(tmhm_title): - longest_move_name = len(tmhm_title) -if longest_move_name < len(tutor_title): - longest_move_name = len(tutor_title) - -def header_print(str): - global header - header += "// " + str + " " * (longest_move_name - len(str)) + " //\n" - -header += "// " + longest_move_name * "*" + " //\n" -header_print(tmhm_title) -for move in tm_moves: - header_print("- " + move) -header += "// " + longest_move_name * "*" + " //\n" -header_print(tutor_title) -tutor_moves.sort() # alphabetically sort tutor moves for easier referencing -for move in tutor_moves: - header_print("- " + move) -header += "// " + longest_move_name * "*" + " //\n" -header_print(universal_title) -universal_moves.sort() # alphabetically sort near-universal moves for easier referencing -for move in universal_moves: - header_print("- " + move) -header += "// " + longest_move_name * "*" + " //\n\n" - -if not "// DO NOT MODIFY THIS FILE!" in out: - out = header + out -else: - out = re.sub(r"\/\/\n\/\/ DO NOT MODIFY THIS FILE!(.|\n)*\* \/\/\n\n", header, out) - -with open("./src/data/pokemon/teachable_learnsets.h", 'w') as file: - file.write(out) +import glob +import re +import json +import os + +# before all else, abort if the config is off +with open("./include/config/pokemon.h", "r") as file: + learnset_config = re.findall(r"#define P_LEARNSET_HELPER_TEACHABLE *([^ ]*)", file.read()) + if len(learnset_config) != 1: + quit() + if learnset_config[0] != "TRUE": + quit() + +def parse_mon_name(name): + return re.sub(r'(?!^)([A-Z]+)', r'_\1', name).upper() + +tm_moves = [] +tutor_moves = [] + +# scan incs +incs_to_check = glob.glob('./data/scripts/*.inc') # all .incs in the script folder +incs_to_check += glob.glob('./data/maps/*/scripts.inc') # all map scripts + +if len(incs_to_check) == 0: # disabled if no jsons present + quit() + +for file in incs_to_check: + with open(file, 'r') as f2: + raw = f2.read() + if 'special ChooseMonForMoveTutor' in raw: + for x in re.findall(r'setvar VAR_0x8005, (MOVE_.*)', raw): + if not x in tutor_moves: + tutor_moves.append(x) + +# scan TMs and HMs +with open("./include/constants/tms_hms.h", 'r') as file: + for x in re.findall(r'F\((.*)\)', file.read()): + if not 'MOVE_' + x in tm_moves: + tm_moves.append('MOVE_' + x) + +# look up universal moves to exclude them +universal_moves = [] +with open("./src/pokemon.c", "r") as file: + for x in re.findall(r"static const u16 sUniversalMoves\[\] =(.|\n)*?{((.|\n)*?)};", file.read())[0]: + x = x.replace("\n", "") + for y in x.split(","): + y = y.strip() + if y == "": + continue + universal_moves.append(y) + +# get compatibility from jsons +def construct_compatibility_dict(force_custom_check): + dict_out = {} + for pth in glob.glob('./tools/learnset_helpers/porymoves_files/*.json'): + f = open(pth, 'r') + data = json.load(f) + for mon in data.keys(): + if not mon in dict_out: + dict_out[mon] = [] + for move in data[mon]['LevelMoves']: + if not move['Move'] in dict_out[mon]: + dict_out[mon].append(move['Move']) + #for move in data[mon]['PreEvoMoves']: + # if not move in dict_out[mon]: + # dict_out[mon].append(move) + for move in data[mon]['TMMoves']: + if not move in dict_out[mon]: + dict_out[mon].append(move) + for move in data[mon]['EggMoves']: + if not move in dict_out[mon]: + dict_out[mon].append(move) + for move in data[mon]['TutorMoves']: + if not move in dict_out[mon]: + dict_out[mon].append(move) + + # if the file was not previously generated, check if there is custom data there that needs to be preserved + with open("./src/data/pokemon/teachable_learnsets.h", 'r') as file: + raw = file.read() + if not "// DO NOT MODIFY THIS FILE!" in raw and force_custom_check == True: + custom_teachable_compatibilities = {} + for entry in re.findall(r"static const u16 s(.*)TeachableLearnset\[\] = {\n((.|\n)*?)\n};", raw): + monname = parse_mon_name(entry[0]) + if monname == "NONE": + continue + compatibility = entry[1].split("\n") + if not monname in custom_teachable_compatibilities: + custom_teachable_compatibilities[monname] = [] + if not monname in dict_out: + # this mon is unknown, so all data needs to be preserved + for move in compatibility: + move = move.replace(",", "").strip() + if move == "" or move == "MOVE_UNAVAILABLE": + continue + custom_teachable_compatibilities[monname].append(move) + else: + # this mon is known, so check if the moves in the old teachable_learnsets.h are not in the jsons + for move in compatibility: + move = move.replace(",", "").strip() + if move == "" or move == "MOVE_UNAVAILABLE": + continue + if not move in dict_out[monname]: + custom_teachable_compatibilities[monname].append(move) + # actually store the data in custom.json + if os.path.exists("./tools/learnset_helpers/porymoves_files/custom.json"): + f2 = open("./tools/learnset_helpers/porymoves_files/custom.json", "r") + custom_json = json.load(f2) + f2.close() + else: + custom_json = {} + for x in custom_teachable_compatibilities: + if len(custom_teachable_compatibilities[x]) == 0: + continue + if not x in custom_json: + custom_json[x] = {"LevelMoves": [], "PreEvoMoves": [], "TMMoves": [], "EggMoves": [], "TutorMoves": []} + for move in custom_teachable_compatibilities[x]: + custom_json[x]["TutorMoves"].append(move) + f2 = open("./tools/learnset_helpers/porymoves_files/custom.json", "w") + f2.write(json.dumps(custom_json, indent=2)) + f2.close() + print("FIRST RUN: Updated custom.json with teachable_learnsets.h's data") + # rerun the process + dict_out = construct_compatibility_dict(False) + return dict_out + +compatibility_dict = construct_compatibility_dict(True) + +# actually prepare the file +with open("./src/data/pokemon/teachable_learnsets.h", 'r') as file: + out = file.read() + list_of_mons = re.findall(r'static const u16 s(.*)TeachableLearnset', out) +for mon in list_of_mons: + mon_parsed = parse_mon_name(mon) + tm_learnset = [] + tutor_learnset = [] + if mon_parsed == "NONE" or mon_parsed == "MEW": + continue + if not mon_parsed in compatibility_dict: + print("Unable to find %s in json" % mon) + continue + for move in tm_moves: + if move in universal_moves: + continue + if move in tm_learnset: + continue + if move in compatibility_dict[mon_parsed]: + tm_learnset.append(move) + continue + for move in tutor_moves: + if move in universal_moves: + continue + if move in tutor_learnset: + continue + if move in compatibility_dict[mon_parsed]: + tutor_learnset.append(move) + continue + tm_learnset.sort() + tutor_learnset.sort() + tm_learnset += tutor_learnset + repl = "static const u16 s%sTeachableLearnset[] = {\n " % mon + if len(tm_learnset) > 0: + repl += ",\n ".join(tm_learnset) + ",\n " + repl += "MOVE_UNAVAILABLE,\n};" + newout = re.sub(r'static const u16 s%sTeachableLearnset\[\] = {[\s\S]*?};' % mon, repl, out) + if newout != out: + out = newout + print("Updated %s" % mon) + +# add/update header +header = "//\n// DO NOT MODIFY THIS FILE! It is auto-generated from tools/learnset_helpers/teachable.py\n//\n\n" +longest_move_name = 0 +for move in tm_moves + tutor_moves: + if len(move) > longest_move_name: + longest_move_name = len(move) +longest_move_name += 2 # + 2 for a hyphen and a space + +universal_title = "Near-universal moves found in sUniversalMoves:" +tmhm_title = "TM/HM moves found in \"include/constants/tms_hms.h\":" +tutor_title = "Tutor moves found in map scripts:" + +if longest_move_name < len(universal_title): + longest_move_name = len(universal_title) +if longest_move_name < len(tmhm_title): + longest_move_name = len(tmhm_title) +if longest_move_name < len(tutor_title): + longest_move_name = len(tutor_title) + +def header_print(str): + global header + header += "// " + str + " " * (longest_move_name - len(str)) + " //\n" + +header += "// " + longest_move_name * "*" + " //\n" +header_print(tmhm_title) +for move in tm_moves: + header_print("- " + move) +header += "// " + longest_move_name * "*" + " //\n" +header_print(tutor_title) +tutor_moves.sort() # alphabetically sort tutor moves for easier referencing +for move in tutor_moves: + header_print("- " + move) +header += "// " + longest_move_name * "*" + " //\n" +header_print(universal_title) +universal_moves.sort() # alphabetically sort near-universal moves for easier referencing +for move in universal_moves: + header_print("- " + move) +header += "// " + longest_move_name * "*" + " //\n\n" + +if not "// DO NOT MODIFY THIS FILE!" in out: + out = header + out +else: + out = re.sub(r"\/\/\n\/\/ DO NOT MODIFY THIS FILE!(.|\n)*\* \/\/\n\n", header, out) + +with open("./src/data/pokemon/teachable_learnsets.h", 'w') as file: + file.write(out) diff --git a/tools/mid2agb/LICENSE b/tools/mid2agb/LICENSE index 534d15349e..3ef9505a6a 100644 --- a/tools/mid2agb/LICENSE +++ b/tools/mid2agb/LICENSE @@ -1,19 +1,19 @@ -Copyright (c) 2016 YamaArashi - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +Copyright (c) 2016 YamaArashi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/tools/preproc/LICENSE b/tools/preproc/LICENSE index 534d15349e..3ef9505a6a 100644 --- a/tools/preproc/LICENSE +++ b/tools/preproc/LICENSE @@ -1,19 +1,19 @@ -Copyright (c) 2016 YamaArashi - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +Copyright (c) 2016 YamaArashi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/tools/ramscrgen/LICENSE b/tools/ramscrgen/LICENSE index 534d15349e..3ef9505a6a 100644 --- a/tools/ramscrgen/LICENSE +++ b/tools/ramscrgen/LICENSE @@ -1,19 +1,19 @@ -Copyright (c) 2016 YamaArashi - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +Copyright (c) 2016 YamaArashi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/tools/rsfont/LICENSE b/tools/rsfont/LICENSE index b497950c1e..d7c3b5cf32 100644 --- a/tools/rsfont/LICENSE +++ b/tools/rsfont/LICENSE @@ -1,19 +1,19 @@ -Copyright (c) 2015-2016 YamaArashi - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +Copyright (c) 2015-2016 YamaArashi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/tools/scaninc/LICENSE b/tools/scaninc/LICENSE index b66bf81c0f..01c9d12933 100644 --- a/tools/scaninc/LICENSE +++ b/tools/scaninc/LICENSE @@ -1,19 +1,19 @@ -Copyright (c) 2015 YamaArashi - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +Copyright (c) 2015 YamaArashi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE.