diff --git a/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml b/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml index 9b892bc732..24b57d117e 100644 --- a/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml +++ b/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml @@ -23,9 +23,11 @@ body: label: Version description: What version of pokeemerald-expansion are you using as a base? options: - - 1.8.0 (Latest release) + - 1.8.2 (Latest release) - master (default, unreleased bugfixes) - upcoming (Edge) + - 1.8.1 + - 1.8.0 - 1.7.4 - 1.7.3 - 1.7.2 diff --git a/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml b/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml index ae2752be6a..562468cce1 100644 --- a/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml +++ b/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml @@ -23,9 +23,11 @@ body: label: Version description: What version of pokeemerald-expansion are you using as a base? options: - - 1.8.0 (Latest release) + - 1.8.2 (Latest release) - master (default, unreleased bugfixes) - upcoming (Edge) + - 1.8.1 + - 1.8.0 - 1.7.4 - 1.7.3 - 1.7.2 diff --git a/.github/ISSUE_TEMPLATE/04_other_errors.yaml b/.github/ISSUE_TEMPLATE/04_other_errors.yaml index de6b18030a..4658ecfb69 100644 --- a/.github/ISSUE_TEMPLATE/04_other_errors.yaml +++ b/.github/ISSUE_TEMPLATE/04_other_errors.yaml @@ -23,9 +23,11 @@ body: label: Version description: What version of pokeemerald-expansion are you using as a base? options: - - 1.8.0 (Latest release) + - 1.8.2 (Latest release) - master (default, unreleased bugfixes) - upcoming (Edge) + - 1.8.1 + - 1.8.0 - 1.7.4 - 1.7.3 - 1.7.2 diff --git a/CHANGELOG.md b/CHANGELOG.md index e74fd67340..dea05701d5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,14 +1,46 @@ # Pokeemerald-Expansion Changelogs -## Version 1.8.x -### [Version 1.8.0](docs/changelogs/1.8.0.md) - Feature Release +## 1.8.x +- ### [Version 1.8.2](docs/changelogs/1.8.2.md) - Bugfix Release 🧹 +- ### [Version 1.8.1](docs/changelogs/1.8.1.md) - HOTFIX Release 🔥 +- ### [Version 1.8.0](docs/changelogs/1.8.0.md) - Feature Release ✨ -## Version 1.7.x -### [Version 1.7.4](docs/changelogs/1.7.4.md) - Bugfix Release -### [Version 1.7.3](docs/changelogs/1.7.3.md) - Bugfix Release -### [Version 1.7.2](docs/changelogs/1.7.2.md) - Bugfix Release -### [Version 1.7.1](docs/changelogs/1.7.1.md) - Bugfix Release -### [Version 1.7.0](docs/changelogs/1.7.0.md) - Feature Release +## 1.7.x +- ### [Version 1.7.4](docs/changelogs/1.7.4.md) - Bugfix Release 🧹 +- ### [Version 1.7.3](docs/changelogs/1.7.3.md) - Bugfix Release 🧹 +- ### [Version 1.7.2](docs/changelogs/1.7.2.md) - Bugfix Release 🧹 +- ### [Version 1.7.1](docs/changelogs/1.7.1.md) - Bugfix Release 🧹 +- ### [Version 1.7.0](docs/changelogs/1.7.0.md) - Feature Release ✨ -## Version 1.6.x -### [Version 1.6.2](docs/changelogs/1.6.2.md) - Bugfix Release +## 1.6.x +- ### [Version 1.6.2](docs/changelogs/1.6.2.md) - Bugfix Release 🧹 +- ### [Version 1.6.1](docs/changelogs/1.6.1.md) - HOTFIX Release 🔥 +- ### [Version 1.6.0](docs/changelogs/1.6.0.md) - Feature Release ✨ + +## 1.5.x +- ### [Version 1.5.3](docs/changelogs/1.5.3.md) - HOTFIX Release 🔥 +- ### [Version 1.5.2](docs/changelogs/1.5.2.md) - Bugfix Release 🧹 +- ### [Version 1.5.1](docs/changelogs/1.5.1.md) - Bugfix Release 🧹 +- ### [Version 1.5.0](docs/changelogs/1.5.0.md) - Feature Release ✨ + +## 1.4.x +- ### [Version 1.4.3](docs/changelogs/1.4.3.md) - Bugfix Release 🧹 +- ### [Version 1.4.2](docs/changelogs/1.4.2.md) - Bugfix Release 🧹 +- ### [Version 1.4.1](docs/changelogs/1.4.1.md) - HOTFIX Release 🔥 +- ### [Version 1.4.0](docs/changelogs/1.4.0.md) - Feature Release ✨ + +## 1.3.x +- ### [Version 1.3.0](docs/changelogs/1.3.0.md) - Feature Release ✨ + +## 1.2.x +- ### [Version 1.2.0](docs/changelogs/1.2.0.md) - Feature Release ✨ + +## 1.1.x +- ### [Version 1.1.1](docs/changelogs/1.1.1.md) - Bugfix Release 🧹 +- ### [Version 1.1.0](docs/changelogs/1.1.0.md) - Feature Release ✨ + +## 1.0.x +- ### [Version 1.0.0](docs/changelogs/1.0.0.md) - Feature Release ✨ + +## Pre-1.0.x: +- ### [Version 0.9.0](docs/changelogs/0.9.0.md) - Retroactive Version 🦕 diff --git a/INSTALL.md b/INSTALL.md index 3581481631..3f2de7ca5f 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -122,10 +122,10 @@ devkitARM is now installed. To install Python on WSL1, simply run the following commands: - ```bash - sudo apt update && upgrade - sudo apt install python3 - ``` +```bash +sudo apt update && sudo apt upgrade +sudo apt install python3 +``` Python is now installed. @@ -213,7 +213,7 @@ Note that in msys2, Copy is Ctrl+Insert and Paste is Shift+Insert. ### Installing Python on msys2 -To install Python on WSL1, simply run the following commands: +To install Python on msys2, simply run the following commands: ```bash pacman -S mingw-w64-x86_64-python3 @@ -310,6 +310,7 @@ If this works, then proceed to [Installation](#installation). Otherwise, ask for ``` 2. - If libpng is **not installed**, then go to [Installing libpng (macOS)](#installing-libpng-macos). + - If pkg-config is **not installed**, then go to [Installing pkg-config (macos)](#installing-pkg-config-macos). - If devkitARM is **not installed**, then go to [Installing devkitARM (macOS)](#installing-devkitarm-macos). - Otherwise, **open the Terminal** and go to [Choosing where to store pokeemerald Expansion (macOS)](#choosing-where-to-store-pokeemerald-expansion-macos) @@ -329,6 +330,26 @@ If this works, then proceed to [Installation](#installation). Otherwise, ask for ``` libpng is now installed. + Continue to [Installing pkg-config (macOS)](#installing-pkg-config-macos) if **pkg-config is not installed**. Otherwise, continue to [Installing devkitARM (macOS)](#installing-devkitarm-macos) if **devkitARM is not installed**. + + If both pkg-config and devkitARM are already installed, go to [Choosing where to store pokeemerald Expansion (macOS)](#choosing-where-to-store-pokeemerald-expansion-macos). + +### Installing pkg-config (macOS) +
+ Note for advanced users... + +> This guide installs pkg-config via Homebrew as it is the easiest method, however advanced users can install pkg-config through other means if they so desire. +
+ +1. Open the Terminal. +2. If Homebrew is not installed, then install [Homebrew](https://brew.sh/) by following the instructions on the website. +3. Run the following command to install libpng. + + ```bash + brew install pkg-config + ``` + pkg-config is now installed. + Continue to [Installing devkitARM (macOS)](#installing-devkitarm-macos) if **devkitARM is not installed**, otherwise, go to [Choosing where to store pokeemerald Expansion (macOS)](#choosing-where-to-store-pokeemerald-expansion-macos). ### Installing devkitARM (macOS) @@ -346,6 +367,18 @@ If this works, then proceed to [Installation](#installation). Otherwise, ask for 4. After the tools are installed, devkitARM must now be made accessible from anywhere by the system. To do so, run the following commands: + ```bash + export DEVKITPRO=/opt/devkitpro + echo "export DEVKITPRO=$DEVKITPRO" >> ~/.zshrc + export DEVKITARM=$DEVKITPRO/devkitARM + echo "export DEVKITARM=$DEVKITARM" >> ~/.zshrc + + echo "if [ -f ~/.zshrc ]; then . ~/.zshrc; fi" >> ~/.zprofile + ``` + *Note: Starting with macOS 10.15, the default Unix shell is now zsh. If you migrated from an older version of macOS, you might still be using bash. You can check my running `echo $0` in the terminal.* +
+ If your terminal is using bash instead of zsh... + ```bash export DEVKITPRO=/opt/devkitpro echo "export DEVKITPRO=$DEVKITPRO" >> ~/.bashrc @@ -354,6 +387,7 @@ If this works, then proceed to [Installation](#installation). Otherwise, ask for echo "if [ -f ~/.bashrc ]; then . ~/.bashrc; fi" >> ~/.bash_profile ``` +
### Installing Python (macOS) 1. Download the latest Python package from [here](https://www.python.org/downloads/). diff --git a/Makefile b/Makefile index 4132eda334..d93d7b00a5 100644 --- a/Makefile +++ b/Makefile @@ -166,11 +166,12 @@ JSONPROC := tools/jsonproc/jsonproc$(EXE) PATCHELF := tools/patchelf/patchelf$(EXE) ROMTEST ?= $(shell { command -v mgba-rom-test || command -v tools/mgba/mgba-rom-test$(EXE); } 2>/dev/null) ROMTESTHYDRA := tools/mgba-rom-test-hydra/mgba-rom-test-hydra$(EXE) +TRAINERPROC := tools/trainerproc/trainerproc$(EXE) PERL := perl # Inclusive list. If you don't want a tool to be built, don't add it here. -TOOLDIRS := tools/aif2pcm tools/bin2c tools/gbafix tools/gbagfx tools/jsonproc tools/mapjson tools/mid2agb tools/preproc tools/ramscrgen tools/rsfont tools/scaninc +TOOLDIRS := tools/aif2pcm tools/bin2c tools/gbafix tools/gbagfx tools/jsonproc tools/mapjson tools/mid2agb tools/preproc tools/ramscrgen tools/rsfont tools/scaninc tools/trainerproc CHECKTOOLDIRS = tools/patchelf tools/mgba-rom-test-hydra TOOLBASE = $(TOOLDIRS:tools/%=%) TOOLS = $(foreach tool,$(TOOLBASE),tools/$(tool)/$(tool)$(EXE)) @@ -187,7 +188,7 @@ MAKEFLAGS += --no-print-directory # Secondary expansion is required for dependency variables in object rules. .SECONDEXPANSION: -.PHONY: all rom clean compare tidy tools check-tools mostlyclean clean-tools clean-check-tools $(TOOLDIRS) $(CHECKTOOLDIRS) libagbsyscall agbcc modern tidymodern tidynonmodern check +.PHONY: all rom clean compare tidy tools check-tools mostlyclean clean-tools clean-check-tools $(TOOLDIRS) $(CHECKTOOLDIRS) libagbsyscall agbcc modern tidymodern tidynonmodern check history infoshell = $(foreach line, $(shell $1 | sed "s/ /__SPACE__/g"), $(info $(subst __SPACE__, ,$(line)))) @@ -254,7 +255,10 @@ endif AUTO_GEN_TARGETS := -all: rom +all: history rom + +history: + @bash ./check_history.sh tools: $(TOOLDIRS) @@ -335,6 +339,10 @@ $(CRY_SUBDIR)/uncomp_%.bin: $(CRY_SUBDIR)/uncomp_%.aif ; $(AIF) $< $@ $(CRY_SUBDIR)/%.bin: $(CRY_SUBDIR)/%.aif ; $(AIF) $< $@ --compress sound/%.bin: sound/%.aif ; $(AIF) $< $@ +COMPETITIVE_PARTY_SYNTAX := $(shell PATH="$(PATH)"; echo 'COMPETITIVE_PARTY_SYNTAX' | $(CPP) $(CPPFLAGS) -imacros include/global.h | tail -n1) +ifeq ($(COMPETITIVE_PARTY_SYNTAX),1) +%.h: %.party tools ; $(CPP) $(CPPFLAGS) - < $< | sed '/#[^p]/d' | $(TRAINERPROC) -o $@ -i $< - +endif ifeq ($(MODERN),0) $(C_BUILDDIR)/libc.o: CC1 := tools/agbcc/bin/old_agbcc$(EXE) @@ -354,6 +362,8 @@ $(C_BUILDDIR)/librfu_intr.o: CFLAGS := -O2 -mthumb-interwork -quiet else $(C_BUILDDIR)/librfu_intr.o: CFLAGS := -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast $(C_BUILDDIR)/pokedex_plus_hgss.o: CFLAGS := -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -Wno-pointer-to-int-cast -std=gnu17 -Werror -Wall -Wno-strict-aliasing -Wno-attribute-alias -Woverride-init +# Annoyingly we can't turn this on just for src/data/trainers.h +$(C_BUILDDIR)/data.o: CFLAGS += -fno-show-column -fno-diagnostics-show-caret endif ifeq ($(DINFO),1) diff --git a/README.md b/README.md index c1c14b1266..6487086183 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # pokeemerald-expansion +### Important: DO NOT use GitHub's "Download Zip" option. Using this option will not download the commit history required to update your expansion version or merge other feature branches. Instead, please read [this guide](https://github.com/Pawkkie/Team-Aquas-Asset-Repo/wiki/The-Basics-of-GitHub) to learn how to fork the repository and clone locally from there. + ## What is pokeemerald-expansion? pokeemerald-expansion is a decomp hack base project based off pret's [pokeemerald](https://github.com/pret/pokeemerald) decompilation project. It's recommended that any new projects that plan on using it, to clone this repository instead of pret's vanilla repository, as we regurlarly incorporate pret's documentation changes. This is ***NOT*** a standalone romhack, and as such, most features will be unavailable and/or unbalanced if played as is. @@ -7,7 +9,7 @@ pokeemerald-expansion is a decomp hack base project based off pret's [pokeemeral If you use pokeemerald-expansion in your hack, please add RHH (Rom Hacking Hideout) to your credits list. Optionally, you can list the version used, so it can help players know what features to expect. You can phrase it as the following: ``` -Based off RHH's pokeemerald-expansion v1.7.3 https://github.com/rh-hideout/pokeemerald-expansion/ +Based off RHH's pokeemerald-expansion v1.8.0 https://github.com/rh-hideout/pokeemerald-expansion/ ``` ## What features are included? @@ -138,6 +140,7 @@ Based off RHH's pokeemerald-expansion v1.7.3 https://github.com/rh-hideout/pokee - *Dark Mode*. - [Nature Colors](https://github.com/DizzyEggg/pokeemerald/tree/nature_color) in summary screen by @DizzyEggg - [Dynamic Multichoice](https://github.com/SBird1337/pokeemerald/tree/feature/dynmulti) by @SBird1337 + - [Saveblock Cleansing](https://github.com/ghoulslash/pokeemerald/tree/saveblock) by @ghoulslash - ***Other features*** - Pressing B while holding a Pokémon drops them like in modern games (configurable). - Running indoors (configurable). @@ -164,7 +167,14 @@ With this, you'll get the latest version of pokeemerald-expansion, plus a couple ## **How do I update my version of pokeemerald-expansion?** - If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`. -- Once you have your remote set up, run the command `git pull RHH expansion/1.8.0`. +- Check your current version. + - You can check in the debug menu's `Utilities -> Expansion Version` option. + - If the option is not available, you possibly have version 1.6.2 or older. In that case, please check the [changelogs](CHANGELOG.md) to determine your version based on the features available on your repository. +- Once you have your remote set up, run the command `git pull RHH expansion/X.Y.Z`, replacing X, Y and Z with the digits of the respective version you want to update to (eg, to update to 1.8.2, use `git pull RHH expansion/1.8.2`). + - ***Important:*** If you are several versions behind, we recommend updating one minor version at a time, skipping directly to the latest patch version (eg, 1.5.3 -> 1.6.2 -> 1.7.4 and so on) +- Alternatively, you can update to unreleased versions of the expansion. + - ***master (stable):*** It contains unreleased **bugfixes** that will come in the next patch version. To merge, use `git pull RHH master`. + - ***upcoming (unstable, with potential bugs):*** It contains unreleased **features** that will come in the next minor version. To merge, use `git pull RHH upcoming`. ### Please consider crediting the entire [list of contributors](https://github.com/rh-hideout/pokeemerald-expansion/wiki/Credits) in your project, as they have all worked hard to develop this project :) diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index d2a8115089..25e0110a51 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -1361,6 +1361,11 @@ .4byte \jumpInstr .endm + .macro itemstatchangeeffects battler:req + callnative BS_RunStatChangeItems + .byte \battler + .endm + .macro allyswitchswapbattlers callnative BS_AllySwitchSwapBattler .endm @@ -1627,6 +1632,10 @@ .4byte \jumpInstr .endm + .macro trygulpmissile + callnative BS_TryGulpMissile + .endm + @ various command changed to more readable macros .macro cancelmultiturnmoves battler:req various \battler, VARIOUS_CANCEL_MULTI_TURN_MOVES diff --git a/check_history.sh b/check_history.sh new file mode 100644 index 0000000000..64ea76a807 --- /dev/null +++ b/check_history.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +if [ -e .histignore ] +then + exit 0 +fi + +if [ $GITHUB_ACTION ] +then + exit 0 +fi + +has_hist=false +has_git=1 +if which git >/dev/null +then + has_hist="$(git rev-parse --is-inside-work-tree 2>/dev/null)" +else + has_git=0 +fi + +if [ $has_git -ne 1 ] +then + echo -e "\033[0;31mfatal: \033[0m\033[1;33mgit was not found. You will be unable to use version control, update pokeemerald-expansion, or use feature branches. To use version control, install \`git\` and clone the repository instead of using \"Download Zip\" on GitHub. Run \`touch .histignore\` to ignore this and continue anyways.\033[0m" + exit 1 +fi + +if [ "$has_hist" ] +then + exit 0 +else + echo -e "\033[0;31mfatal: \033[0m\033[1;33mno git history found. You will be unable to use version control, update pokeemerald-expansion, or use feature branches. To use version control, use \`git\` to clone the repository instead of using \"Download Zip\" on GitHub. Run \`touch .histignore\` to ignore this and continue anyways.\033[0m" + exit 1 +fi + diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index becdadac1a..d5d81cf709 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -1032,6 +1032,7 @@ gBattleAnims_General:: .4byte General_WonderRoom @ B_ANIM_WONDER_ROOM .4byte General_MagicRoom @ B_ANIM_MAGIC_ROOM .4byte General_Tailwind @ B_ANIM_TAILLWIND + .4byte General_Fog @ B_ANIM_FOG_CONTINUES .align 2 gBattleAnims_Special:: @@ -17424,7 +17425,7 @@ Move_LAST_RESPECTS:: restorebg waitbgfadein end - + Move_TIDY_UP:: loadspritegfx ANIM_TAG_PINK_CLOUD monbg ANIM_ATTACKER @@ -17445,7 +17446,7 @@ Move_TIDY_UP:: clearmonbg ANIM_ATTACKER blendoff end - + Move_KOWTOW_CLEAVE:: loadspritegfx ANIM_TAG_SLASH loadspritegfx ANIM_TAG_CROSS_IMPACT @@ -17739,7 +17740,7 @@ Move_HYDRO_STEAM:: createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 3, 9, 0, RGB_RED waitforvisualfinish end - + Move_POUNCE:: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_TARGET @@ -27351,6 +27352,7 @@ Move_WEATHER_BALL: jumpreteq ANIM_WEATHER_SANDSTORM, WeatherBallSandstorm jumpreteq ANIM_WEATHER_HAIL, WeatherBallIce jumpreteq ANIM_WEATHER_SNOW, WeatherBallIce + jumpreteq ANIM_WEATHER_FOG, WeatherBallNormal WeatherBallNormal: loadspritegfx ANIM_TAG_IMPACT createsprite gWeatherBallNormalDownSpriteTemplate, ANIM_TARGET, 2, -30, -100, 25, 1, 0, 0 @@ -28097,6 +28099,9 @@ General_Hail: General_Snow: goto Move_SNOWSCAPE +General_Fog: + goto Move_HAZE + General_LeechSeedDrain: createvisualtask AnimTask_GetBattlersFromArg, 5 delay 0 diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index a23423b42e..e66f4c2a8e 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -521,7 +521,7 @@ BattleScript_AffectionBasedStatus_HealFreezeString: printstring STRINGID_ATTACKERMELTEDTHEICE goto BattleScript_AffectionBasedStatusHeal_Continue BattleScript_AffectionBasedStatus_HealFrostbiteString: - printstring STRINGID_ATTACKERHEALEDITSFROSTBITE + printstring STRINGID_ATTACKERMELTEDTHEICE BattleScript_AffectionBasedStatusHeal_Continue: waitmessage B_WAIT_TIME_LONG clearstatus BS_ATTACKER @@ -3804,6 +3804,8 @@ BattleScript_FirstChargingTurnAfterAttackString: BattleScript_TwoTurnMovesSecondPowerHerbActivates: call BattleScript_PowerHerbActivation + trygulpmissile @ Edge case for Cramorant ability Gulp Missile +BattleScript_FromTwoTurnMovesSecondTurnRet: call BattleScript_TwoTurnMovesSecondTurnRet accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE @ before Gen 5, charge moves did not print an attack string on the charge turn @@ -5949,6 +5951,23 @@ BattleScript_SunlightFaded:: call BattleScript_ActivateWeatherAbilities end2 +BattleScript_FogContinues:: + printstring STRINGID_FOGISDEEP + waitmessage B_WAIT_TIME_LONG + playanimation BS_ATTACKER, B_ANIM_FOG_CONTINUES + call BattleScript_ActivateWeatherAbilities + end2 + +BattleScript_FogEnded_Ret:: + printstring STRINGID_FOGLIFTED + waitmessage B_WAIT_TIME_LONG + call BattleScript_ActivateWeatherAbilities + return + +BattleScript_FogEnded:: + call BattleScript_FogEnded_Ret + end2 + BattleScript_OverworldStatusStarts:: printfromtable gStartingStatusStringIds waitmessage B_WAIT_TIME_LONG @@ -7006,6 +7025,10 @@ BattleScript_UltraBurst:: switchinabilities BS_ATTACKER end3 +BattleScript_GulpMissileFormChange:: + call BattleScript_AttackerFormChange + goto BattleScript_FromTwoTurnMovesSecondTurnRet + BattleScript_AttackerFormChange:: pause 5 copybyte gBattlerAbility, gBattlerAttacker @@ -7049,20 +7072,21 @@ BattleScript_CudChewActivates:: pause B_WAIT_TIME_SHORTEST call BattleScript_AbilityPopUp setbyte sBERRY_OVERRIDE, 1 @ override the requirements for eating berries - consumeberry BS_TARGET, FALSE - orword gHitMarker, HITMARKER_IGNORE_BIDE | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE - healthbarupdate BS_ATTACKER - datahpupdate BS_ATTACKER + consumeberry BS_SCRIPTING, FALSE setbyte sBERRY_OVERRIDE, 0 end3 BattleScript_TargetFormChangeNoPopup: flushtextbox - handleformchange BS_TARGET, 0 - handleformchange BS_TARGET, 1 + handleformchange BS_SCRIPTING, 0 + handleformchange BS_SCRIPTING, 1 playanimation BS_TARGET, B_ANIM_FORM_CHANGE waitanimation - handleformchange BS_TARGET, 2 + handleformchange BS_SCRIPTING, 2 +.if B_DISGUISE_HP_LOSS >= GEN_8 + healthbarupdate BS_SCRIPTING + datahpupdate BS_SCRIPTING +.endif return BattleScript_TargetFormChange:: @@ -7111,9 +7135,7 @@ BattleScript_IllusionOff:: BattleScript_CottonDownActivates:: copybyte sSAVED_BATTLER, gBattlerAttacker - showabilitypopup BS_TARGET - pause B_WAIT_TIME_LONG - destroyabilitypopup + call BattleScript_AbilityPopUpTarget copybyte gEffectBattler, gBattlerTarget swapattackerwithtarget setbyte gBattlerTarget, 0 @@ -7742,11 +7764,12 @@ BattleScript_ActivateWeatherAbilities_Increment: restoretarget return -BattleScript_TryAdrenalineOrb: - jumpifnoholdeffect BS_TARGET, HOLD_EFFECT_ADRENALINE_ORB, BattleScript_TryAdrenalineOrbRet - jumpifstat BS_TARGET, CMP_EQUAL, STAT_SPEED, 12, BattleScript_TryAdrenalineOrbRet +BattleScript_TryIntimidateHoldEffects: + itemstatchangeeffects BS_TARGET + jumpifnoholdeffect BS_TARGET, HOLD_EFFECT_ADRENALINE_ORB, BattleScript_TryIntimidateHoldEffectsRet + jumpifstat BS_TARGET, CMP_EQUAL, STAT_SPEED, 12, BattleScript_TryIntimidateHoldEffectsRet setstatchanger STAT_SPEED, 1, FALSE - statbuffchange STAT_CHANGE_NOT_PROTECT_AFFECTED | MOVE_EFFECT_CERTAIN | STAT_CHANGE_ALLOW_PTR, BattleScript_TryAdrenalineOrbRet + statbuffchange STAT_CHANGE_NOT_PROTECT_AFFECTED | MOVE_EFFECT_CERTAIN | STAT_CHANGE_ALLOW_PTR, BattleScript_TryIntimidateHoldEffectsRet playanimation BS_TARGET, B_ANIM_HELD_ITEM_EFFECT setgraphicalstatchangevalues playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 @@ -7755,14 +7778,16 @@ BattleScript_TryAdrenalineOrb: printstring STRINGID_USINGITEMSTATOFPKMNROSE waitmessage B_WAIT_TIME_LONG removeitem BS_TARGET -BattleScript_TryAdrenalineOrbRet: +BattleScript_TryIntimidateHoldEffectsRet: return BattleScript_IntimidateActivates:: - showabilitypopup BS_ATTACKER copybyte sSAVED_BATTLER, gBattlerTarget +.if B_ABILITY_POP_UP == TRUE + showabilitypopup BS_ATTACKER pause B_WAIT_TIME_LONG destroyabilitypopup +.endif setbyte gBattlerTarget, 0 BattleScript_IntimidateLoop: jumpifbyteequal gBattlerTarget, gBattlerAttacker, BattleScript_IntimidateLoopIncrement @@ -7781,7 +7806,7 @@ BattleScript_IntimidateEffect: BattleScript_IntimidateEffect_WaitString: waitmessage B_WAIT_TIME_LONG copybyte sBATTLER, gBattlerTarget - call BattleScript_TryAdrenalineOrb + call BattleScript_TryIntimidateHoldEffects BattleScript_IntimidateLoopIncrement: addbyte gBattlerTarget, 1 jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_IntimidateLoop @@ -7807,14 +7832,16 @@ BattleScript_IntimidateInReverse: call BattleScript_AbilityPopUpTarget pause B_WAIT_TIME_SHORT modifybattlerstatstage BS_TARGET, STAT_ATK, INCREASE, 1, BattleScript_IntimidateLoopIncrement, ANIM_ON - call BattleScript_TryAdrenalineOrb + call BattleScript_TryIntimidateHoldEffects goto BattleScript_IntimidateLoopIncrement BattleScript_SupersweetSyrupActivates:: - showabilitypopup BS_ATTACKER copybyte sSAVED_BATTLER, gBattlerTarget +.if B_ABILITY_POP_UP == TRUE + showabilitypopup BS_ATTACKER pause B_WAIT_TIME_LONG destroyabilitypopup +.endif printstring STRINGID_SUPERSWEETAROMAWAFTS waitmessage B_WAIT_TIME_LONG setbyte gBattlerTarget, 0 @@ -7834,7 +7861,7 @@ BattleScript_SupersweetSyrupEffect: BattleScript_SupersweetSyrupEffect_WaitString: waitmessage B_WAIT_TIME_LONG copybyte sBATTLER, gBattlerTarget - call BattleScript_TryAdrenalineOrb + call BattleScript_TryIntimidateHoldEffects BattleScript_SupersweetSyrupLoopIncrement: addbyte gBattlerTarget, 1 jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_SupersweetSyrupLoop @@ -8707,11 +8734,11 @@ BattleScript_BerryCureFrzRet:: removeitem BS_SCRIPTING return -BattleScript_BerryCureFsbEnd2:: +BattleScript_BerryCureFrbEnd2:: call BattleScript_BerryCureFrzRet end2 -BattleScript_BerryCureFsbRet:: +BattleScript_BerryCureFrbRet:: playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT printstring STRINGID_PKMNSITEMHEALEDFROSTBITE waitmessage B_WAIT_TIME_LONG @@ -9512,7 +9539,7 @@ BattleScript_WellBakedBodyActivates:: attackstring ppreduce pause B_WAIT_TIME_SHORT - showabilitypopup BS_TARGET + call BattleScript_AbilityPopUpTarget orhalfword gMoveResultFlags, MOVE_RESULT_NO_EFFECT modifybattlerstatstage BS_TARGET, STAT_DEF, INCREASE, 1, BattleScript_WellBakedBodyEnd, ANIM_ON BattleScript_WellBakedBodyEnd: @@ -9522,7 +9549,7 @@ BattleScript_WindRiderActivatesMoveEnd:: attackstring ppreduce pause B_WAIT_TIME_SHORT - showabilitypopup BS_TARGET + call BattleScript_AbilityPopUpTarget orhalfword gMoveResultFlags, MOVE_RESULT_NO_EFFECT modifybattlerstatstage BS_TARGET, STAT_ATK, INCREASE, 1, BattleScript_WindRiderActivatesMoveEnd_End, ANIM_ON BattleScript_WindRiderActivatesMoveEnd_End: @@ -9531,7 +9558,7 @@ BattleScript_WindRiderActivatesMoveEnd_End: BattleScript_GoodAsGoldActivates:: attackstring ppreduce - showabilitypopup BS_TARGET + call BattleScript_AbilityPopUpTarget pause B_WAIT_TIME_SHORT printstring STRINGID_ITDOESNTAFFECT waitmessage B_WAIT_TIME_MED @@ -9926,6 +9953,16 @@ BattleScript_BerserkGeneRet_End: removeitem BS_SCRIPTING end3 +BattleScript_BoosterEnergyEnd2:: + playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT, sB_ANIM_ARG1 + call BattleScript_AbilityPopUp + printstring STRINGID_BOOSTERENERGYACTIVATES + waitmessage B_WAIT_TIME_MED + printstring STRINGID_STATWASHEIGHTENED + waitmessage B_WAIT_TIME_MED + removeitem BS_SCRIPTING + end2 + BattleScript_EffectSnow:: attackcanceler attackstring diff --git a/data/event_scripts.s b/data/event_scripts.s index 403a7ba490..4893132981 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -579,6 +579,7 @@ gStdScripts_End:: .include "data/scripts/new_game.inc" .include "data/scripts/hall_of_fame.inc" + .include "data/scripts/config.inc" .include "data/scripts/debug.inc" EventScript_WhiteOut:: diff --git a/data/script_cmd_table.inc b/data/script_cmd_table.inc index bb0ae729e1..d1cc651d7a 100644 --- a/data/script_cmd_table.inc +++ b/data/script_cmd_table.inc @@ -205,8 +205,8 @@ gScriptCmdTable:: .4byte ScrCmd_nop1 @ 0xca .4byte ScrCmd_nop1 @ 0xcb .4byte ScrCmd_nop1 @ 0xcc - .4byte ScrCmd_setmonmodernfatefulencounter @ 0xcd - .4byte ScrCmd_checkmonmodernfatefulencounter @ 0xce + .4byte ScrCmd_setmodernfatefulencounter @ 0xcd + .4byte ScrCmd_checkmodernfatefulencounter @ 0xce .4byte ScrCmd_trywondercardscript @ 0xcf .4byte ScrCmd_nop1 @ 0xd0 .4byte ScrCmd_warpspinenter @ 0xd1 diff --git a/data/scripts/config.inc b/data/scripts/config.inc new file mode 100644 index 0000000000..dc80b1824a --- /dev/null +++ b/data/scripts/config.inc @@ -0,0 +1,12 @@ +Debug_FlagsAndVarNotSetBattleConfigMessage:: + lockall + message Debug_FlagsAndVarNotSetBattleConfigMessage_Text + waitmessage + waitbuttonpress + releaseall + end + +Debug_FlagsAndVarNotSetBattleConfigMessage_Text: + .string "Feature unavailable! Please define a\n" + .string "usable flag and a usable var in:\l" + .string "'include/config/battle.h'!$" diff --git a/data/scripts/debug.inc b/data/scripts/debug.inc index 3dcb7f7896..09ae1404c4 100644 --- a/data/scripts/debug.inc +++ b/data/scripts/debug.inc @@ -281,21 +281,6 @@ DebugText_BerryWeedsDisabled: .string "OW_BERRY_WEEDS is disabled.\n" .string "Unable to force weeds onto berry trees.$" -.endif - -Debug_FlagsAndVarNotSetBattleConfigMessage:: - lockall - message Debug_FlagsAndVarNotSetBattleConfigMessage_Text - waitmessage - waitbuttonpress - releaseall - end - -Debug_FlagsAndVarNotSetBattleConfigMessage_Text: - .string "Feature unavailable! Please define a\n" - .string "usable flag and a usable var in:\l" - .string "'include/config/battle.h'!$" - Debug_EventScript_InflictStatus1:: lockall getpartysize @@ -445,3 +430,5 @@ Debug_EventScript_InflictStatus1_Text_Freeze: Debug_EventScript_InflictStatus1_Text_Frostbite: .string "Frostbite$" + +.endif diff --git a/docs/changelogs/0.9.0.md b/docs/changelogs/0.9.0.md new file mode 100644 index 0000000000..565e97ead7 --- /dev/null +++ b/docs/changelogs/0.9.0.md @@ -0,0 +1,97 @@ +# Version 0.9.0 + +```md +## How to update +- If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`. +- Once you have your remote set up, run the command `git pull RHH expansion/0.9.0`. +``` + +## This version was labeled retroactively after our versioning scheme was decided, meaning the version number may be arbitrary. + +### ADDED +* Support for double wild battles with a single opponent by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2238 +* Gen 8 EXP Candies by @AgustinGDLV in https://github.com/rh-hideout/pokeemerald-expansion/pull/2142 +* Affection/friendship battle mechanics by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2173 +### CHANGED +* Moves with EFFECT_PLACEHOLDER can't be used anymore. by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2243 +* Modified HP display to support HP with 4 digits by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2256 +* Enable BUGFIX by default by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2258 +* Updated Fairy icon to better match the rest of them by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2269 + +### FIXES +* Gen5+ multihit odds. by @aarant in https://github.com/rh-hideout/pokeemerald-expansion/pull/2219 +* IsAbilityPreventingEscape message in party menu by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2125 +* ENDTURN_WISH not resetting gBattleStruct->turnSideTracker by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2236 +* Ability pop-up not displaying long abilities properly by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2234 +* Doubles 2 vs 1 interface by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2238 +* Fixed creation trio orbs not boosting power for non-base forms. by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2242 +* LoadSpecialPokePic now loads gender differences correctly by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2247 +* Fixed Net Ball Gen 7+ multiplier by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2259 +* Fix Escape Rope Message when on gen 8 mechanics by @ThirdLemon in https://github.com/rh-hideout/pokeemerald-expansion/pull/2263 + +### PRET MERGES +* Up to 578064d79966ebfcd0de8782f8b7294415fd6c87 by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2264 + +### CLEANUP +* Fix multiple pokemon icons & tidying pokemon graphic folders by @Blackforest92 in https://github.com/rh-hideout/pokeemerald-expansion/pull/2206 +* Get rid of garbage bytes in graphics.c by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2235 +* Fixed P_UPDATED_ABILITIES's comment by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2241 +* Fixed critical capture fields not using TRUE or FALSE by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2245 +* Reworked branch defines into single compatibility define by @gruxor in https://github.com/rh-hideout/pokeemerald-expansion/pull/2237 +* Removed unused local var in SetMonFormPSS by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2271 + +## New Contributors +* @ThirdLemon made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/2263 + +**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/0.8.0...expansion/0.9.0 + +### BREAKING +- Reworked TMHM into expandable list format by @gruxor in https://github.com/rh-hideout/pokeemerald-expansion/pull/2233 + - Tutor moves and TM/HM moves have been combined into a single list of ***Teachable Moves***. + - With this change, it allows users to have official data for compatibility if they add their own TMs/HMs and Tutors. +- Added Legends: Arceus species by @Blackforest92 in https://github.com/rh-hideout/pokeemerald-expansion/pull/2177 +- Fixed PokemonSubstruct3 alignment by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2265 + +### ADDED +- Added Legends: Arceus' move data by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2280 +- Inclusion of the TheXaman's Debug Menu by @TheXaman in https://github.com/rh-hideout/pokeemerald-expansion/pull/2277 +- Introduced FORM_BATTLE form changes by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2273 + - Form changes for Zacian, Zamazenta and Xerneas before a battle's intro. + - Optional parameter to check for held item. + - Introduced `param3` to facilitate this and merging of FORM_ITEM_USE. + +### CHANGED +- Merged FORM_ITEM_USE_TIME into FORM_ITEM_USE by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2304 +- Comatose prevents Battle Pike's status effects. by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2198 +- Updated Serene Grace checks in AI_CheckViability by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2218 + +### FIXES +- Fixed Quash's effect by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2239 +- Fixed pickup running when it shouldn't in some cases. by @StephenLynx in https://github.com/rh-hideout/pokeemerald-expansion/pull/2284 +- Dragon Tail Weak Armor fix by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2278 +- Fix Magic Bounce targets by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2260 +- Fixed ball multiplier fallthroughs by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2290 +- Weather forms fixes and config by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/2150 +- Fixed compile error when using `GEN_3` setting for sport moves by @Yak-Attack-1012 in https://github.com/rh-hideout/pokeemerald-expansion/pull/2295 + +### PRET MERGES +- Up to 578064d (2022-08-26) by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2286 + +### CLEANUP +- Updated README.md to reflect the new workflow by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2287 +- Updated README.md with credits and wiki links by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2299 +- Config refactor by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2297 + - Refactored uses of configs to be exclusivetly handled by preproc, as an optimization such that we don't have stuff like (is 3 > 4?) + - Moved Gen definitions to `include/config.h`, to be used by all config files. + - Created `GEN_LATEST` as a way to avoid conflicts with users that modify the default configs and have a way for them to easily set everything to their prefered generation. +- Tyding graphics + - Tidying Graphics/Battle_Anims by @Blackforest92 in https://github.com/rh-hideout/pokeemerald-expansion/pull/2289 + - Acupressure by @Blackforest92 in https://github.com/rh-hideout/pokeemerald-expansion/pull/2301 +- Small syntax fix for CanLearnTeachableMove by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2302 +- Added missing constant in GetBattleMonMoveSlot by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2294 + +## New Contributors +- @StephenLynx made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/2284 +- @Yak-Attack-1012 made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/2295 + +**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/0.9.0...expansion/1.0.0 \ No newline at end of file diff --git a/docs/changelogs/1.0.0.md b/docs/changelogs/1.0.0.md new file mode 100644 index 0000000000..90ec540205 --- /dev/null +++ b/docs/changelogs/1.0.0.md @@ -0,0 +1,58 @@ +# Version 1.0.0 + +```md +## How to update +- If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`. +- Once you have your remote set up, run the command `git pull RHH expansion/1.0.0`. +``` + +### BREAKING +- Reworked TMHM into expandable list format by @gruxor in https://github.com/rh-hideout/pokeemerald-expansion/pull/2233 + - Tutor moves and TM/HM moves have been combined into a single list of ***Teachable Moves***. + - With this change, it allows users to have official data for compatibility if they add their own TMs/HMs and Tutors. +- Added Legends: Arceus species by @Blackforest92 in https://github.com/rh-hideout/pokeemerald-expansion/pull/2177 +- Fixed PokemonSubstruct3 alignment by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2265 + +### ADDED +- Added Legends: Arceus' move data by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2280 +- Inclusion of the TheXaman's Debug Menu by @TheXaman in https://github.com/rh-hideout/pokeemerald-expansion/pull/2277 +- Introduced FORM_BATTLE form changes by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2273 + - Form changes for Zacian, Zamazenta and Xerneas before a battle's intro. + - Optional parameter to check for held item. + - Introduced `param3` to facilitate this and merging of FORM_ITEM_USE. + +### CHANGED +- Merged FORM_ITEM_USE_TIME into FORM_ITEM_USE by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2304 +- Comatose prevents Battle Pike's status effects. by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2198 +- Updated Serene Grace checks in AI_CheckViability by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2218 + +### FIXES +- Fixed Quash's effect by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2239 +- Fixed pickup running when it shouldn't in some cases. by @StephenLynx in https://github.com/rh-hideout/pokeemerald-expansion/pull/2284 +- Dragon Tail Weak Armor fix by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2278 +- Fix Magic Bounce targets by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2260 +- Fixed ball multiplier fallthroughs by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2290 +- Weather forms fixes and config by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/2150 +- Fixed compile error when using `GEN_3` setting for sport moves by @Yak-Attack-1012 in https://github.com/rh-hideout/pokeemerald-expansion/pull/2295 + +### PRET MERGES +- Up to 578064d (2022-08-26) by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2286 + +### CLEANUP +- Updated README.md to reflect the new workflow by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2287 +- Updated README.md with credits and wiki links by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2299 +- Config refactor by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2297 + - Refactored uses of configs to be exclusivetly handled by preproc, as an optimization such that we don't have stuff like (is 3 > 4?) + - Moved Gen definitions to `include/config.h`, to be used by all config files. + - Created `GEN_LATEST` as a way to avoid conflicts with users that modify the default configs and have a way for them to easily set everything to their prefered generation. +- Tyding graphics + - Tidying Graphics/Battle_Anims by @Blackforest92 in https://github.com/rh-hideout/pokeemerald-expansion/pull/2289 + - Acupressure by @Blackforest92 in https://github.com/rh-hideout/pokeemerald-expansion/pull/2301 +- Small syntax fix for CanLearnTeachableMove by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2302 +- Added missing constant in GetBattleMonMoveSlot by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2294 + +## New Contributors +- @StephenLynx made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/2284 +- @Yak-Attack-1012 made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/2295 + +**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/0.9.0...expansion/1.0.0 \ No newline at end of file diff --git a/docs/changelogs/1.1.0.md b/docs/changelogs/1.1.0.md new file mode 100644 index 0000000000..3ae9504b82 --- /dev/null +++ b/docs/changelogs/1.1.0.md @@ -0,0 +1,39 @@ +# Version 1.1.0 + +```md +## How to update +- If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`. +- Once you have your remote set up, run the command `git pull RHH expansion/1.1.0`. +``` + +### Added +* Option to change the weather from the Overworld Debug Menu by @TheXaman in https://github.com/rh-hideout/pokeemerald-expansion/pull/2315 +* Corner case logic for AI Switching. by @Porygon23 in https://github.com/rh-hideout/pokeemerald-expansion/pull/2226 +* Exp Candies now show the amount of experience gained by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2282 +* Config to limit the moves called by Metronome (by generation) by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2327 + +### Changed +* Changed Lure prices to the same standards as the default Repels by @Jaizu in https://github.com/rh-hideout/pokeemerald-expansion/pull/2309 +* Debug menu: + * The changeable flags now start at 1 (0 isnt a flag) by @TheXaman in https://github.com/rh-hideout/pokeemerald-expansion/pull/2315 + * Object events now get frozen while the menu is open to avoid potential nasty effects by @TheXaman in https://github.com/rh-hideout/pokeemerald-expansion/pull/2315 + * Automated creation of MAP_GROUP_COUNT for the debug menu by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2307 + * Generating music names for the debug menu based on their labels by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2306 + +### Fixed +* Ability pop ups not appearing at all by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2314 +* Dauntless Shield's and Intrepid Sword's effects only triggering for mon on the left in double battle, even if the mon with the abilities are on the right by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2313 +* Flickering when switching menus in the Overworld Debug Menu @Jaizu in https://github.com/rh-hideout/pokeemerald-expansion/pull/2315 +* Missing uses of Fairy type for Union Room and Battle Factory by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2310 +* Tutors changing the level of the taught Pokémon to the level that the last mon that used a Exp Candy reached by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2282 +* Exp candies giving the wrong amount of experience by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2282 +* Exp Candy XL breaking experience points by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2282 +* Ai check for switching when the target is semi invulnerable by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2324 + +### Pret merges +* Up to (c1dfd3c9eca7d9dd73ac7dbaff0444d965758f4c) by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2308 + +### Cleanup +* Tidying graphics - Super Ancient Pokémon special weather by @Blackforest92 in https://github.com/rh-hideout/pokeemerald-expansion/pull/2303 + +**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.0.0...expansion/1.1.0 \ No newline at end of file diff --git a/docs/changelogs/1.1.1.md b/docs/changelogs/1.1.1.md new file mode 100644 index 0000000000..8efb1bd4cd --- /dev/null +++ b/docs/changelogs/1.1.1.md @@ -0,0 +1,13 @@ +# Version 1.1.1 + +```md +## How to update +- If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`. +- Once you have your remote set up, run the command `git pull RHH expansion/1.1.1`. +``` + +## What's Changed +* Fixed battles breaking when ACE_POKEMON_FUNCTIONALITY was not set by @Porygon23 in https://github.com/rh-hideout/pokeemerald-expansion/pull/2334 + + +**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.1.0...expansion/1.1.1 \ No newline at end of file diff --git a/docs/changelogs/1.2.0.md b/docs/changelogs/1.2.0.md new file mode 100644 index 0000000000..5060471119 --- /dev/null +++ b/docs/changelogs/1.2.0.md @@ -0,0 +1,86 @@ +# Version 1.2.0 + +```md +## How to update +- If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`. +- Once you have your remote set up, run the command `git pull RHH expansion/1.2.0`. +``` + +### Added +* AI remembers Party mons - by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2230 + * Takes in consideration overwritten abilities - by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2355 +* ABILITY_SYMBIOSIS - by @AgustinGDLV in https://github.com/rh-hideout/pokeemerald-expansion/pull/2117 +* Teleport's modern in-battle effect, with config - by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2121 +* "Access PC" option in debug menu now gives full access to both Item and Pokémon Storage - by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2356 +* Battle Arena's move Mind ratings now expands to all moves - by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2339 and https://github.com/rh-hideout/pokeemerald-expansion/pull/2365 +* 4 new species flags - by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2293 + * `SPECIES_FLAG_ALL_PERFECT_IVS` + * `SPECIES_FLAG_SHINY_LOCKED` + * `SPECIES_FLAG_CANNOT_BE_TRADED` + * `SPECIES_FLAG_MEGA_EVOLUTION` +* Config for Battle text pause times - by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2380 + +### Changed +* Updated move types now have their own separate config from `B_UPDATED_MOVE_DATA` - by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2361 +* Mew now has special handling for it's Teachable moveset by @AsparagusEduardo (it learns all moves minus certain exceptions) - in https://github.com/rh-hideout/pokeemerald-expansion/pull/2367 +* Changed ballMultiplier to account for future Hisuian ball multipliers - by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2376 +* `P_NEW_POKEMON` is now split by Generation - by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2283 + * `HasAllMons` now accounts for all mon except mythicals. + +### Fixed +* Natural Cure, Shed Skin and Early Bird check in ShouldSwitchIfGameStatePrompt - by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2336 +* Multi-fixed-wild partner not calculating damage - by @StubbornOne in https://github.com/rh-hideout/pokeemerald-expansion/pull/2343 +* Z-Power Ring check - by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2349 +* Crash during Light That Burns The Sky's animation - by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2350 +* Z-Moves not showing the correct type in battle if it's different from the base move's type - by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2353 +* Returning to the overworld after using the "Access PC" option in the debug menu makes option descriptions remain open - by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2356 +* Pokémon Debug isn't loading female icon palettes correctly - by @TheXaman in https://github.com/rh-hideout/pokeemerald-expansion/pull/2360 +* Multi battle interface displays incorrectly - by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2335 +* Multi battle party menu displays incorrectly - by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2335 +* AI doesn't track abilites when Traced - by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2364 +* Berserk doesn't activate if the mon falls to exactly half HP - by @StephenLynx in https://github.com/rh-hideout/pokeemerald-expansion/pull/2370 +* Triple Kick and Triple Axel doing too much damage - by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/2141 +* Mega Evolved Pokémon are able to get Friendship effects in battle - by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2262 + +### Cleanup +* Fixed typo in BoxMonKnowsMove - by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2338 +* Renamed mislabeled labels in src/debug.c - by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2337 and https://github.com/rh-hideout/pokeemerald-expansion/pull/2340 +* Removed references to `ITEM_EXPANSION` after #2177 - by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2293 + +### Pret merges +* Up to 1ae5010233a07bbd4fbe80a340019e04215afb71 - by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2359 +* Up to bb2e64b3fc20f713356fb68326175871c8996331 - by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2379 + +**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.1.1...expansion/1.2.0 + +### Added +* Option to change the weather from the Overworld Debug Menu by @TheXaman in https://github.com/rh-hideout/pokeemerald-expansion/pull/2315 +* Corner case logic for AI Switching. by @Porygon23 in https://github.com/rh-hideout/pokeemerald-expansion/pull/2226 +* Exp Candies now show the amount of experience gained by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2282 +* Config to limit the moves called by Metronome (by generation) by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2327 + +### Changed +* Changed Lure prices to the same standards as the default Repels by @Jaizu in https://github.com/rh-hideout/pokeemerald-expansion/pull/2309 +* Debug menu: + * The changeable flags now start at 1 (0 isnt a flag) by @TheXaman in https://github.com/rh-hideout/pokeemerald-expansion/pull/2315 + * Object events now get frozen while the menu is open to avoid potential nasty effects by @TheXaman in https://github.com/rh-hideout/pokeemerald-expansion/pull/2315 + * Automated creation of MAP_GROUP_COUNT for the debug menu by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2307 + * Generating music names for the debug menu based on their labels by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2306 + +### Fixed +* Ability pop ups not appearing at all by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2314 +* Dauntless Shield's and Intrepid Sword's effects only triggering for mon on the left in double battle, even if the mon with the abilities are on the right by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2313 +* Flickering when switching menus in the Overworld Debug Menu @Jaizu in https://github.com/rh-hideout/pokeemerald-expansion/pull/2315 +* Missing uses of Fairy type for Union Room and Battle Factory by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2310 +* Tutors changing the level of the taught Pokémon to the level that the last mon that used a Exp Candy reached by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2282 +* Exp candies giving the wrong amount of experience by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2282 +* Exp Candy XL breaking experience points by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2282 +* Ai check for switching when the target is semi invulnerable by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2324 + +### Pret merges +* Up to (c1dfd3c9eca7d9dd73ac7dbaff0444d965758f4c) by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2308 + +### Cleanup +* Tidying graphics - Super Ancient Pokémon special weather by @Blackforest92 in https://github.com/rh-hideout/pokeemerald-expansion/pull/2303 + +**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.1.0...expansion/1.2.0 \ No newline at end of file diff --git a/docs/changelogs/1.3.0.md b/docs/changelogs/1.3.0.md new file mode 100644 index 0000000000..7d14ab89d2 --- /dev/null +++ b/docs/changelogs/1.3.0.md @@ -0,0 +1,53 @@ +# Version 1.3.0 + +```md +## How to update +- If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`. +- Once you have your remote set up, run the command `git pull RHH expansion/1.3.0`. +``` + +### Added +* Added class-based Poké Balls for trainers by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2385 +* Config for running indoors by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2388 +* Implemented Lures and Repel/Lure "use another" menu by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2319 +* Implemented Honey's Sweet Scent functionality by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2391 +* Implemented Parental Bond by @BuffelSaft in https://github.com/rh-hideout/pokeemerald-expansion/pull/1676 +* Implemented Beat Up Gen 5+ effect with config. by @BuffelSaft in https://github.com/rh-hideout/pokeemerald-expansion/pull/1676 +* Config for Dark Void being only usable by Darkrai by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2428 + +### Changed +* Improved Psycho Cut animation by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2390 +* Multi-hit logic refactor. by @BuffelSaft in https://github.com/rh-hideout/pokeemerald-expansion/pull/1676 +* Ported Gen 5 & 6 mon animations from Inclement Emerald + added most missing Gen 7 form animations by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/1927 +* Restored GF Header. by @tustin2121 in https://github.com/rh-hideout/pokeemerald-expansion/pull/2426 + +### Fixed +* Bug where badge boosts apply in all gens except gen 3. by @May8th1995 in https://github.com/rh-hideout/pokeemerald-expansion/pull/2383 +* AI issue giving decrementing score to confuse hit instead of confuse by @May8th1995 in https://github.com/rh-hideout/pokeemerald-expansion/pull/2384 +* Z-Move not being cleared if Pokémon faints by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2389 +* Integrated VBlank wait loop fix by @gruxor in https://github.com/rh-hideout/pokeemerald-expansion/pull/2392 +* Fling only working with items with Fling Power equal to 0. by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2408 +* Softlock when teaching a TM/HM after learning a move by level up. by @kaisermg5 in https://github.com/rh-hideout/pokeemerald-expansion/pull/2413 +* Battle Palace AI bug that caused multiple issues. by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2416 +* Abilities that raise target's stat after hit showing the wrong message. by @BuffelSaft in https://github.com/rh-hideout/pokeemerald-expansion/pull/2427 +* Fixed Bad Dream's ability popup message by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2430 +* Opponent's Teleport ending Trainer Battle if it only has one Pokémon. by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2420 +* Fixed Bug Bite deleting the user's item. by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2433, with cleanup by @eatthepear in https://github.com/rh-hideout/pokeemerald-expansion/pull/2451 + +### Pret merges +* Support for Porymap 5.0.0 (up to 9e24fe6ec8f23d042ba2b0fb2dd687ab82989c44 2022-11-08) by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2422 + +### Cleanup +* Uncommented evolution moves for each species by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2386 +* Uncommented Hisuian Pokémon level up moves by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2449 +* Removed worthless DEBUG_FLAG_PC_FROM_DEBUG_MENU config by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2423 +* Actually removed ItemId_GetId by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2424 +* Optimized Bad Dreams' code by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2434 + +## New Contributors +* @May8th1995 made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/2383 +* @kaisermg5 made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/2413 +* @tustin2121 made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/2426 +* @eatthepear made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/2451 + +**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.2.0...expansion/1.3.0 \ No newline at end of file diff --git a/docs/changelogs/1.4.0.md b/docs/changelogs/1.4.0.md new file mode 100644 index 0000000000..da4b83c886 --- /dev/null +++ b/docs/changelogs/1.4.0.md @@ -0,0 +1,205 @@ +# Version 1.4.0 + +```md +## How to update +- If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`. +- Once you have your remote set up, run the command `git pull RHH expansion/1.4.0`. +``` + +### Added +#### General +* Battle Auto-Tests by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/2564 + * Details of how they work and how to build them in `test\test_battle.h`. + * Add some tests for gen1-3 abilities by @SBird1337 in https://github.com/rh-hideout/pokeemerald-expansion/pull/2626 +* Implemented Xhyzi's RHH copyright intro by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2415 + * There's a config to disable it, but we encourage keeping it :) + * Fixes by @SBird1337 and @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2665, https://github.com/rh-hideout/pokeemerald-expansion/pull/2687 and https://github.com/rh-hideout/pokeemerald-expansion/pull/2684 +* Config to restore Gen 3's damage reduction to multi target moves by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2542 +* Config to disable incense baby mechanic as of Gen 9 by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2531 +* Config for PLA+ obedience mechanics by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/2569 +* Config for ball inheritence when breeding by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2566 +* Config to have Shuckle make Berry Juice from Oran Berries by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2331 +* Support for dynamic number of targets in move animations by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2649 +#### Moves +* Generation IX Moves + * Base move data by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/2467 + * New moves with existing effects: + * Lumina Crash, Jet Punch, Ice Spinner, Triple Dive, Kowtow Cleave, Flower Trick, Torch Song, Aqua Step, Ruination, Pounce, Trailblaze, Chilling Water, Hyper Drill, Twin Beam, Armor Cannon, Bitter Blade, Comeuppance, Aqua Cutter, Blazing Torque, Noxious Torque, Combat Torque, Magical Torque + * New move effects: + * Wicked Torque (`EFFECT_SLEEP_HIT`) + * Double Shock (`EFFECT_DOUBLE_SHOCK`) + * Silk Trap (uses `EFFECT_PROTECT` but the condition to check the move in specific) by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2512 and https://github.com/rh-hideout/pokeemerald-expansion/pull/2610 + * Missing move effects: + * Tera Blast, Axe Kick, Last Respects, Order Up, Spicy Extract, Spin Out, Population Bomb, Glaive Rush, Revival Blessing, Salt Cure, Mortal Spin, Doodle, Fillet Away, Raging Bull, Make It Rain, Collision Course, Electro Drift, Shed Tail, Chilly Reception, Tidy Up, Snowscape, Rage Fist, Gigaton Hammer +* Updated Gen 1-8 move effects to Gen 9 standards: by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/2467 + * LA moves with existing effects + * Psyshield Bash, Raging Fury, Wave Crash, Chloroblast, Mountain Gale, Headlong Rush, Esper Wing, Shelter, Bitter Malice, Power Shift, Springtide Storm, Bleakwind Storm, Wildbolt Storm, Sandsear Storm + * LA moves with new move effects + * Mystical Power (`EFFECT_SPECIAL_ATTACK_UP_HIT`) + * Victory Dance (`EFFECT_VICTORY_DANCE`) + * PP adjustments. + * (5 -> 10) Bleakwind Storm, Wildbolt Storm, Sandsear Storm + * (10 -> 5) Recover, Soft-Boiled, Rest, Milk Drink, Slack Off, Roost, Shore Up + * Power adjustments + * (50 -> 90) Triple Arrows + * (90 -> 120) Raging Fury + * (120 -> 150) Wave Crash + * (60 -> 80) Dire Claw + * (100 -> 120) Headlong Rush + * (60 -> 75) Bitter Malice + * (75 -> 80) Esper Wing + * (95 -> 100) Springtide Storm, Bleakwind Storm, Wildbolt Storm, Sandsear Storm + * (80 -> 75) Wicked Blow + * (70 -> 60) Grassy Glide + * (130 -> 120) Glacial Lance +* Implementing Teatime effect by @SonikkuA-DatH in https://github.com/rh-hideout/pokeemerald-expansion/pull/1956 +* Config for Gen 4's Roost pure-Flying behavior (`B_ROOST_PURE_FLYING`) by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/2530 +* Config for Gen 8 Howl's effect by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2700 + * AI check by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2703 +#### Abilities +* Generation IX Abilities + * 28 of 31 abilities implemented by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2470 + * Lingering Aroma, Seed Sower, Thermal Exchange, Anger Shell, Purifying Salt, Well-Baked Body, Wind Rider, Rocky Payload, Wind Power, Electromorphosis, Protosynthesis, Quark Drive, Good as Gold, Vessel of Ruin, Sword of Ruin, Tablets of Ruin, Beads of Ruin, Orichalcum Pulse, Hadron Engine, Cud Chew, Sharpness, Supreme Overlord, Costar, Toxic Debris, Armor Tail, Earth Eater, Guard Dog and Mycelium Might + * Not implemented yet: + * Commander + * Opportunist + * Zero to Hero +* Implemented Ice Face by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2255 +#### Items +* Generation IX Item Effects by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2471 + * Ability Shield, Clear Amulet, Punching Glove, Covert Cloak and Loaded Dice + * Gen 9 item data except icons by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2595 +* Added Destiny Knot's breeding functionality by @Jaizu in https://github.com/rh-hideout/pokeemerald-expansion/pull/2616 +* Allow Lv100 Pokémon to access level based evos via Rare Candy by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2460 + +### Changed +#### Graphical changes +* Remove usage of Sugimori Palettes for Pokémon sprites by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2318 + * ***NOTICE***: These will be tweaked over time, due to the PR not utilizing official palettes. Generation 1 Pokémon have already been fixed by @Jaizu in https://github.com/rh-hideout/pokeemerald-expansion/pull/2593 +#### Refactors +* Readable BattleScript command arguments by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/2529 +* Add callnative battle script functions, as a way to convert the various macro to proper commands by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2464 + * Converted Metal Burst damage calculation command by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2464 +* Removed `SPECIES_FLAG_SHINY_LOCKED` in favor of actual flags to control when to generate Shiny/Non-Shiny mon (`P_FLAG_FORCE_SHINY` and `P_FLAG_FORCE_NO_SHINY`) by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2453 +* Optimized Intimidate's code by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2452 +* Cleaned redundant `ENDTURN_PLASMA_FISTS` loop by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2520 +* Refactor sInverseTypeEffectivenessTable to implicit lookup by @SBird1337 in https://github.com/rh-hideout/pokeemerald-expansion/pull/2528 +* Reshape sBattlePointAwards to be easier to read by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2551 +* Adjusted AnimTask_PrimalReversion layout by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2446 +* Rolled `EFFECT_SCALD` into `EFFECT_BURN_HIT` with a config for its Gen6+ change by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2326 +* Refactored incense baby checks into table by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2531 +* Red Card and Eject Button effects check for `EFFECT_HIT_SWITCH_TARGET` instead of Dragon Tail and Circle Throw specifically by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2439 +#### Cleanup +* Moved config files to their own folder (`include/constants/x_config.h → include/config/x.h`) by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2453 +* Fixed reference in INSTALL.md to pret's repo instead of the expansion's by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2468 +* Reorganized SpecialStatus struct to minimize padding. by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2511 +* Using decimal numbers for constants/battle.h by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2513 +* Updated SIDE constant usages by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2518 +* Removed repeated stat change defines by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2524 +* Cleanup HandleTerrainMove by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/2527 +* Removed unread third `roostTypes` element by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/2530 +* Renamed `CheckFocusPunch_ClearVarsBeforeTurnStarts` to `CheckChosenMoveForEffectsBeforeTurnStarts` because that function doesn't just check for Focus Punch anymore, and it doesn't clear any variables either. by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2544 +* Removed pointless timers from disable struct by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2647 +* Fixed `SpeciesInfo`(`BaseStats`) struct offset labels by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2666 +#### Other +* Overworld Debug Menu now sets `FLAG_SYS_POKEMON_GET` giving yourself a Pokémon by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/2475 +* Allow exiting the Battle Debug menu pressing B by @Jaizu in https://github.com/rh-hideout/pokeemerald-expansion/pull/2598 + +### Fixed +#### Softlocks +* Fix Beat Up's battle script to avoid an out-of-bounds array access by @sphericalice in https://github.com/rh-hideout/pokeemerald-expansion/pull/2541 + +#### Graphics +* Fix Bastiodon's second icon frame by @cynderquil in https://github.com/rh-hideout/pokeemerald-expansion/pull/1589 +* Fixed Eggs sometimes reading garbage graphic data by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2539 +* Fix Transform's interaction with gender differences by @Jaizu in https://github.com/rh-hideout/pokeemerald-expansion/pull/2618 +* Fix buggy Pokémon animations with Illusion by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2639 +* Fixed potential graphical issues when calling `BattleScript_TrainerSlideMsgRet` by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2466 +* Fixed ability popup not showing all characters of Pokémon with full names by @Jaizu in https://github.com/rh-hideout/pokeemerald-expansion/pull/2586 +#### Battle Mechanics +* General + * Fixed potential error in `TryChangeBattleTerrain` by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2469 + * Fixed Ball throw handling in double wild battles by @walkingeyerobot in https://github.com/rh-hideout/pokeemerald-expansion/pull/2587 + * Fixed 1v2 battles with eggs by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2658 +* Z-Moves + * Fixed Z-Moves being usable if the base move was out of PP by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2418 + * Fixed switching Z-Moves when pressing SELECT in battle by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/2677 + * Z-Move Indicator was wrongly displayed in double battles by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/2678 + * Fixed UI PP colors for Z moves by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/2690 +* Move effects + * Fixed Speed Swap's effect by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2517 + * Fixed Shell Trap being affected by Encore by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2544 + * Fixed potential bug for moves that use `MOVE_EFFECT_FEINT` by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2516 + * Fixed Beak Blast potentially not assigning its state to the proper battler by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2544 + * Fixed Psycho Shift not buffering the string index for its printfromtable call by @TeamAquasHideout in https://github.com/rh-hideout/pokeemerald-expansion/pull/2588 + * Fixed Flame Burst hitting semi-invulnerable partner by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2601 + * Fixed Wood Hammer doing 1/4th recoil damage instead of 1/3rd by @TeamAquasHideout in https://github.com/rh-hideout/pokeemerald-expansion/pull/2603 + * Fixed U-turn not switching out the user if the target's Emergendy Exit activates by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/2605 + * Fixed Encore not failing if the target hasn't moved yet in that turn by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/2605 + * Fixed Fling's berry check working backwards by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/2607 + * Fixed Jaw Lock's effect not leaving upon the user being KO'd by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2681 + * Fixed Round's power calculation only taking the partner into account by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2602 + * Fixed subsequent Round users not executing their move directly after the first user by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2602 + * Fixed Follow Me working in singles by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2644 + * Fixed Clanging Scales target and effect by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2691 + * Fixed After You's effect being overritten by Gen 8+'s move action recalculation by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2646 + * Fixes Heal Block only targeting a single battler by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2649 + * Fixed Venom Drench not taking target positions into account by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2649 +* Ability effects + * Ability Pop-ups + * Fixed Insomnia not having an ability pop-up by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2643 + * Fixed Shields Down Ability pop-up by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2692 + * Fixed Pokémon with Clear Body-like abilities being immune to self-inflicted stat reductions (ie. Superpower, Shell Smash) by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2548 + * Fixed Mimicry's implementation by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2473 + * Fixed Intimidate activating after Explosion when it shouldn't by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2579 + * Fixed Poison Point activating only if the Pokémon with Poison Point could be poisoned by the attacker by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/2605 + * Fixed Pastel Veil not granting Poison immunity @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/2605 + * Fix Volt Absorb not activating with Thunder Wave by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2635 + * Fixed Damp not showing ability pop-up when reacting with Aftermath by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2645 + * Fixed Mirror Armor's effect against Clear Body by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2680 + * Fixed Battle Bond activating multiple times in battle by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2689 + * Fixed Grass-typed Pokémon being affected by powder moves reflected by Magic Bounce by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2633 +* Item effects + * Fixed a `HOLD_EFFECT_ZOOM_LENS` check that caused every move's attack to be increased by the hold effect parameter by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2557 + * Fixed Flame Orb/Toxic Orb/Sticky Barb triggering when the holder is fainted by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2585 +#### Move Animations +* Fixed Poison Gas animation for `MOVE_TARGET_BOTH` by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2608 +* Fixed Strange Steam's animation by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/2642 +* Fix Spacial Rend animation by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2671 +* Fixed Fiery Wrath's animation by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2649 +* Fixed Electroweb's animation by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2649 +#### Battle AI +* Fix Helping Hand AI by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2533 +* Rewritten AI entry hazard checks to fix multiple issues by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/2106 + * Fixed Stealth Rock's AI check ignoring type effectiveness. + * Fixed Stealth Rock's AI check assuming that Levitate bypasses it. + * Fixed spike AI check that Stealth Rock may overlap. + * Fixed spike AI check ignoring the amount of spikes some spike immunities. + * Fixed AI not accounting for Stealth Rock and Spikes overlapping. +* Fixed missic AI logic for Heal Pulse effects in double battles by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/2662 +* Fixes Pollen Puff AI issue #2611 by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/2648 +#### Other +* Fixed cry table alignment that caused species from `SPECIES_KYUREM_WHITE` onward to play the wrong cries by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2462 +* Fixed right Frontier move tutor not loading their move list correctly. by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2525 +* Fixed reusable repels/lures function forcefully using items while menu config is on by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2561 +* Fixed Exp Candy S using the XS description by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2572 +* Fixed `B_DOUBLE_WILD_CHANCE` becoming 1% less than what's set by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2526 + + +### Pret merges +* Gen 9 when? (Pret sync 2022/11/24) by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2456 +* I'll make your face the greatest in Hoenn! Or else you will DIE. (Pret merge 2022/12/16) by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2519 +* For me, it was tuesday. (pret merge 2023/01/03) by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2559 +* | || || |_ (pret merge 2023/01/20) by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2583 +* I like shorts, they're comfy and easy to wear! (pret merge 2023/01/25) by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2597 +* It's ya boi, pret merge! (pret merge 2023/02/16) by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2697 + +## New Contributors +* @cynderquil made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/1589 +* @Bassoonian made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/2467 +* @mrgriffin made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/2527 +* @TeamAquasHideout made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/2588 +* @walkingeyerobot made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/2587 +* @AlexOn1ine made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/2642 + +**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.3.0...expansion/1.4.0 \ No newline at end of file diff --git a/docs/changelogs/1.4.1.md b/docs/changelogs/1.4.1.md new file mode 100644 index 0000000000..470096756a --- /dev/null +++ b/docs/changelogs/1.4.1.md @@ -0,0 +1,12 @@ +# Version 1.4.1 + +```md +## How to update +- If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`. +- Once you have your remote set up, run the command `git pull RHH expansion/1.4.1`. +``` + +### CRITICAL FIX, please update to avoid the issues detailed down below: +- Fixed electricity move animations causing softlocks with weird graphical results by @DizzyEggg in #2785 + +**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.4.0...expansion/1.4.1 \ No newline at end of file diff --git a/docs/changelogs/1.4.2.md b/docs/changelogs/1.4.2.md new file mode 100644 index 0000000000..0f8cafcff4 --- /dev/null +++ b/docs/changelogs/1.4.2.md @@ -0,0 +1,29 @@ +# Version 1.4.2 + +```md +## How to update +- If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`. +- Once you have your remote set up, run the command `git pull RHH expansion/1.4.2`. +``` + +### Fixed +#### General +* Fixed overworld_config.h reference in the overworld debug by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/2811 +#### Battle Mechanics +* General + * Fixed long z-move names not showing properly on the battle textbox by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2789 +* Move effects + * Fixes certain moves preventing Z status moves. by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/2791 + * Fixed Wring Out's power by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2824 +* Ability effects + * Fixed wrong Contrary message when affected by Intimidate by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2723 +#### Battle AI +* Fixed uninitialized modifier variable in AI calc damage by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2731 +* Fixed AI mon getting lower score when it is faster by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/2740 +* Fixed status moves being considered for type effectiveness calculations by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/2743 +* Fixed AI not considering Nature Power in AI_CalcDamage by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/2776 +* Fixed Electrify check, as it workss on all move types, not just Normal by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/2817 +* Fixed score for Work up and Growth by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/2813 +* Fixed speed check on Electrify by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/2819 + +**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.4.1...expansion/1.4.2 \ No newline at end of file diff --git a/docs/changelogs/1.4.3.md b/docs/changelogs/1.4.3.md new file mode 100644 index 0000000000..4d4f252661 --- /dev/null +++ b/docs/changelogs/1.4.3.md @@ -0,0 +1,27 @@ +# Version 1.4.3 + +```md +## How to update +- If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`. +- Once you have your remote set up, run the command `git pull RHH expansion/1.4.3`. +``` + +### Changed +#### Cleanup +* Fixed instances of gSideTimers not using side constants by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2867 + +### Fixed +#### General +* Fixed the Overworld debug menu not giving using the appropiate max item quantities by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2807 +* Fixed the Overworld debug menu map number display not correctly showing 3 digits by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2807 +* Fixed Budew's evolution method by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/2928 +#### Battle Mechanics +* General + * Fixed CanBeConfused not properly checking the battlerId passed into it by @AgustinGDLV in https://github.com/rh-hideout/pokeemerald-expansion/pull/2855 +* Move effects + * Fixed Knocked-Off Choice items resetting the choiced move despite the holder having Gorilla Tactics by @CallmeEchoo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2854 + * Fixes Ominous Wind targeting by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/2896 +* Item effects + * Fixed erroneous uses of non e-reader Enigma Berries by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2839 + +**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.4.2...expansion/1.4.3 \ No newline at end of file diff --git a/docs/changelogs/1.5.0.md b/docs/changelogs/1.5.0.md new file mode 100644 index 0000000000..13d451e699 --- /dev/null +++ b/docs/changelogs/1.5.0.md @@ -0,0 +1,269 @@ +# Version 1.5.0 + +```md +## How to update +- If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`. +- Once you have your remote set up, run the command `git pull RHH expansion/1.5.0`. +``` + +### Added +#### General +* Mega Evolution and Primal Reversion now play the Pokémon's cry in its animation by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2805 +* Added Meltan and Melmetal teachable moves by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2732 +* Added option to clear PC boxes in Debug menu @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2814 +* Added missing Hisuian sprites and cries by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/2725 and https://github.com/rh-hideout/pokeemerald-expansion/pull/2829 +* Implement Customizable NPC Trainer Parties by @SBird1337 in https://github.com/rh-hideout/pokeemerald-expansion/pull/2733. + * Further fixes by + * @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/2862 and https://github.com/rh-hideout/pokeemerald-expansion/pull/2889 + * @Jaizu in https://github.com/rh-hideout/pokeemerald-expansion/pull/2890 + * Nickname, EVs, IVs, moves, species, held item, ability, level, ball, friendship, nature, gender and shininess can all be customized. + * ***IMPORTANT***: In a future version, we'll remove vanilla Trainer structs, so make sure to port your custom trainers to this system before then. +* Overworld Poison configs by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/2884 + * Gen 3: Health gets depleted every couple of steps and can faint from it. + * Gen 4: Health gets depleted every couple of steps, but once it reaches 1 HP it disappears. + * Gen 5+: Health does not get depleted at all. +* Reusable TMs by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/2903 and https://github.com/rh-hideout/pokeemerald-expansion/pull/2930 + * TMs are automatically counted as reusable when their importance is set to 1. + * Added config to toggle vanilla TMs' importance to 1. + * Shops will only allow to buy a reusable TM if the player doesn't already have one. +* Added config for setting the max amount of EVs to Gen6+'s (252) by @citrusbolt in https://github.com/rh-hideout/pokeemerald-expansion/pull/2825 +* Added config for Gen 4's berry EV-stat lowering behavior by @citrusbolt in https://github.com/rh-hideout/pokeemerald-expansion/pull/2825 +* Added new conditions for the trainer slide-in system by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2713 +* Added config for Gen 4's transformed Pokémon using the opponent's palette instead of its own by @Ultimate-Bob in https://github.com/rh-hideout/pokeemerald-expansion/pull/2852 +* Breeding features by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/2963 + * Father TM Move inheritance (with config). + * Mother Egg Move inheritance (with config). + * Nature inheritance using an Everstone (with config). + * Ability inheritance (with config). + * Parent Egg Move transfer (with config). + * Power Item IV inheritance. +* Added Ability Patch's Gen 9 functionality by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/2989 +* Added Gen 4-6 Pokemon back animations by @SonikkuA-DatH in https://github.com/rh-hideout/pokeemerald-expansion/pull/2954 +#### Battle General +* Support for multi battles where Trainer has only one mon by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2670 +* Added `B_RESTORE_HELD_BATTLE_ITEMS` that restore non-berry single-use items after a battle by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/2932 +* Added Frostbite status by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/2942, with fix by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3019 +* Added Snow Battle Weather by @CallmeEchoo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2970 +* Added `B_DOUBLE_WILD_REQUIRE_2_MONS` config. + * Allows to trigger a double wild battle when only having a single Pokémon alive by @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/2878 +#### Move Effects +* Added Healing Wish's Gen 5+/8+ mechanics with config by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2708 +* Added Swallow/Spit Up's Gen 5+ mechanics with config by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2790 +* Added Shell Trap's effect by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2716 +* Added several Gen 9 Move effects: + * By @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2834 + * Psyblade + * Hydro Steam + * By @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2534 + * Stone Axe, with fix by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/2969 + * Ceaseless Edge, with fix by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/2969 + * Dire Claw + * Barb Barrage + * By @AgustinGDLV in https://github.com/rh-hideout/pokeemerald-expansion/pull/2883 + * Revival Blessing, with fix by @AgustinGDLV in https://github.com/rh-hideout/pokeemerald-expansion/pull/3010 +#### Item Effects +* Trade and Held Level up evolution items and can now be used to evolve the respective species by default like in Legends: Arceus by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3009 + * Eg. Magmarizer can be used from the Bag to evolve Magmar into Magmortar. + * Item usages can be turned off via config. +* Added Legends: Arceus Evolution items by @AaghatIsLive in https://github.com/rh-hideout/pokeemerald-expansion/pull/2897 + * Black Augurite + * Peat Block + * Linking Cord + * Existing no-item trade evolutions can now evolve by using this item from the bag. +* Added Gen IX item data by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/2838 + * Mirror Herb + * Effect by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2873 + * Scroll of Darkness + * Scroll of Waters + * Adamant Crystal + * Lustrous Globe + * Griseous Core + * Big Bamboo Shoot + * Tiny Bamboo Shoot + * No current effect + * Auspicious Armor + * Booster Energy + * Gimmighoul Coin + * Leader's Crest + * Malicious Armor + * Tera Orb + * Tera Shards +* Max Mushrooms by @AgustinGDLV in https://github.com/rh-hideout/pokeemerald-expansion/pull/2902 +* Berserk Gene by @CallmeEchoo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2893 +#### Battle AI +* Added `AI_FLAG_OMNISCIENT` flag by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2872 + * It lets the AI know the entirety of the player's party. +#### Tests +* Automatic tests now have a summary to list the amount of tests passed, failed and more by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2722 +* To avoid tests failing when disabling new species, tests now use Gen 1-3 Pokémon when possible. Otherwise, they use ASSUMEs if the required species is disabled by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2818 +* Sped up tests by using structured RNG in `PASSES_RANDOMLY` by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/2720 + * RandomElement for structured RNG by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/2868, with fix by @AgustinGDLV in https://github.com/rh-hideout/pokeemerald-expansion/pull/3013 +* Detect memory leaks in tests by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/2698 +* Detect more invalid test cases by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/2955 +* Tests now have their own build directory by @mrgriffin https://github.com/rh-hideout/pokeemerald-expansion/pull/3002 +* New `TESTING` define by @mrgriffin https://github.com/rh-hideout/pokeemerald-expansion/pull/3002 + +### Changed +#### General +* Partially fix Dex size inconsistencies by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2799 +* Debug menu's Cheat Start now sets the Cable Club's tutorial as complete. by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2802 +* Debug menu to give items based on the respective max quantity by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2807 +* Debug menu's "Fill PC" option now adds one of each Pokémon instead of filling the boxes with Deoxys @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2814 + * *Known Issue*: All Pokémon have the same personality/gender/stats/moves as the first Bulbasaur generated. + * It sets the Dex flags for each Pokémon as well. + * Enables `FLAG_SYS_POKEMON_GET`. +* Debug menu's saveblock checks now use the proper max size of the saveblock instead of a hardcoded string value by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3017 +* Disable Gen8+ Obedience Mechanics by default by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2980 +#### Graphical changes +* Fixed Gen 2 Pokémon sprite palettes up to Ampharos included by @Jaizu in https://github.com/rh-hideout/pokeemerald-expansion/pull/2783 +* New move animations are set as default by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/2964 +#### Refactors +* Battle Item Refactor by @AgustinGDLV in https://github.com/rh-hideout/pokeemerald-expansion/pull/2902 + * Divorces in-battle effects from out-of-battle ones, such that they use battle scripts, making it easier to test and add new effects. + * Further fixes by + * @Jaizu in https://github.com/rh-hideout/pokeemerald-expansion/pull/2918 + * @CallmeEchoo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2916, https://github.com/rh-hideout/pokeemerald-expansion/pull/2931 and https://github.com/rh-hideout/pokeemerald-expansion/pull/2940 + * @AgustinGDLV in https://github.com/rh-hideout/pokeemerald-expansion/pull/2915 and https://github.com/rh-hideout/pokeemerald-expansion/pull/3022 +* Refactored most Battle Form changes into the form change tables by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2411 + * This includes: + * Form changes upon fainting + * Form changes upon switching + * Form changes upon battle end. + * Mega Evolutions + * Primal Reversions + * Zacian/Zamazenta/Xerneas + * Burmy + * Zen Mode + * Power Construct + * Schooling + * Shields Down + * Forecast/Flower Gift, with fixes by @AgustinGDLV in https://github.com/rh-hideout/pokeemerald-expansion/pull/2978 +* Hydra improvements (for Battle Tests) + * Prints a summary of how many tests ran/passed. + * Makes the pokemerald-test.elf file depend on tools. + * Shows SKIP log line when ASSUMPTIONS fail. + * Prints any buffered output at exit. + * OSX support by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/2975 +* Explosion looping is now handled by moveend instead of looping itself by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2688 +* Removed `zMovePower` field in `gBattleMoves` in favor of a function. by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2794 +* Removed `ITEM_HAS_EFFECT`, allowing for items in of any ID to have effects by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2840 +* Move direct statStage boosts to use statbuffchange by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/3000 +#### Cleanup +* Removed unused single-frame front pics by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2793 +* Removed duplicated code in `Cmd_pickup` by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2705 +* Removed some unused Battle Test code. +* Removed unused script `BattleScript_TargetAbilityStatRaiseOnMoveEnd` by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2727 +* Purged existing bKGD warnings from graphics by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2735 +* Use proper symbol name styles for Jangmo-o family by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2739 +* Removed trailing whitespaces by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2787 +* Debug Menu's "Feature unavailable" messages now properly point to the corresponding config file @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2814 +* Removed `assistPossibleMoves` from `BattleStruct` by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2816 +* Fixed instances of gSideTimers not using side constants by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2867 +* Fixed stat names not being properly capitalized by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/2927 +* Adds GetMovesArray in CanTargetFaintAi by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/2936 +* Add Thunder Cage case to trap anim IDs by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2941 +* GetSideParty/GetBattlerParty by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/2910 +* Removed duplicate CanBePoisoned condition by @CallmeEchoo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2988 +* Convert a few various to callnatives by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2465 +* Changed 999999 in DebugAction_Give_MaxMoney to MAX_MONEY constant by @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/3015 +* Optimized battle gender checks by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3020 +* Replace launchtemplate and launchtask in battle anims by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2640 + +### Fixed +#### General +* Fixed Honey Gather in Battle Pyramid using an uninitialized `lvlDivBy10` value by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2705 +* Fixed B_FLAG_NO_CATCHING not working despite flag being defined @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2814 +* Fixed Budew evolution method by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/2928 +* Fixed issue with Enamorus Therian cry define order that caused compile issue when Gen 7 and 8 species were disabled by @grunt-lucas in https://github.com/rh-hideout/pokeemerald-expansion/pull/2956 +* Fixed Zacian/Zamazenta's Iron Head PP not being calculated properly by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2411 +* Fixed ability select in Debug Menu's "Give mon" option by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/2999 +* Fixed Esper Wing's accuracy if `B_UPDATED_MOVE_DATA` is set to Gen 9 by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/3004 +* Fixed Hisuian Sneasel not having a way to evolve by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3009 +* Fixed Throat Spray's description by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3027 +#### Graphics +* Fixed Debug menu displaying 3-digit map numbers incorrectly by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2807 +* Properly aligned Pokémon icons up to gen V by @Jaizu in https://github.com/rh-hideout/pokeemerald-expansion/pull/2879 +* Fixed multiple Pokémon sprites by @Jaizu in https://github.com/rh-hideout/pokeemerald-expansion/pull/2926 +* Fixed form change animation properly loading the respective Pokémon palettes by @Ultimate-Bob in https://github.com/rh-hideout/pokeemerald-expansion/pull/2852 +* Fixed Illumise's pallete causing issues in PC boxes by @AaghatIsLive in https://github.com/rh-hideout/pokeemerald-expansion/pull/2995 +* Fixed for wrong mon positions for scripted wild double battles by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/2996 +* Fixed shiny animation not respecting Illusion mon target by @Ultimate-Bob in https://github.com/rh-hideout/pokeemerald-expansion/pull/2985 +#### Battle Mechanics +* General + * Fixed Trainer slide-in not working properly on doubles by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2699 + * Z-moves now properly bypass protection while doing 25% of the original damage by @AgustinGDLV in https://github.com/rh-hideout/pokeemerald-expansion/pull/2730 + * Fixed Mega Evolution and Primal Reversion healthbox icons not hiding when they're supposed to by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2805, with further fix by @Jaizu in https://github.com/rh-hideout/pokeemerald-expansion/pull/2898 + * Fixed potential issues with confusion checks by @AgustinGDLV in https://github.com/rh-hideout/pokeemerald-expansion/pull/2855 + * Fixed an oversight that caused consecutive battles double battles by @SBird1337 in https://github.com/rh-hideout/pokeemerald-expansion/pull/2894 + * Fixed status Z-Moves overwriting damage-dealing Z-Moves by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/2937 + * Fixed Battle Vars and Flags not resetting after the player whites out by @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/2875 + * Fixed mons not disobeying with Gen8 mechanics disabled by @SubzeroEclipse in https://github.com/rh-hideout/pokeemerald-expansion/pull/2990 + * Fixed turn order issues by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2810 + * Mega Evolution not being based on turn order. + * Focus Punch/Beak Blast/Shell Trap messages not being based on turn order. + * Fixed Beak Blast's burn not showing up by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2810 +* Move effects + * Fixed Dragon Tail not activating Red Card if the target didn't switch by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/2707 + * Fixed Dragon Tail printing "But it failed!" if the target didn't switch by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/2707 + * Fixed Roar being not implemented with rejection sampling by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/2707 + * Fixed Mind Blown always fainting the user by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2688 + * Fixed Defog showing improper battle strings by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2737 + * Fixed Knock Off removing Choice Item restriction when the target has Gorilla Tactics as an ability by @CallmeEchoo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2854 + * Fixed Ominous Wind's targeting by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/2896 + * Added missing forbidden Metronome move flags to LA and SV moves by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/2949 + * Fixed Anger Shell activating when fainted by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2945 + * Fixed Burn Up/Double Shock being affected by the user's ability by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/2962 + * Fixed Burn Up/Double Shock not removing their respective types if the target fainted by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/2962 + * Fixed Triple Dive's effect by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/2947 +* Ability effects + * Fixed Volt Absorb stopping damage to other Pokémon from Explosion under the effect of Galvanize by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2688 + * Fixed Intimidate's ability pop up showing the incorrect name by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2712 + * Fixed switch-in abilities activating on an empty field by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2712 + * Partially fixed Supreme Overlord's effect by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2809 + * Fixed Intimidate targetting dead sides and false postpones by @May8th1995 in https://github.com/rh-hideout/pokeemerald-expansion/pull/2850 + * Fixed switch-in abilities activating on terrain change by @AgustinGDLV in https://github.com/rh-hideout/pokeemerald-expansion/pull/2881 + * Fixed Leaf Guard not preventing Rest by @ShaeTsuPog in https://github.com/rh-hideout/pokeemerald-expansion/pull/2957 + * Fixed Plus/Minus working with all damage-dealing moves instead of only pecial moves by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/2974 + * Fixed Impostor's Popup showing the target's ability instead of Impostor by @Ultimate-Bob in https://github.com/rh-hideout/pokeemerald-expansion/pull/2985 + * Fixed Illusion's working when it shouldn't if the Pokémon with it is the last one in the party by @Ultimate-Bob in https://github.com/rh-hideout/pokeemerald-expansion/pull/2985 + * Fixed Mimikyu's Disguise not breaking by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3025 +* Item effects + * Fixed Eject Button interaction that forced incoming Pokémon with Intimidate to attack by @May8th1995 in https://github.com/rh-hideout/pokeemerald-expansion/pull/2846 + * Fixed erroneous uses of non e-reader Enigma Berries by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2839 +#### Battle Animations +* Fixed potential Ability Popup tile corruption due to missing Word-alignment by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2812 +* Fixed `GetBattleAnimMoveTargets` getting the wrong indices when the attacker is not the player by @ghoulslash in https://github.com/rh-hideout/ +* Fixed Ability Popup not disappearing when called by Wandering Spirit by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/2920pokeemerald-expansion/pull/2848 +* Added missing config to enable NEW_ROCKS_PARTICLE by @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/2929 +* Fixed healthboxes reappearing in the Battle Tower by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2849 +* Fixes Speed Boost animation by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3033 +#### Battle AI +* Fixed AI switching to an invalid party slot from Volt Switch/Roar when using the Ace Pokémon flag by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2660 +* Fixed AI not knowing how to handle Illusion by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2726 + * Initially treats the initial Illusion species as the real species. + * If the type effectiveness doesn't match what it expects, or it uses a move that it cannot learn, the AI realises this and updates its data accordingly. +* Fixed AI damage calculation incorrectly when it has Protean/Libero by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2714 +* Fix CalcMoveBasePower using battler addresses, which messed with AI calculations by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2858 +* Fixed Comatose AI checks by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2866 +* Fixed AI not considering Hidden Abilities in its team during switching logic by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2908 +* Fixed Z-Move and Triple Kick/Axel damage calculation by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/2983 + +### Pret merges +* Kept you waiting, huh? (pret sync 2023/03/03) by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2801 +* Palms are sweaty, arms are heavy, mom's spaghetti (pret merge 2023/03/19) by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2841 +* I get knocked down, but I get up again (pret merge 2023/04/13) by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2907 +* Pret merge Friday by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/2998 +* One point five baby by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3044 + +## New Contributors +* @CallmeEchoo made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/2854 +* @pkmnsnfrn made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/2878 +* @AaghatIsLive made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/2897 +* @fdeblasio made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/2928 +* @citrusbolt made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/2825 +* @grunt-lucas made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/2956 +* @Ultimate-Bob made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/2852 +* @ShaeTsuPog made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/2957 +* @SubzeroEclipse made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/2990 + +**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.4.3...expansion/1.5.0 \ No newline at end of file diff --git a/docs/changelogs/1.5.1.md b/docs/changelogs/1.5.1.md new file mode 100644 index 0000000000..627cd8ee84 --- /dev/null +++ b/docs/changelogs/1.5.1.md @@ -0,0 +1,71 @@ +# Version 1.5.1 + +```md +## How to update +- If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`. +- Once you have your remote set up, run the command `git pull RHH expansion/1.5.1`. +``` + +### Changed +#### General +* Easy Chat always shows words in uppercase by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3050 + +### Fixed +#### General +* Fixed Hisuian mon not evolving by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3047 +* Fixed regional forms not breeding correctly by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3047 +* Fixed Sylveon's evolution method not requiring Friendship by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3048 +* Fixed being able to sell TMs set as reusable by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3049 +* Fixed shadows in Pokémon sprite viewer when toggling shininess by @gruxor in https://github.com/rh-hideout/pokeemerald-expansion/pull/3094 +#### Softlocks +* Added safeguard for move animations to not create new sprites in case the maximum has been reached, which would lock the game by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3084 + * Changed Mega indicator sprites from 3 per battler to 1 per battler by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3087 +* Fixed the debug menu not removing list menu task, causing eventual softlock if used too many times, like when giving items/Pokémon by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3088 +#### Graphics +* Fixed Ball shortcut graphics moving offsync by @voloved in https://github.com/rh-hideout/pokeemerald-expansion/pull/3042 +#### Battle Mechanics +* General + * Fixed disobedience not resetting move effects, causing the opponent getting stat changes originally for the player by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3089 + * Fix graphical/exp bugs with 2 vs 1 trainer battles by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3105 +* Item effects + * Fixed Clear Amulet showing ability popup and message when nullifying stat reducing effects by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3074 +#### Battle AI +* Fixed Baton Pass sending an invalid mon when Ace mon is the last one alive by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3067 +* Fixed overflow when AI chooses a new Pokemon to send out by @Pawkkie in https://github.com/rh-hideout/pokeemerald-expansion/pull/3068 + +### Battle Tests +#### Added +* Test Runner support for illegal abilities by @AgustinGDLV in https://github.com/rh-hideout/pokeemerald-expansion/pull/3045 + * This should ***NOT*** be used for test PRs unless the ability to test isn't available on any Pokémon. +* Added tests for + * Items + * Air Balloon by @hetoord in https://github.com/rh-hideout/pokeemerald-expansion/pull/3071 + * Clear Amulet by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3074 + * Full ability tests for Scrappy, Own Tempo and Inner Focus by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3074 + * Intimidate being blocked by Clear Body, Full Metal Body, Hyper Cutter and White Smoke by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3074 +#### Changed +* Minor test changes by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3072 + * Regularizes the whitespace. + * Removes unnecessary `;`s after `}`s. + * Parametrizes `item_effect_restore_hp.c` and uses `I_HEALTH_RECOVERY` everywhere. + * Inlines uses of macros where I think it makes the test easier to follow. + * Use 3-arg `PASSES_RANDOMLY` in the Snow + Blizzard test (improves performance). + * More conservative `unlink` error reporting. Ctrl-C in `make check` should not complain about being unable to unlink ROMs which weren't created yet. + * Better names for the ROMs in `/tmp`. + * Prints the test runner number in Hydra, making it easier to track down bugs involving state leaking from a test to the following tests. + * Simplify `TO_DO_BATTLE_TEST`'s implementation. + * Introduce a `TearDownBattle` function which was repeated twice. +#### Fixed +* Marks test as invalid if there's more than one PASSES_RANDOMLY in a single test by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3065 +* Fixed non-battle tests omitting errors when failing by @mrgriffin and @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3076 +* Fixed non-battle tests showing false positive memory leak errors due to the test failing for a different cause by @mrgriffin and @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3076 +* Fixed "Pastel Veil immediately cures Mold Breaker poison" test by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3074 + +## Latest pret commit: +https://github.com/pret/pokeemerald/commit/9c4a59f865360b7d6e0dede0e52812b897526588 + +## New Contributors +* @Pawkkie made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3068 +* @voloved made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3042 + +**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.5.0...expansion/1.5.1 \ No newline at end of file diff --git a/docs/changelogs/1.5.2.md b/docs/changelogs/1.5.2.md new file mode 100644 index 0000000000..ab6735c7a3 --- /dev/null +++ b/docs/changelogs/1.5.2.md @@ -0,0 +1,96 @@ +# Version 1.5.2 + +```md +## How to update +- If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`. +- Once you have your remote set up, run the command `git pull RHH expansion/1.5.2`. +``` + +## Changed +### General +* Added config for Gem boost multiplier by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3144 +### Refactors +* Revamped GetTotalAccuracy by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3182 + +## Fixed +### Softlocks +* Fixed Z-Moves softlocking when their Z-Move effect failed to apply, by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3108 +### Graphics +* Fixed ability pop-up not properly clearing the previous text, by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3107 +* Fixed wrong color in stat move animation by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3161 +* Fixed copyright screen not showing up on certain emulators by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/2664 +### Battle Mechanics +* General + * Primal Reversion + * Fixed it not activating when switching in after a fainting by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3141 + * Fixed it not activating when switching in after Eject Button by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3141 + * Fixed enemy parties not reverting to their original form post-battle by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3150 + * Fixed OTGender not being set in `FillPartnerParty`, by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3163 + * Fixed missing use of `CustomTrainerPartyAssignMoves` in `FillPartnerParty`, by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3163 + * Fixed trainer slide messages appearing for frontier trainers, by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3162 + * Fixed `jumpifsideaffecting` potentially returning the wrong side by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3200 + * Fixed Trainer class balls not being assigned past the first Pokémon by @SubzeroEclipse in https://github.com/rh-hideout/pokeemerald-expansion/pull/3203 +* Move effects + * Fixed Multi-Hit moves only hitting once and powder moves affecting Grass types when called via Metronome or Mirror Move, by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3135 + * Fixed Teleport ending trainer battles, by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3166 +* Ability effects + * Fixed multiple issues with Bad Dreams' ability pop-up, by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3131 + * Fixed it activating even if there were no sleeping opponents. + * Fixed lag issue that caused it to not hide smoothly. + * Fixed it staying on screen if it fainted a target. + * Fixed Protosynthesis and Quark Drive boost amounts by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3139 + * Fixed multiple issues with Primal Weather abilities by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3138 + * Fixed printing "move missed" message for cancelled moves. + * Fixed 'move failed because of weather' printing twice if it were going to hit multiple targets (eg. Surf). + * Fixed 'move failed because of weather' printing if the mon was confused/paralyzed/asleep. + * Fixed 'move failed because of weather' printing when failing multiple times in a row. + * Fixed Sticky Web/Mirror Armor's interaction, by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3160 +* Item effects + * Fixed Gem boost only applying to the first hit of a Multi-Hit move by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3144 + * Fixed Utility Umbrella damage calculations by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2835 + * Fixed Ruin ability damage modifiers, by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3171 +### Battle AI +* Fixed Rollout's and Fury Cutter's AI power calculation by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3110 +* Fixed how AI categorizes weak moves by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3109 +* AI now gives priority to moves that always hit if the opponent's evasion increases or the AI's accuracy is reduced by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3109 + +## Pret merges: +* 23-07-25 by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3176 + * Remove unused macro to fix syntax highlights https://github.com/pret/pokeemerald/pull/1899 + * Update msys2 instructions https://github.com/pret/pokeemerald/8ec0bff0342413ac4996b63382c8d03a3b532899 + * Fix priortiy typos https://github.com/pret/pokeemerald/pull/1900 + * Declarations for 2- and 3-argument GetMonData https://github.com/pret/pokeemerald/pull/1756 + * Detect potential misalignment in modern https://github.com/pret/pokeemerald/pull/1901 + +## Test Runner +### Changed +* Failed tests are now listed in the total, by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3073 +* Hydra now respects -jN by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3132 +* Test runner test runner crashes are now detected by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3129 +* Random functions that exclude elements based on conditions. Used by Metronome, multi-hit moves, and Loaded Dice by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3159 +### Fixed +* Fixed fixedPopup not being cleared while gTestRunnerHeadless is active, which caused some tests to fail on CI but not locally by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3133 +### Tests added for: +* General + * Primal Reversion, by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3141 + * Rain weather, by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2835 + * Sun weather, by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2835 +* Ability Effects + * Bad Dreams, by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3131 + * Tablets of Ruin by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3171 + * Swords of Ruin by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3171 + * Vessel of Ruin by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3171 + * Beads of Ruin by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3171 + * Primordial Sea by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3138 + * Desolate Land by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3138 + * Mirror Armor by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3160 +* Move Effects + * Metronome, by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3135 + * Mirror move, by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3135 + * Hydro Steam, by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2835 + * Sticky web by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3160 + * Court Change by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3160 +* Item Effects + * Utility Umbrella, by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2835 + +**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.5.1...expansion/1.5.2 \ No newline at end of file diff --git a/docs/changelogs/1.5.3.md b/docs/changelogs/1.5.3.md new file mode 100644 index 0000000000..831814740a --- /dev/null +++ b/docs/changelogs/1.5.3.md @@ -0,0 +1,36 @@ +# Version 1.5.3 + +```md +## How to update +- If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`. +- Once you have your remote set up, run the command `git pull RHH expansion/1.5.3`. +``` + +## CRITICAL FIX, please update to avoid the issues detailed down below: +- Fixed memory corruption when handling trigger sprites by @SBird1337 in https://github.com/rh-hideout/pokeemerald-expansion/pull/3238 + - This had the posibility of manifesting in weird ways, like camera and music changes, NPC duplication and more. If you've had this issue in the past, we ***heavily*** recommend you update to this version of the expansion. + - Thank you @Bassoonian for helping us pinpointing the issue. + +![image](https://github.com/rh-hideout/pokeemerald-expansion/assets/2904965/26b9b984-c5db-4dac-85f7-5fc4e95a32ce) ![image](https://github.com/rh-hideout/pokeemerald-expansion/assets/2904965/d490eb30-ce54-4b90-bb2e-79c2e9bb50ac) + + + +## Fixed +### Battle Mechanics +* General + * Fixed wild double battles with an in-game partner using `multi_fixed_wild`, by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3210 + * Corrected conditionals used for `B_SPEED_BUFFING_RAPID_SPIN` and `I_GEM_BOOST_POWER` by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3232 + * Fixed being unable to use a Z-Move when a previous mon in the player's team Mega Evolved, by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3233 +* Move effects + * Fixed Jump Kick's recoil happening before Spiky Shield's damage by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3208 + +## Test Runner +### Changed +* Organized tests into subfolders by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2822 +### Fixed +* Fixed certain tests failing when Inverse Battle battle flag was defined, by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3215 + +## New Contributors +* @kittenchilly made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3233 + +**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.5.2...expansion/1.5.3 \ No newline at end of file diff --git a/docs/changelogs/1.6.0.md b/docs/changelogs/1.6.0.md new file mode 100644 index 0000000000..f215ffb673 --- /dev/null +++ b/docs/changelogs/1.6.0.md @@ -0,0 +1,294 @@ +# Version 1.6.0 + +```md +## How to update +- If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`. +- Once you have your remote set up, run the command `git pull RHH expansion/1.6.0`. +``` + +## Added +### General +* ***Ported TheXaman's latest changes to the Debug Menu*** by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2815 + * Arrows and ellipsis to mark submenus. + * Added 9th scrolling option to occupy the whole screen height. + * Combine Flags and Vars into one submenu. + * Moved Running Shoes flag to this menu. + * Added new window to flags/vars showing the current state and added submenu indicator. + * Colored toggle options for specific flags that change upon toggling. + * Added option to reset Pokédex flags to whatever is in the party and boxes. + * New "Fill PC/Item Pocket" submenu for filling both PC and Bag Pockets. + * Option to generate Box Mon with their own personalities/IVs. + * Moved "CHEAT Start" option to the Utility Submenu" + * Fixes: + * By @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3223 + * By @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3317 +* ***Allow Cycling Through Balls in the Last Ball Used Menu*** by @voloved in https://github.com/rh-hideout/pokeemerald-expansion/pull/3039 + * Tweaks by @voloved in https://github.com/rh-hideout/pokeemerald-expansion/pull/3254 +* ***Implemented Ultra Burst*** by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3221 +* Config for LGPE friendship stat boost by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2257 +* Added a debug menu option to hatch eggs by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3155 +* Option to run an AI vs AI battle by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3216 + * With fixes by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3283 +* Added missing Evolution data by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3287 + * Crabrawler can now evolve into Crabominable with an Ice Stone as of SV. + * Nosepass can now evolve into Probopass with a Thunder Stone as of LA. +* Added Sliggoo's overworld fog evolution method by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3343 +* Overworld snow weather now summons Snow or Hail based on a config by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3241 +* Added unevolved Exp. multiplier by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3301 +* Added config to support placing Pokémon in the PC when pressing the B button by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3329 +* Added array shuffle implementation by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3097 + * Fixes/improvements by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3128 +### Item Effects +* ***Added Generation 6 Exp. Share*** by @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/3276 + * Cleanup + * By @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3291 + * By @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3339 +* Added Exp. Charm by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3301 +* Added Gen 4+'s Enigma Berry's hold effect by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3300 +* Added config for type-boosting held item power by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3326 +### Move Effects +* By @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2870 + * Triple Arrows + * Infernal Parade + * Lunar Blessing + * Take Heart + * Axe Kick +* By @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3147 + * Spin Out + * Make It Rain + * Collision Course/Electro Drift +* By @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3178 + * Mortal Spin + * Population Bomb +* By @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3297 + * Gigaton Hammer + * Salt Cure +### Move Animations +* By @Skeli789 and @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2861 + * Spirit Break + * False Surrender + * Isle of Armor Moves + * Grassy Glide fix by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3092 + * Crown Tundra Moves + * Legends: Arceus Moves +* By @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3310 + * Bitter Blade + * Double Shock by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3310 +### Graphics +* ***Added all remaining gender differences sprites*** by @SubzeroEclipse and @CyanSMP64 in: + * https://github.com/rh-hideout/pokeemerald-expansion/pull/3070 + * https://github.com/rh-hideout/pokeemerald-expansion/pull/3082 + * https://github.com/rh-hideout/pokeemerald-expansion/pull/3095 + * https://github.com/rh-hideout/pokeemerald-expansion/pull/3122 + * https://github.com/rh-hideout/pokeemerald-expansion/pull/3149 +* Add new Substitute doll sprites by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3263 +* Added icon for Clear Amulet by @PacFire in https://github.com/rh-hideout/pokeemerald-expansion/pull/3078 + * Palette fixes by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3086 +* Tera Shard icons by @AlexOn1ine @PacFire in https://github.com/rh-hideout/pokeemerald-expansion/pull/3307 +* A selection of mon animation frames by @Tacobell24 and @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3090 + * Applin, Stufful, Chewtle, Rookidee, Rolycoly, Grubbin, Turtonator, Wimpod, Jangmo-O, Pyukumuku, Dewpider, Pincurchin, Sizzlipede, Salandit families and Alolan Exeggutor. +* Multiple Graphical Tweaks by @SonikkuA-DatH in https://github.com/rh-hideout/pokeemerald-expansion/pull/3127 + * Added 2nd frames to Castform, Spinda (with help by @shinydragonhunter) and Cherrim. + * Added Castform's Pokémon HOME shiny palettes. + * Adjusted Spheal's 2nd frame and restored vanilla Emerald's speen. + +## Changed +### General +* Set GEN_LATEST to GEN_9 by default by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3186 +* Make -fanalyzer optional by @SBird1337 in https://github.com/rh-hideout/pokeemerald-expansion/pull/3265 +* Updated Big Nugget's Fling power to Gen 8+ by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3296 +### Graphical changes +* ***Adjusted Pokemon sprites and palettes - Part 1*** by @CyanSMP64 in https://github.com/rh-hideout/pokeemerald-expansion/pull/3235 + * 0001 Bulbasaur to 0080 Slowbro +### Refactors +* Inlined fixed Point Math by @SBird1337 in https://github.com/rh-hideout/pokeemerald-expansion/pull/3115 + * Refactors battle damage modifier calculations to use the new functions in order to improve readability and performance. + * Fixes by @SBird1337 in https://github.com/rh-hideout/pokeemerald-expansion/pull/3125 +* ***Refactored damage formula to match Gen5+*** by @SBird1337 in https://github.com/rh-hideout/pokeemerald-expansion/pull/3196 + * Gamefreak often times rounds down on n.5 in their fixed point mathematics. + * Fixed point arithmetic (multiplication) is not associative, this changes the order of operations to match the original games. + * A lot of the damage calculation function was quite messy, some aspects were factored in at the wrong place. + * The main damage calculation should now be clearer to read. +* ***Removed Vanilla trainer structs, converted trainer data to use the custom struct*** by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3114 +* ***Removed the sTMHMMoves array and made TMs/HMs read moves from their secondaryId item field*** by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3243 +* ***Converted move flags and bans into GCC bitfields*** by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2952 + * Fixes by by @PCG06 in https://github.com/rh-hideout/pokeemerald-expansion/pull/3229 + * Added bitfields for moves that fail with Me First and Gravity. + * Inverted certain logic and flags, since there are more moves that are affected by them than not. + * Protect + * Mirror Move + * King's Rock + * Assist uses Copycat's flag + the 2 additional move effects banned by it. + * `EFFECT_SEMI_INVULNERABLE` + * `EFFECT_SKY_DROP` + * Made a separate config for move flag changes: `B_UPDATED_MOVE_FLAGS`. + * Adds `IS_MOVE_RECOIL` to help recoil move checks. + * Adds functions to account for the `flags` field being removed alongside `TestMoveFlags` and `TestMoveFlagsInMoveset`. + * Adds `sParentalBondBannedEffects` to streamline adding new moves. + * Unified multi-strike move flags by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3126 +* Some `gActiveBattler` fixes by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/3259 +* ***Got rid of the `gActiveBattler` variable by @DizzyEggg*** in https://github.com/rh-hideout/pokeemerald-expansion/pull/3262 +* Scale Shot now uses Multi-hit Moves' canceller by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3290 +* Callnative functions now take ScriptContext arguments to allow using macros with .byte fields similar to vanilla battle script functions by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/3294 +* Converted some `VARIOUS`s to `callnative`s by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3269 +* Refactored battle terrain text string tables and removed `EFFECT_REMOVE_TERRAIN` by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3247 +### Move animations +* New Wood Hammer animation by @SBird1337 in https://github.com/rh-hideout/pokeemerald-expansion/pull/3192 +### Battle AI +* Added AI delay timer by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3302 +* Fixed `AI_WhoStrikesFirst` considering status priority moves when it shouldn't by @Joggel19 in https://github.com/rh-hideout/pokeemerald-expansion/pull/3064 +* Fixed Beat Up Gen5+ AI damage calculation by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/3104 +* Improved AI switching, so it doesn't get killed on switch-in by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3146 +* Added missing absorbing abilities to `FindMonThatAbsorbsOpponentsMove` by @Pawkkie in https://github.com/rh-hideout/pokeemerald-expansion/pull/3218 +* Prevent certain status moves when item is known + Fake Out changes by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3219 +* Improve AI switching with bad moves by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3213 +* Fixed `CanTargetFaintAi` index issue by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3306 +* Transform updates `AI_PARTY` data by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/3295 +* Greatly reduce AI lag by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3308 + +### Cleanup +* ***Changed a lot of variables to `u32` in order to speed up processes and AI*** +* ***Simplify/Clean battle controllers code*** by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3202 +* ***Cleaned up remaining Castform hack code*** by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3063 +* ***Cleaned experience gain logic*** by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3339 +* Removed debug item effect override by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3106 +* By @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2952 + * Removes unused `BattleScript_EffectStomp` and `EFFECT_FLINCH_MINIMIZE_HIT`. + * Removes unused `BattleScript_FlinchEffect` + * Removes reduntant `EFFECT_TWISTER` which was a copy of `EFFECT_FLINCH_HIT`. + * Fixes missing uses of `MOVE_UNAVAILABLE` in `battle_ai_util.c`. + * Removed `sMovesNotAffectedByStench` in favor of checking for moves with Flinch chance. + * Added `EFFECT_GEOMANCY` to `IsTwoTurnsMove`. +* Animation script cleanup and fixes by @AsparagusEduardo in: + * https://github.com/rh-hideout/pokeemerald-expansion/pull/3185 + * https://github.com/rh-hideout/pokeemerald-expansion/pull/3193 +* Reverted BattleMove power to u8 by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3187 +* Optimize sprite.c by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3175 +* Removed unused itemId field by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3293 +* Removed unused `EFFECT_UNUSED_125` by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3290 +* Removed redundant side macros/funcs by @gruxor and @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3299 + * `GET_BATTLER_SIDE` (replaced by `GetBattlerSide`) + * `GET_BATTLER_SIDE2` (replaced by `GetBattlerSide`) + * `GetBattlerPosition` (replaced by direct call to `gBattlerPositions`) +* Added missing return in `IsBattlerGrounded` by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3328 +* `GetBattlerHoldEffect` usage optimizations by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3330 + +## Fixed +### Softlocks +* ***Disabled species now default their graphics to `SPECIES_NONE`, preventing softlocks when trying to load graphical data for disabled species*** by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3116 +* ***Fixed debug menu memory overflow when reducing `PC_ITEMS_COUNT` to a value below 19*** by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3154 +* ***Fixed Ice Spinner logic causing a softlock*** by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3247 +* ***Fixed "Daycare Egg" debug option generating invalid eggs when parents in the Daycare aren't compatible or are missing*** by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3335 +### General +* ***Fixed female Basculegion missing from the cry table*** by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3242 +* Fixed preproc config for Diamond Storm by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3052 +* Fixed null dereferencing errors with -fanalyzer on modern by @gruxor in https://github.com/rh-hideout/pokeemerald-expansion/pull/3165 +* Fixed "Fill PC" debug option giving all mon Bulbasaur's moves by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2815 +* Fixed some Hisuian Pokémon abilities to Gen 9 data by @AaghatIsLive in https://github.com/rh-hideout/pokeemerald-expansion/pull/3292 +### Graphics +* ***Killed the bKGD invalid index warnings and fixed the bit depth of the species sprites*** by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3051 + * Tweaks by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3205 +* Fixed item sprites with palette errors by @gruxor in https://github.com/rh-hideout/pokeemerald-expansion/pull/3222 +* Fixed Mega Venusaur icon to match regular Venusaur by @SubzeroEclipse in https://github.com/rh-hideout/pokeemerald-expansion/pull/3137 +* Fixed Wailord icon sprite by @SubzeroEclipse in https://github.com/rh-hideout/pokeemerald-expansion/pull/3183 +* Fixed overworld snow weather by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3241 +### Battle Mechanics +* General + * By @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2952 + * Fixed Stench/King's Rock interaction. + * Fixed Wandering Spirit skipping contact checks. + * Reset all battler IDs at battle start by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/3111 + * Fixed GetBattleAnimMoveTargets logic by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/3278 + * Fixed Magnet Rise animation moving the partner in double battles by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3280 + * Fixed Status Z-Moves' effect descriptions being cut off by @gabrielcowley in https://github.com/rh-hideout/pokeemerald-expansion/pull/3286 + * By @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3301 + * Fixed traded Pokémon experience boost being applied twice. + * Fixed experience calculation inaccuracies. +* Move effects + * Fixed `ABILITYEFFECT_ON_TERRAIN` setting `gBattlerAbility` incorrectly by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2796 + * Fixed `TryChangeBattleTerrain` overwriting `gBattlerAttacker` by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2796 + * Fixed Teatime skipping non-player Pokémon by @hetoord in https://github.com/rh-hideout/pokeemerald-expansion/pull/3096 + * Fixed Pursuit commands check its move ID instead of its effect ID by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3231 + * Fixed Fling issues by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3191 + * No longer consumes the item if user is fast asleep or paralyzed. + * When the user has no item, the "But it failed!" message no longer overwrites other messages like "X was fully paralyzed" + * Maranga and Kee Berries have their effects when being flung. + * Fixed Leppa Berry not recovering PP when being eaten by Bug Bite by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3282 + * Fixed Seed Sower in Double Battles by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2796 + * Fixed Seed Sower changing move targets when triggered in double battles by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3341 + * Fixed Protect issues by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3321 + * Recoil moves no longer cause recoil damage if the target protected + * Fixed Multi-hit moves being able to hit a protected target past the first hit. + * Fixed Multi-hit moves decreasing speed on each hit when the target uses Silk Trap. +* Ability effects + * Fixed potential bug with weather and terrain ABILITYEFFECT ids by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/3083 + * Fixed Battle bond not triggering when KOing an ally by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3279 + * Fixed Toxic Debris issues that other effects to not trigger by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3306 + * Fixed Toxic Debris not being able to set up 2 layers of Toxic Spikes by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3306 + * Fixed Toxic Debris not triggering when user faints by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3323 +* Item effects + * Fixed Metronome's damage multiplier by @SBird1337 in https://github.com/rh-hideout/pokeemerald-expansion/pull/3246 + +## Test Runner +### General +* Fixed tests breaking on modern by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3319 +### Tests added for: +* Move Effects + * By @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/2870 + * Axe Kick + * Infernal Parade + * Take Heart + * Triple Arrows + * Teatime by @hetoord in https://github.com/rh-hideout/pokeemerald-expansion/pull/3096 + * By @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3147 + * Spin Out + * Make It Rain + * Collision Course/Electro Drift + * By @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3178 + * Mortal Spin + * Population Bomb + * Fling by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3191 + * Leppa Berry interaction by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3282 + * Bug Bite by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3282 + * Multi-hit moves by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3290 + * Protect by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3321 + * Fixed Protect tests failing on `upcoming` by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3348 +* Item Effects + * Metronome by @SBird1337 in https://github.com/rh-hideout/pokeemerald-expansion/pull/3246 + * Status-curing berries by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3289 + * Gen 4+ Enigma Berry by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3300 + * Fling/Bug Bite interaction by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3311 +* Ability Effects + * Battle bond by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3279 + * Toxic Debris by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3306 + * Additional test by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3323 + +## Pret merges: +* Pret merge (2023/08/31) by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3268 + * VAR_TEMP aliases + * ***TM and HM item constants by their move name without numbers***. + * Stat change documentation. + * Factory Menu + Dome Tourney documentation. + * Berry Fix Documentation. + * Missing uses of `DISPLAY_WIDTH` and `DISPLAY_HEIGHT`. + * Static assertion for Battle Palace Flags. + * Static assertion for Rotating Gates. + * Automatic increase of `TEXT_BUFF_ARRAY_COUNT` and `POKEMON_NAME_BUFFER_SIZE`. + * Proper `bravoTrainerTower` documentation. + * Birth Island Rock documentation. + * 6 new bugfixes. +* Pret merge (2023/09/26) by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3347 + * Add include guards for assembly constants files + * Add `blockBoxRS` field to `BoxPokemon` struct + * Bugfix for abilities affecting wild encounter tables + * Fixes a potential buffer overread in `TryGetAbilityInfluencedWildMonIndex`. The bug can occur if an electric type mon is in the first slots of a fishing encounter table and the player carries a mon with the `ABILITY_STATIC` ability. This never happens in the vanilla codebase. + * Add missing constant usage in `m4a_1` + +## New Contributors +* @Joggel19 made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3064 +* @PacFire made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3078 +* @CyanSMP64 made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3149 +* @PCG06 made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3229 +* @gabrielcowley made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3286 + +**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.5.3...expansion/1.6.0 \ No newline at end of file diff --git a/docs/changelogs/1.6.1.md b/docs/changelogs/1.6.1.md new file mode 100644 index 0000000000..a66f7c70af --- /dev/null +++ b/docs/changelogs/1.6.1.md @@ -0,0 +1,13 @@ +# Version 1.6.1 + +```md +## How to update +- If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`. +- Once you have your remote set up, run the command `git pull RHH expansion/1.6.1`. +``` + +## CRITICAL FIX, please update to avoid the issues detailed down below: +* Fixed deleting PC mon by placing another one on top with B by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3360 + ![mGBA_xpFJ41LXqX](https://github.com/rh-hideout/pokeemerald-expansion/assets/2904965/8cac220a-ec9d-484e-b7ff-2ba5b5bd2d77) + +**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.6.0...expansion/1.6.1 \ No newline at end of file diff --git a/docs/changelogs/1.7.0.md b/docs/changelogs/1.7.0.md index c9afdcc0e0..4d2431a482 100644 --- a/docs/changelogs/1.7.0.md +++ b/docs/changelogs/1.7.0.md @@ -143,12 +143,31 @@ * Added `P_UPDATED_FRIENDSHIP` config that updates Pokémon base friendship to Gen 8+ standards by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3491 ### Changed * ***Species Simplifier™*** (Parts [1](https://github.com/rh-hideout/pokeemerald-expansion/pull/3544), [2](https://github.com/rh-hideout/pokeemerald-expansion/pull/3546) and [3](https://github.com/rh-hideout/pokeemerald-expansion/pull/3562)) - * **Moved most data to `gSpeciesInfo`** - * Species names - * Cries - * Refactored Cry tables to simplify the process of adding new cries. Now there's a single entry in the table per cry, and species are asigned cry IDs in `gSpeciesInfo`. + * **Moved most data from multiple arrays to new fields in `gSpeciesInfo`** + * `gSpeciesNames` array -> `speciesName` field. + * `gLevelUpLearnsets` array -> `levelUpLearnset` field. + * `gTeachableLearnsets` array -> `teachableLearnset` field. + * `gEvolutionTable` array -> `evolutions` field. + * Fix by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3696 + * `gFormSpeciesIdTables` array -> `formSpeciesIdTable` field. + * `gFormChangeTablePointers` array -> `formChangeTable` field. + * Refactored Cry tables to simplify the process of adding new cries. + * Now there's a single entry in the table per cry, and species are asigned cry IDs in `gSpeciesInfo`'s `cryId` field. * Graphical data now have their pointers in `gSpeciesInfo` (Sprites, palettes and animations) * Removed all files in `src/data/pokemon_graphics/` with the exception of `front_pic_anims.h`. + * `gMonBackPicCoords` array -> `backPicSize` field. + * `gMonBackPicTable` array -> `backPic` field. + * `gMonBackPicTableFemale` array -> `backPicFemale` field. + * `gMonFrontPicCoords` array -> `frontPicSize` field. + * `gMonFrontPicTable` array -> `frontPic` field. + * `gMonFrontPicTableFemale` array -> `frontPicFemale` field. + * `gMonPaletteTableFemale` array -> `palette` field. + * `gMonPaletteTableFemale` array -> `paletteFemale` field. + * `gMonShinyPaletteTable` array -> `shinyPalette` field. + * `gMonShinyPaletteTableFemale` array -> `shinyPaletteFemale` field. + * `gEnemyMonElevation` array -> `enemyMonElevation` field. + * `gMonIconPaletteIndices` array -> `iconPalIndex` field. + * `gMonIconPaletteIndicesFemale` array -> `iconPalIndexFemale` field. * Removed unused 2nd animations. * Dex Entries * Individual form information is visible in the HGSS Pokédex (Vanilla Dex TBD) @@ -157,10 +176,6 @@ * Pokédex size page proportions are also separate. * Pokédex descriptions are now saved as compound strings in `gSpeciesInfo` and differ by form. Shared entries are at the top of `src/data/pokemon/species_info.h`. * Missing Pokédex texts for forms by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3708 - * Level Up and Teachable learnset pointers are now stored in `gSpeciesInfo`. - * Evolutions are now stored as compound literals in `gSpeciesInfo`. - * Fix by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3696 - * Form tables pointers are now stored in `gSpeciesInfo`. * **Added toggles to disable specific family groups of species** * Located in `include/config/species_enabled.h`. * Moved the original `P_GEN_x_POKEMON` configs to this file. diff --git a/docs/changelogs/1.8.0.md b/docs/changelogs/1.8.0.md index afe6a03bf1..e1a50896e7 100644 --- a/docs/changelogs/1.8.0.md +++ b/docs/changelogs/1.8.0.md @@ -312,7 +312,7 @@ * Included there's `DYN_MULTICHOICE_CB_SHOW_ITEM`, which shows icons of the items defined by your script. * Compatible with Poryscript. * For more information and how to use it, please visit the [Pokécommunity thread](https://www.pokecommunity.com/threads/event-scripts-dynamic-multichoice.489984/). -### ***Incorporated @ghoulslash's save block branch*** by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4113 +### ***Incorporated @ghoulslash's Saveblock Cleansing branch*** by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4113 * Differences from the the standalone branch: - Moved configs to dedicated file (`include/config/save.h`). - Fixed comments to the proper amount of space saved. diff --git a/docs/changelogs/1.8.1.md b/docs/changelogs/1.8.1.md new file mode 100644 index 0000000000..c08c8760c2 --- /dev/null +++ b/docs/changelogs/1.8.1.md @@ -0,0 +1,30 @@ +# Version 1.8.1 + +```md +## How to update +- If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`. +- Once you have your remote set up, run the command `git pull RHH expansion/1.8.1`. +``` + +## 🌋 *IMPORTANT CHANGES* 🌋 +* ***CRITICAL FIX***: Fixed a softlock when looking at an Egg in the summary screen by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4301 + +## 🧬 General 🧬 +### Added +* Added pre-1.6.2 changelogs by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4296 +### Changed +* Disabled Tera Type on summary screen by default, since Terastallization is not implemented yet by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4289 +### Fixed +* Small fixes to Python install instructions by @ravepossum in https://github.com/rh-hideout/pokeemerald-expansion/pull/4288 +* Fixed unintended Pokédex form behavior by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4299 + +## 🧹 Other Cleanup 🧹 +### Changed +* Actually removed unused `STATUS3_CANT_SCORE_A_CRIT` by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4293 +### Fixed +* Fixed species flag padding by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4291 + + +**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.8.0...expansion/1.8.1 + + diff --git a/docs/changelogs/1.8.2.md b/docs/changelogs/1.8.2.md new file mode 100644 index 0000000000..31d8e257f1 --- /dev/null +++ b/docs/changelogs/1.8.2.md @@ -0,0 +1,144 @@ +# Version 1.8.2 + +```md +## How to update +- If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`. +- Once you have your remote set up, run the command `git pull RHH expansion/1.8.2`. +``` +## 🌋 Important changes 🌋 +* ***Added check during compilation to make sure that the code is inside a git directory before building*** by @SBird1337 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4363 + * *If you downloaded the code using the "Download ZIP" option on GitHub, you will not be able to update your expansion version or merge any other feature brances, which is why we added this check to make sure that users don't fall into this trap.* + +## 💥 *Softlock/Crash fixes* 💥 +* Fixed Battle Pyramid freeze when `BATTLE_PYRAMID_RANDOM_ENCOUNTERS` is set to `TRUE` by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4326 +* Fixed switch-in AI infinite loop when calculating amount of hits to faint the opponent by @Pawkkie and @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4338 +* Fixed softlock with weather-triggered form changes and Cloud Nine by @skolgrahd in https://github.com/rh-hideout/pokeemerald-expansion/pull/4382 +* Fixes Eject Pack softlock when there are no other party members left to switch to by @skolgrahd and @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4387 + +## 🧬 General 🧬 +### Changed +* Changed Frostbite's abbreviation from `FSB` to `FRB` by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/4355 +### Fixed +* Fixed `BATTLE_PYRAMID_RANDOM_ENCOUNTERS` not including species past `FORMS_START`, including Gen 9 Pokémon by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4326 +* Fixed potential compile issue that occurs when `gba/types.h` is included before `gba/defines.h` by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/4364 +* Fixed `givemon` setting every move despite only specifying a couple by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4377 + * Level up moves will be used when no move is specified. +* Rewrite `GiveBoxMonInitialMoveset_Fast` to match `GiveBoxMonInitialMoveset` results (but still faster) by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4373 +* Fixed Teachable Learnset helper crashing in some environments by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4389 + +## ✨ Feature Branches ✨ +### ***TheXaman's Debug Menu***: +#### Fixed +* Fixed compile issue when disabling Debug Menu by @damon-murdoch in https://github.com/rh-hideout/pokeemerald-expansion/pull/4372 +### ***TheXaman's HGSS Pokédex Plus***: +#### Changed +* Male icons and front pics are now the default by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4390 +#### Fixed +* Fixed showing graphical errors for icons by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4390 +* Fixed disabled forms appearing in form list by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4395 + +## 🐉 Pokémon 🐉 +### Added +* Added missing Pecharunt sprite [from PokéCommunity](https://www.pokecommunity.com/threads/ds-style-gen-vii-and-beyond-pok%C3%A9mon-sprite-repository-in-64x64.368703/post-10814369) by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4324 +* Added missing icons for multiple Pokémon by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/4290 + * Archaludon + * Partner Eevee + * Gouging Fire + * Iron Boulder + * Iron Crown + * Cornerstone Ogerpon + * Hearthflame Ogerpon + * Wellspring Ogerpon + * Pecharunt + * Partner Pikachu + * Raging Bolt + * Terapagos (all forms) + * Bloodmoon Ursaluna +### Changed +* Updated almost all Gen 9 icon sprites to cleaner ones by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/4290 + * Original Source (there were some tweaks): https://www.deviantart.com/ezerart/art/Pokemon-Gen-9-Icon-sprites-3DS-Style-944211258 + * GBA Pal sprites source: https://whackahack.com/foro/threads/9-gen-sprites.67492/page-46#post-493662 + * Further tweaks were made after that. +### Fixed +* Fixed Gengar's missing cries by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4385 +* Fixed silent Klefki cry by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4392 + +## ⚔️ Battle General ⚔️ ## +### Fixed +* Level Cap issues + * Fixed Soft Level Caps not properly working by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4327 + * Fixed issue that caused Level Caps to give 0 Exp when below the cap and `B_LEVEL_CAP_EXP_UP` set to `FALSE` by @ravepossum in https://github.com/rh-hideout/pokeemerald-expansion/pull/4305 +* Fixed graphical bug in Battle Arena windows by @Bassoonian and @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/4307 +* Fixed Totem Boosts not triggering by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4328 +* Fixed Trainer Slide message for Low HP appearing when the HP was above 25% HP instead of below by @MelonSpeedruns and @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4353 +* Fixed Pokémon Mega Evolving/Gigantamaxing/Fusing into `SPECIES_NONE` when the respective form toggles are set to `FALSE` by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4395 + +## 🤹 Moves 🤹 +### Fixed +* Fixed Z-Mirror Move's base power being set to 0 instead of the mirrored move's base power by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/4308 +* Fixed Searing Sunraze Smash, Menacing Moonraze Maelstrom and Light That Burns The Sky not bypassing abilities by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4360 +* Fixed multiple Future Sight issues by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4350 + * Fixed Future Sight using the active Pokémon's stats if the original user switches out. + * Fixed Future Sight not being boosted by the user's item when the user is active when the move hits. + * Fixed Future Sight not failing when the target of the attack faints before it hits. +* Fixed Belch not being usable even if a berry was eating via Stuff Cheeks by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4376 +## 🎭 Abilities 🎭 +### Added +* Added missing Disguise Gen8+ HP loss behavior by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4360 +### Fixed +* Fixed No Guard checking the wrong battler by @GraionDilach in https://github.com/rh-hideout/pokeemerald-expansion/pull/4320 +* Fixed Intimidate's ability pop up appearing even when `B_ABILITY_POP_UP` is set to `FALSE` by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4339 +* Fixed Guts preventing Frostbite's Sp. Attack reduction by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4351 +* Fixed Iron Barbs/Rough Skin and confusion self-damage breaking Disguise by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4360 +* Fixed Gulp Missile not changing Cramorant's form when Dive is triggered in a single turn using Power Herb by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4371 +* Fixed Cud Chew showing its ability pop up but not triggering its berry again by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4379 +* Fixed Ability flags by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4381 + * Gulp Missle can't be copied. + * Commander can't be supressed. + +## 🧶 Items 🧶 +### Fixed +* Fixed multiple White Herb Known issues by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/4258 + * Fixed White Herb not activating after Intimidade. + * Fixed White Herb not activating after all hits of a multi-hit move. + * Fixed White Herb activating when Knocked Off on the same turn as the lowering of the stat (eg. via Weak Armor) + * Fixed White Herb activating even if Magician steals it + * Fixed White Herb activating before Defiant and Competitive. +* Fixed Protective Pads ignoring Fluffy by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4340 +* Fixed Ability Shield not preventing Neutralizing Gas from supressing the holder's ability by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4391 + +## 🤖 Battle AI 🤖 +### Fixed +* Fixed AI not considering Earth Eater by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4352 +* Fixed AI not considering Memento an effect that reduces stats by adding it to `IsStatLoweringEffect` by @PCG06 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4386 + +## 🧹 Other Cleanup 🧹 +### Added +* Clarify in `README.md` to not use the "Download ZIP" option by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4336 +### Fixed +* Fixed formatting of plate items in type table by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4318 +* Fixed style of some bit definitions by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4319 + +## 🧪 Test Runner 🧪 +### Added +* Added missing Defiant tests by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4331 +* Added missing parametrized Gastro Acid tests by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4381 +* Added missing parametrized Role Play tests by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4381 + +## 📦 Pret merges 📦 +* Pret merge (2024/03/24) by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4304 + * Simplify weirdly matching division/substraction code by @DizzyEggg in https://github.com/pret/pokeemerald/pull/1982 + * Document camera sprite functions by @GriffinRichards in https://github.com/pret/pokeemerald/pull/1961 + * Renamed "fateful encounter" commands for consistency reasons by @LOuroboros in https://github.com/pret/pokeemerald/pull/1983 +* Mid-April pret merge (2024/04/12) by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4380 + * Incorporated @ghoulslash's [Surfing Dismount graphical fix](https://github.com/pret/pokeemerald/wiki/Surfing-Dismount-Ground-Effects) by @pkmnsnfrn in https://github.com/pret/pokeemerald/pull/1985 + * Updated value of `gMain.inBattle` at `OpponentHandleEndLinkBattle` by @LOuroboros in https://github.com/pret/pokeemerald/pull/1986 + * Added fix to Keep the Camera from Making Waves by @pkmnsnfrn in https://github.com/pret/pokeemerald/pull/1987 + + +## New Contributors +* @skolgrahd made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/4382 + +**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.8.1...expansion/1.8.2 + + diff --git a/docs/changelogs/template.md b/docs/changelogs/template.md index 57edc6ec6a..6d1ce784a2 100644 --- a/docs/changelogs/template.md +++ b/docs/changelogs/template.md @@ -9,6 +9,9 @@ ## 🌋 *IMPORTANT CHANGES* 🌋 * We deleted the whole repo LOL by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3367 +## 💥 *Softlock/Crash fixes* 💥 +* N/A + ## 🧬 General 🧬 ### Added * N/A @@ -18,11 +21,33 @@ * N/A ## ✨ Feature Branches ✨ -### Added +### ***TheXaman's Debug Menu***: +#### Added * N/A -### Changed +#### Changed * N/A -### Fixed +#### Fixed +* N/A +### ***TheXaman's HGSS Pokédex Plus***: +#### Added +* N/A +#### Changed +* N/A +#### Fixed +* N/A +### ***SBird/Karathan's Dynamic Multichoices***: +#### Added +* N/A +#### Changed +* N/A +#### Fixed +* N/A +### ***ghoulslash's Saveblock Cleansing***: +#### Added +* N/A +#### Changed +* N/A +#### Fixed * N/A ## 🐉 Pokémon 🐉 diff --git a/gflib/string_util.c b/gflib/string_util.c index 17b055ad0a..6720299a82 100644 --- a/gflib/string_util.c +++ b/gflib/string_util.c @@ -823,7 +823,7 @@ void ConvertInternationalString(u8 *s, u8 language) i--; - while (i != (u8)-1) + while (i != -1) { s[i + 2] = s[i]; i--; diff --git a/graphics/battle_interface/status.png b/graphics/battle_interface/status.png index 0b212907e5..ceb39fb777 100644 Binary files a/graphics/battle_interface/status.png and b/graphics/battle_interface/status.png differ diff --git a/graphics/battle_interface/status2.png b/graphics/battle_interface/status2.png index 5d7f6459be..ecb72c52de 100644 Binary files a/graphics/battle_interface/status2.png and b/graphics/battle_interface/status2.png differ diff --git a/graphics/battle_interface/status3.png b/graphics/battle_interface/status3.png index 7cc8cd56dc..369564815f 100644 Binary files a/graphics/battle_interface/status3.png and b/graphics/battle_interface/status3.png differ diff --git a/graphics/battle_interface/status4.png b/graphics/battle_interface/status4.png index c5ab2c5e11..119d4f4aa7 100644 Binary files a/graphics/battle_interface/status4.png and b/graphics/battle_interface/status4.png differ diff --git a/graphics/interface/status_icons.png b/graphics/interface/status_icons.png index f93406cfd1..cef7119a40 100644 Binary files a/graphics/interface/status_icons.png and b/graphics/interface/status_icons.png differ diff --git a/graphics/pokemon/annihilape/icon.png b/graphics/pokemon/annihilape/icon.png index 561a4afedd..e45f7583cb 100755 Binary files a/graphics/pokemon/annihilape/icon.png and b/graphics/pokemon/annihilape/icon.png differ diff --git a/graphics/pokemon/arboliva/back.png b/graphics/pokemon/arboliva/back.png index a1383390e1..e767299fba 100644 Binary files a/graphics/pokemon/arboliva/back.png and b/graphics/pokemon/arboliva/back.png differ diff --git a/graphics/pokemon/arboliva/front.png b/graphics/pokemon/arboliva/front.png index 13521182f1..37a208c343 100644 Binary files a/graphics/pokemon/arboliva/front.png and b/graphics/pokemon/arboliva/front.png differ diff --git a/graphics/pokemon/arboliva/icon.png b/graphics/pokemon/arboliva/icon.png index 039efb5489..07f763a941 100755 Binary files a/graphics/pokemon/arboliva/icon.png and b/graphics/pokemon/arboliva/icon.png differ diff --git a/graphics/pokemon/arboliva/normal.pal b/graphics/pokemon/arboliva/normal.pal index c343903ef1..0ca85b2836 100644 --- a/graphics/pokemon/arboliva/normal.pal +++ b/graphics/pokemon/arboliva/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -152 208 160 -0 128 32 -152 224 56 -0 56 16 -0 200 32 -0 0 0 -248 248 240 -184 192 168 -72 96 72 -224 128 72 -192 72 40 -104 32 56 -160 56 80 -56 8 24 -80 32 24 -0 0 0 +154 212 167 +58 131 45 +28 60 24 +166 238 83 +155 232 78 +8 8 8 +96 203 52 +95 32 55 +52 11 24 +141 57 79 +253 255 244 +82 97 77 +191 195 175 +207 132 80 +171 78 49 +82 40 28 diff --git a/graphics/pokemon/arboliva/shiny.pal b/graphics/pokemon/arboliva/shiny.pal index 796aeec5be..b6efee72c7 100644 --- a/graphics/pokemon/arboliva/shiny.pal +++ b/graphics/pokemon/arboliva/shiny.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -152 208 160 -8 48 16 -112 144 64 -0 56 16 -24 120 40 -0 0 0 -248 248 240 -184 192 168 -72 96 72 -200 112 64 -168 64 40 -56 16 24 -104 32 48 -56 8 24 -80 32 24 -0 0 0 +154 212 167 +36 97 36 +28 60 24 +166 238 83 +68 194 45 +8 8 8 +40 142 53 +39 31 50 +13 14 26 +65 53 83 +251 255 179 +117 115 75 +201 190 133 +196 158 83 +156 118 52 +82 40 28 diff --git a/graphics/pokemon/arcanine/hisuian/icon.png b/graphics/pokemon/arcanine/hisuian/icon.png index 9fe9007929..215b8d8d6e 100644 Binary files a/graphics/pokemon/arcanine/hisuian/icon.png and b/graphics/pokemon/arcanine/hisuian/icon.png differ diff --git a/graphics/pokemon/arceus/bug/icon.png b/graphics/pokemon/arceus/bug/icon.png new file mode 100644 index 0000000000..7da8ef6195 Binary files /dev/null and b/graphics/pokemon/arceus/bug/icon.png differ diff --git a/graphics/pokemon/arceus/dark/icon.png b/graphics/pokemon/arceus/dark/icon.png new file mode 100644 index 0000000000..60e728ce8a Binary files /dev/null and b/graphics/pokemon/arceus/dark/icon.png differ diff --git a/graphics/pokemon/arceus/dragon/icon.png b/graphics/pokemon/arceus/dragon/icon.png new file mode 100644 index 0000000000..a8265e3c84 Binary files /dev/null and b/graphics/pokemon/arceus/dragon/icon.png differ diff --git a/graphics/pokemon/arceus/electric/icon.png b/graphics/pokemon/arceus/electric/icon.png new file mode 100644 index 0000000000..617b1e1113 Binary files /dev/null and b/graphics/pokemon/arceus/electric/icon.png differ diff --git a/graphics/pokemon/arceus/fairy/icon.png b/graphics/pokemon/arceus/fairy/icon.png new file mode 100644 index 0000000000..3a9fbdfbd4 Binary files /dev/null and b/graphics/pokemon/arceus/fairy/icon.png differ diff --git a/graphics/pokemon/arceus/fighting/icon.png b/graphics/pokemon/arceus/fighting/icon.png new file mode 100644 index 0000000000..e4ec6068b2 Binary files /dev/null and b/graphics/pokemon/arceus/fighting/icon.png differ diff --git a/graphics/pokemon/arceus/fire/icon.png b/graphics/pokemon/arceus/fire/icon.png new file mode 100644 index 0000000000..4c67343bb6 Binary files /dev/null and b/graphics/pokemon/arceus/fire/icon.png differ diff --git a/graphics/pokemon/arceus/flying/icon.png b/graphics/pokemon/arceus/flying/icon.png new file mode 100644 index 0000000000..c882bc9dfb Binary files /dev/null and b/graphics/pokemon/arceus/flying/icon.png differ diff --git a/graphics/pokemon/arceus/ghost/icon.png b/graphics/pokemon/arceus/ghost/icon.png new file mode 100644 index 0000000000..1e9163e9f5 Binary files /dev/null and b/graphics/pokemon/arceus/ghost/icon.png differ diff --git a/graphics/pokemon/arceus/grass/icon.png b/graphics/pokemon/arceus/grass/icon.png new file mode 100644 index 0000000000..e2c72dd3b6 Binary files /dev/null and b/graphics/pokemon/arceus/grass/icon.png differ diff --git a/graphics/pokemon/arceus/ground/icon.png b/graphics/pokemon/arceus/ground/icon.png new file mode 100644 index 0000000000..dd02c5c191 Binary files /dev/null and b/graphics/pokemon/arceus/ground/icon.png differ diff --git a/graphics/pokemon/arceus/ice/icon.png b/graphics/pokemon/arceus/ice/icon.png new file mode 100644 index 0000000000..7a63a21824 Binary files /dev/null and b/graphics/pokemon/arceus/ice/icon.png differ diff --git a/graphics/pokemon/arceus/poison/icon.png b/graphics/pokemon/arceus/poison/icon.png new file mode 100644 index 0000000000..32277ba772 Binary files /dev/null and b/graphics/pokemon/arceus/poison/icon.png differ diff --git a/graphics/pokemon/arceus/psychic/icon.png b/graphics/pokemon/arceus/psychic/icon.png new file mode 100644 index 0000000000..0c556490e3 Binary files /dev/null and b/graphics/pokemon/arceus/psychic/icon.png differ diff --git a/graphics/pokemon/arceus/rock/icon.png b/graphics/pokemon/arceus/rock/icon.png new file mode 100644 index 0000000000..91d52e1957 Binary files /dev/null and b/graphics/pokemon/arceus/rock/icon.png differ diff --git a/graphics/pokemon/arceus/steel/icon.png b/graphics/pokemon/arceus/steel/icon.png new file mode 100644 index 0000000000..4013495e0d Binary files /dev/null and b/graphics/pokemon/arceus/steel/icon.png differ diff --git a/graphics/pokemon/arceus/water/icon.png b/graphics/pokemon/arceus/water/icon.png new file mode 100644 index 0000000000..546df7ecd1 Binary files /dev/null and b/graphics/pokemon/arceus/water/icon.png differ diff --git a/graphics/pokemon/archaludon/icon.png b/graphics/pokemon/archaludon/icon.png new file mode 100644 index 0000000000..9ad59de8fe Binary files /dev/null and b/graphics/pokemon/archaludon/icon.png differ diff --git a/graphics/pokemon/arctibax/icon.png b/graphics/pokemon/arctibax/icon.png index cd7aec243e..f15a4e3545 100755 Binary files a/graphics/pokemon/arctibax/icon.png and b/graphics/pokemon/arctibax/icon.png differ diff --git a/graphics/pokemon/armarouge/icon.png b/graphics/pokemon/armarouge/icon.png index 2a348cab51..5cf958e578 100755 Binary files a/graphics/pokemon/armarouge/icon.png and b/graphics/pokemon/armarouge/icon.png differ diff --git a/graphics/pokemon/basculegion/female/icon.png b/graphics/pokemon/basculegion/female/icon.png index fb85ca6c0c..4a0e539212 100644 Binary files a/graphics/pokemon/basculegion/female/icon.png and b/graphics/pokemon/basculegion/female/icon.png differ diff --git a/graphics/pokemon/basculegion/icon.png b/graphics/pokemon/basculegion/icon.png index 579a83d550..6226cf6a59 100644 Binary files a/graphics/pokemon/basculegion/icon.png and b/graphics/pokemon/basculegion/icon.png differ diff --git a/graphics/pokemon/basculin/white_striped/icon.png b/graphics/pokemon/basculin/white_striped/icon.png index a69c4e51a8..bc7287fd62 100644 Binary files a/graphics/pokemon/basculin/white_striped/icon.png and b/graphics/pokemon/basculin/white_striped/icon.png differ diff --git a/graphics/pokemon/baxcalibur/icon.png b/graphics/pokemon/baxcalibur/icon.png index befc75d3c8..e5386582f0 100755 Binary files a/graphics/pokemon/baxcalibur/icon.png and b/graphics/pokemon/baxcalibur/icon.png differ diff --git a/graphics/pokemon/bellibolt/icon.png b/graphics/pokemon/bellibolt/icon.png index 28492e341d..5f2a98c8ef 100755 Binary files a/graphics/pokemon/bellibolt/icon.png and b/graphics/pokemon/bellibolt/icon.png differ diff --git a/graphics/pokemon/bombirdier/icon.png b/graphics/pokemon/bombirdier/icon.png index 06bcf71c86..45e4ac91df 100755 Binary files a/graphics/pokemon/bombirdier/icon.png and b/graphics/pokemon/bombirdier/icon.png differ diff --git a/graphics/pokemon/brambleghast/icon.png b/graphics/pokemon/brambleghast/icon.png index 645ed7014d..ca6a29df23 100755 Binary files a/graphics/pokemon/brambleghast/icon.png and b/graphics/pokemon/brambleghast/icon.png differ diff --git a/graphics/pokemon/bramblin/icon.png b/graphics/pokemon/bramblin/icon.png index 9833e5007b..64fa8677b3 100755 Binary files a/graphics/pokemon/bramblin/icon.png and b/graphics/pokemon/bramblin/icon.png differ diff --git a/graphics/pokemon/braviary/hisuian/icon.png b/graphics/pokemon/braviary/hisuian/icon.png index c2aa449d95..85eb4decd4 100755 Binary files a/graphics/pokemon/braviary/hisuian/icon.png and b/graphics/pokemon/braviary/hisuian/icon.png differ diff --git a/graphics/pokemon/brute_bonnet/icon.png b/graphics/pokemon/brute_bonnet/icon.png index 052517c12d..82161e124d 100755 Binary files a/graphics/pokemon/brute_bonnet/icon.png and b/graphics/pokemon/brute_bonnet/icon.png differ diff --git a/graphics/pokemon/capsakid/icon.png b/graphics/pokemon/capsakid/icon.png index ede6dc9c0c..c10dfa5a9e 100755 Binary files a/graphics/pokemon/capsakid/icon.png and b/graphics/pokemon/capsakid/icon.png differ diff --git a/graphics/pokemon/ceruledge/icon.png b/graphics/pokemon/ceruledge/icon.png index 329d5ede31..4107555cd4 100755 Binary files a/graphics/pokemon/ceruledge/icon.png and b/graphics/pokemon/ceruledge/icon.png differ diff --git a/graphics/pokemon/cetitan/icon.png b/graphics/pokemon/cetitan/icon.png index 2a0db87041..078ee54a48 100755 Binary files a/graphics/pokemon/cetitan/icon.png and b/graphics/pokemon/cetitan/icon.png differ diff --git a/graphics/pokemon/cetoddle/icon.png b/graphics/pokemon/cetoddle/icon.png index b123bf1f81..b01b85d258 100755 Binary files a/graphics/pokemon/cetoddle/icon.png and b/graphics/pokemon/cetoddle/icon.png differ diff --git a/graphics/pokemon/charcadet/back.png b/graphics/pokemon/charcadet/back.png index 01ead6b281..b064e26a76 100644 Binary files a/graphics/pokemon/charcadet/back.png and b/graphics/pokemon/charcadet/back.png differ diff --git a/graphics/pokemon/charcadet/front.png b/graphics/pokemon/charcadet/front.png index c90c6a2db0..b00dc06924 100644 Binary files a/graphics/pokemon/charcadet/front.png and b/graphics/pokemon/charcadet/front.png differ diff --git a/graphics/pokemon/charcadet/icon.png b/graphics/pokemon/charcadet/icon.png index 50d9e46d88..cddec8626b 100755 Binary files a/graphics/pokemon/charcadet/icon.png and b/graphics/pokemon/charcadet/icon.png differ diff --git a/graphics/pokemon/charcadet/normal.pal b/graphics/pokemon/charcadet/normal.pal index eae60870da..8d321cb3f2 100644 --- a/graphics/pokemon/charcadet/normal.pal +++ b/graphics/pokemon/charcadet/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -153 210 164 -179 54 48 -255 119 178 -238 13 35 -128 19 19 -15 15 15 -70 68 68 -99 97 97 -243 143 7 -27 33 35 -199 117 5 -255 255 255 -243 189 3 -14 64 173 -238 13 36 -16 88 254 +154 212 167 +96 65 165 +107 97 248 +216 121 202 +88 16 26 +144 36 55 +218 53 65 +8 8 8 +94 85 81 +51 49 49 +222 125 33 +22 28 32 +242 178 37 +255 18 18 +252 252 252 +240 218 1 diff --git a/graphics/pokemon/charcadet/shiny.pal b/graphics/pokemon/charcadet/shiny.pal index 30c3010bd7..08a7479a83 100644 --- a/graphics/pokemon/charcadet/shiny.pal +++ b/graphics/pokemon/charcadet/shiny.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -153 210 164 -179 54 48 -255 119 178 -238 13 35 -128 19 19 -15 15 15 -70 68 68 -99 97 97 -243 143 7 -27 33 35 -199 117 5 -255 255 255 -33 252 217 -14 64 173 -33 174 217 -16 88 254 +154 212 167 +96 65 165 +107 97 248 +216 121 202 +88 16 26 +144 36 55 +218 53 65 +8 8 8 +94 85 81 +51 49 49 +222 125 33 +22 28 32 +242 178 37 +33 148 236 +252 252 252 +115 214 234 diff --git a/graphics/pokemon/chi_yu/icon.png b/graphics/pokemon/chi_yu/icon.png index 29a9114af0..1aeb8e6c5b 100755 Binary files a/graphics/pokemon/chi_yu/icon.png and b/graphics/pokemon/chi_yu/icon.png differ diff --git a/graphics/pokemon/chien_pao/back.png b/graphics/pokemon/chien_pao/back.png index 045e2c214a..5c641437a9 100644 Binary files a/graphics/pokemon/chien_pao/back.png and b/graphics/pokemon/chien_pao/back.png differ diff --git a/graphics/pokemon/chien_pao/front.png b/graphics/pokemon/chien_pao/front.png index b871128b41..b942da0ac1 100644 Binary files a/graphics/pokemon/chien_pao/front.png and b/graphics/pokemon/chien_pao/front.png differ diff --git a/graphics/pokemon/chien_pao/icon.png b/graphics/pokemon/chien_pao/icon.png index eaad400548..d2626c6554 100755 Binary files a/graphics/pokemon/chien_pao/icon.png and b/graphics/pokemon/chien_pao/icon.png differ diff --git a/graphics/pokemon/chien_pao/normal.pal b/graphics/pokemon/chien_pao/normal.pal index e5dca7fc5c..ae9d766071 100644 --- a/graphics/pokemon/chien_pao/normal.pal +++ b/graphics/pokemon/chien_pao/normal.pal @@ -1,19 +1,17 @@ JASC-PAL 0100 -16 -156 210 164 -114 89 64 -40 56 56 -248 248 248 -185 198 216 -227 227 227 -168 168 168 -0 0 0 -80 96 96 -84 84 84 -112 128 128 -122 122 122 -168 208 248 -248 248 248 -112 176 232 -141 152 168 +14 +154 212 167 +92 113 157 +71 103 116 +229 244 250 +165 219 239 +247 247 247 +197 185 192 +133 141 151 +8 8 8 +127 180 198 +73 143 240 +69 82 97 +27 36 46 +76 186 190 diff --git a/graphics/pokemon/chien_pao/shiny.pal b/graphics/pokemon/chien_pao/shiny.pal index a0e08cb821..c0279e59f1 100644 --- a/graphics/pokemon/chien_pao/shiny.pal +++ b/graphics/pokemon/chien_pao/shiny.pal @@ -1,19 +1,17 @@ JASC-PAL 0100 -16 -156 210 164 -114 89 64 -40 56 56 -187 155 118 -135 102 64 -227 227 227 -168 168 168 -0 0 0 -80 96 96 -84 84 84 -112 128 128 -122 122 122 -168 208 248 -248 248 248 -112 176 232 -103 69 29 +14 +154 212 167 +116 129 139 +33 27 22 +229 244 250 +235 240 244 +129 115 100 +92 77 71 +60 48 48 +8 8 8 +178 184 190 +73 143 240 +69 82 97 +27 36 46 +76 186 190 diff --git a/graphics/pokemon/clodsire/icon.png b/graphics/pokemon/clodsire/icon.png index bcc0e34e50..277d20250b 100755 Binary files a/graphics/pokemon/clodsire/icon.png and b/graphics/pokemon/clodsire/icon.png differ diff --git a/graphics/pokemon/crocalor/icon.png b/graphics/pokemon/crocalor/icon.png index dea043b25f..615e2e6de0 100755 Binary files a/graphics/pokemon/crocalor/icon.png and b/graphics/pokemon/crocalor/icon.png differ diff --git a/graphics/pokemon/cyclizar/icon.png b/graphics/pokemon/cyclizar/icon.png index 64eba81963..cac59de320 100755 Binary files a/graphics/pokemon/cyclizar/icon.png and b/graphics/pokemon/cyclizar/icon.png differ diff --git a/graphics/pokemon/dachsbun/icon.png b/graphics/pokemon/dachsbun/icon.png index fe1caf375d..cb05cd3be6 100644 Binary files a/graphics/pokemon/dachsbun/icon.png and b/graphics/pokemon/dachsbun/icon.png differ diff --git a/graphics/pokemon/decidueye/hisuian/icon.png b/graphics/pokemon/decidueye/hisuian/icon.png index 997071396f..bd490472d2 100755 Binary files a/graphics/pokemon/decidueye/hisuian/icon.png and b/graphics/pokemon/decidueye/hisuian/icon.png differ diff --git a/graphics/pokemon/dipplin/icon.png b/graphics/pokemon/dipplin/icon.png index 5fab863bd9..612ac77fcf 100644 Binary files a/graphics/pokemon/dipplin/icon.png and b/graphics/pokemon/dipplin/icon.png differ diff --git a/graphics/pokemon/dolliv/back.png b/graphics/pokemon/dolliv/back.png index 9a179e325e..4b46b21557 100644 Binary files a/graphics/pokemon/dolliv/back.png and b/graphics/pokemon/dolliv/back.png differ diff --git a/graphics/pokemon/dolliv/front.png b/graphics/pokemon/dolliv/front.png index 0d707db8df..332b88627c 100644 Binary files a/graphics/pokemon/dolliv/front.png and b/graphics/pokemon/dolliv/front.png differ diff --git a/graphics/pokemon/dolliv/icon.png b/graphics/pokemon/dolliv/icon.png index 932b6e62eb..bc2867dc75 100755 Binary files a/graphics/pokemon/dolliv/icon.png and b/graphics/pokemon/dolliv/icon.png differ diff --git a/graphics/pokemon/dolliv/normal.pal b/graphics/pokemon/dolliv/normal.pal index f2e41f0ac7..1b6033b74a 100644 --- a/graphics/pokemon/dolliv/normal.pal +++ b/graphics/pokemon/dolliv/normal.pal @@ -1,14 +1,18 @@ JASC-PAL 0100 -11 -153 210 164 -16 16 16 -47 108 46 -118 94 33 -132 193 54 -222 214 109 -182 165 81 -100 153 64 -205 193 124 -255 250 185 -242 242 242 +15 +154 212 167 +52 99 44 +154 225 71 +28 60 24 +83 112 41 +192 210 61 +144 151 63 +101 202 55 +8 8 8 +67 148 52 +186 205 133 +251 255 218 +82 97 77 +255 255 255 +191 195 175 diff --git a/graphics/pokemon/dolliv/shiny.pal b/graphics/pokemon/dolliv/shiny.pal index d462805715..c533b52201 100644 --- a/graphics/pokemon/dolliv/shiny.pal +++ b/graphics/pokemon/dolliv/shiny.pal @@ -1,14 +1,18 @@ JASC-PAL 0100 -11 -153 210 164 -16 16 16 -45 82 12 -40 25 54 -102 209 86 -89 77 95 -57 45 65 -91 160 71 -198 201 130 -251 255 178 -242 242 242 +15 +154 212 167 +27 73 19 +38 172 42 +28 60 24 +13 14 26 +65 53 83 +39 31 50 +40 142 53 +8 8 8 +36 97 36 +186 205 133 +251 255 218 +82 97 77 +255 255 255 +191 195 175 diff --git a/graphics/pokemon/dondozo/icon.png b/graphics/pokemon/dondozo/icon.png index 066128e0d4..a704280ec0 100755 Binary files a/graphics/pokemon/dondozo/icon.png and b/graphics/pokemon/dondozo/icon.png differ diff --git a/graphics/pokemon/dudunsparce/icon.png b/graphics/pokemon/dudunsparce/icon.png index cf9c3501fe..ed9c479669 100755 Binary files a/graphics/pokemon/dudunsparce/icon.png and b/graphics/pokemon/dudunsparce/icon.png differ diff --git a/graphics/pokemon/eevee/partner/icon.png b/graphics/pokemon/eevee/partner/icon.png new file mode 100644 index 0000000000..b202c18862 Binary files /dev/null and b/graphics/pokemon/eevee/partner/icon.png differ diff --git a/graphics/pokemon/eevee/partner/iconf.png b/graphics/pokemon/eevee/partner/iconf.png new file mode 100644 index 0000000000..c82f753f32 Binary files /dev/null and b/graphics/pokemon/eevee/partner/iconf.png differ diff --git a/graphics/pokemon/electrode/hisuian/icon.png b/graphics/pokemon/electrode/hisuian/icon.png index d624e246cb..76efc29827 100644 Binary files a/graphics/pokemon/electrode/hisuian/icon.png and b/graphics/pokemon/electrode/hisuian/icon.png differ diff --git a/graphics/pokemon/enamorus/icon.png b/graphics/pokemon/enamorus/icon.png index c127c07345..3c808f30b1 100644 Binary files a/graphics/pokemon/enamorus/icon.png and b/graphics/pokemon/enamorus/icon.png differ diff --git a/graphics/pokemon/enamorus/therian/icon.png b/graphics/pokemon/enamorus/therian/icon.png index dfca5087fe..fcaf4f41d3 100644 Binary files a/graphics/pokemon/enamorus/therian/icon.png and b/graphics/pokemon/enamorus/therian/icon.png differ diff --git a/graphics/pokemon/espathra/icon.png b/graphics/pokemon/espathra/icon.png index cdca057311..12039cb258 100755 Binary files a/graphics/pokemon/espathra/icon.png and b/graphics/pokemon/espathra/icon.png differ diff --git a/graphics/pokemon/farigiraf/icon.png b/graphics/pokemon/farigiraf/icon.png index 0ef8b01ae8..b6095a9e6c 100755 Binary files a/graphics/pokemon/farigiraf/icon.png and b/graphics/pokemon/farigiraf/icon.png differ diff --git a/graphics/pokemon/fezandipiti/icon.png b/graphics/pokemon/fezandipiti/icon.png index 1bd6d0bf31..eb150e6db9 100644 Binary files a/graphics/pokemon/fezandipiti/icon.png and b/graphics/pokemon/fezandipiti/icon.png differ diff --git a/graphics/pokemon/fidough/icon.png b/graphics/pokemon/fidough/icon.png index 2a6c4b15f5..eea5ee85e3 100755 Binary files a/graphics/pokemon/fidough/icon.png and b/graphics/pokemon/fidough/icon.png differ diff --git a/graphics/pokemon/finizen/icon.png b/graphics/pokemon/finizen/icon.png index b82b4c673f..b689ed7879 100755 Binary files a/graphics/pokemon/finizen/icon.png and b/graphics/pokemon/finizen/icon.png differ diff --git a/graphics/pokemon/flamigo/icon.png b/graphics/pokemon/flamigo/icon.png index 0f0381579c..f1970373f4 100755 Binary files a/graphics/pokemon/flamigo/icon.png and b/graphics/pokemon/flamigo/icon.png differ diff --git a/graphics/pokemon/flittle/icon.png b/graphics/pokemon/flittle/icon.png index f588d537ef..1f96368e89 100755 Binary files a/graphics/pokemon/flittle/icon.png and b/graphics/pokemon/flittle/icon.png differ diff --git a/graphics/pokemon/floragato/icon.png b/graphics/pokemon/floragato/icon.png index aaf9a3b10d..448ee0d191 100644 Binary files a/graphics/pokemon/floragato/icon.png and b/graphics/pokemon/floragato/icon.png differ diff --git a/graphics/pokemon/flutter_mane/icon.png b/graphics/pokemon/flutter_mane/icon.png index 2b65fc048f..ab756908b9 100755 Binary files a/graphics/pokemon/flutter_mane/icon.png and b/graphics/pokemon/flutter_mane/icon.png differ diff --git a/graphics/pokemon/frigibax/icon.png b/graphics/pokemon/frigibax/icon.png index b50575cd47..e248df892b 100755 Binary files a/graphics/pokemon/frigibax/icon.png and b/graphics/pokemon/frigibax/icon.png differ diff --git a/graphics/pokemon/fuecoco/icon.png b/graphics/pokemon/fuecoco/icon.png index 923e5f03fd..31bcf19b0f 100755 Binary files a/graphics/pokemon/fuecoco/icon.png and b/graphics/pokemon/fuecoco/icon.png differ diff --git a/graphics/pokemon/garganacl/icon.png b/graphics/pokemon/garganacl/icon.png index bc2d038478..e9a0245277 100755 Binary files a/graphics/pokemon/garganacl/icon.png and b/graphics/pokemon/garganacl/icon.png differ diff --git a/graphics/pokemon/gholdengo/icon.png b/graphics/pokemon/gholdengo/icon.png index 99d0e122f2..a49e6561a9 100755 Binary files a/graphics/pokemon/gholdengo/icon.png and b/graphics/pokemon/gholdengo/icon.png differ diff --git a/graphics/pokemon/gimmighoul/icon.png b/graphics/pokemon/gimmighoul/icon.png index 9191406326..79167add31 100644 Binary files a/graphics/pokemon/gimmighoul/icon.png and b/graphics/pokemon/gimmighoul/icon.png differ diff --git a/graphics/pokemon/gimmighoul/roaming/icon.png b/graphics/pokemon/gimmighoul/roaming/icon.png index e803b52554..13ec7881b5 100644 Binary files a/graphics/pokemon/gimmighoul/roaming/icon.png and b/graphics/pokemon/gimmighoul/roaming/icon.png differ diff --git a/graphics/pokemon/glimmet/icon.png b/graphics/pokemon/glimmet/icon.png index 1bc74def32..1b6e11e218 100755 Binary files a/graphics/pokemon/glimmet/icon.png and b/graphics/pokemon/glimmet/icon.png differ diff --git a/graphics/pokemon/glimmora/icon.png b/graphics/pokemon/glimmora/icon.png index 12e50f0cbc..7ea164f38a 100755 Binary files a/graphics/pokemon/glimmora/icon.png and b/graphics/pokemon/glimmora/icon.png differ diff --git a/graphics/pokemon/goodra/hisuian/icon.png b/graphics/pokemon/goodra/hisuian/icon.png index 3216854349..283617c206 100644 Binary files a/graphics/pokemon/goodra/hisuian/icon.png and b/graphics/pokemon/goodra/hisuian/icon.png differ diff --git a/graphics/pokemon/gouging_fire/icon.png b/graphics/pokemon/gouging_fire/icon.png new file mode 100644 index 0000000000..38e429abbf Binary files /dev/null and b/graphics/pokemon/gouging_fire/icon.png differ diff --git a/graphics/pokemon/grafaiai/icon.png b/graphics/pokemon/grafaiai/icon.png index 9e027481aa..3ba6803542 100755 Binary files a/graphics/pokemon/grafaiai/icon.png and b/graphics/pokemon/grafaiai/icon.png differ diff --git a/graphics/pokemon/great_tusk/icon.png b/graphics/pokemon/great_tusk/icon.png index 30384d570d..60bbe9f419 100755 Binary files a/graphics/pokemon/great_tusk/icon.png and b/graphics/pokemon/great_tusk/icon.png differ diff --git a/graphics/pokemon/greavard/icon.png b/graphics/pokemon/greavard/icon.png index a43e9a3875..5d0e27f7b0 100755 Binary files a/graphics/pokemon/greavard/icon.png and b/graphics/pokemon/greavard/icon.png differ diff --git a/graphics/pokemon/growlithe/hisuian/icon.png b/graphics/pokemon/growlithe/hisuian/icon.png index b2b03733f0..71a2ffdbae 100644 Binary files a/graphics/pokemon/growlithe/hisuian/icon.png and b/graphics/pokemon/growlithe/hisuian/icon.png differ diff --git a/graphics/pokemon/houndstone/icon.png b/graphics/pokemon/houndstone/icon.png index 51d26434c8..9777c7b79a 100755 Binary files a/graphics/pokemon/houndstone/icon.png and b/graphics/pokemon/houndstone/icon.png differ diff --git a/graphics/pokemon/hydrapple/icon.png b/graphics/pokemon/hydrapple/icon.png index 352513f998..1d7ce98bc7 100644 Binary files a/graphics/pokemon/hydrapple/icon.png and b/graphics/pokemon/hydrapple/icon.png differ diff --git a/graphics/pokemon/iron_boulder/icon.png b/graphics/pokemon/iron_boulder/icon.png new file mode 100644 index 0000000000..eafb584ccc Binary files /dev/null and b/graphics/pokemon/iron_boulder/icon.png differ diff --git a/graphics/pokemon/iron_bundle/icon.png b/graphics/pokemon/iron_bundle/icon.png index 99b380a543..df537e34d2 100755 Binary files a/graphics/pokemon/iron_bundle/icon.png and b/graphics/pokemon/iron_bundle/icon.png differ diff --git a/graphics/pokemon/iron_crown/icon.png b/graphics/pokemon/iron_crown/icon.png new file mode 100644 index 0000000000..cb127c82df Binary files /dev/null and b/graphics/pokemon/iron_crown/icon.png differ diff --git a/graphics/pokemon/iron_hands/icon.png b/graphics/pokemon/iron_hands/icon.png index d28b62a6d0..5fc933dd96 100755 Binary files a/graphics/pokemon/iron_hands/icon.png and b/graphics/pokemon/iron_hands/icon.png differ diff --git a/graphics/pokemon/iron_jugulis/icon.png b/graphics/pokemon/iron_jugulis/icon.png index 14ae400dfd..c043e15c6c 100755 Binary files a/graphics/pokemon/iron_jugulis/icon.png and b/graphics/pokemon/iron_jugulis/icon.png differ diff --git a/graphics/pokemon/iron_leaves/icon.png b/graphics/pokemon/iron_leaves/icon.png index a5d308e6cb..16eb1d5dc4 100644 Binary files a/graphics/pokemon/iron_leaves/icon.png and b/graphics/pokemon/iron_leaves/icon.png differ diff --git a/graphics/pokemon/iron_moth/icon.png b/graphics/pokemon/iron_moth/icon.png index ac43ad66ea..b42f88fc0b 100755 Binary files a/graphics/pokemon/iron_moth/icon.png and b/graphics/pokemon/iron_moth/icon.png differ diff --git a/graphics/pokemon/iron_thorns/icon.png b/graphics/pokemon/iron_thorns/icon.png index 48391a50c7..2c1e081217 100755 Binary files a/graphics/pokemon/iron_thorns/icon.png and b/graphics/pokemon/iron_thorns/icon.png differ diff --git a/graphics/pokemon/iron_treads/icon.png b/graphics/pokemon/iron_treads/icon.png index a75d7f93c9..25e9038a69 100755 Binary files a/graphics/pokemon/iron_treads/icon.png and b/graphics/pokemon/iron_treads/icon.png differ diff --git a/graphics/pokemon/iron_valiant/icon.png b/graphics/pokemon/iron_valiant/icon.png index c1441e5dd5..2d66aa5aed 100755 Binary files a/graphics/pokemon/iron_valiant/icon.png and b/graphics/pokemon/iron_valiant/icon.png differ diff --git a/graphics/pokemon/kilowattrel/icon.png b/graphics/pokemon/kilowattrel/icon.png index d4e5f7211b..cfa950dd2d 100755 Binary files a/graphics/pokemon/kilowattrel/icon.png and b/graphics/pokemon/kilowattrel/icon.png differ diff --git a/graphics/pokemon/kingambit/icon.png b/graphics/pokemon/kingambit/icon.png index ce85b3c190..c4d91769d9 100755 Binary files a/graphics/pokemon/kingambit/icon.png and b/graphics/pokemon/kingambit/icon.png differ diff --git a/graphics/pokemon/klawf/icon.png b/graphics/pokemon/klawf/icon.png index e7c232f130..6b393ebdfb 100755 Binary files a/graphics/pokemon/klawf/icon.png and b/graphics/pokemon/klawf/icon.png differ diff --git a/graphics/pokemon/kleavor/icon.png b/graphics/pokemon/kleavor/icon.png index 4443cc1433..63d9653597 100644 Binary files a/graphics/pokemon/kleavor/icon.png and b/graphics/pokemon/kleavor/icon.png differ diff --git a/graphics/pokemon/koraidon/icon.png b/graphics/pokemon/koraidon/icon.png index 127a03e5d7..4048255617 100755 Binary files a/graphics/pokemon/koraidon/icon.png and b/graphics/pokemon/koraidon/icon.png differ diff --git a/graphics/pokemon/lechonk/icon.png b/graphics/pokemon/lechonk/icon.png index d368c427be..6123d0773a 100755 Binary files a/graphics/pokemon/lechonk/icon.png and b/graphics/pokemon/lechonk/icon.png differ diff --git a/graphics/pokemon/lilligant/hisuian/icon.png b/graphics/pokemon/lilligant/hisuian/icon.png index c8149843fc..67809d8897 100644 Binary files a/graphics/pokemon/lilligant/hisuian/icon.png and b/graphics/pokemon/lilligant/hisuian/icon.png differ diff --git a/graphics/pokemon/lokix/icon.png b/graphics/pokemon/lokix/icon.png index 205de36a02..e6e944b6b9 100755 Binary files a/graphics/pokemon/lokix/icon.png and b/graphics/pokemon/lokix/icon.png differ diff --git a/graphics/pokemon/mabosstiff/back.png b/graphics/pokemon/mabosstiff/back.png index d572c7cbdb..057fc137a5 100644 Binary files a/graphics/pokemon/mabosstiff/back.png and b/graphics/pokemon/mabosstiff/back.png differ diff --git a/graphics/pokemon/mabosstiff/front.png b/graphics/pokemon/mabosstiff/front.png index cf91e34c29..fd5184debe 100644 Binary files a/graphics/pokemon/mabosstiff/front.png and b/graphics/pokemon/mabosstiff/front.png differ diff --git a/graphics/pokemon/mabosstiff/icon.png b/graphics/pokemon/mabosstiff/icon.png index 3b99df2d4a..e18a9d6c1c 100755 Binary files a/graphics/pokemon/mabosstiff/icon.png and b/graphics/pokemon/mabosstiff/icon.png differ diff --git a/graphics/pokemon/mabosstiff/normal.pal b/graphics/pokemon/mabosstiff/normal.pal index 5c433266d6..141b07deac 100644 --- a/graphics/pokemon/mabosstiff/normal.pal +++ b/graphics/pokemon/mabosstiff/normal.pal @@ -1,19 +1,17 @@ JASC-PAL 0100 -16 -152 208 160 -96 88 96 -48 48 56 -168 168 168 -200 200 200 -120 128 136 +14 +154 212 167 +62 62 53 +185 185 185 +129 121 129 +217 217 217 +17 17 17 +35 35 26 8 8 8 -48 40 40 -64 64 56 -96 80 64 -128 120 104 -248 240 144 -32 24 24 -248 200 128 -248 176 72 -136 96 48 +35 35 35 +96 79 70 +129 113 104 +248 178 70 +70 62 53 +137 104 35 diff --git a/graphics/pokemon/mabosstiff/shiny.pal b/graphics/pokemon/mabosstiff/shiny.pal index a3f922e953..35e7107fbb 100644 --- a/graphics/pokemon/mabosstiff/shiny.pal +++ b/graphics/pokemon/mabosstiff/shiny.pal @@ -1,19 +1,17 @@ JASC-PAL 0100 -16 -152 208 160 -96 88 96 -48 48 56 -168 168 168 -200 200 200 -120 128 136 +14 +154 212 167 +62 62 53 +185 185 185 +129 121 129 +217 217 217 +17 17 17 +35 35 26 8 8 8 -40 40 48 -64 64 56 -104 96 112 -160 144 168 -248 240 144 -32 24 24 -248 200 128 -248 176 72 -136 96 48 +35 35 35 +82 77 115 +127 113 149 +248 178 70 +49 45 70 +137 104 35 diff --git a/graphics/pokemon/maschiff/icon.png b/graphics/pokemon/maschiff/icon.png index f5127dcc42..cb2308d15b 100755 Binary files a/graphics/pokemon/maschiff/icon.png and b/graphics/pokemon/maschiff/icon.png differ diff --git a/graphics/pokemon/maushold/four/icon.png b/graphics/pokemon/maushold/four/icon.png index 97c2d70826..fc6684d61b 100755 Binary files a/graphics/pokemon/maushold/four/icon.png and b/graphics/pokemon/maushold/four/icon.png differ diff --git a/graphics/pokemon/maushold/icon.png b/graphics/pokemon/maushold/icon.png index 728aca58a1..48cb9d2c26 100755 Binary files a/graphics/pokemon/maushold/icon.png and b/graphics/pokemon/maushold/icon.png differ diff --git a/graphics/pokemon/meowscarada/icon.png b/graphics/pokemon/meowscarada/icon.png index 5b79821453..2a6d199d22 100755 Binary files a/graphics/pokemon/meowscarada/icon.png and b/graphics/pokemon/meowscarada/icon.png differ diff --git a/graphics/pokemon/miraidon/icon.png b/graphics/pokemon/miraidon/icon.png index 3ccf056b51..776082feb0 100755 Binary files a/graphics/pokemon/miraidon/icon.png and b/graphics/pokemon/miraidon/icon.png differ diff --git a/graphics/pokemon/munkidori/icon.png b/graphics/pokemon/munkidori/icon.png index 20144ff87e..338d84d3ef 100644 Binary files a/graphics/pokemon/munkidori/icon.png and b/graphics/pokemon/munkidori/icon.png differ diff --git a/graphics/pokemon/nacli/icon.png b/graphics/pokemon/nacli/icon.png index ed0895c1d8..86522af3a1 100755 Binary files a/graphics/pokemon/nacli/icon.png and b/graphics/pokemon/nacli/icon.png differ diff --git a/graphics/pokemon/naclstack/icon.png b/graphics/pokemon/naclstack/icon.png index a536c3818d..133228573b 100755 Binary files a/graphics/pokemon/naclstack/icon.png and b/graphics/pokemon/naclstack/icon.png differ diff --git a/graphics/pokemon/nymble/icon.png b/graphics/pokemon/nymble/icon.png index 791bd0a427..74c4c79b52 100755 Binary files a/graphics/pokemon/nymble/icon.png and b/graphics/pokemon/nymble/icon.png differ diff --git a/graphics/pokemon/ogerpon/cornerstone/icon.png b/graphics/pokemon/ogerpon/cornerstone/icon.png new file mode 100644 index 0000000000..7a8323c815 Binary files /dev/null and b/graphics/pokemon/ogerpon/cornerstone/icon.png differ diff --git a/graphics/pokemon/ogerpon/hearthflame/icon.png b/graphics/pokemon/ogerpon/hearthflame/icon.png new file mode 100644 index 0000000000..108ac492cc Binary files /dev/null and b/graphics/pokemon/ogerpon/hearthflame/icon.png differ diff --git a/graphics/pokemon/ogerpon/icon.png b/graphics/pokemon/ogerpon/icon.png index 65448e8d1d..96f048f15b 100644 Binary files a/graphics/pokemon/ogerpon/icon.png and b/graphics/pokemon/ogerpon/icon.png differ diff --git a/graphics/pokemon/ogerpon/wellspring/icon.png b/graphics/pokemon/ogerpon/wellspring/icon.png new file mode 100644 index 0000000000..0257bc38e9 Binary files /dev/null and b/graphics/pokemon/ogerpon/wellspring/icon.png differ diff --git a/graphics/pokemon/oinkologne/female/icon.png b/graphics/pokemon/oinkologne/female/icon.png index 0acd6e2711..c1b272c73e 100755 Binary files a/graphics/pokemon/oinkologne/female/icon.png and b/graphics/pokemon/oinkologne/female/icon.png differ diff --git a/graphics/pokemon/oinkologne/female/iconTODO.png b/graphics/pokemon/oinkologne/female/iconTODO.png deleted file mode 100755 index 36ce1eb7f8..0000000000 Binary files a/graphics/pokemon/oinkologne/female/iconTODO.png and /dev/null differ diff --git a/graphics/pokemon/oinkologne/icon.png b/graphics/pokemon/oinkologne/icon.png index 0acd6e2711..055bfeab86 100755 Binary files a/graphics/pokemon/oinkologne/icon.png and b/graphics/pokemon/oinkologne/icon.png differ diff --git a/graphics/pokemon/okidogi/icon.png b/graphics/pokemon/okidogi/icon.png index 91984549c3..fd4809f80d 100644 Binary files a/graphics/pokemon/okidogi/icon.png and b/graphics/pokemon/okidogi/icon.png differ diff --git a/graphics/pokemon/orthworm/icon.png b/graphics/pokemon/orthworm/icon.png index 9cb39cc79b..5c4dd54525 100755 Binary files a/graphics/pokemon/orthworm/icon.png and b/graphics/pokemon/orthworm/icon.png differ diff --git a/graphics/pokemon/overqwil/icon.png b/graphics/pokemon/overqwil/icon.png index 661013b728..9af70e8057 100644 Binary files a/graphics/pokemon/overqwil/icon.png and b/graphics/pokemon/overqwil/icon.png differ diff --git a/graphics/pokemon/palafin/hero/icon.png b/graphics/pokemon/palafin/hero/icon.png index 8dd8a11844..8f581581cf 100755 Binary files a/graphics/pokemon/palafin/hero/icon.png and b/graphics/pokemon/palafin/hero/icon.png differ diff --git a/graphics/pokemon/palafin/icon.png b/graphics/pokemon/palafin/icon.png index d24e846fc5..14de30254f 100755 Binary files a/graphics/pokemon/palafin/icon.png and b/graphics/pokemon/palafin/icon.png differ diff --git a/graphics/pokemon/pawmi/icon.png b/graphics/pokemon/pawmi/icon.png index a7fc302fe0..bcef3f24b0 100755 Binary files a/graphics/pokemon/pawmi/icon.png and b/graphics/pokemon/pawmi/icon.png differ diff --git a/graphics/pokemon/pawmo/icon.png b/graphics/pokemon/pawmo/icon.png index 41cc6b4f9a..ef69e9e301 100755 Binary files a/graphics/pokemon/pawmo/icon.png and b/graphics/pokemon/pawmo/icon.png differ diff --git a/graphics/pokemon/pawmot/icon.png b/graphics/pokemon/pawmot/icon.png index cc9d2e942a..90b36e7378 100755 Binary files a/graphics/pokemon/pawmot/icon.png and b/graphics/pokemon/pawmot/icon.png differ diff --git a/graphics/pokemon/pecharunt/back.png b/graphics/pokemon/pecharunt/back.png new file mode 100644 index 0000000000..2948387f01 Binary files /dev/null and b/graphics/pokemon/pecharunt/back.png differ diff --git a/graphics/pokemon/pecharunt/front.png b/graphics/pokemon/pecharunt/front.png new file mode 100644 index 0000000000..9ee6108bf1 Binary files /dev/null and b/graphics/pokemon/pecharunt/front.png differ diff --git a/graphics/pokemon/pecharunt/icon.png b/graphics/pokemon/pecharunt/icon.png new file mode 100644 index 0000000000..1027623748 Binary files /dev/null and b/graphics/pokemon/pecharunt/icon.png differ diff --git a/graphics/pokemon/pecharunt/normal.pal b/graphics/pokemon/pecharunt/normal.pal new file mode 100644 index 0000000000..ae673bc0b9 --- /dev/null +++ b/graphics/pokemon/pecharunt/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +154 212 167 +8 8 8 +68 68 77 +80 11 62 +186 33 155 +36 36 42 +255 39 255 +35 20 68 +92 52 154 +220 147 205 +55 30 102 +139 93 215 +255 255 255 +189 189 189 +129 26 101 +148 50 154 diff --git a/graphics/pokemon/pecharunt/shiny.pal b/graphics/pokemon/pecharunt/shiny.pal new file mode 100644 index 0000000000..da27c6845b --- /dev/null +++ b/graphics/pokemon/pecharunt/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +154 212 167 +8 8 8 +68 68 77 +80 11 62 +186 33 155 +36 36 42 +255 39 255 +144 80 30 +234 176 47 +220 147 205 +193 133 36 +244 208 96 +255 255 255 +189 189 189 +129 26 101 +148 50 154 diff --git a/graphics/pokemon/pikachu/partner/icon.png b/graphics/pokemon/pikachu/partner/icon.png new file mode 100644 index 0000000000..891f0d1b3e Binary files /dev/null and b/graphics/pokemon/pikachu/partner/icon.png differ diff --git a/graphics/pokemon/pikachu/partner/iconf.png b/graphics/pokemon/pikachu/partner/iconf.png new file mode 100644 index 0000000000..8779879f07 Binary files /dev/null and b/graphics/pokemon/pikachu/partner/iconf.png differ diff --git a/graphics/pokemon/poltchageist/icon.png b/graphics/pokemon/poltchageist/icon.png index 6b686ad08d..55fc98ec84 100644 Binary files a/graphics/pokemon/poltchageist/icon.png and b/graphics/pokemon/poltchageist/icon.png differ diff --git a/graphics/pokemon/quaquaval/icon.png b/graphics/pokemon/quaquaval/icon.png index 4e68d84ff4..d9b37ea902 100755 Binary files a/graphics/pokemon/quaquaval/icon.png and b/graphics/pokemon/quaquaval/icon.png differ diff --git a/graphics/pokemon/quaxly/icon.png b/graphics/pokemon/quaxly/icon.png index 4036957445..6df869ecdc 100755 Binary files a/graphics/pokemon/quaxly/icon.png and b/graphics/pokemon/quaxly/icon.png differ diff --git a/graphics/pokemon/quaxwell/icon.png b/graphics/pokemon/quaxwell/icon.png index 3806542c09..73a2d4ace7 100755 Binary files a/graphics/pokemon/quaxwell/icon.png and b/graphics/pokemon/quaxwell/icon.png differ diff --git a/graphics/pokemon/qwilfish/hisuian/icon.png b/graphics/pokemon/qwilfish/hisuian/icon.png index 6936dfe88d..30b8f5ad61 100644 Binary files a/graphics/pokemon/qwilfish/hisuian/icon.png and b/graphics/pokemon/qwilfish/hisuian/icon.png differ diff --git a/graphics/pokemon/rabsca/icon.png b/graphics/pokemon/rabsca/icon.png index 57c93e30a3..83e9bcbeb7 100755 Binary files a/graphics/pokemon/rabsca/icon.png and b/graphics/pokemon/rabsca/icon.png differ diff --git a/graphics/pokemon/raging_bolt/icon.png b/graphics/pokemon/raging_bolt/icon.png new file mode 100644 index 0000000000..f31beb8293 Binary files /dev/null and b/graphics/pokemon/raging_bolt/icon.png differ diff --git a/graphics/pokemon/rellor/icon.png b/graphics/pokemon/rellor/icon.png index 56ea140347..9c443bcee9 100755 Binary files a/graphics/pokemon/rellor/icon.png and b/graphics/pokemon/rellor/icon.png differ diff --git a/graphics/pokemon/revavroom/icon.png b/graphics/pokemon/revavroom/icon.png index 8d3a2ee0cc..ba85a6e3ef 100755 Binary files a/graphics/pokemon/revavroom/icon.png and b/graphics/pokemon/revavroom/icon.png differ diff --git a/graphics/pokemon/roaring_moon/icon.png b/graphics/pokemon/roaring_moon/icon.png index d8d82fb015..e9dabef1ac 100755 Binary files a/graphics/pokemon/roaring_moon/icon.png and b/graphics/pokemon/roaring_moon/icon.png differ diff --git a/graphics/pokemon/samurott/hisuian/icon.png b/graphics/pokemon/samurott/hisuian/icon.png index fdcbe6718f..8ffa1a3f17 100644 Binary files a/graphics/pokemon/samurott/hisuian/icon.png and b/graphics/pokemon/samurott/hisuian/icon.png differ diff --git a/graphics/pokemon/sandy_shocks/icon.png b/graphics/pokemon/sandy_shocks/icon.png index 99d693a1ac..956607df16 100755 Binary files a/graphics/pokemon/sandy_shocks/icon.png and b/graphics/pokemon/sandy_shocks/icon.png differ diff --git a/graphics/pokemon/scovillain/icon.png b/graphics/pokemon/scovillain/icon.png index f346a1cb48..f0763b3463 100755 Binary files a/graphics/pokemon/scovillain/icon.png and b/graphics/pokemon/scovillain/icon.png differ diff --git a/graphics/pokemon/scream_tail/icon.png b/graphics/pokemon/scream_tail/icon.png index 09ca4083ec..13669394a0 100755 Binary files a/graphics/pokemon/scream_tail/icon.png and b/graphics/pokemon/scream_tail/icon.png differ diff --git a/graphics/pokemon/shroodle/icon.png b/graphics/pokemon/shroodle/icon.png index 1e7a9430d8..0ea3daa36e 100755 Binary files a/graphics/pokemon/shroodle/icon.png and b/graphics/pokemon/shroodle/icon.png differ diff --git a/graphics/pokemon/sinistcha/icon.png b/graphics/pokemon/sinistcha/icon.png index 74fc0b2643..07bb624d17 100644 Binary files a/graphics/pokemon/sinistcha/icon.png and b/graphics/pokemon/sinistcha/icon.png differ diff --git a/graphics/pokemon/skeledirge/icon.png b/graphics/pokemon/skeledirge/icon.png index 901aab95d9..6fb9ba2c44 100755 Binary files a/graphics/pokemon/skeledirge/icon.png and b/graphics/pokemon/skeledirge/icon.png differ diff --git a/graphics/pokemon/sliggoo/hisuian/icon.png b/graphics/pokemon/sliggoo/hisuian/icon.png index c66baae5a9..c2cdfc0bca 100644 Binary files a/graphics/pokemon/sliggoo/hisuian/icon.png and b/graphics/pokemon/sliggoo/hisuian/icon.png differ diff --git a/graphics/pokemon/slither_wing/icon.png b/graphics/pokemon/slither_wing/icon.png index e969280a5d..5eccb7f4f0 100755 Binary files a/graphics/pokemon/slither_wing/icon.png and b/graphics/pokemon/slither_wing/icon.png differ diff --git a/graphics/pokemon/smoliv/icon.png b/graphics/pokemon/smoliv/icon.png index 53b8ffc945..dfddec3177 100755 Binary files a/graphics/pokemon/smoliv/icon.png and b/graphics/pokemon/smoliv/icon.png differ diff --git a/graphics/pokemon/sneasel/hisuian/icon.png b/graphics/pokemon/sneasel/hisuian/icon.png index bd9cae88b9..f2646a7ad0 100644 Binary files a/graphics/pokemon/sneasel/hisuian/icon.png and b/graphics/pokemon/sneasel/hisuian/icon.png differ diff --git a/graphics/pokemon/sneasler/icon.png b/graphics/pokemon/sneasler/icon.png index 4238b0e6a3..d3612a640c 100644 Binary files a/graphics/pokemon/sneasler/icon.png and b/graphics/pokemon/sneasler/icon.png differ diff --git a/graphics/pokemon/spidops/icon.png b/graphics/pokemon/spidops/icon.png index c35aa36c61..cdb680571f 100755 Binary files a/graphics/pokemon/spidops/icon.png and b/graphics/pokemon/spidops/icon.png differ diff --git a/graphics/pokemon/sprigatito/icon.png b/graphics/pokemon/sprigatito/icon.png index 114fcff288..22fc9125d8 100755 Binary files a/graphics/pokemon/sprigatito/icon.png and b/graphics/pokemon/sprigatito/icon.png differ diff --git a/graphics/pokemon/squawkabilly/blue_plumage/icon.png b/graphics/pokemon/squawkabilly/blue_plumage/icon.png index 4ad732211c..3226b3acb2 100755 Binary files a/graphics/pokemon/squawkabilly/blue_plumage/icon.png and b/graphics/pokemon/squawkabilly/blue_plumage/icon.png differ diff --git a/graphics/pokemon/squawkabilly/icon.png b/graphics/pokemon/squawkabilly/icon.png index 540b7521a8..2abbffb286 100644 Binary files a/graphics/pokemon/squawkabilly/icon.png and b/graphics/pokemon/squawkabilly/icon.png differ diff --git a/graphics/pokemon/squawkabilly/white_plumage/icon.png b/graphics/pokemon/squawkabilly/white_plumage/icon.png index a784c6cdda..ecdabe3630 100755 Binary files a/graphics/pokemon/squawkabilly/white_plumage/icon.png and b/graphics/pokemon/squawkabilly/white_plumage/icon.png differ diff --git a/graphics/pokemon/squawkabilly/yellow_plumage/icon.png b/graphics/pokemon/squawkabilly/yellow_plumage/icon.png index a042d981d0..085b3e0e2b 100755 Binary files a/graphics/pokemon/squawkabilly/yellow_plumage/icon.png and b/graphics/pokemon/squawkabilly/yellow_plumage/icon.png differ diff --git a/graphics/pokemon/tadbulb/icon.png b/graphics/pokemon/tadbulb/icon.png index 0341a387fb..d0de9612ea 100755 Binary files a/graphics/pokemon/tadbulb/icon.png and b/graphics/pokemon/tadbulb/icon.png differ diff --git a/graphics/pokemon/tandemaus/icon.png b/graphics/pokemon/tandemaus/icon.png index 8effa87c57..5e8443f8d3 100755 Binary files a/graphics/pokemon/tandemaus/icon.png and b/graphics/pokemon/tandemaus/icon.png differ diff --git a/graphics/pokemon/tarountula/icon.png b/graphics/pokemon/tarountula/icon.png index d4802eb0ea..67f4423f90 100755 Binary files a/graphics/pokemon/tarountula/icon.png and b/graphics/pokemon/tarountula/icon.png differ diff --git a/graphics/pokemon/tatsugiri/droopy/icon.png b/graphics/pokemon/tatsugiri/droopy/icon.png index 48e8c01fd0..041a9a4469 100755 Binary files a/graphics/pokemon/tatsugiri/droopy/icon.png and b/graphics/pokemon/tatsugiri/droopy/icon.png differ diff --git a/graphics/pokemon/tatsugiri/icon.png b/graphics/pokemon/tatsugiri/icon.png index 98fe8aa569..0db952cbd8 100644 Binary files a/graphics/pokemon/tatsugiri/icon.png and b/graphics/pokemon/tatsugiri/icon.png differ diff --git a/graphics/pokemon/tatsugiri/stretchy/icon.png b/graphics/pokemon/tatsugiri/stretchy/icon.png index 1634ec3178..9403a331e3 100755 Binary files a/graphics/pokemon/tatsugiri/stretchy/icon.png and b/graphics/pokemon/tatsugiri/stretchy/icon.png differ diff --git a/graphics/pokemon/tauros/paldean_aqua_breed/icon.png b/graphics/pokemon/tauros/paldean_aqua_breed/icon.png index a0421d7dd0..d1669390e1 100644 Binary files a/graphics/pokemon/tauros/paldean_aqua_breed/icon.png and b/graphics/pokemon/tauros/paldean_aqua_breed/icon.png differ diff --git a/graphics/pokemon/tauros/paldean_blaze_breed/icon.png b/graphics/pokemon/tauros/paldean_blaze_breed/icon.png index 25ec7e0463..559c3e4ace 100644 Binary files a/graphics/pokemon/tauros/paldean_blaze_breed/icon.png and b/graphics/pokemon/tauros/paldean_blaze_breed/icon.png differ diff --git a/graphics/pokemon/tauros/paldean_combat_breed/icon.png b/graphics/pokemon/tauros/paldean_combat_breed/icon.png index daa2eb7882..7740356c55 100644 Binary files a/graphics/pokemon/tauros/paldean_combat_breed/icon.png and b/graphics/pokemon/tauros/paldean_combat_breed/icon.png differ diff --git a/graphics/pokemon/terapagos/icon.png b/graphics/pokemon/terapagos/icon.png new file mode 100644 index 0000000000..0376369455 Binary files /dev/null and b/graphics/pokemon/terapagos/icon.png differ diff --git a/graphics/pokemon/terapagos/stellar/icon.png b/graphics/pokemon/terapagos/stellar/icon.png new file mode 100644 index 0000000000..f11525da0d Binary files /dev/null and b/graphics/pokemon/terapagos/stellar/icon.png differ diff --git a/graphics/pokemon/terapagos/terastal/icon.png b/graphics/pokemon/terapagos/terastal/icon.png new file mode 100644 index 0000000000..0f15ff3bb6 Binary files /dev/null and b/graphics/pokemon/terapagos/terastal/icon.png differ diff --git a/graphics/pokemon/ting_lu/icon.png b/graphics/pokemon/ting_lu/icon.png index 0b1f975f9e..a4cbc121a2 100755 Binary files a/graphics/pokemon/ting_lu/icon.png and b/graphics/pokemon/ting_lu/icon.png differ diff --git a/graphics/pokemon/tinkatink/back.png b/graphics/pokemon/tinkatink/back.png index 63fced4482..acdc03246f 100644 Binary files a/graphics/pokemon/tinkatink/back.png and b/graphics/pokemon/tinkatink/back.png differ diff --git a/graphics/pokemon/tinkatink/front.png b/graphics/pokemon/tinkatink/front.png index f263a31f20..2be3c6d293 100644 Binary files a/graphics/pokemon/tinkatink/front.png and b/graphics/pokemon/tinkatink/front.png differ diff --git a/graphics/pokemon/tinkatink/icon.png b/graphics/pokemon/tinkatink/icon.png index fc7300cb0a..0eaec6b140 100644 Binary files a/graphics/pokemon/tinkatink/icon.png and b/graphics/pokemon/tinkatink/icon.png differ diff --git a/graphics/pokemon/tinkatink/normal.pal b/graphics/pokemon/tinkatink/normal.pal index fb5977571b..6256a00429 100644 --- a/graphics/pokemon/tinkatink/normal.pal +++ b/graphics/pokemon/tinkatink/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -156 210 164 -246 101 172 -246 141 197 -189 206 230 -189 72 115 -8 12 8 -189 48 139 -106 93 164 -189 161 164 -115 141 172 -74 56 139 -246 226 238 -164 182 205 -131 40 82 -57 80 123 -255 255 255 +154 212 167 +118 67 75 +210 158 158 +255 230 226 +8 8 8 +223 96 150 +70 50 134 +165 62 121 +120 107 163 +186 169 223 +37 32 81 +102 26 84 +252 151 194 +122 84 182 +252 252 252 +119 126 197 diff --git a/graphics/pokemon/tinkatink/shiny.pal b/graphics/pokemon/tinkatink/shiny.pal index aa21dca4e4..5b879230c7 100644 --- a/graphics/pokemon/tinkatink/shiny.pal +++ b/graphics/pokemon/tinkatink/shiny.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -156 210 164 -246 101 172 -246 141 197 -203 131 108 -189 72 115 -8 12 8 -189 48 139 -196 173 161 -189 161 164 -112 73 54 -148 124 112 -246 226 238 -156 105 79 -131 40 82 -51 46 43 -255 255 255 +154 212 167 +118 67 75 +210 158 158 +255 230 226 +8 8 8 +223 96 150 +92 42 44 +165 62 121 +165 96 81 +223 152 124 +56 18 25 +102 26 84 +252 151 194 +131 70 66 +252 252 252 +119 126 197 diff --git a/graphics/pokemon/tinkaton/back.png b/graphics/pokemon/tinkaton/back.png index d876ebc79a..1a08f502f0 100644 Binary files a/graphics/pokemon/tinkaton/back.png and b/graphics/pokemon/tinkaton/back.png differ diff --git a/graphics/pokemon/tinkaton/front.png b/graphics/pokemon/tinkaton/front.png index eb5ce6e8a6..f197ddc342 100644 Binary files a/graphics/pokemon/tinkaton/front.png and b/graphics/pokemon/tinkaton/front.png differ diff --git a/graphics/pokemon/tinkaton/icon.png b/graphics/pokemon/tinkaton/icon.png index 72ab26b86b..8cd40c4d56 100755 Binary files a/graphics/pokemon/tinkaton/icon.png and b/graphics/pokemon/tinkaton/icon.png differ diff --git a/graphics/pokemon/tinkaton/normal.pal b/graphics/pokemon/tinkaton/normal.pal index 1c44fa8dc0..d6d3151c49 100644 --- a/graphics/pokemon/tinkaton/normal.pal +++ b/graphics/pokemon/tinkaton/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -153 210 164 -49 43 51 -236 208 208 -170 132 143 -15 15 15 -100 79 155 -137 113 148 -173 161 197 -74 54 112 -82 46 69 -233 145 181 -236 85 140 -252 252 252 -88 94 163 -167 65 103 -174 89 125 +154 212 167 +118 67 75 +255 230 226 +210 158 158 +8 8 8 +255 255 255 +70 50 134 +122 84 182 +37 32 81 +186 169 223 +120 107 163 +165 62 121 +252 151 194 +102 26 84 +223 96 150 +119 126 197 diff --git a/graphics/pokemon/tinkaton/shiny.pal b/graphics/pokemon/tinkaton/shiny.pal index dd18420c0a..a1c1fab15c 100644 --- a/graphics/pokemon/tinkaton/shiny.pal +++ b/graphics/pokemon/tinkaton/shiny.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -153 210 164 -63 35 25 -236 208 208 -170 132 143 -15 15 15 -106 52 67 -139 87 69 -203 131 108 -83 40 53 -82 46 69 -233 145 181 -236 85 140 -252 252 252 -88 94 163 -167 65 103 -174 89 125 +154 212 167 +118 67 75 +255 230 226 +210 158 158 +8 8 8 +255 255 255 +92 42 44 +131 70 66 +56 18 25 +223 152 124 +165 96 81 +165 62 121 +252 151 194 +102 26 84 +223 96 150 +119 126 197 diff --git a/graphics/pokemon/tinkatuff/back.png b/graphics/pokemon/tinkatuff/back.png index 5a5cdac31b..cc789e6c41 100644 Binary files a/graphics/pokemon/tinkatuff/back.png and b/graphics/pokemon/tinkatuff/back.png differ diff --git a/graphics/pokemon/tinkatuff/front.png b/graphics/pokemon/tinkatuff/front.png index 8b75e709bb..54459b2c19 100644 Binary files a/graphics/pokemon/tinkatuff/front.png and b/graphics/pokemon/tinkatuff/front.png differ diff --git a/graphics/pokemon/tinkatuff/icon.png b/graphics/pokemon/tinkatuff/icon.png index 7ab30334fa..345da19116 100755 Binary files a/graphics/pokemon/tinkatuff/icon.png and b/graphics/pokemon/tinkatuff/icon.png differ diff --git a/graphics/pokemon/tinkatuff/normal.pal b/graphics/pokemon/tinkatuff/normal.pal index 0f90f999f8..324d6798e0 100644 --- a/graphics/pokemon/tinkatuff/normal.pal +++ b/graphics/pokemon/tinkatuff/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -32 208 160 -80 40 64 -232 208 208 -168 128 136 +154 212 167 +118 67 75 +255 230 226 +210 158 158 8 8 8 -232 144 176 -232 80 136 -168 88 120 -160 64 96 -248 248 248 -48 40 48 -88 88 160 -168 160 192 -136 112 144 -96 72 152 -72 48 112 +37 32 81 +70 50 134 +186 169 223 +120 107 163 +252 151 194 +102 26 84 +223 96 150 +122 84 182 +252 252 252 +119 126 197 +165 62 121 diff --git a/graphics/pokemon/tinkatuff/shiny.pal b/graphics/pokemon/tinkatuff/shiny.pal index edea9dd345..639de886cb 100644 --- a/graphics/pokemon/tinkatuff/shiny.pal +++ b/graphics/pokemon/tinkatuff/shiny.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -32 208 160 -80 40 64 -232 208 208 -168 128 136 +154 212 167 +118 67 75 +255 230 226 +210 158 158 8 8 8 -232 144 176 -232 80 136 -168 88 120 -160 64 96 -248 248 248 -48 40 48 -88 88 160 -208 152 120 -152 80 48 -152 56 88 -104 24 24 +56 18 25 +92 42 44 +223 152 124 +165 96 81 +252 151 194 +102 26 84 +223 96 150 +131 70 66 +252 252 252 +119 126 197 +165 62 121 diff --git a/graphics/pokemon/toedscool/icon.png b/graphics/pokemon/toedscool/icon.png index 91edeb2472..6021e614df 100755 Binary files a/graphics/pokemon/toedscool/icon.png and b/graphics/pokemon/toedscool/icon.png differ diff --git a/graphics/pokemon/toedscruel/icon.png b/graphics/pokemon/toedscruel/icon.png index fe3f98f9fa..6095eae573 100755 Binary files a/graphics/pokemon/toedscruel/icon.png and b/graphics/pokemon/toedscruel/icon.png differ diff --git a/graphics/pokemon/typhlosion/hisuian/icon.png b/graphics/pokemon/typhlosion/hisuian/icon.png index c3e0474968..58f2f11198 100644 Binary files a/graphics/pokemon/typhlosion/hisuian/icon.png and b/graphics/pokemon/typhlosion/hisuian/icon.png differ diff --git a/graphics/pokemon/ursaluna/bloodmoon/icon.png b/graphics/pokemon/ursaluna/bloodmoon/icon.png new file mode 100644 index 0000000000..e5fbf80555 Binary files /dev/null and b/graphics/pokemon/ursaluna/bloodmoon/icon.png differ diff --git a/graphics/pokemon/ursaluna/icon.png b/graphics/pokemon/ursaluna/icon.png index 8a84704072..d56041d555 100644 Binary files a/graphics/pokemon/ursaluna/icon.png and b/graphics/pokemon/ursaluna/icon.png differ diff --git a/graphics/pokemon/varoom/icon.png b/graphics/pokemon/varoom/icon.png index 7debadffde..e342395296 100755 Binary files a/graphics/pokemon/varoom/icon.png and b/graphics/pokemon/varoom/icon.png differ diff --git a/graphics/pokemon/veluza/icon.png b/graphics/pokemon/veluza/icon.png index 6d06051669..6282d9c37c 100755 Binary files a/graphics/pokemon/veluza/icon.png and b/graphics/pokemon/veluza/icon.png differ diff --git a/graphics/pokemon/voltorb/hisuian/icon.png b/graphics/pokemon/voltorb/hisuian/icon.png index 2a35e4ec33..c3381d7fde 100644 Binary files a/graphics/pokemon/voltorb/hisuian/icon.png and b/graphics/pokemon/voltorb/hisuian/icon.png differ diff --git a/graphics/pokemon/walking_wake/icon.png b/graphics/pokemon/walking_wake/icon.png index 9260531ecf..a3a37af7f1 100644 Binary files a/graphics/pokemon/walking_wake/icon.png and b/graphics/pokemon/walking_wake/icon.png differ diff --git a/graphics/pokemon/wattrel/icon.png b/graphics/pokemon/wattrel/icon.png index a0a8bc9d49..33bf137c90 100755 Binary files a/graphics/pokemon/wattrel/icon.png and b/graphics/pokemon/wattrel/icon.png differ diff --git a/graphics/pokemon/wiglett/icon.png b/graphics/pokemon/wiglett/icon.png index 668309c68e..4c8e951fd8 100755 Binary files a/graphics/pokemon/wiglett/icon.png and b/graphics/pokemon/wiglett/icon.png differ diff --git a/graphics/pokemon/wo_chien/icon.png b/graphics/pokemon/wo_chien/icon.png index 22402d15c5..3772daf861 100755 Binary files a/graphics/pokemon/wo_chien/icon.png and b/graphics/pokemon/wo_chien/icon.png differ diff --git a/graphics/pokemon/wooper/wooper_paldean/icon.png b/graphics/pokemon/wooper/wooper_paldean/icon.png index 63aea32819..ac1c487788 100644 Binary files a/graphics/pokemon/wooper/wooper_paldean/icon.png and b/graphics/pokemon/wooper/wooper_paldean/icon.png differ diff --git a/graphics/pokemon/wugtrio/icon.png b/graphics/pokemon/wugtrio/icon.png index 1b67044787..f35b1d0456 100755 Binary files a/graphics/pokemon/wugtrio/icon.png and b/graphics/pokemon/wugtrio/icon.png differ diff --git a/graphics/pokemon/wyrdeer/icon.png b/graphics/pokemon/wyrdeer/icon.png index 905dfe083c..7786e2b3a4 100644 Binary files a/graphics/pokemon/wyrdeer/icon.png and b/graphics/pokemon/wyrdeer/icon.png differ diff --git a/graphics/pokemon/zoroark/hisuian/icon.png b/graphics/pokemon/zoroark/hisuian/icon.png index 6c4f6faf1b..a9610d1fdb 100644 Binary files a/graphics/pokemon/zoroark/hisuian/icon.png and b/graphics/pokemon/zoroark/hisuian/icon.png differ diff --git a/graphics/pokemon/zorua/hisuian/icon.png b/graphics/pokemon/zorua/hisuian/icon.png index 17f9229a2f..79faea9a1a 100644 Binary files a/graphics/pokemon/zorua/hisuian/icon.png and b/graphics/pokemon/zorua/hisuian/icon.png differ diff --git a/include/battle.h b/include/battle.h index 5a69fc8d50..1274ffcbfc 100644 --- a/include/battle.h +++ b/include/battle.h @@ -17,6 +17,26 @@ #include "battle_dynamax.h" #include "random.h" // for rng_value_t +// Helper for accessing command arguments and advancing gBattlescriptCurrInstr. +// +// For example accuracycheck is defined as: +// +// .macro accuracycheck failInstr:req, move:req +// .byte 0x1 +// .4byte \failInstr +// .2byte \move +// .endm +// +// Which corresponds to: +// +// CMD_ARGS(const u8 *failInstr, u16 move); +// +// The arguments can be accessed as cmd->failInstr and cmd->move. +// gBattlescriptCurrInstr = cmd->nextInstr; advances to the next instruction. +#define CMD_ARGS(...) const struct __attribute__((packed)) { u8 opcode; RECURSIVELY(R_FOR_EACH(APPEND_SEMICOLON, __VA_ARGS__)) const u8 nextInstr[0]; } *const cmd UNUSED = (const void *)gBattlescriptCurrInstr +#define VARIOUS_ARGS(...) CMD_ARGS(u8 battler, u8 id, ##__VA_ARGS__) +#define NATIVE_ARGS(...) CMD_ARGS(void (*func)(void), ##__VA_ARGS__) + // Used to exclude moves learned temporarily by Transform or Mimic #define MOVE_IS_PERMANENT(battler, moveSlot) \ (!(gBattleMons[battler].status2 & STATUS2_TRANSFORMED) \ @@ -278,7 +298,8 @@ struct FieldTimer struct WishFutureKnock { u8 futureSightCounter[MAX_BATTLERS_COUNT]; - u8 futureSightAttacker[MAX_BATTLERS_COUNT]; + u8 futureSightBattlerIndex[MAX_BATTLERS_COUNT]; + u8 futureSightPartyIndex[MAX_BATTLERS_COUNT]; u16 futureSightMove[MAX_BATTLERS_COUNT]; u8 wishCounter[MAX_BATTLERS_COUNT]; u8 wishPartyId[MAX_BATTLERS_COUNT]; @@ -778,6 +799,7 @@ struct BattleStruct u8 supremeOverlordCounter[MAX_BATTLERS_COUNT]; u8 quickClawRandom[MAX_BATTLERS_COUNT]; u8 quickDrawRandom[MAX_BATTLERS_COUNT]; + u8 boosterEnergyActivates; }; // The palaceFlags member of struct BattleStruct contains 1 flag per move to indicate which moves the AI should consider, diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h index d77ddfdfbc..540390bb53 100644 --- a/include/battle_script_commands.h +++ b/include/battle_script_commands.h @@ -37,7 +37,7 @@ void BufferMoveToLearnIntoBattleTextBuff2(void); void HandleBattleWindow(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags); bool8 UproarWakeUpCheck(u8 battlerId); bool32 DoesSubstituteBlockMove(u32 battlerAtk, u32 battlerDef, u32 move); -bool32 DoesDisguiseBlockMove(u32 battlerAtk, u32 battlerDef, u32 move); +bool32 DoesDisguiseBlockMove(u32 battler, u32 move); bool32 CanPoisonType(u8 battlerAttacker, u8 battlerTarget); bool32 CanParalyzeType(u8 battlerAttacker, u8 battlerTarget); bool32 CanUseLastResort(u8 battlerId); diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 319437c12f..1a7654d37b 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -54,6 +54,9 @@ extern const u8 BattleScript_DamagingWeatherContinues[]; extern const u8 BattleScript_SandStormHailSnowEnds[]; extern const u8 BattleScript_SunlightContinues[]; extern const u8 BattleScript_SunlightFaded[]; +extern const u8 BattleScript_FogContinues[]; +extern const u8 BattleScript_FogEnded_Ret[]; +extern const u8 BattleScript_FogEnded[]; extern const u8 BattleScript_OverworldStatusStarts[]; extern const u8 BattleScript_OverworldWeatherStarts[]; extern const u8 BattleScript_OverworldTerrain[]; @@ -205,8 +208,8 @@ extern const u8 BattleScript_BerryCureBrnEnd2[]; extern const u8 BattleScript_BerryCureBrnRet[]; extern const u8 BattleScript_BerryCureFrzEnd2[]; extern const u8 BattleScript_BerryCureFrzRet[]; -extern const u8 BattleScript_BerryCureFsbEnd2[]; -extern const u8 BattleScript_BerryCureFsbRet[]; +extern const u8 BattleScript_BerryCureFrbEnd2[]; +extern const u8 BattleScript_BerryCureFrbRet[]; extern const u8 BattleScript_BerryCureSlpEnd2[]; extern const u8 BattleScript_BerryCureSlpRet[]; extern const u8 BattleScript_BerryCureConfusionEnd2[]; @@ -411,6 +414,7 @@ extern const u8 BattleScript_ElectricTerrainPrevents[]; extern const u8 BattleScript_DarkTypePreventsPrankster[]; extern const u8 BattleScript_GulpMissileGorging[]; extern const u8 BattleScript_GulpMissileGulping[]; +extern const u8 BattleScript_GulpMissileFormChange[]; extern const u8 BattleScript_BattleBondActivatesOnMoveEndAttacker[]; extern const u8 BattleScript_DesolateLandActivates[]; extern const u8 BattleScript_PrimordialSeaActivates[]; @@ -495,6 +499,7 @@ extern const u8 BattleScript_TheSwampDisappeared[]; extern const u8 BattleScript_ItemRestoreHP_Party[]; extern const u8 BattleScript_EffectPsychicNoise[]; extern const u8 BattleScript_AromaVeilProtectsRet[]; +extern const u8 BattleScript_BoosterEnergyEnd2[]; // zmoves extern const u8 BattleScript_ZMoveActivateDamaging[]; diff --git a/include/battle_tower.h b/include/battle_tower.h index 8288ffb7ea..074fccf3a5 100644 --- a/include/battle_tower.h +++ b/include/battle_tower.h @@ -1,6 +1,8 @@ #ifndef GUARD_BATTLE_TOWER_H #define GUARD_BATTLE_TOWER_H +#include "data.h" + struct RSBattleTowerRecord { /*0x00*/ u8 lvlMode; // 0 = level 50, 1 = level 100 @@ -24,23 +26,13 @@ struct BattleFrontierTrainer const u16 *monSet; }; -struct FacilityMon -{ - u16 species; - u16 moves[MAX_MON_MOVES]; - u8 itemTableId; - u8 evSpread; - u8 nature; -}; - extern const u8 gTowerMaleFacilityClasses[30]; extern const u8 gTowerMaleTrainerGfxIds[30]; extern const u8 gTowerFemaleFacilityClasses[20]; extern const u8 gTowerFemaleTrainerGfxIds[20]; -extern const u16 gBattleFrontierHeldItems[]; -extern const struct FacilityMon gBattleFrontierMons[]; +extern const struct TrainerMon gBattleFrontierMons[]; extern const struct BattleFrontierTrainer gBattleFrontierTrainers[]; -extern const struct FacilityMon gSlateportBattleTentMons[]; +extern const struct TrainerMon gSlateportBattleTentMons[]; extern const struct BattleFrontierTrainer gSlateportBattleTentTrainers[]; // Temporary storage for monIds of the opponent team @@ -48,7 +40,7 @@ extern const struct BattleFrontierTrainer gSlateportBattleTentTrainers[]; extern u16 gFrontierTempParty[]; extern const struct BattleFrontierTrainer *gFacilityTrainers; -extern const struct FacilityMon *gFacilityTrainerMons; +extern const struct TrainerMon *gFacilityTrainerMons; void CallBattleTowerFunc(void); u16 GetRandomScaledFrontierTrainerId(u8 challengeNum, u8 battleNum); @@ -84,5 +76,6 @@ s32 GetHighestLevelInPlayerParty(void); u16 FacilityClassToGraphicsId(u8 facilityClass); bool32 ValidateBattleTowerRecord(u8 recordId); // unused void TrySetLinkBattleTowerEnemyPartyLevel(void); +void CreateFacilityMon(const struct TrainerMon *fmon, u16 level, u8 fixedIV, u32 otID, u32 flags, struct Pokemon *dst); #endif //GUARD_BATTLE_TOWER_H diff --git a/include/battle_util.h b/include/battle_util.h index d1879992d2..3298c4d31f 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -54,6 +54,7 @@ #define ITEMEFFECT_ORBS 6 #define ITEMEFFECT_LIFEORB_SHELLBELL 7 #define ITEMEFFECT_USE_LAST_ITEM 8 // move end effects for just the battler, not whole field +#define ITEMEFFECT_STATS_CHANGED 9 // For White Herb and Eject Pack #define WEATHER_HAS_EFFECT ((!IsAbilityOnField(ABILITY_CLOUD_NINE) && !IsAbilityOnField(ABILITY_AIR_LOCK))) @@ -164,6 +165,8 @@ u32 SetRandomTarget(u32 battler); u32 GetMoveTarget(u16 move, u8 setTarget); u8 IsMonDisobedient(void); u32 GetBattlerHoldEffect(u32 battler, bool32 checkNegating); +u32 GetBattlerHoldEffectIgnoreAbility(u32 battler, bool32 checkNegating); +u32 GetBattlerHoldEffectInternal(u32 battler, bool32 checkNegating, bool32 checkAbility); u32 GetBattlerHoldEffectParam(u32 battler); bool32 IsMoveMakingContact(u32 move, u32 battlerAtk); bool32 IsBattlerGrounded(u32 battler); diff --git a/include/battle_z_move.h b/include/battle_z_move.h index 697bfa676c..92fb685b2f 100644 --- a/include/battle_z_move.h +++ b/include/battle_z_move.h @@ -21,6 +21,7 @@ void CreateZMoveTriggerSprite(u8, bool8); void HideZMoveTriggerSprite(void); bool32 IsZMoveTriggerSpriteActive(void); void DestroyZMoveTriggerSprite(void); +u16 GetTypeBasedZMove(u16 move, u8 battler); bool32 MoveSelectionDisplayZMove(u16 zmove, u32 battler); void SetZEffect(void); bool32 IsZMoveUsable(u8 battler, u16 moveIndex); diff --git a/include/config.h b/include/config.h index 41695a77b4..0f1b64bd13 100644 --- a/include/config.h +++ b/include/config.h @@ -70,6 +70,7 @@ #define POKEDEX_PLUS_HGSS FALSE // If TRUE, enables the custom HGSS style Pokedex. #define SUMMARY_SCREEN_NATURE_COLORS TRUE // If TRUE, nature-based stat boosts and reductions will be red and blue in the summary screen. #define HQ_RANDOM TRUE // If TRUE, replaces the default RNG with an implementation of SFC32 RNG. May break code that relies on RNG. +#define COMPETITIVE_PARTY_SYNTAX TRUE // If TRUE, parties are defined in "competitive syntax". // Measurement system constants to be used for UNITS #define UNITS_IMPERIAL 0 // Inches, feet, pounds diff --git a/include/config/battle.h b/include/config/battle.h index ffdfc40385..40d7bd1147 100644 --- a/include/config/battle.h +++ b/include/config/battle.h @@ -118,6 +118,7 @@ #define B_IMPRISON GEN_LATEST // In Gen5+, Imprison doesn't fail if opposing pokemon don't have any moves the user knows. #define B_ALLY_SWITCH_FAIL_CHANCE GEN_LATEST // In Gen9, using Ally Switch consecutively decreases the chance of success for each consecutive use. #define B_SKETCH_BANS GEN_LATEST // In Gen9+, Sketch is unable to copy more moves than in previous generations. +#define B_KNOCK_OFF_REMOVAL GEN_LATEST // In Gen5+, Knock Off removes the foe's item instead of rendering it unusable. // Ability settings #define B_EXPANDED_ABILITY_NAMES TRUE // If TRUE, ability names are increased from 12 characters to 16 characters. @@ -143,6 +144,7 @@ #define B_PROTEAN_LIBERO GEN_LATEST // In Gen9+, Protean and Libero change the user's type only once per Battle. #define B_INTREPID_SWORD GEN_LATEST // In Gen9+, Intrepid Sword raises Attack by one stage only once per Battle. #define B_DAUNTLESS_SHIELD GEN_LATEST // In Gen9+, Dauntless Shield raises Defense by one stage only once per Battle. +#define B_DISGUISE_HP_LOSS GEN_LATEST // In Gen8+, when a Disguised Mimikyu's Disguise is busted, upon changing to its Busted Form it loses HP equal to 1/8 of its maximum HP. // Item settings #define B_HP_BERRIES GEN_LATEST // In Gen4+, berries which restore HP activate immediately after HP drops to half. In Gen3, the effect occurs at the end of the turn. @@ -151,7 +153,7 @@ #define B_X_ITEMS_BUFF GEN_LATEST // In Gen7+, the X Items raise a stat by 2 stages instead of 1. #define B_MENTAL_HERB GEN_LATEST // In Gen5+, the Mental Herb cures Taunt, Encore, Torment, Heal Block, and Disable in addition to Infatuation from before. #define B_TRAINERS_KNOCK_OFF_ITEMS TRUE // If TRUE, trainers can steal/swap your items (non-berries are restored after battle). In vanilla games trainers cannot steal items. -#define B_RESTORE_HELD_BATTLE_ITEMS TRUE // In Gen9 all non berry items are restored after battle. +#define B_RESTORE_HELD_BATTLE_ITEMS GEN_LATEST // In Gen9, all non-berry items are restored after battle. #define B_SOUL_DEW_BOOST GEN_LATEST // In Gens3-6, Soul Dew boosts Latis' Sp. Atk and Sp. Def. In Gen7+ it boosts the power of their Psychic and Dragon type moves instead. #define B_NET_BALL_MODIFIER GEN_LATEST // In Gen7+, Net Ball's catch multiplier is x5 instead of x3. #define B_DIVE_BALL_MODIFIER GEN_LATEST // In Gen4+, Dive Ball's effectiveness increases by when Surfing or Fishing. @@ -196,7 +198,6 @@ // Terrain settings #define B_TERRAIN_BG_CHANGE TRUE // If set to TRUE, terrain moves permanently change the default battle background until the effect fades. #define B_THUNDERSTORM_TERRAIN TRUE // If TRUE, overworld Thunderstorm generates Rain and Electric Terrain as in Gen 8. -#define B_FOG_TERRAIN TRUE // If TRUE, overworld Fog generates Misty Terrain as in Gen 8. #define B_TERRAIN_TYPE_BOOST GEN_LATEST // In Gen8, damage is boosted by 30% instead of 50%. #define B_SECRET_POWER_EFFECT GEN_LATEST // Secret Power's effects change depending on terrain and generation. See MOVE_EFFECT_SECRET_POWER's case in `SetMoveEffect`. #define B_SECRET_POWER_ANIMATION GEN_LATEST // Secret Power's animations change depending on terrain and generation. @@ -206,7 +207,8 @@ // Interface settings #define B_ABILITY_POP_UP TRUE // In Gen5+, the Pokémon abilities are displayed in a pop-up, when they activate in battle. #define B_FAST_INTRO TRUE // If set to TRUE, battle intro texts print at the same time as animation of a Pokémon, as opposing to waiting for the animation to end. -#define B_FAST_HP_DRAIN TRUE // If set to TRUE, HP bars will move faster to accomodate higher max HP amounts. +#define B_FAST_HP_DRAIN TRUE // If set to TRUE, HP bars will move faster. +#define B_FAST_EXP_GROW TRUE // If set to TRUE, EXP bars will move faster. #define B_SHOW_TARGETS TRUE // If set to TRUE, all available targets, for moves hitting 2 or 3 Pokémon, will be shown before selecting a move. #define B_SHOW_CATEGORY_ICON TRUE // If set to TRUE, it will show an icon in the summary showing the move's category. #define B_HIDE_HEALTHBOX_IN_ANIMS TRUE // If set to TRUE, hides healthboxes during move animations. @@ -233,7 +235,8 @@ #define B_TRAINER_MON_RANDOM_ABILITY FALSE // If this is set to TRUE a random legal ability will be generated for a trainer mon #define B_OBEDIENCE_MECHANICS GEN_LATEST // In PLA+ (here Gen8+), obedience restrictions also apply to non-outsider Pokémon, albeit based on their level met rather than actual level #define B_USE_FROSTBITE FALSE // In PLA, Frostbite replaces Freeze. Enabling this flag does the same here. Moves can still be cherry-picked to either Freeze or Frostbite. Freeze-Dry, Secret Power & Tri Attack depend on this config. -#define B_OVERWORLD_SNOW GEN_LATEST // In Gen9+, overworld Snow will summon snow instead of hail. +#define B_OVERWORLD_SNOW GEN_LATEST // In Gen9+, overworld Snow will summon snow instead of hail in battle. +#define B_OVERWORLD_FOG GEN_LATEST // In Gen8+, overworld Fog summons Misty Terrain in battle. In Gen4 only, overworld Fog summons the unique fog weather condition in battle. #define B_TOXIC_REVERSAL GEN_LATEST // In Gen5+, bad poison will change to regular poison at the end of battles. #define B_TRY_CATCH_TRAINER_BALL GEN_LATEST // In Gen4+, trying to catch a Trainer's Pokémon does not consume the Poké Ball. diff --git a/include/config/item.h b/include/config/item.h index 9b2f4156d8..1a1a196a16 100644 --- a/include/config/item.h +++ b/include/config/item.h @@ -36,4 +36,9 @@ // Vs. Seeker #define I_VS_SEEKER_CHARGING 0 // If this flag is assigned, the Vs Seeker functionality will be enabled. When the player has the Vs. Seeker, Match Call rematch functions will stop working. +//Fishing +#define I_FISHING_CHAIN FALSE // Introduced in XY, hooking the same Pokémon repeatedly will increase the odds of that mon being shiny. NOTE: This implementation is an approximation of the actual feature, as XY have not been throughoutly documented or datamined. +#define I_FISHING_MINIGAME GEN_3 // Each generation uses a variation of reeling in Pokémon once they have been hooked. +#define I_FISHING_PROXIMITY FALSE // Introduced in XY, fishing away from other people in enclosed areas will increase the chances of a Pokémon being hooked. NOTE: This implementation is an approximation of the actual feature, as XY have not been throughoutly documented or datamined. + #endif // GUARD_CONFIG_ITEM_H diff --git a/include/config/overworld.h b/include/config/overworld.h index 013b4a3f87..4543ddf059 100644 --- a/include/config/overworld.h +++ b/include/config/overworld.h @@ -8,16 +8,17 @@ #define OW_POISON_DAMAGE GEN_LATEST // In Gen4, Pokémon no longer faint from Poison in the overworld. In Gen5+, they no longer take damage at all. #define OW_TIMES_OF_DAY GEN_LATEST // Different generations have the times of day change at different times. #define OW_DOUBLE_APPROACH_WITH_ONE_MON FALSE // If enabled, you can be spotted by two trainers at the same time even if you only have one eligible Pokémon in your party. +#define OW_HIDE_REPEAT_MAP_POPUP FALSE // If enabled, map popups will not appear if entering a map with the same Map Section Id as the last. + +// These generational defines only make a distinction for Berries and the OW_PC_MOVE_ORDER +#define GEN_6_XY GEN_6 +#define GEN_6_ORAS GEN_LATEST + 1 // PC settings #define OW_PC_PRESS_B GEN_LATEST // In Gen4, pressing B when holding a Pokémon is equivalent to placing it. In Gen3, it gives the "You're holding a Pokémon!" error. #define OW_PC_JAPAN_WALDA_ICONS TRUE // In the US release of Emerald, the Cross, Bolt, and Plusle icons for Walda's wallpapers were left blank from the Japan release. Setting this to TRUE will restore them. #define OW_PC_HEAL GEN_LATEST // In Gen8+, Pokémon are not healed when deposited in the PC. - -// Berry settings -// These generational defines only make a distinction for Berries! -#define GEN_6_XY GEN_6 -#define GEN_6_ORAS GEN_LATEST + 1 +#define OW_PC_MOVE_ORDER GEN_LATEST // Starting in Gen4, the order of options in the PC menu change. #define OW_BERRY_MUTATIONS FALSE // If enabled, Berry plants can mutate based on berries planted next to them. #define OW_BERRY_MUTATION_CHANCE 25 // Determines the % chance of a mutation. @@ -44,18 +45,15 @@ // 16x32, 32x32, 64x64 etc are fine // Out-of-battle Ability effects -#define OW_SYNCHRONIZE_NATURE GEN_LATEST // In Gen8, if a Pokémon with Synchronize is leading the party, it's 100% guaranteed that wild Pokémon will have the same Nature, as opposed to 50% previously. Stationary Pokémon are excluded in Gen3. In Gen6, all No Eggs Discovered gift Pokémon will have the same Nature, while in Gen7 all gift Pokémon will, regardless of Egg Group - In Gen 8, no gift Pokémon are affected. In Gen9, this ability has no out-of-battle effect. -#define OW_COMPOUND_EYES GEN_LATEST // Prior to Gen9, if a Pokémon with Compound Eyes is leading the party, the wild held item rate is increased to 60%/20%. -#define OW_SUPER_LUCK GEN_LATEST // In Gen8, if a Pokémon with Super Luck is leading the party, the wild held item rate is increased to 60%/20%. -#define OW_CUTE_CHARM GEN_LATEST // Prior to Gen9, if a Pokémon with Cute Charm is leading the party, wild encounters have a 66.7% chance to be forced to be of the opposite gender. -#define OW_ILLUMINATE GEN_LATEST // Prior to Gen9, if a Pokémon with Illuminate is leading the party, the wild encounter rate is doubled. -#define OW_INFILTRATOR GEN_LATEST // In Gen8, if a Pokémon with Infiltrator is leading the party, the wild encounter rate is halved. -#define OW_HARVEST GEN_LATEST // In Gen8, if a Pokémon with Harvest is leading the party, there is a 50% chance to encounter a Grass-type Pokémon. -#define OW_LIGHTNING_ROD GEN_LATEST // In Gen8, if a Pokémon with Lightning Rod is leading the party, there is a 50% chance to encounter an Electric-type Pokémon. -#define OW_STORM_DRAIN GEN_LATEST // In Gen8, if a Pokémon with Storm Drain is leading the party, there is a 50% chance to encounter a Water-type Pokémon. -#define OW_FLASH_FIRE GEN_LATEST // In Gen8, if a Pokémon with Flash Fire is leading the party, there is a 50% chance to encounter a Fire-type Pokémon. -#define OW_MAGNET_PULL GEN_LATEST // Prior to Gen9, if a Pokémon with Magnet Pull is leading the party, there is a 50% chance to encounter a Steel-type Pokémon. -#define OW_STATIC GEN_LATEST // Prior to Gen9, if a Pokémon with Static is leading the party, there is a 50% chance to encounter an Electric-type Pokémon. +#define OW_SYNCHRONIZE_NATURE GEN_LATEST // In Gen8+, if a Pokémon with Synchronize leads the party, wild Pokémon will always have their same Nature as opposed to the 50% chance in previous games. Gift Pokémon excluded. + // In USUM (here GEN_7), if a Pokémon with Synchronize leads the party, gift Pokémon will always have their same Nature regardless of their Egg Group. + // In ORAS (here GEN_6), if a Pokémon with Synchronize leads the party, gift Pokémon from the No Eggs Discovered Egg Group will always have their same Nature. +#define OW_SUPER_LUCK GEN_LATEST // In Gen8+, if a Pokémon with Super Luck is leading the party, the wild held item rate is increased to 60%/20%. +#define OW_INFILTRATOR GEN_LATEST // In Gen8+, if a Pokémon with Infiltrator is leading the party, the wild encounter rate is halved. +#define OW_HARVEST GEN_LATEST // In Gen8+, if a Pokémon with Harvest is leading the party, there is a 50% chance to encounter a Grass-type Pokémon. +#define OW_LIGHTNING_ROD GEN_LATEST // In Gen8+, if a Pokémon with Lightning Rod is leading the party, there is a 50% chance to encounter an Electric-type Pokémon. +#define OW_STORM_DRAIN GEN_LATEST // In Gen8+, if a Pokémon with Storm Drain is leading the party, there is a 50% chance to encounter a Water-type Pokémon. +#define OW_FLASH_FIRE GEN_LATEST // In Gen8+, if a Pokémon with Flash Fire is leading the party, there is a 50% chance to encounter a Fire-type Pokémon. // Overworld flags // To use the following features in scripting, replace the 0s with the flag ID you're assigning it to. diff --git a/include/config/pokemon.h b/include/config/pokemon.h index dde298c464..32415e5247 100644 --- a/include/config/pokemon.h +++ b/include/config/pokemon.h @@ -36,13 +36,14 @@ #define P_SHEDINJA_BALL GEN_LATEST // Since Gen 4, Shedinja requires a Poké Ball for its evolution. In Gen 3, Shedinja inherits Nincada's Ball. #define P_KADABRA_EVERSTONE GEN_LATEST // Since Gen 4, Kadabra can evolve even when holding an Everstone. #define P_SHUCKLE_BERRY_JUICE GEN_LATEST // In Gen 2, Shuckle had a 1/16 chance of converting Berry that it's holding into Berry Juice. Enabling this will allow Shuckle to do this with an Oran Berry, which is the spiritual succesor of the Berry item. +#define P_ARCEUS_UNIQUE_FORM_ICONS GEN_LATEST // Since Gen 9, Arceus additionally changes its icon to reflect its current form. // Other settings #define P_CUSTOM_GENDER_DIFF_ICONS TRUE // If TRUE, will give more Pokémon custom icons for their female forms, i.e. Hippopotas and Hippowdon #define P_FOOTPRINTS TRUE // If TRUE, Pokémon will have footprints (as was the case up to Gen 5 and in BDSP). Disabling this saves some ROM space. #define P_LEGENDARY_PERFECT_IVS GEN_LATEST // Since Gen 6, Legendaries, Mythicals and Ultra Beasts found in the wild or given through gifts have at least 3 perfect IVs. #define P_EV_CAP GEN_LATEST // Since Gen 6, the max EVs per stat is 252 instead of 255. -#define P_SHOW_TERA_TYPE GEN_LATEST // Since Gen 9, the Tera Type is shown on the summary screen. +#define P_SHOW_TERA_TYPE GEN_8 // Since Gen 9, the Tera Type is shown on the summary screen. #define P_TM_LITERACY GEN_LATEST // Since Gen 6, TM illiterate Pokémon can learn TMs that teach moves that are in their level-up learnsets. // Learnset helper toggles diff --git a/include/config/species_enabled.h b/include/config/species_enabled.h index 9720f78f0e..23bb6d9d54 100644 --- a/include/config/species_enabled.h +++ b/include/config/species_enabled.h @@ -1,6 +1,9 @@ #ifndef GUARD_CONFIG_SPECIES_ENABLED_H #define GUARD_CONFIG_SPECIES_ENABLED_H +// WARNING: For some reason, using 1/0 instead of TRUE/FALSE causes cry IDs to be shifted. +// Please use TRUE/FALSE when using the family toggles. + // Modifying the latest generation WILL change the saveblock due to Dex flags and will require a new save file. // Generations of Pokémon are defined by the first member introduced, // so Pikachu depends on the Gen 1 setting despite Pichu being the lowest member of the evolution tree. diff --git a/include/constants/battle.h b/include/constants/battle.h index 9a3654195e..0acb857ad0 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -167,7 +167,7 @@ #define STATUS3_YAWN_TURN(num) (((num) << 11) & STATUS3_YAWN) #define STATUS3_IMPRISONED_OTHERS (1 << 13) #define STATUS3_GRUDGE (1 << 14) -#define STATUS3_CANT_SCORE_A_CRIT (1 << 15) +#define STATUS3___UNUSED (1 << 15) #define STATUS3_GASTRO_ACID (1 << 16) #define STATUS3_EMBARGO (1 << 17) #define STATUS3_UNDERWATER (1 << 18) @@ -304,6 +304,9 @@ #define B_WEATHER_SNOW_TEMPORARY (1 << 12) #define B_WEATHER_SNOW_PERMANENT (1 << 13) #define B_WEATHER_SNOW (B_WEATHER_SNOW_TEMPORARY | B_WEATHER_SNOW_PERMANENT) +#define B_WEATHER_FOG_TEMPORARY (1 << 14) +#define B_WEATHER_FOG_PERMANENT (1 << 15) +#define B_WEATHER_FOG (B_WEATHER_FOG_TEMPORARY | B_WEATHER_FOG_PERMANENT) // Battle Weather as enum #define ENUM_WEATHER_NONE 0 @@ -315,6 +318,7 @@ #define ENUM_WEATHER_RAIN_PRIMAL 6 #define ENUM_WEATHER_STRONG_WINDS 7 #define ENUM_WEATHER_SNOW 8 +#define ENUM_WEATHER_FOG 9 // Move Effects #define MOVE_EFFECT_SLEEP 1 diff --git a/include/constants/battle_ai.h b/include/constants/battle_ai.h index 2093312ea6..e42403e16a 100644 --- a/include/constants/battle_ai.h +++ b/include/constants/battle_ai.h @@ -42,10 +42,10 @@ #define AI_FLAG_HELP_PARTNER (1 << 12) // AI can try to help partner. If not set, will tend not to target partner #define AI_FLAG_PREFER_STATUS_MOVES (1 << 13) // AI gets a score bonus for status moves. Should be combined with AI_FLAG_CHECK_BAD_MOVE to prevent using only status moves #define AI_FLAG_STALL (1 << 14) // AI stalls battle and prefers secondary damage/trapping/etc. TODO not finished -#define AI_FLAG_SMART_SWITCHING (1 << 15) // AI includes a lot more switching checks +#define AI_FLAG_SMART_SWITCHING (1 << 15) // AI includes a lot more switching checks. Automatically includes AI_FLAG_SMART_MON_CHOICES. #define AI_FLAG_ACE_POKEMON (1 << 16) // AI has an Ace Pokemon. The last Pokemon in the party will not be used until it's the last one remaining. #define AI_FLAG_OMNISCIENT (1 << 17) // AI has full knowledge of player moves, abilities, hold items -#define AI_FLAG_SMART_MON_CHOICES (1 << 18) // AI will make smarter decisions when choosing which mon to send out mid-battle and after a KO, which are separate decisions. Pairs very well with AI_FLAG_SMART_SWITCHING. +#define AI_FLAG_SMART_MON_CHOICES (1 << 18) // AI will make smarter decisions when choosing which mon to send out mid-battle and after a KO, which are separate decisions. Automatically included by AI_FLAG_SMART_SWITCHING. #define AI_FLAG_COUNT 19 diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index 8bc09ba530..162eb11c99 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -567,6 +567,7 @@ #define B_ANIM_WONDER_ROOM 46 #define B_ANIM_MAGIC_ROOM 47 #define B_ANIM_TAILWIND 48 +#define B_ANIM_FOG_CONTINUES 49 // special animations table (gBattleAnims_Special) #define B_ANIM_LVL_UP 0 @@ -615,6 +616,7 @@ #define ANIM_WEATHER_SANDSTORM 3 #define ANIM_WEATHER_HAIL 4 #define ANIM_WEATHER_SNOW 5 +#define ANIM_WEATHER_FOG 6 // horseshoe/fist frames #define ANIM_RIGHT_FIST 0 diff --git a/include/constants/battle_frontier.h b/include/constants/battle_frontier.h index e4a56b15d1..7b3c77cc8f 100644 --- a/include/constants/battle_frontier.h +++ b/include/constants/battle_frontier.h @@ -116,6 +116,7 @@ #define EXCHANGE_CORNER_VITAMIN_CLERK 2 #define EXCHANGE_CORNER_HOLD_ITEM_CLERK 3 +// unused #define F_EV_SPREAD_HP (1 << 0) #define F_EV_SPREAD_ATTACK (1 << 1) #define F_EV_SPREAD_DEFENSE (1 << 2) @@ -123,68 +124,7 @@ #define F_EV_SPREAD_SP_ATTACK (1 << 4) #define F_EV_SPREAD_SP_DEFENSE (1 << 5) -#define BATTLE_FRONTIER_ITEM_NONE 0 -#define BATTLE_FRONTIER_ITEM_KINGS_ROCK 1 -#define BATTLE_FRONTIER_ITEM_SITRUS_BERRY 2 -#define BATTLE_FRONTIER_ITEM_ORAN_BERRY 3 -#define BATTLE_FRONTIER_ITEM_CHESTO_BERRY 4 -#define BATTLE_FRONTIER_ITEM_HARD_STONE 5 -#define BATTLE_FRONTIER_ITEM_FOCUS_BAND 6 -#define BATTLE_FRONTIER_ITEM_PERSIM_BERRY 7 -#define BATTLE_FRONTIER_ITEM_MIRACLE_SEED 8 -#define BATTLE_FRONTIER_ITEM_BERRY_JUICE 9 -#define BATTLE_FRONTIER_ITEM_MACHO_BRACE 10 -#define BATTLE_FRONTIER_ITEM_SILVER_POWDER 11 -#define BATTLE_FRONTIER_ITEM_CHERI_BERRY 12 -#define BATTLE_FRONTIER_ITEM_BLACK_GLASSES 13 -#define BATTLE_FRONTIER_ITEM_BLACK_BELT 14 -#define BATTLE_FRONTIER_ITEM_SOUL_DEW 15 -#define BATTLE_FRONTIER_ITEM_CHOICE_BAND 16 -#define BATTLE_FRONTIER_ITEM_MAGNET 17 -#define BATTLE_FRONTIER_ITEM_SILK_SCARF 18 -#define BATTLE_FRONTIER_ITEM_WHITE_HERB 19 -#define BATTLE_FRONTIER_ITEM_DEEP_SEA_SCALE 20 -#define BATTLE_FRONTIER_ITEM_DEEP_SEA_TOOTH 21 -#define BATTLE_FRONTIER_ITEM_MYSTIC_WATER 22 -#define BATTLE_FRONTIER_ITEM_SHARP_BEAK 23 -#define BATTLE_FRONTIER_ITEM_QUICK_CLAW 24 -#define BATTLE_FRONTIER_ITEM_LEFTOVERS 25 -#define BATTLE_FRONTIER_ITEM_RAWST_BERRY 26 -#define BATTLE_FRONTIER_ITEM_LIGHT_BALL 27 -#define BATTLE_FRONTIER_ITEM_POISON_BARB 28 -#define BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE 29 -#define BATTLE_FRONTIER_ITEM_ASPEAR_BERRY 30 -#define BATTLE_FRONTIER_ITEM_SPELL_TAG 31 -#define BATTLE_FRONTIER_ITEM_BRIGHT_POWDER 32 -#define BATTLE_FRONTIER_ITEM_LEPPA_BERRY 33 -#define BATTLE_FRONTIER_ITEM_SCOPE_LENS 34 -#define BATTLE_FRONTIER_ITEM_TWISTED_SPOON 35 -#define BATTLE_FRONTIER_ITEM_METAL_COAT 36 -#define BATTLE_FRONTIER_ITEM_MENTAL_HERB 37 -#define BATTLE_FRONTIER_ITEM_CHARCOAL 38 -#define BATTLE_FRONTIER_ITEM_PECHA_BERRY 39 -#define BATTLE_FRONTIER_ITEM_SOFT_SAND 40 -#define BATTLE_FRONTIER_ITEM_LUM_BERRY 41 -#define BATTLE_FRONTIER_ITEM_DRAGON_SCALE 42 -#define BATTLE_FRONTIER_ITEM_DRAGON_FANG 43 -#define BATTLE_FRONTIER_ITEM_IAPAPA_BERRY 44 -#define BATTLE_FRONTIER_ITEM_WIKI_BERRY 45 -#define BATTLE_FRONTIER_ITEM_SEA_INCENSE 46 -#define BATTLE_FRONTIER_ITEM_SHELL_BELL 47 -#define BATTLE_FRONTIER_ITEM_SALAC_BERRY 48 -#define BATTLE_FRONTIER_ITEM_LANSAT_BERRY 49 -#define BATTLE_FRONTIER_ITEM_APICOT_BERRY 50 -#define BATTLE_FRONTIER_ITEM_STARF_BERRY 51 -#define BATTLE_FRONTIER_ITEM_LIECHI_BERRY 52 -#define BATTLE_FRONTIER_ITEM_LEEK 53 -#define BATTLE_FRONTIER_ITEM_LAX_INCENSE 54 -#define BATTLE_FRONTIER_ITEM_AGUAV_BERRY 55 -#define BATTLE_FRONTIER_ITEM_FIGY_BERRY 56 -#define BATTLE_FRONTIER_ITEM_THICK_CLUB 57 -#define BATTLE_FRONTIER_ITEM_MAGO_BERRY 58 -#define BATTLE_FRONTIER_ITEM_METAL_POWDER 59 -#define BATTLE_FRONTIER_ITEM_PETAYA_BERRY 60 -#define BATTLE_FRONTIER_ITEM_LUCKY_PUNCH 61 -#define BATTLE_FRONTIER_ITEM_GANLON_BERRY 62 +// CreateFacilityMonFlags +#define FLAG_FRONTIER_MON_FACTORY (1 << 0) #endif // GUARD_CONSTANTS_BATTLE_FRONTIER_H diff --git a/include/constants/battle_move_effects.h b/include/constants/battle_move_effects.h index bd55b6954a..0cf0862f15 100644 --- a/include/constants/battle_move_effects.h +++ b/include/constants/battle_move_effects.h @@ -222,7 +222,7 @@ enum { EFFECT_HEAL_PULSE, EFFECT_QUASH, EFFECT_ION_DELUGE, - EFFECT_FREEZE_DRY, + EFFECT_SUPER_EFFECTIVE_ON_ARG, EFFECT_TOPSY_TURVY, EFFECT_MISTY_TERRAIN, EFFECT_GRASSY_TERRAIN, diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index 6d635fe848..641e644ebc 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -304,9 +304,9 @@ #define MOVEEND_DEFROST 23 #define MOVEEND_RECOIL 24 #define MOVEEND_MAGICIAN 25 // Occurs after final multi-hit strike, and after other items/abilities would activate -#define MOVEEND_EJECT_BUTTON 26 -#define MOVEEND_RED_CARD 27 -#define MOVEEND_EJECT_PACK 28 +#define MOVEEND_EJECT_ITEMS 26 +#define MOVEEND_WHITE_HERB 27 +#define MOVEEND_RED_CARD 28 #define MOVEEND_LIFEORB_SHELLBELL 29 // Includes shell bell, throat spray, etc #define MOVEEND_CHANGED_ITEMS 30 #define MOVEEND_PICKPOCKET 31 diff --git a/include/constants/battle_string_ids.h b/include/constants/battle_string_ids.h index 7a64f6d6fd..86b48f9d4a 100644 --- a/include/constants/battle_string_ids.h +++ b/include/constants/battle_string_ids.h @@ -707,8 +707,12 @@ #define STRINGID_BIZARREARENACREATED 705 #define STRINGID_BIZARREAREACREATED 706 #define STRINGID_TIDYINGUPCOMPLETE 707 +#define STRINGID_BOOSTERENERGYACTIVATES 708 +#define STRINGID_FOGCREPTUP 709 +#define STRINGID_FOGISDEEP 710 +#define STRINGID_FOGLIFTED 711 -#define BATTLESTRINGS_COUNT 708 +#define BATTLESTRINGS_COUNT 712 // This is the string id that gBattleStringsTable starts with. // String ids before this (e.g. STRINGID_INTROMSG) are not in the table, @@ -760,6 +764,7 @@ #define B_MSG_STARTED_SUNLIGHT 4 #define B_MSG_STARTED_HAIL 5 #define B_MSG_STARTED_SNOW 6 +#define B_MSG_STARTED_FOG 7 // gRainContinuesStringIds #define B_MSG_RAIN_CONTINUES 0 diff --git a/include/constants/expansion.h b/include/constants/expansion.h index 9b733a14f1..b72429d619 100644 --- a/include/constants/expansion.h +++ b/include/constants/expansion.h @@ -1,10 +1,10 @@ #ifndef GUARD_CONSTANTS_EXPANSION_H #define GUARD_CONSTANTS_EXPANSION_H -// 1.8.0 +// 1.8.2 #define EXPANSION_VERSION_MAJOR 1 #define EXPANSION_VERSION_MINOR 8 -#define EXPANSION_VERSION_PATCH 0 +#define EXPANSION_VERSION_PATCH 2 // FALSE if this this version of Expansion is not a tagged commit, i.e. // it contains unreleased changes. diff --git a/include/constants/global.h b/include/constants/global.h index bcbf37e2d7..b8ac7559a8 100644 --- a/include/constants/global.h +++ b/include/constants/global.h @@ -155,6 +155,11 @@ #define DIR_SOUTHEAST 6 #define DIR_NORTHWEST 7 #define DIR_NORTHEAST 8 +#define CARDINAL_DIRECTION_COUNT DIR_SOUTHWEST + +#define AXIS_X 0 +#define AXIS_Y 1 +#define AXIS_COUNT 2 #define CONNECTION_INVALID -1 #define CONNECTION_NONE 0 diff --git a/include/constants/moves.h b/include/constants/moves.h index a0c0eaf3b3..dc8bc59a3f 100644 --- a/include/constants/moves.h +++ b/include/constants/moves.h @@ -935,6 +935,7 @@ // Signature Z Moves #define MOVE_CATASTROPIKA (MOVES_COUNT + 18) #define MOVE_10000000_VOLT_THUNDERBOLT (MOVES_COUNT + 19) +#define MOVE_10_000_000_VOLT_THUNDERBOLT MOVE_10000000_VOLT_THUNDERBOLT #define MOVE_STOKED_SPARKSURFER (MOVES_COUNT + 20) #define MOVE_EXTREME_EVOBOOST (MOVES_COUNT + 21) #define MOVE_PULVERIZING_PANCAKE (MOVES_COUNT + 22) diff --git a/include/constants/party_menu.h b/include/constants/party_menu.h index c860b425d4..1f37f3416c 100644 --- a/include/constants/party_menu.h +++ b/include/constants/party_menu.h @@ -11,7 +11,7 @@ #define AILMENT_BRN 5 #define AILMENT_PKRS 6 #define AILMENT_FNT 7 -#define AILMENT_FSB 8 +#define AILMENT_FRB 8 #define PARTY_LAYOUT_SINGLE 0 #define PARTY_LAYOUT_DOUBLE 1 diff --git a/include/constants/species.h b/include/constants/species.h index d4dcc82115..037aae6af9 100644 --- a/include/constants/species.h +++ b/include/constants/species.h @@ -1633,4 +1633,138 @@ #define NUM_SPECIES SPECIES_EGG +// Competitive format aliases +#define SPECIES_ALCREMIE_GMAX SPECIES_ALCREMIE_GIGANTAMAX +#define SPECIES_APPLETUN_GMAX SPECIES_APPLETUN_GIGANTAMAX +#define SPECIES_ARCANINE_HISUI SPECIES_ARCANINE_HISUIAN +#define SPECIES_ARTICUNO_GALAR SPECIES_ARTICUNO_GALARIAN +#define SPECIES_AVALUGG_HISUI SPECIES_AVALUGG_HISUIAN +#define SPECIES_BLASTOISE_GMAX SPECIES_BLASTOISE_GIGANTAMAX +#define SPECIES_BRAVIARY_HISUI SPECIES_BRAVIARY_HISUIAN +#define SPECIES_BURMY_SANDY SPECIES_BURMY_SANDY_CLOAK +#define SPECIES_BURMY_TRASH SPECIES_BURMY_TRASH_CLOAK +#define SPECIES_BUTTERFREE_GMAX SPECIES_BUTTERFREE_GIGANTAMAX +#define SPECIES_CALYREX_ICE SPECIES_CALYREX_ICE_RIDER +#define SPECIES_CALYREX_SHADOW SPECIES_CALYREX_SHADOW_RIDER +#define SPECIES_CENTISKORCH_GMAX SPECIES_CENTISKORCH_GIGANTAMAX +#define SPECIES_CHARIZARD_GMAX SPECIES_CHARIZARD_GIGANTAMAX +#define SPECIES_CINDERACE_GMAX SPECIES_CINDERACE_GIGANTAMAX +#define SPECIES_COALOSSAL_GMAX SPECIES_COALOSSAL_GIGANTAMAX +#define SPECIES_COPPERAJAH_GMAX SPECIES_COPPERAJAH_GIGANTAMAX +#define SPECIES_CORSOLA_GALAR SPECIES_CORSOLA_GALARIAN +#define SPECIES_CORVIKNIGHT_GMAX SPECIES_CORVIKNIGHT_GIGANTAMAX +#define SPECIES_DARMANITAN_GALAR SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE +#define SPECIES_DARMANITAN_GALAR_ZEN SPECIES_DARMANITAN_GALARIAN_ZEN_MODE +#define SPECIES_DARMANITAN_ZEN SPECIES_DARMANITAN_ZEN_MODE +#define SPECIES_DARUMAKA_GALAR SPECIES_DARUMAKA_GALARIAN +#define SPECIES_DECIDUEYE_HISUI SPECIES_DECIDUEYE_HISUIAN +#define SPECIES_DIGLETT_ALOLA SPECIES_DIGLETT_ALOLAN +#define SPECIES_DREDNAW_GMAX SPECIES_DREDNAW_GIGANTAMAX +#define SPECIES_DUGTRIO_ALOLA SPECIES_DUGTRIO_ALOLAN +#define SPECIES_DURALUDON_GMAX SPECIES_DURALUDON_GIGANTAMAX +#define SPECIES_EEVEE_GMAX SPECIES_EEVEE_GIGANTAMAX +#define SPECIES_EEVEE_STARTER SPECIES_EEVEE_PARTNER +#define SPECIES_EISCUE_NOICE SPECIES_EISCUE_NOICE_FACE +#define SPECIES_ELECTRODE_HISUI SPECIES_ELECTRODE_HISUIAN +#define SPECIES_EXEGGUTOR_ALOLA SPECIES_EXEGGUTOR_ALOLAN +#define SPECIES_FARFETCHD_GALAR SPECIES_FARFETCHD_GALARIAN +#define SPECIES_FLAPPLE_GMAX SPECIES_FLAPPLE_GIGANTAMAX +#define SPECIES_FLOETTE_ETERNAL SPECIES_FLOETTE_ETERNAL_FLOWER +#define SPECIES_GARBODOR_GMAX SPECIES_GARBODOR_GIGANTAMAX +#define SPECIES_GASTRODON_EAST SPECIES_GASTRODON_EAST_SEA +#define SPECIES_GENESECT_BURN SPECIES_GENESECT_BURN_DRIVE +#define SPECIES_GENESECT_CHILL SPECIES_GENESECT_CHILL_DRIVE +#define SPECIES_GENESECT_DOUSE SPECIES_GENESECT_DOUSE_DRIVE +#define SPECIES_GENESECT_SHOCK SPECIES_GENESECT_SHOCK_DRIVE +#define SPECIES_GENGAR_GMAX SPECIES_GENGAR_GIGANTAMAX +#define SPECIES_GEODUDE_ALOLA SPECIES_GEODUDE_ALOLAN +#define SPECIES_GOLEM_ALOLA SPECIES_GOLEM_ALOLAN +#define SPECIES_GOODRA_HISUI SPECIES_GOODRA_HISUIAN +#define SPECIES_GRAVELER_ALOLA SPECIES_GRAVELER_ALOLAN +#define SPECIES_GRENINJA_BOND SPECIES_GRENINJA_BATTLE_BOND +#define SPECIES_GRIMER_ALOLA SPECIES_GRIMER_ALOLAN +#define SPECIES_GRIMMSNARL_GMAX SPECIES_GRIMMSNARL_GIGANTAMAX +#define SPECIES_GROWLITHE_HISUI SPECIES_GROWLITHE_HISUIAN +#define SPECIES_HATTERENE_GMAX SPECIES_HATTERENE_GIGANTAMAX +#define SPECIES_INTELEON_GMAX SPECIES_INTELEON_GIGANTAMAX +#define SPECIES_KINGLER_GMAX SPECIES_KINGLER_GIGANTAMAX +#define SPECIES_LAPRAS_GMAX SPECIES_LAPRAS_GIGANTAMAX +#define SPECIES_LILLIGANT_HISUI SPECIES_LILLIGANT_HISUIAN +#define SPECIES_LINOONE_GALAR SPECIES_LINOONE_GALARIAN +#define SPECIES_MACHAMP_GMAX SPECIES_MACHAMP_GIGANTAMAX +#define SPECIES_MAGEARNA_ORIGINAL SPECIES_MAGEARNA_ORIGINAL_COLOR +#define SPECIES_MAROWAK_ALOLA SPECIES_MAROWAK_ALOLAN +#define SPECIES_MAROWAX_ALOLA_TOTEM SPECIES_MAROWAK_ALOLAN_TOTEM +#define SPECIES_MAUSHOLD_FOUR SPECIES_MAUSHOLD_FAMILY_OF_FOUR +#define SPECIES_MELMETAL_GMAX SPECIES_MELMETAL_GIGANTAMAX +#define SPECIES_MEOWTH_ALOLA SPECIES_MEOWTH_ALOLAN +#define SPECIES_MEOWTH_GALAR SPECIES_MEOWTH_GALARIAN +#define SPECIES_MEOWTH_GMAX SPECIES_MEOWTH_GIGANTAMAX +#define SPECIES_MOLTRES_GALAR SPECIES_MOLTRES_GALARIAN +#define SPECIES_MR_MIME_GALAR SPECIES_MR_MIME_GALARIAN +#define SPECIES_MUK_ALOLA SPECIES_MUK_ALOLAN +#define SPECIES_NINETALES_ALOLA SPECIES_NINETALES_ALOLAN +#define SPECIES_ORBEETLE_GMAX SPECIES_ORBEETLE_GIGANTAMAX +#define SPECIES_PERSIAN_ALOLA SPECIES_PERSIAN_ALOLAN +#define SPECIES_PIKACHU_ALOLA SPECIES_PIKACHU_ALOLA_CAP +#define SPECIES_PIKACHU_GMAX SPECIES_PIKACHU_GIGANTAMAX +#define SPECIES_PIKACHU_HOENN SPECIES_PIKACHU_HOENN_CAP +#define SPECIES_PIKACHU_KALOS SPECIES_PIKACHU_KALOS_CAP +#define SPECIES_PIKACHU_ORIGINAL SPECIES_PIKACHU_ORIGINAL_CAP +//#define SPECIES_PIKACHU_PARTNER SPECIES_PIKACHU_PARTNER_CAP +#define SPECIES_PIKACHU_PHD SPECIES_PIKACHU_PH_D +#define SPECIES_PIKACHU_SINNOH SPECIES_PIKACHU_SINNOH_CAP +#define SPECIES_PIKACHU_STARTER SPECIES_PIKACHU_PARTNER +#define SPECIES_PIKACHU_UNOVA SPECIES_PIKACHU_UNOVA_CAP +#define SPECIES_PIKACHU_WORLD SPECIES_PIKACHU_WORLD_CAP +#define SPECIES_PONYTA_GALAR SPECIES_PONYTA_GALARIAN +#define SPECIES_QWILFISH_HISUI SPECIES_QWILFISH_HISUIAN +#define SPECIES_RAICHU_ALOLA SPECIES_RAICHU_ALOLAN +#define SPECIES_RAPIDASH_GALAR SPECIES_RAPIDASH_GALARIAN +#define SPECIES_RATICATE_ALOLA SPECIES_RATICATE_ALOLAN +#define SPECIES_RATICATE_ALOLA_TOTEM SPECIES_RATICATE_ALOLAN_TOTEM +#define SPECIES_RATTATA_ALOLA SPECIES_RATTATA_ALOLAN +#define SPECIES_RILLABOOM_GMAX SPECIES_RILLABOOM_GIGANTAMAX +#define SPECIES_SAMUROTT_HISUI SPECIES_SAMUROTT_HISUIAN +#define SPECIES_SANDACONDA_GMAX SPECIES_SANDACONDA_GIGANTAMAX +#define SPECIES_SANDSHREW_ALOLA SPECIES_SANDSHREW_ALOLAN +#define SPECIES_SANDSLASH_ALOLA SPECIES_SANDSLASH_ALOLAN +#define SPECIES_SHELLOS_EAST SPECIES_SHELLOS_EAST_SEA +#define SPECIES_SLIGGOO_HISUI SPECIES_SLIGGOO_HISUIAN +#define SPECIES_SLOWBRO_GALAR SPECIES_SLOWBRO_GALARIAN +#define SPECIES_SLOWKING_GALAR SPECIES_SLOWKING_GALARIAN +#define SPECIES_SLOWPOKE_GALAR SPECIES_SLOWPOKE_GALARIAN +#define SPECIES_SNEASEL_HISUI SPECIES_SNEASEL_HISUIAN +#define SPECIES_SNORLAX_GMAX SPECIES_SNORLAX_GIGANTAMAX +#define SPECIES_SQUAWKABILLY_BLUE SPECIES_SQUAWKABILLY_BLUE_PLUMAGE +#define SPECIES_SQUAWKABILLY_WHITE SPECIES_SQUAWKABILLY_WHITE_PLUMAGE +#define SPECIES_SQUAWKABILLY_YELLOW SPECIES_SQUAWKABILLY_YELLOW_PLUMAGE +#define SPECIES_STUNFISK_GALAR SPECIES_STUNFISK_GALARIAN +#define SPECIES_TAUROS_PALDEA_AQUA SPECIES_TAUROS_PALDEAN_AQUA_BREED +#define SPECIES_TAUROS_PALDEA_BLAZE SPECIES_TAUROS_PALDEAN_BLAZE_BREED +#define SPECIES_TAUROS_PALDEA_COMBAT SPECIES_TAUROS_PALDEAN_COMBAT_BREED +#define SPECIES_TOXTRICITY_AMPED_GMAX SPECIES_TOXTRICITY_AMPED_GIGANTAMAX +#define SPECIES_TOXTRICITY_LOW_KEY_GMAX SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX +#define SPECIES_TYPHLOSION_HISUI SPECIES_TYPHLOSION_HISUIAN +#define SPECIES_UNOWN_EXCLAMATION SPECIES_UNOWN_EMARK +#define SPECIES_UNOWN_QUESTION SPECIES_UNOWN_QMARK +#define SPECIES_URSHIFU_GMAX SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX +#define SPECIES_URSHIFU_RAPID_STRIKE SPECIES_URSHIFU_RAPID_STRIKE_STYLE +#define SPECIES_URSHIFU_RAPID_STRIKE_GMAX SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX +#define SPECIES_VENUSAUR_GMAX SPECIES_VENUSAUR_GIGANTAMAX +#define SPECIES_VIVILLON_POKEBALL SPECIES_VIVILLON_POKE_BALL +#define SPECIES_VOLTORB_HISUI SPECIES_VOLTORB_HISUIAN +#define SPECIES_VULPIX_ALOLA SPECIES_VULPIX_ALOLAN +#define SPECIES_WEEZING_GALAR SPECIES_WEEZING_GALARIAN +#define SPECIES_WOOPER_PALDEA SPECIES_WOOPER_PALDEAN +#define SPECIES_WORMADAM_SANDY SPECIES_WORMADAM_SANDY_CLOAK +#define SPECIES_WORMADAM_TRASH SPECIES_WORMADAM_TRASH_CLOAK +#define SPECIES_YAMASK_GALAR SPECIES_YAMASK_GALARIAN +#define SPECIES_ZACIAN_CROWNED SPECIES_ZACIAN_CROWNED_SWORD +#define SPECIES_ZAMAZENTA_CROWNED SPECIES_ZAMAZENTA_CROWNED_SHIELD +#define SPECIES_ZAPDOS_GALAR SPECIES_ZAPDOS_GALARIAN +#define SPECIES_ZIGZAGOON_GALAR SPECIES_ZIGZAGOON_GALARIAN +#define SPECIES_ZOROARK_HISUI SPECIES_ZOROARK_HISUIAN +#define SPECIES_ZORUA_HISUI SPECIES_ZORUA_HISUIAN + #endif // GUARD_CONSTANTS_SPECIES_H diff --git a/include/constants/trainers.h b/include/constants/trainers.h index 8ebfd49cab..ebfc18eef0 100644 --- a/include/constants/trainers.h +++ b/include/constants/trainers.h @@ -371,7 +371,8 @@ #define F_TRAINER_FEMALE (1 << 7) // Trainer party defines -#define TRAINER_MON_MALE 1 -#define TRAINER_MON_FEMALE 2 +#define TRAINER_MON_MALE 1 +#define TRAINER_MON_FEMALE 2 +#define TRAINER_MON_RANDOM_GENDER 3 #endif // GUARD_TRAINERS_H diff --git a/include/constants/wild_encounter.h b/include/constants/wild_encounter.h index a78cd126f3..8902f2ef43 100644 --- a/include/constants/wild_encounter.h +++ b/include/constants/wild_encounter.h @@ -8,4 +8,6 @@ #define NUM_ALTERING_CAVE_TABLES 9 +#define FISHING_CHAIN_LENGTH_MAX 20 + #endif // GUARD_CONSTANTS_WILD_ENCOUNTER_H diff --git a/include/data.h b/include/data.h index 65821ec0d0..b7d7773627 100644 --- a/include/data.h +++ b/include/data.h @@ -64,6 +64,8 @@ struct TrainerBacksprite #define TRAINER_PARTY_IVS(hp, atk, def, speed, spatk, spdef) (hp | (atk << 5) | (def << 10) | (speed << 15) | (spatk << 20) | (spdef << 25)) #define TRAINER_PARTY_EVS(hp, atk, def, speed, spatk, spdef) ((const u8[6]){hp,atk,def,spatk,spdef,speed}) +// Shared by both trainer and frontier mons +// See CreateNPCTrainerPartyFromTrainer and CreateFacilityMon struct TrainerMon { const u8 *nickname; @@ -76,13 +78,13 @@ struct TrainerMon u8 lvl; u8 ball; u8 friendship; - u8 nature : 5; - bool8 gender : 2; - bool8 isShiny : 1; - u8 dynamaxLevel : 4; - bool8 gigantamaxFactor : 1; - bool8 shouldDynamax : 1; - bool8 shouldTerastal : 1; + u8 nature:5; + bool8 gender:2; + bool8 isShiny:1; + u8 dynamaxLevel:4; + bool8 gigantamaxFactor:1; + bool8 shouldDynamax:1; + bool8 shouldTerastal:1; }; #define TRAINER_PARTY(partyArray) partyArray, .partySize = ARRAY_COUNT(partyArray) diff --git a/include/event_object_movement.h b/include/event_object_movement.h index 706ebc2808..790e04222c 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -79,6 +79,12 @@ enum FollowerTransformTypes #define GROUND_EFFECT_FLAG_HOT_SPRINGS (1 << 18) #define GROUND_EFFECT_FLAG_SEAWEED (1 << 19) +// Sprite data for the CameraObject functions +#define sCamera_FollowSpriteId data[0] +#define sCamera_State data[1] +#define sCamera_MoveX data[2] +#define sCamera_MoveY data[3] + struct StepAnimTable { const union AnimCmd *const *anims; @@ -138,7 +144,7 @@ u8 TrySpawnObjectEvent(u8 localId, u8 mapNum, u8 mapGroup); u8 SpawnSpecialObjectEventParameterized(u16 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 elevation); u8 SpawnSpecialObjectEvent(struct ObjectEventTemplate *); void SetSpritePosToMapCoords(s16 mapX, s16 mapY, s16 *destX, s16 *destY); -void CameraObjectReset1(void); +void CameraObjectReset(void); u8 UpdateSpritePaletteByTemplate(const struct SpriteTemplate *, struct Sprite *); void ObjectEventSetGraphicsId(struct ObjectEvent *, u16 graphicsId); void ObjectEventTurn(struct ObjectEvent *, u8 direction); @@ -229,7 +235,7 @@ u16 GetObjectPaletteTag(u8 palSlot); void UpdateObjectEventSpriteInvisibility(struct Sprite *sprite, bool8 invisible); s16 GetFigure8XOffset(s16 idx); s16 GetFigure8YOffset(s16 idx); -void CameraObjectReset2(void); +void CameraObjectFreeze(void); u8 GetObjectEventBerryTreeId(u8 objectEventId); void SetBerryTreeJustPicked(u8 mapId, u8 mapNumber, u8 mapGroup); bool8 IsBerryTreeSparkling(u8 localId, u8 mapNum, u8 mapGroup); diff --git a/include/gba/types.h b/include/gba/types.h index 4acaee2d23..65b65187f8 100644 --- a/include/gba/types.h +++ b/include/gba/types.h @@ -2,6 +2,7 @@ #define GUARD_GBA_TYPES_H #include +#include "gba/defines.h" typedef uint8_t u8; typedef uint16_t u16; diff --git a/include/metaprogram.h b/include/metaprogram.h index 4bcc306b6f..67736cfbc0 100644 --- a/include/metaprogram.h +++ b/include/metaprogram.h @@ -26,6 +26,9 @@ #define STR(...) STR_(__VA_ARGS__) #define STR_(...) #__VA_ARGS__ +/* You'll never guess what this one does */ +#define APPEND_SEMICOLON(a) a; + /* Converts a string to a compound literal, essentially making it a pointer to const u8 */ #define COMPOUND_STRING(str) (const u8[]) _(str) diff --git a/include/pokemon.h b/include/pokemon.h index 76f0258841..0f45518240 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -389,9 +389,9 @@ struct SpeciesInfo /*0x8C*/ /* 0x38 */ u16 trainerScale; /* 0x3A */ u16 trainerOffset; /* 0x3C */ const u8 *description; - /* 0x40 */ u8 bodyColor : 7; + /* 0x40 */ u8 bodyColor:7; // Graphical Data - u8 noFlip : 1; + u8 noFlip:1; /* 0x41 */ u8 frontAnimDelay; /* 0x42 */ u8 frontAnimId; /* 0x43 */ u8 backAnimId; @@ -438,7 +438,7 @@ struct SpeciesInfo /*0x8C*/ u32 allPerfectIVs:1; u32 dexForceRequired:1; // This species will be taken into account for Pokédex ratings even if they have the "isMythical" flag set. u32 tmIlliterate:1; // This species will be unable to learn the universal moves. - u32 padding4:16; + u32 padding4:15; // Move Data /* 0x80 */ const struct LevelUpMove *levelUpLearnset; /* 0x84 */ const u16 *teachableLearnset; diff --git a/include/test/battle.h b/include/test/battle.h index b44186ed3d..62b0680486 100644 --- a/include/test/battle.h +++ b/include/test/battle.h @@ -723,27 +723,8 @@ struct BattleTestRunnerState extern const struct TestRunner gBattleTestRunner; extern struct BattleTestRunnerState *const gBattleTestRunnerState; -#define MEMBERS(...) VARARG_8(MEMBERS_, __VA_ARGS__) -#define MEMBERS_0() -#define MEMBERS_1(a) a; -#define MEMBERS_2(a, b) a; b; -#define MEMBERS_3(a, b, c) a; b; c; -#define MEMBERS_4(a, b, c, d) a; b; c; d; -#define MEMBERS_5(a, b, c, d, e) a; b; c; d; e; -#define MEMBERS_6(a, b, c, d, e, f) a; b; c; d; e; f; -#define MEMBERS_7(a, b, c, d, e, f, g) a; b; c; d; e; f; g; -#define MEMBERS_8(a, b, c, d, e, f, g, h) a; b; c; d; e; f; g; h; - -#define APPEND_TRUE(...) VARARG_8(APPEND_TRUE_, __VA_ARGS__) -#define APPEND_TRUE_0() -#define APPEND_TRUE_1(a) a, TRUE -#define APPEND_TRUE_2(a, b) a, TRUE, b, TRUE -#define APPEND_TRUE_3(a, b, c) a, TRUE, b, TRUE, c, TRUE -#define APPEND_TRUE_4(a, b, c, d) a, TRUE, b, TRUE, c, TRUE, d, TRUE -#define APPEND_TRUE_5(a, b, c, d, e) a, TRUE, b, TRUE, c, TRUE, d, TRUE, e, TRUE -#define APPEND_TRUE_6(a, b, c, d, e, f) a, TRUE, b, TRUE, c, TRUE, d, TRUE, e, TRUE, f, TRUE -#define APPEND_TRUE_7(a, b, c, d, e, f, g) a, TRUE, b, TRUE, c, TRUE, d, TRUE, e, TRUE, f, TRUE, g, TRUE -#define APPEND_TRUE_8(a, b, c, d, e, f, g, h) a, TRUE, b, TRUE, c, TRUE, d, TRUE, e, TRUE, f, TRUE, g, TRUE, h, TRUE +#define APPEND_COMMA_TRUE(a) , a, TRUE +#define R_APPEND_TRUE(...) __VA_OPT__(FIRST(__VA_ARGS__), TRUE RECURSIVELY(R_FOR_EACH(APPEND_COMMA_TRUE, EXCEPT_1(__VA_ARGS__)))) /* Test */ @@ -754,7 +735,7 @@ extern struct BattleTestRunnerState *const gBattleTestRunnerState; } #define BATTLE_TEST_ARGS_SINGLE(_name, _type, ...) \ - struct CAT(Result, __LINE__) { MEMBERS(__VA_ARGS__) }; \ + struct CAT(Result, __LINE__) { RECURSIVELY(R_FOR_EACH(APPEND_SEMICOLON, __VA_ARGS__)) }; \ static void CAT(Test, __LINE__)(struct CAT(Result, __LINE__) *, const u32, struct BattlePokemon *, struct BattlePokemon *); \ __attribute__((section(".tests"))) static const struct Test CAT(sTest, __LINE__) = \ { \ @@ -772,7 +753,7 @@ extern struct BattleTestRunnerState *const gBattleTestRunnerState; static void CAT(Test, __LINE__)(struct CAT(Result, __LINE__) *results, const u32 i, struct BattlePokemon *player, struct BattlePokemon *opponent) #define BATTLE_TEST_ARGS_DOUBLE(_name, _type, ...) \ - struct CAT(Result, __LINE__) { MEMBERS(__VA_ARGS__) }; \ + struct CAT(Result, __LINE__) { RECURSIVELY(R_FOR_EACH(APPEND_SEMICOLON, __VA_ARGS__)) }; \ static void CAT(Test, __LINE__)(struct CAT(Result, __LINE__) *, const u32, struct BattlePokemon *, struct BattlePokemon *, struct BattlePokemon *, struct BattlePokemon *); \ __attribute__((section(".tests"))) static const struct Test CAT(sTest, __LINE__) = \ { \ @@ -911,28 +892,28 @@ enum { TURN_CLOSED, TURN_OPEN, TURN_CLOSING }; #define TURN for (OpenTurn(__LINE__); gBattleTestRunnerState->data.turnState == TURN_OPEN; CloseTurn(__LINE__)) -#define MOVE(battler, ...) Move(__LINE__, battler, (struct MoveContext) { APPEND_TRUE(__VA_ARGS__) }) +#define MOVE(battler, ...) Move(__LINE__, battler, (struct MoveContext) { R_APPEND_TRUE(__VA_ARGS__) }) -#define EXPECT_MOVE(battler, ...) ExpectMove(__LINE__, battler, (struct MoveContext) { APPEND_TRUE(__VA_ARGS__) }) +#define EXPECT_MOVE(battler, ...) ExpectMove(__LINE__, battler, (struct MoveContext) { R_APPEND_TRUE(__VA_ARGS__) }) #define NOT_EXPECT_MOVE(battler, _move) ExpectMove(__LINE__, battler, (struct MoveContext) { .move = _move, .explicitMove = TRUE, .notExpected = TRUE, .explicitNotExpected = TRUE, }) #define EXPECT_MOVES(battler, ...) ExpectMoves(__LINE__, battler, FALSE, (struct FourMoves) {{ __VA_ARGS__ }}) #define NOT_EXPECT_MOVES(battler, ...) ExpectMoves(__LINE__, battler, TRUE, (struct FourMoves) {{ __VA_ARGS__ }}) #define EXPECT_SEND_OUT(battler, partyIndex) ExpectSendOut(__LINE__, battler, partyIndex) #define EXPECT_SWITCH(battler, partyIndex) ExpectSwitch(__LINE__, battler, partyIndex) -#define SCORE_EQ(battler, ...) Score(__LINE__, battler, CMP_EQUAL, FALSE, (struct TestAIScoreStruct) { APPEND_TRUE(__VA_ARGS__) } ) -#define SCORE_NE(battler, ...) Score(__LINE__, battler, CMP_NOT_EQUAL, FALSE, (struct TestAIScoreStruct) { APPEND_TRUE(__VA_ARGS__) } ) -#define SCORE_GT(battler, ...) Score(__LINE__, battler, CMP_GREATER_THAN, FALSE, (struct TestAIScoreStruct) { APPEND_TRUE(__VA_ARGS__) } ) -#define SCORE_LT(battler, ...) Score(__LINE__, battler, CMP_LESS_THAN, FALSE, (struct TestAIScoreStruct) { APPEND_TRUE(__VA_ARGS__) } ) -#define SCORE_EQ_VAL(battler, ...) Score(__LINE__, battler, CMP_EQUAL, TRUE, (struct TestAIScoreStruct) { APPEND_TRUE(__VA_ARGS__) } ) -#define SCORE_NE_VAL(battler, ...) Score(__LINE__, battler, CMP_NOT_EQUAL, TRUE, (struct TestAIScoreStruct) { APPEND_TRUE(__VA_ARGS__) } ) -#define SCORE_GT_VAL(battler, ...) Score(__LINE__, battler, CMP_GREATER_THAN, TRUE, (struct TestAIScoreStruct) { APPEND_TRUE(__VA_ARGS__) } ) -#define SCORE_LT_VAL(battler, ...) Score(__LINE__, battler, CMP_LESS_THAN, TRUE, (struct TestAIScoreStruct) { APPEND_TRUE(__VA_ARGS__) } ) +#define SCORE_EQ(battler, ...) Score(__LINE__, battler, CMP_EQUAL, FALSE, (struct TestAIScoreStruct) { R_APPEND_TRUE(__VA_ARGS__) } ) +#define SCORE_NE(battler, ...) Score(__LINE__, battler, CMP_NOT_EQUAL, FALSE, (struct TestAIScoreStruct) { R_APPEND_TRUE(__VA_ARGS__) } ) +#define SCORE_GT(battler, ...) Score(__LINE__, battler, CMP_GREATER_THAN, FALSE, (struct TestAIScoreStruct) { R_APPEND_TRUE(__VA_ARGS__) } ) +#define SCORE_LT(battler, ...) Score(__LINE__, battler, CMP_LESS_THAN, FALSE, (struct TestAIScoreStruct) { R_APPEND_TRUE(__VA_ARGS__) } ) +#define SCORE_EQ_VAL(battler, ...) Score(__LINE__, battler, CMP_EQUAL, TRUE, (struct TestAIScoreStruct) { R_APPEND_TRUE(__VA_ARGS__) } ) +#define SCORE_NE_VAL(battler, ...) Score(__LINE__, battler, CMP_NOT_EQUAL, TRUE, (struct TestAIScoreStruct) { R_APPEND_TRUE(__VA_ARGS__) } ) +#define SCORE_GT_VAL(battler, ...) Score(__LINE__, battler, CMP_GREATER_THAN, TRUE, (struct TestAIScoreStruct) { R_APPEND_TRUE(__VA_ARGS__) } ) +#define SCORE_LT_VAL(battler, ...) Score(__LINE__, battler, CMP_LESS_THAN, TRUE, (struct TestAIScoreStruct) { R_APPEND_TRUE(__VA_ARGS__) } ) #define FORCED_MOVE(battler) ForcedMove(__LINE__, battler) #define SWITCH(battler, partyIndex) Switch(__LINE__, battler, partyIndex) #define SKIP_TURN(battler) SkipTurn(__LINE__, battler) #define SEND_OUT(battler, partyIndex) SendOut(__LINE__, battler, partyIndex) -#define USE_ITEM(battler, ...) UseItem(__LINE__, battler, (struct ItemContext) { APPEND_TRUE(__VA_ARGS__) }) +#define USE_ITEM(battler, ...) UseItem(__LINE__, battler, (struct ItemContext) { R_APPEND_TRUE(__VA_ARGS__) }) #define WITH_RNG(tag, value) rng: ((struct TurnRNG) { tag, value }) struct MoveContext @@ -998,8 +979,8 @@ void SendOut(u32 sourceLine, struct BattlePokemon *, u32 partyIndex); #define ABILITY_POPUP(battler, ...) QueueAbility(__LINE__, battler, (struct AbilityEventContext) { __VA_ARGS__ }) #define ANIMATION(type, id, ...) QueueAnimation(__LINE__, type, id, (struct AnimationEventContext) { __VA_ARGS__ }) -#define HP_BAR(battler, ...) QueueHP(__LINE__, battler, (struct HPEventContext) { APPEND_TRUE(__VA_ARGS__) }) -#define EXPERIENCE_BAR(battler, ...) QueueExp(__LINE__, battler, (struct ExpEventContext) { APPEND_TRUE(__VA_ARGS__) }) +#define HP_BAR(battler, ...) QueueHP(__LINE__, battler, (struct HPEventContext) { R_APPEND_TRUE(__VA_ARGS__) }) +#define EXPERIENCE_BAR(battler, ...) QueueExp(__LINE__, battler, (struct ExpEventContext) { R_APPEND_TRUE(__VA_ARGS__) }) // Static const is needed to make the modern compiler put the pattern variable in the .rodata section, instead of putting it on stack(which can break the game). #define MESSAGE(pattern) do {static const u8 msg[] = _(pattern); QueueMessage(__LINE__, msg);} while (0) #define STATUS_ICON(battler, status) QueueStatus(__LINE__, battler, (struct StatusEventContext) { status }) diff --git a/include/wild_encounter.h b/include/wild_encounter.h index 13e7600684..6a7c7a2cba 100644 --- a/include/wild_encounter.h +++ b/include/wild_encounter.h @@ -29,6 +29,7 @@ struct WildPokemonHeader extern const struct WildPokemonHeader gWildMonHeaders[]; extern bool8 gIsFishingEncounter; extern bool8 gIsSurfingEncounter; +extern u8 gChainFishingDexNavStreak; void DisableWildEncounters(bool8 disabled); u8 PickWildMonNature(void); @@ -41,5 +42,8 @@ u16 GetLocalWaterMon(void); bool8 UpdateRepelCounter(void); bool8 TryDoDoubleWildBattle(void); bool8 StandardWildEncounter_Debug(void); +void ResetChainFishingDexNavStreak(void); +bool32 IsCurrentEncounterFishing(void); +u32 CalculateChainFishingShinyRolls(void); #endif // GUARD_WILD_ENCOUNTER_H diff --git a/migration_scripts/convert_parties.py b/migration_scripts/convert_parties.py new file mode 100644 index 0000000000..463816c021 --- /dev/null +++ b/migration_scripts/convert_parties.py @@ -0,0 +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) diff --git a/sound/cry_tables.inc b/sound/cry_tables.inc index 450b9ee584..c98e0ec746 100644 --- a/sound/cry_tables.inc +++ b/sound/cry_tables.inc @@ -1707,7 +1707,7 @@ gCryTable:: cry Cry_Goodra .endif @ P_FAMILY_GOOMY .if P_FAMILY_KLEFKI == TRUE - cry Cry_Klefki + cry_uncomp Cry_Klefki @ Cannot be heard unless we use cry_uncomp here. .endif @ P_FAMILY_KLEFKI .if P_FAMILY_PHANTUMP == TRUE cry Cry_Phantump @@ -4133,7 +4133,7 @@ gCryTable_Reverse:: cry_reverse Cry_Goodra .endif @ P_FAMILY_GOOMY .if P_FAMILY_KLEFKI == TRUE - cry_reverse Cry_Klefki + cry_reverse_uncomp Cry_Klefki @ Cannot be heard unless we use cry_reverse_uncomp here. .endif @ P_FAMILY_KLEFKI .if P_FAMILY_PHANTUMP == TRUE cry_reverse Cry_Phantump diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index 6dd50eaaa1..3d1c7e934b 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -175,6 +175,10 @@ static u32 GetAiFlags(u16 trainerId) flags |= AI_FLAG_DOUBLE_BATTLE; } + // Automatically includes AI_FLAG_SMART_MON_CHOICES to improve smart switching + if (flags & AI_FLAG_SMART_SWITCHING) + flags |= AI_FLAG_SMART_MON_CHOICES; + return flags; } @@ -1838,7 +1842,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) case EFFECT_MORNING_SUN: case EFFECT_SYNTHESIS: case EFFECT_MOONLIGHT: - if ((AI_GetWeather(aiData) & (B_WEATHER_RAIN | B_WEATHER_SANDSTORM | B_WEATHER_HAIL))) + if ((AI_GetWeather(aiData) & (B_WEATHER_RAIN | B_WEATHER_SANDSTORM | B_WEATHER_HAIL | B_WEATHER_SNOW | B_WEATHER_FOG))) ADJUST_SCORE(-3); else if (AtMaxHp(battlerAtk)) ADJUST_SCORE(-10); @@ -2779,6 +2783,7 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) break; case ABILITY_WATER_ABSORB: case ABILITY_DRY_SKIN: + case ABILITY_EARTH_EATER: if (!(AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_HP_AWARE)) { RETURN_SCORE_MINUS(10); @@ -4258,7 +4263,7 @@ static u32 AI_CalcMoveScore(u32 battlerAtk, u32 battlerDef, u32 move) ADJUST_SCORE(DECENT_EFFECT); break; case EFFECT_SOAK: - if (HasMoveWithType(battlerAtk, TYPE_ELECTRIC) || HasMoveWithType(battlerAtk, TYPE_GRASS) || HasMoveEffect(battlerAtk, EFFECT_FREEZE_DRY)) + if (HasMoveWithType(battlerAtk, TYPE_ELECTRIC) || HasMoveWithType(battlerAtk, TYPE_GRASS) || (HasMoveEffect(battlerAtk, EFFECT_SUPER_EFFECTIVE_ON_ARG) && gMovesInfo[move].argument == TYPE_WATER) ) ADJUST_SCORE(DECENT_EFFECT); // Get some super effective moves break; case EFFECT_THIRD_TYPE: @@ -4886,6 +4891,7 @@ static s32 AI_HPAware(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) { if ((effect == EFFECT_HEAL_PULSE || effect == EFFECT_HIT_ENEMY_HEAL_ALLY) || (moveType == TYPE_ELECTRIC && AI_DATA->abilities[BATTLE_PARTNER(battlerAtk)] == ABILITY_VOLT_ABSORB) + || (moveType == TYPE_GROUND && AI_DATA->abilities[BATTLE_PARTNER(battlerAtk)] == ABILITY_EARTH_EATER) || (moveType == TYPE_WATER && (AI_DATA->abilities[BATTLE_PARTNER(battlerAtk)] == ABILITY_DRY_SKIN || AI_DATA->abilities[BATTLE_PARTNER(battlerAtk)] == ABILITY_WATER_ABSORB))) { if (gStatuses3[battlerDef] & STATUS3_HEAL_BLOCK) diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 231ab442a5..f08251e2a5 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -80,7 +80,7 @@ static bool32 HasBadOdds(u32 battler, bool32 emitResult) if (!(AI_THINKING_STRUCT->aiFlags[battler] & AI_FLAG_SMART_SWITCHING)) return FALSE; - // Won't bother configuring this for double battles + // Double Battles aren't included in AI_FLAG_SMART_MON_CHOICE. Defaults to regular switch in logic if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) return FALSE; @@ -356,6 +356,11 @@ static bool32 FindMonThatAbsorbsOpponentsMove(u32 battler, bool32 emitResult) absorbingTypeAbilities[0] = ABILITY_SAP_SIPPER; numAbsorbingAbilities = 1; } + else if (gMovesInfo[gLastLandedMoves[battler]].type == TYPE_GROUND) + { + absorbingTypeAbilities[0] = ABILITY_EARTH_EATER; + numAbsorbingAbilities = 1; + } else { return FALSE; @@ -1530,7 +1535,7 @@ static u32 GetSwitchinHitsToKO(s32 damageTaken, u32 battler) s32 currentHP = startingHP; // No damage being dealt - if (damageTaken + statusDamage + recurringDamage == 0) + if ((damageTaken + statusDamage + recurringDamage < recurringHealing) || damageTaken + statusDamage + recurringDamage == 0) return startingHP; // Mon fainted to hazards @@ -1589,7 +1594,7 @@ static u32 GetSwitchinHitsToKO(s32 damageTaken, u32 battler) } // Healing from items occurs before status so we can do the rest in one line - if (currentHP != 0) + if (currentHP >= 0) currentHP = currentHP + recurringHealing - recurringDamage - statusDamage; // Recalculate toxic damage if needed @@ -1938,7 +1943,7 @@ u8 GetMostSuitableMonToSwitchInto(u32 battler, bool32 switchAfterMonKOd) // Split ideal mon decision between after previous mon KO'd (prioritize offensive options) and after switching active mon out (prioritize defensive options), and expand the scope of both. // Only use better mon selection if AI_FLAG_SMART_MON_CHOICES is set for the trainer. - if (AI_THINKING_STRUCT->aiFlags[battler] & AI_FLAG_SMART_MON_CHOICES) + if (AI_THINKING_STRUCT->aiFlags[battler] & AI_FLAG_SMART_MON_CHOICES && !(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) // Double Battles aren't included in AI_FLAG_SMART_MON_CHOICE. Defaults to regular switch in logic { bestMonId = GetBestMonIntegrated(party, firstId, lastId, battler, opposingBattler, battlerIn1, battlerIn2, switchAfterMonKOd); return bestMonId; diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index 8e0955b1de..40f3da2b5a 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -410,6 +410,10 @@ bool32 IsDamageMoveUsable(u32 move, u32 battlerAtk, u32 battlerDef) if (moveType == TYPE_GRASS) return TRUE; break; + case ABILITY_EARTH_EATER: + if (moveType == TYPE_GROUND) + return TRUE; + break; } switch (gMovesInfo[move].effect) @@ -2045,6 +2049,7 @@ bool32 IsStatLoweringEffect(u32 effect) case EFFECT_TICKLE: case EFFECT_CAPTIVATE: case EFFECT_NOBLE_ROAR: + case EFFECT_MEMENTO: return TRUE; default: return FALSE; diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c index 3c4221e098..3324d276fd 100755 --- a/src/battle_anim_effects_2.c +++ b/src/battle_anim_effects_2.c @@ -3734,7 +3734,6 @@ static void AnimTask_UproarDistortion_Step(u8 taskId) static void AnimJaggedMusicNote(struct Sprite *sprite) { - int var1; u8 battler = !gBattleAnimArgs[0] ? gBattleAnimAttacker : gBattleAnimTarget; if (GetBattlerSide(battler) == B_SIDE_OPPONENT) @@ -3745,16 +3744,8 @@ static void AnimJaggedMusicNote(struct Sprite *sprite) sprite->data[0] = 0; sprite->data[1] = (u16)sprite->x << 3; sprite->data[2] = (u16)sprite->y << 3; - - var1 = gBattleAnimArgs[1] << 3; - if (var1 < 0) - var1 += 7; - sprite->data[3] = var1 >> 3; - - var1 = gBattleAnimArgs[2] << 3; - if (var1 < 0) - var1 += 7; - sprite->data[4] = var1 >> 3; + sprite->data[3] = (gBattleAnimArgs[1] << 3) / 8; + sprite->data[4] = (gBattleAnimArgs[2] << 3) / 8; sprite->oam.tileNum += gBattleAnimArgs[3] * 16; sprite->callback = AnimJaggedMusicNote_Step; diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c index ffba3429eb..5dd91b7f49 100644 --- a/src/battle_anim_effects_3.c +++ b/src/battle_anim_effects_3.c @@ -5580,6 +5580,8 @@ void AnimTask_GetWeather(u8 taskId) gBattleAnimArgs[ARG_RET_ID] = ANIM_WEATHER_HAIL; else if (gWeatherMoveAnim & B_WEATHER_SNOW) gBattleAnimArgs[ARG_RET_ID] = ANIM_WEATHER_SNOW; + else if (gWeatherMoveAnim & B_WEATHER_FOG) + gBattleAnimArgs[ARG_RET_ID] = ANIM_WEATHER_FOG; DestroyAnimVisualTask(taskId); } diff --git a/src/battle_anim_fight.c b/src/battle_anim_fight.c index 90bd9391e3..0db2a92afc 100644 --- a/src/battle_anim_fight.c +++ b/src/battle_anim_fight.c @@ -565,7 +565,7 @@ static void AnimFistOrFootRandomPos(struct Sprite *sprite) y *= -1; if (GetBattlerSide(battler) == B_SIDE_PLAYER) - y += 0xFFF0; + y -= 16; sprite->x += x; sprite->y += y; diff --git a/src/battle_anim_rock.c b/src/battle_anim_rock.c index 7a84757cd9..f9b93a727a 100644 --- a/src/battle_anim_rock.c +++ b/src/battle_anim_rock.c @@ -648,7 +648,6 @@ void AnimTask_Rollout(u8 taskId) { u16 var0, var1, var2, var3; u8 rolloutCounter; - int var5; s16 pan1, pan2; struct Task *task; @@ -672,13 +671,7 @@ void AnimTask_Rollout(u8 taskId) task->data[11] = 0; task->data[9] = 0; task->data[12] = 1; - - var5 = task->data[8]; - if (var5 < 0) - var5 += 7; - - task->data[10] = (var5 >> 3) - 1; - + task->data[10] = (task->data[8] / 8) - 1; task->data[2] = var0 * 8; task->data[3] = var1 * 8; task->data[4] = ((var2 - var0) * 8) / task->data[8]; diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index 97b0a061bb..597d0b7c5f 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -744,7 +744,7 @@ static void OpponentHandleEndLinkBattle(u32 battler) { if (gBattleTypeFlags & BATTLE_TYPE_LINK && !(gBattleTypeFlags & BATTLE_TYPE_IS_MASTER)) { - gMain.inBattle = 0; + gMain.inBattle = FALSE; gMain.callback1 = gPreBattleCallback1; SetMainCallback2(gMain.savedCallback); } diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index c0f5280c3a..d6bd7fa7ac 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -2147,7 +2147,7 @@ void PlayerHandleExpUpdate(u32 battler) u8 monId = gBattleResources->bufferA[battler][1]; s32 taskId, expPointsToGive; - if (GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL) >= GetCurrentLevelCap()) + if (GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL) >= MAX_LEVEL) { PlayerBufferExecCompleted(battler); } diff --git a/src/battle_dome.c b/src/battle_dome.c index 0978ae4888..95490a54ea 100644 --- a/src/battle_dome.c +++ b/src/battle_dome.c @@ -107,7 +107,7 @@ enum { static u8 GetDomeTrainerMonIvs(u16); static void SwapDomeTrainers(int, int, u16 *); -static void CalcDomeMonStats(u16, int, int, u8, u8, int *); +static void CalcDomeMonStats(const struct TrainerMon *fmon, int level, u8 ivs, int *stats); static void CreateDomeOpponentMons(u16); static int SelectOpponentMons_Good(u16, bool8); static int SelectOpponentMons_Bad(u16, bool8); @@ -2000,7 +2000,7 @@ static void InitDomeTrainers(void) if (alreadySelectedMonId == monId || species[0] == gFacilityTrainerMons[monId].species || species[1] == gFacilityTrainerMons[monId].species - || gFacilityTrainerMons[alreadySelectedMonId].itemTableId == gFacilityTrainerMons[monId].itemTableId) + || gFacilityTrainerMons[alreadySelectedMonId].heldItem == gFacilityTrainerMons[monId].heldItem) break; } } while (k != j); @@ -2053,11 +2053,8 @@ static void InitDomeTrainers(void) ivs = GetDomeTrainerMonIvs(DOME_TRAINERS[i].trainerId); for (j = 0; j < FRONTIER_PARTY_SIZE; j++) { - CalcDomeMonStats(gFacilityTrainerMons[DOME_MONS[i][j]].species, - monLevel, ivs, - gFacilityTrainerMons[DOME_MONS[i][j]].evSpread, - gFacilityTrainerMons[DOME_MONS[i][j]].nature, - statValues); + CalcDomeMonStats(&gFacilityTrainerMons[DOME_MONS[i][j]], + monLevel, ivs, statValues); rankingScores[i] += statValues[STAT_ATK]; rankingScores[i] += statValues[STAT_DEF]; @@ -2130,40 +2127,31 @@ static void InitDomeTrainers(void) #define CALC_STAT(base, statIndex) \ { \ - u8 baseStat = gSpeciesInfo[species].base; \ + u8 baseStat = gSpeciesInfo[fmon->species].base; \ stats[statIndex] = (((2 * baseStat + ivs + evs[statIndex] / 4) * level) / 100) + 5; \ - stats[statIndex] = (u8) ModifyStatByNature(nature, stats[statIndex], statIndex); \ + stats[statIndex] = (u8) ModifyStatByNature(fmon->nature, stats[statIndex], statIndex); \ } -static void CalcDomeMonStats(u16 species, int level, int ivs, u8 evBits, u8 nature, int *stats) +static void CalcDomeMonStats(const struct TrainerMon *fmon, int level, u8 ivs, int *stats) { - int i, count; - u8 bits; - u16 resultingEvs; int evs[NUM_STATS]; - - count = 0, bits = evBits; - for (i = 0; i < NUM_STATS; bits >>= 1, i++) + int i; + + for (i = 0; i < NUM_STATS; i++) { - if (bits & 1) - count++; + if (fmon->ev != NULL) + evs[i] = fmon->ev[i]; + else + evs[i] = 0; } - - resultingEvs = MAX_TOTAL_EVS / count; - for (i = 0; i < NUM_STATS; bits <<= 1, i++) - { - evs[i] = 0; - if (evBits & bits) - evs[i] = resultingEvs; - } - - if (species == SPECIES_SHEDINJA) + + if (fmon->species == SPECIES_SHEDINJA) { stats[STAT_HP] = 1; } else { - int n = 2 * gSpeciesInfo[species].baseHP; + int n = 2 * gSpeciesInfo[fmon->species].baseHP; stats[STAT_HP] = (((n + ivs + evs[STAT_HP] / 4) * level) / 100) + level + 10; } @@ -2205,33 +2193,15 @@ static void InitDomeOpponentParty(void) static void CreateDomeOpponentMon(u8 monPartyId, u16 tournamentTrainerId, u8 tournamentMonId, u32 otId) { - int i; - u8 friendship = MAX_FRIENDSHIP; #ifdef BUGFIX u8 fixedIv = GetDomeTrainerMonIvs(DOME_TRAINERS[tournamentTrainerId].trainerId); #else u8 fixedIv = GetDomeTrainerMonIvs(tournamentTrainerId); // BUG: Using the wrong ID. As a result, all Pokémon have ivs of 3. #endif u8 level = SetFacilityPtrsGetLevel(); - CreateMonWithEVSpreadNatureOTID(&gEnemyParty[monPartyId], - gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][tournamentMonId]].species, - level, - gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][tournamentMonId]].nature, - fixedIv, - gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][tournamentMonId]].evSpread, otId); - - friendship = MAX_FRIENDSHIP; - for (i = 0; i < MAX_MON_MOVES; i++) - { - SetMonMoveSlot(&gEnemyParty[monPartyId], - gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][tournamentMonId]].moves[i], i); - if (gMovesInfo[gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][tournamentMonId]].moves[i]].effect == EFFECT_FRUSTRATION) - friendship = 0; - } - - SetMonData(&gEnemyParty[monPartyId], MON_DATA_FRIENDSHIP, &friendship); - SetMonData(&gEnemyParty[monPartyId], MON_DATA_HELD_ITEM, - &gBattleFrontierHeldItems[gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][tournamentMonId]].itemTableId]); + + CreateFacilityMon(&gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][tournamentMonId]], + level, fixedIv, otId, 0, &gEnemyParty[monPartyId]); } static void CreateDomeOpponentMons(u16 tournamentTrainerId) @@ -4463,23 +4433,14 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTourneyId) { for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { - int evBits = gFacilityTrainerMons[DOME_MONS[trainerTourneyId][i]].evSpread; - for (k = 0, j = 0; j < NUM_STATS; j++) - { - allocatedArray[j] = 0; - if (evBits & 1) - k++; - evBits >>= 1; - } - k = MAX_TOTAL_EVS / k; - evBits = gFacilityTrainerMons[DOME_MONS[trainerTourneyId][i]].evSpread; for (j = 0; j < NUM_STATS; j++) { - if (evBits & 1) - allocatedArray[j] = k; - evBits >>= 1; + if (gFacilityTrainerMons[DOME_MONS[trainerTourneyId][i]].ev != NULL) + allocatedArray[j] = gFacilityTrainerMons[DOME_MONS[trainerTourneyId][i]].ev[j]; + else + allocatedArray[j] = 0; } - + allocatedArray[NUM_STATS] += allocatedArray[STAT_HP]; for (j = 0; j < NUM_NATURE_STATS; j++) { @@ -5800,7 +5761,7 @@ static void InitRandomTourneyTreeResults(void) if (alreadySelectedMonId == monId || species[0] == gFacilityTrainerMons[monId].species || species[1] == gFacilityTrainerMons[monId].species - || gFacilityTrainerMons[alreadySelectedMonId].itemTableId == gFacilityTrainerMons[monId].itemTableId) + || gFacilityTrainerMons[alreadySelectedMonId].heldItem == gFacilityTrainerMons[monId].heldItem) break; } } while (k != j); @@ -5821,11 +5782,8 @@ static void InitRandomTourneyTreeResults(void) ivs = GetDomeTrainerMonIvs(DOME_TRAINERS[i].trainerId); for (j = 0; j < FRONTIER_PARTY_SIZE; j++) { - CalcDomeMonStats(gFacilityTrainerMons[DOME_MONS[i][j]].species, - monLevel, ivs, - gFacilityTrainerMons[DOME_MONS[i][j]].evSpread, - gFacilityTrainerMons[DOME_MONS[i][j]].nature, - statValues); + CalcDomeMonStats(&gFacilityTrainerMons[DOME_MONS[i][j]], + monLevel, ivs, statValues); statSums[i] += statValues[STAT_ATK]; statSums[i] += statValues[STAT_DEF]; diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 7286045684..5075e18ea6 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -519,21 +519,6 @@ static u32 GetMaxMoveStatusEffect(u16 move) } } -// CALLNATIVE FUNCTIONS -#define CMD_ARGS(...) const struct __attribute__((packed)) { u8 opcode; MEMBERS(__VA_ARGS__) const u8 nextInstr[0]; } *const cmd = (const void *)gBattlescriptCurrInstr -#define NATIVE_ARGS(...) CMD_ARGS(void (*func)(void), ##__VA_ARGS__) - -#define MEMBERS(...) VARARG_8(MEMBERS_, __VA_ARGS__) -#define MEMBERS_0() -#define MEMBERS_1(a) a; -#define MEMBERS_2(a, b) a; b; -#define MEMBERS_3(a, b, c) a; b; c; -#define MEMBERS_4(a, b, c, d) a; b; c; d; -#define MEMBERS_5(a, b, c, d, e) a; b; c; d; e; -#define MEMBERS_6(a, b, c, d, e, f) a; b; c; d; e; f; -#define MEMBERS_7(a, b, c, d, e, f, g) a; b; c; d; e; f; g; -#define MEMBERS_8(a, b, c, d, e, f, g, h) a; b; c; d; e; f; g; h; - // Updates Dynamax HP multipliers and healthboxes. void BS_UpdateDynamax(void) { diff --git a/src/battle_factory.c b/src/battle_factory.c index 8e3f84b359..7d7ec7b3af 100644 --- a/src/battle_factory.c +++ b/src/battle_factory.c @@ -362,7 +362,7 @@ static void GenerateOpponentMons(void) // Ensure held items don't repeat on the opponent's team for (k = firstMonId; k < firstMonId + i; k++) { - if (heldItems[k] != ITEM_NONE && heldItems[k] == gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]) + if (heldItems[k] != ITEM_NONE && heldItems[k] == gFacilityTrainerMons[monId].heldItem) break; } if (k != firstMonId + i) @@ -370,7 +370,7 @@ static void GenerateOpponentMons(void) // Successful selection species[i] = gFacilityTrainerMons[monId].species; - heldItems[i] = gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]; + heldItems[i] = gFacilityTrainerMons[monId].heldItem; gFrontierTempParty[i] = monId; i++; } @@ -396,21 +396,17 @@ static void SetRentalsToOpponentParty(void) gSaveBlock2Ptr->frontier.rentalMons[i + FRONTIER_PARTY_SIZE].ivs = GetBoxMonData(&gEnemyParty[i].box, MON_DATA_ATK_IV, NULL); gSaveBlock2Ptr->frontier.rentalMons[i + FRONTIER_PARTY_SIZE].personality = GetMonData(&gEnemyParty[i], MON_DATA_PERSONALITY, NULL); gSaveBlock2Ptr->frontier.rentalMons[i + FRONTIER_PARTY_SIZE].abilityNum = GetBoxMonData(&gEnemyParty[i].box, MON_DATA_ABILITY_NUM, NULL); - SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[gFrontierTempParty[i]].itemTableId]); + SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gFacilityTrainerMons[gFrontierTempParty[i]].heldItem); } } static void SetPlayerAndOpponentParties(void) { - int i, j, k; - int count = 0; - u8 bits = 0; + int i; u8 monLevel; u16 monId; - u16 evs; u8 ivs; - u8 friendship; - + if (gSaveBlock2Ptr->frontier.lvlMode == FRONTIER_LVL_TENT) { gFacilityTrainerMons = gSlateportBattleTentMons; @@ -432,36 +428,11 @@ static void SetPlayerAndOpponentParties(void) { monId = gSaveBlock2Ptr->frontier.rentalMons[i].monId; ivs = gSaveBlock2Ptr->frontier.rentalMons[i].ivs; - CreateMon(&gPlayerParty[i], - gFacilityTrainerMons[monId].species, - monLevel, - ivs, - TRUE, gSaveBlock2Ptr->frontier.rentalMons[i].personality, - OT_ID_PLAYER_ID, 0); - - count = 0; - bits = gFacilityTrainerMons[monId].evSpread; - for (j = 0; j < NUM_STATS; bits >>= 1, j++) - { - if (bits & 1) - count++; - } - - evs = MAX_TOTAL_EVS / count; - bits = 1; - for (j = 0; j < NUM_STATS; bits <<= 1, j++) - { - if (gFacilityTrainerMons[monId].evSpread & bits) - SetMonData(&gPlayerParty[i], MON_DATA_HP_EV + j, &evs); - } - + + CreateFacilityMon(&gFacilityTrainerMons[monId], monLevel, ivs, OT_ID_PLAYER_ID, FLAG_FRONTIER_MON_FACTORY, &gPlayerParty[i]); + SetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY, + &gSaveBlock2Ptr->frontier.rentalMons[i].personality); CalculateMonStats(&gPlayerParty[i]); - friendship = 0; - for (k = 0; k < MAX_MON_MOVES; k++) - SetMonMoveAvoidReturn(&gPlayerParty[i], gFacilityTrainerMons[monId].moves[k], k); - SetMonData(&gPlayerParty[i], MON_DATA_FRIENDSHIP, &friendship); - SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]); - SetMonData(&gPlayerParty[i], MON_DATA_ABILITY_NUM, &gSaveBlock2Ptr->frontier.rentalMons[i].abilityNum); } } @@ -473,34 +444,12 @@ static void SetPlayerAndOpponentParties(void) { monId = gSaveBlock2Ptr->frontier.rentalMons[i + FRONTIER_PARTY_SIZE].monId; ivs = gSaveBlock2Ptr->frontier.rentalMons[i + FRONTIER_PARTY_SIZE].ivs; - CreateMon(&gEnemyParty[i], - gFacilityTrainerMons[monId].species, - monLevel, - ivs, - TRUE, gSaveBlock2Ptr->frontier.rentalMons[i + FRONTIER_PARTY_SIZE].personality, - OT_ID_PLAYER_ID, 0); - - count = 0; - bits = gFacilityTrainerMons[monId].evSpread; - for (j = 0; j < NUM_STATS; bits >>= 1, j++) - { - if (bits & 1) - count++; - } - - evs = MAX_TOTAL_EVS / count; - bits = 1; - for (j = 0; j < NUM_STATS; bits <<= 1, j++) - { - if (gFacilityTrainerMons[monId].evSpread & bits) - SetMonData(&gEnemyParty[i], MON_DATA_HP_EV + j, &evs); - } - - CalculateMonStats(&gEnemyParty[i]); - for (k = 0; k < MAX_MON_MOVES; k++) - SetMonMoveAvoidReturn(&gEnemyParty[i], gFacilityTrainerMons[monId].moves[k], k); - SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]); - SetMonData(&gEnemyParty[i], MON_DATA_ABILITY_NUM, &gSaveBlock2Ptr->frontier.rentalMons[i + FRONTIER_PARTY_SIZE].abilityNum); + CreateFacilityMon(&gFacilityTrainerMons[monId], + monLevel, ivs, OT_ID_PLAYER_ID, FLAG_FRONTIER_MON_FACTORY, + &gEnemyParty[i]); + SetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY, + &gSaveBlock2Ptr->frontier.rentalMons[i + FRONTIER_PARTY_SIZE].personality); + CalculateMonStats(&gPlayerParty[i]); } break; } @@ -582,7 +531,7 @@ static void GenerateInitialRentalMons(void) // Cannot have two same held items. for (j = firstMonId; j < firstMonId + i; j++) { - if (heldItems[j] != ITEM_NONE && heldItems[j] == gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]) + if (heldItems[j] != ITEM_NONE && heldItems[j] == gFacilityTrainerMons[monId].heldItem) { if (gFacilityTrainerMons[monId].species == currSpecies) currSpecies = SPECIES_NONE; @@ -594,7 +543,7 @@ static void GenerateInitialRentalMons(void) gSaveBlock2Ptr->frontier.rentalMons[i].monId = monId; species[i] = gFacilityTrainerMons[monId].species; - heldItems[i] = gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]; + heldItems[i] = gFacilityTrainerMons[monId].heldItem; monIds[i] = monId; i++; } @@ -724,7 +673,7 @@ static void RestorePlayerPartyHeldItems(void) { SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, - &gBattleFrontierHeldItems[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.rentalMons[i].monId].itemTableId]); + &gFacilityTrainerMons[gSaveBlock2Ptr->frontier.rentalMons[i].monId].heldItem); } } @@ -761,7 +710,6 @@ void FillFactoryBrainParty(void) int i, j, k; u16 species[FRONTIER_PARTY_SIZE]; u16 heldItems[FRONTIER_PARTY_SIZE]; - u8 friendship; int monLevel; u8 fixedIV; u32 otId; @@ -801,27 +749,17 @@ void FillFactoryBrainParty(void) for (k = 0; k < i; k++) { - if (heldItems[k] != ITEM_NONE && heldItems[k] == gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]) + if (heldItems[k] != ITEM_NONE && heldItems[k] == gFacilityTrainerMons[monId].heldItem) break; } if (k != i) continue; species[i] = gFacilityTrainerMons[monId].species; - heldItems[i] = gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]; - CreateMonWithEVSpreadNatureOTID(&gEnemyParty[i], - gFacilityTrainerMons[monId].species, - monLevel, - gFacilityTrainerMons[monId].nature, - fixedIV, - gFacilityTrainerMons[monId].evSpread, - otId); - - friendship = 0; - for (k = 0; k < MAX_MON_MOVES; k++) - SetMonMoveAvoidReturn(&gEnemyParty[i], gFacilityTrainerMons[monId].moves[k], k); - SetMonData(&gEnemyParty[i], MON_DATA_FRIENDSHIP, &friendship); - SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]); + heldItems[i] = gFacilityTrainerMons[monId].heldItem; + CreateFacilityMon(&gFacilityTrainerMons[monId], + monLevel, fixedIV, otId, FLAG_FRONTIER_MON_FACTORY, + &gEnemyParty[i]); i++; } } diff --git a/src/battle_factory_screen.c b/src/battle_factory_screen.c index e945361f33..5aa019c29f 100644 --- a/src/battle_factory_screen.c +++ b/src/battle_factory_screen.c @@ -1735,10 +1735,9 @@ static void Select_Task_HandleChooseMons(u8 taskId) static void CreateFrontierFactorySelectableMons(u8 firstMonId) { - u8 i, j = 0; + u8 i = 0; u8 ivs = 0; u8 level = 0; - u8 friendship = 0; u32 otId = 0; u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; @@ -1762,27 +1761,18 @@ static void CreateFrontierFactorySelectableMons(u8 firstMonId) ivs = GetFactoryMonFixedIV(challengeNum + 1, FALSE); else ivs = GetFactoryMonFixedIV(challengeNum, FALSE); - CreateMonWithEVSpreadNatureOTID(&sFactorySelectScreen->mons[i + firstMonId].monData, - gFacilityTrainerMons[monId].species, - level, - gFacilityTrainerMons[monId].nature, - ivs, - gFacilityTrainerMons[monId].evSpread, - otId); - friendship = 0; - for (j = 0; j < MAX_MON_MOVES; j++) - SetMonMoveAvoidReturn(&sFactorySelectScreen->mons[i + firstMonId].monData, gFacilityTrainerMons[monId].moves[j], j); - SetMonData(&sFactorySelectScreen->mons[i + firstMonId].monData, MON_DATA_FRIENDSHIP, &friendship); - SetMonData(&sFactorySelectScreen->mons[i + firstMonId].monData, MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]); + + CreateFacilityMon(&gFacilityTrainerMons[monId], + level, ivs, otId, FLAG_FRONTIER_MON_FACTORY, + &sFactorySelectScreen->mons[i + firstMonId].monData); } } static void CreateSlateportTentSelectableMons(u8 firstMonId) { - u8 i, j; + u8 i; u8 ivs = 0; u8 level = TENT_MIN_LEVEL; - u8 friendship = 0; u32 otId = 0; gFacilityTrainerMons = gSlateportBattleTentMons; @@ -1792,18 +1782,7 @@ static void CreateSlateportTentSelectableMons(u8 firstMonId) { u16 monId = gSaveBlock2Ptr->frontier.rentalMons[i].monId; sFactorySelectScreen->mons[i + firstMonId].monId = monId; - CreateMonWithEVSpreadNatureOTID(&sFactorySelectScreen->mons[i + firstMonId].monData, - gFacilityTrainerMons[monId].species, - level, - gFacilityTrainerMons[monId].nature, - ivs, - gFacilityTrainerMons[monId].evSpread, - otId); - friendship = 0; - for (j = 0; j < MAX_MON_MOVES; j++) - SetMonMoveAvoidReturn(&sFactorySelectScreen->mons[i + firstMonId].monData, gFacilityTrainerMons[monId].moves[j], j); - SetMonData(&sFactorySelectScreen->mons[i + firstMonId].monData, MON_DATA_FRIENDSHIP, &friendship); - SetMonData(&sFactorySelectScreen->mons[i + firstMonId].monData, MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]); + CreateFacilityMon(&gFacilityTrainerMons[monId], level, ivs, otId, 0, &sFactorySelectScreen->mons[i + firstMonId].monData); } } diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index 31e4dcae2f..09b85e7768 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -513,6 +513,7 @@ static bool8 ShouldAnimBeDoneRegardlessOfSubstitute(u8 animId) case B_ANIM_SANDSTORM_CONTINUES: case B_ANIM_HAIL_CONTINUES: case B_ANIM_SNOW_CONTINUES: + case B_ANIM_FOG_CONTINUES: case B_ANIM_SNATCH_MOVE: return TRUE; default: diff --git a/src/battle_interface.c b/src/battle_interface.c index 50de6945a8..34cdec6e5c 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -74,7 +74,7 @@ enum HEALTHBOX_GFX_STATUS_BRN_BATTLER0, //status brn HEALTHBOX_GFX_34, HEALTHBOX_GFX_35, - HEALTHBOX_GFX_STATUS_FSB_BATTLER0, //status fsb + HEALTHBOX_GFX_STATUS_FRB_BATTLER0, //status frb HEALTHBOX_GFX_116, HEALTHBOX_GFX_117, HEALTHBOX_GFX_36, //misc [Black section] @@ -127,7 +127,7 @@ enum HEALTHBOX_GFX_STATUS_BRN_BATTLER1, //status2 "BRN" HEALTHBOX_GFX_84, HEALTHBOX_GFX_85, - HEALTHBOX_GFX_STATUS_FSB_BATTLER1, //status2 "FSB" + HEALTHBOX_GFX_STATUS_FRB_BATTLER1, //status2 "FRB" HEALTHBOX_GFX_118, HEALTHBOX_GFX_119, HEALTHBOX_GFX_STATUS_PSN_BATTLER2, //status3 "PSN" @@ -145,7 +145,7 @@ enum HEALTHBOX_GFX_STATUS_BRN_BATTLER2, //status3 "BRN" HEALTHBOX_GFX_99, HEALTHBOX_GFX_100, - HEALTHBOX_GFX_STATUS_FSB_BATTLER2, //status3 "FSB" + HEALTHBOX_GFX_STATUS_FRB_BATTLER2, //status3 "FRB" HEALTHBOX_GFX_120, HEALTHBOX_GFX_121, HEALTHBOX_GFX_STATUS_PSN_BATTLER3, //status4 "PSN" @@ -163,7 +163,7 @@ enum HEALTHBOX_GFX_STATUS_BRN_BATTLER3, //status4 "BRN" HEALTHBOX_GFX_114, HEALTHBOX_GFX_115, - HEALTHBOX_GFX_STATUS_FSB_BATTLER3, //status4 "FSB" + HEALTHBOX_GFX_STATUS_FRB_BATTLER3, //status4 "FRB" HEALTHBOX_GFX_122, HEALTHBOX_GFX_123, HEALTHBOX_GFX_FRAME_END, @@ -2389,7 +2389,7 @@ static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId) } else if (status & STATUS1_FROSTBITE) { - statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_FSB_BATTLER0, battlerId)); + statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_FRB_BATTLER0, battlerId)); statusPalId = PAL_STATUS_FRZ; } else if (status & STATUS1_PARALYSIS) @@ -2474,15 +2474,15 @@ static u8 GetStatusIconForBattlerId(u8 statusElementId, u8 battlerId) else ret = HEALTHBOX_GFX_STATUS_FRZ_BATTLER3; break; - case HEALTHBOX_GFX_STATUS_FSB_BATTLER0: + case HEALTHBOX_GFX_STATUS_FRB_BATTLER0: if (battlerId == 0) - ret = HEALTHBOX_GFX_STATUS_FSB_BATTLER0; + ret = HEALTHBOX_GFX_STATUS_FRB_BATTLER0; else if (battlerId == 1) - ret = HEALTHBOX_GFX_STATUS_FSB_BATTLER1; + ret = HEALTHBOX_GFX_STATUS_FRB_BATTLER1; else if (battlerId == 2) - ret = HEALTHBOX_GFX_STATUS_FSB_BATTLER2; + ret = HEALTHBOX_GFX_STATUS_FRB_BATTLER2; else - ret = HEALTHBOX_GFX_STATUS_FSB_BATTLER3; + ret = HEALTHBOX_GFX_STATUS_FRB_BATTLER3; break; case HEALTHBOX_GFX_STATUS_BRN_BATTLER0: if (battlerId == 0) @@ -2615,7 +2615,7 @@ s32 MoveBattleBar(u8 battlerId, u8 healthboxSpriteId, u8 whichBar, u8 unused) if (whichBar == HEALTH_BAR) // health bar { - u16 hpFraction = B_FAST_HP_DRAIN == FALSE ? 1 : max(gBattleSpritesDataPtr->battleBars[battlerId].maxValue / B_HEALTHBAR_PIXELS, 1); + u16 hpFraction = B_FAST_HP_DRAIN == FALSE ? 1 : max(gBattleSpritesDataPtr->battleBars[battlerId].maxValue / (B_HEALTHBAR_PIXELS / 2), 1); currentBarValue = CalcNewBarValue(gBattleSpritesDataPtr->battleBars[battlerId].maxValue, gBattleSpritesDataPtr->battleBars[battlerId].oldValue, gBattleSpritesDataPtr->battleBars[battlerId].receivedValue, @@ -2688,7 +2688,7 @@ static void MoveBattleBarGraphically(u8 battlerId, u8 whichBar) &gBattleSpritesDataPtr->battleBars[battlerId].currValue, array, B_EXPBAR_PIXELS / 8); level = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_LEVEL); - if (level >= GetCurrentLevelCap()) + if (level >= MAX_LEVEL) { for (i = 0; i < 8; i++) array[i] = 0; @@ -2838,7 +2838,7 @@ static u8 GetScaledExpFraction(s32 oldValue, s32 receivedValue, s32 maxValue, u8 s32 newVal, result; s8 oldToMax, newToMax; - scale *= 8; + scale *= (B_FAST_EXP_GROW) ? 2 : 8; newVal = oldValue - receivedValue; if (newVal < 0) diff --git a/src/battle_intro.c b/src/battle_intro.c index c28ed90ffc..a6b1607285 100644 --- a/src/battle_intro.c +++ b/src/battle_intro.c @@ -194,12 +194,12 @@ static void BattleIntroSlide1(u8 taskId) { if (gTasks[taskId].tTerrain == BATTLE_TERRAIN_LONG_GRASS) { - if (gBattle_BG1_Y != 0xFFB0) + if (gBattle_BG1_Y != (u16)(-80)) gBattle_BG1_Y -= 2; } else { - if (gBattle_BG1_Y != 0xFFC8) + if (gBattle_BG1_Y != (u16)(-56)) gBattle_BG1_Y -= 1; } } diff --git a/src/battle_main.c b/src/battle_main.c index 0ed19a2029..fd652f22c0 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -323,7 +323,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.berry = ITEM_CHOPLE_BERRY, //.gem = ITEM_FIGHTING_GEM, //.zCrystal = ITEM_FIGHTINIUM_Z, - //.plate= ITEM_FIST_PLATE, + //.plate = ITEM_FIST_PLATE, //.memory = ITEM_FIGHTING_MEMORY, //.teraShard = ITEM_FIGHTING_TERA_SHARD, //.arceusForm = SPECIES_ARCEUS_FIGHTING, @@ -339,7 +339,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.berry = ITEM_COBA_BERRY, //.gem = ITEM_FLYING_GEM, //.zCrystal = ITEM_FLYINIUM_Z, - //.plate= ITEM_SKY_PLATE, + //.plate = ITEM_SKY_PLATE, //.memory = ITEM_FLYING_MEMORY, //.teraShard = ITEM_FLYING_TERA_SHARD, //.arceusForm = SPECIES_ARCEUS_FLYING, @@ -355,7 +355,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.berry = ITEM_KEBIA_BERRY, //.gem = ITEM_POISON_GEM, //.zCrystal = ITEM_POISONIUM_Z, - //.plate= ITEM_TOXIC_PLATE, + //.plate = ITEM_TOXIC_PLATE, //.memory = ITEM_POISON_MEMORY, //.teraShard = ITEM_POISON_TERA_SHARD, //.arceusForm = SPECIES_ARCEUS_POISON, @@ -371,7 +371,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.berry = ITEM_SHUCA_BERRY, //.gem = ITEM_GROUND_GEM, //.zCrystal = ITEM_GROUNDIUM_Z, - //.plate= ITEM_EARTH_PLATE, + //.plate = ITEM_EARTH_PLATE, //.memory = ITEM_GROUND_MEMORY, //.teraShard = ITEM_GROUND_TERA_SHARD, //.arceusForm = SPECIES_ARCEUS_GROUND, @@ -387,7 +387,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.berry = ITEM_CHARTI_BERRY, //.gem = ITEM_ROCK_GEM, //.zCrystal = ITEM_ROCKIUM_Z, - //.plate= ITEM_STONE_PLATE, + //.plate = ITEM_STONE_PLATE, //.memory = ITEM_ROCK_MEMORY, //.teraShard = ITEM_ROCK_TERA_SHARD, //.arceusForm = SPECIES_ARCEUS_ROCK, @@ -403,7 +403,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.berry = ITEM_TANGA_BERRY, //.gem = ITEM_BUG_GEM, //.zCrystal = ITEM_BUGINIUM_Z, - //.plate= ITEM_INSECT_PLATE, + //.plate = ITEM_INSECT_PLATE, //.memory = ITEM_BUG_MEMORY, //.teraShard = ITEM_BUG_TERA_SHARD, //.arceusForm = SPECIES_ARCEUS_BUG, @@ -419,7 +419,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.berry = ITEM_KASIB_BERRY, //.gem = ITEM_GHOST_GEM, //.zCrystal = ITEM_GHOSTIUM_Z, - //.plate= ITEM_SPOOKY_PLATE, + //.plate = ITEM_SPOOKY_PLATE, //.memory = ITEM_GHOST_MEMORY, //.teraShard = ITEM_GHOST_TERA_SHARD, //.arceusForm = SPECIES_ARCEUS_GHOST, @@ -435,7 +435,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.berry = ITEM_BABIRI_BERRY, //.gem = ITEM_STEEL_GEM, //.zCrystal = ITEM_STEELIUM_Z, - //.plate= ITEM_IRON_PLATE, + //.plate = ITEM_IRON_PLATE, //.memory = ITEM_STEEL_MEMORY, //.teraShard = ITEM_STEEL_TERA_SHARD, //.arceusForm = SPECIES_ARCEUS_STEEL, @@ -457,7 +457,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.berry = ITEM_OCCA_BERRY, //.gem = ITEM_FIRE_GEM, //.zCrystal = ITEM_FIRIUM_Z, - //.plate= ITEM_FLAME_PLATE, + //.plate = ITEM_FLAME_PLATE, //.memory = ITEM_FIRE_MEMORY, //.teraShard = ITEM_FIRE_TERA_SHARD, //.arceusForm = SPECIES_ARCEUS_FIRE, @@ -473,7 +473,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.berry = ITEM_PASSHO_BERRY, //.gem = ITEM_WATER_GEM, //.zCrystal = ITEM_WATERIUM_Z, - //.plate= ITEM_SPLASH_PLATE, + //.plate = ITEM_SPLASH_PLATE, //.memory = ITEM_WATER_MEMORY, //.teraShard = ITEM_WATER_TERA_SHARD, //.arceusForm = SPECIES_ARCEUS_WATER, @@ -489,7 +489,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.berry = ITEM_RINDO_BERRY, //.gem = ITEM_GRASS_GEM, //.zCrystal = ITEM_GRASSIUM_Z, - //.plate= ITEM_MEADOW_PLATE, + //.plate = ITEM_MEADOW_PLATE, //.memory = ITEM_GRASS_MEMORY, //.teraShard = ITEM_GRASS_TERA_SHARD, //.arceusForm = SPECIES_ARCEUS_GRASS, @@ -505,7 +505,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.berry = ITEM_WACAN_BERRY, //.gem = ITEM_ELECTRIC_GEM, //.zCrystal = ITEM_ELECTRIUM_Z, - //.plate= ITEM_ZAP_PLATE, + //.plate = ITEM_ZAP_PLATE, //.memory = ITEM_ELECTRIC_MEMORY, //.teraShard = ITEM_ELECTRIC_TERA_SHARD, //.arceusForm = SPECIES_ARCEUS_ELECTRIC, @@ -521,7 +521,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.berry = ITEM_PAYAPA_BERRY, //.gem = ITEM_PSYCHIC_GEM, //.zCrystal = ITEM_PSYCHIUM_Z, - //.plate= ITEM_MIND_PLATE, + //.plate = ITEM_MIND_PLATE, //.memory = ITEM_PSYCHIC_MEMORY, //.teraShard = ITEM_PSYCHIC_TERA_SHARD, //.arceusForm = SPECIES_ARCEUS_PSYCHIC, @@ -537,7 +537,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.berry = ITEM_YACHE_BERRY, //.gem = ITEM_ICE_GEM, //.zCrystal = ITEM_ICIUM_Z, - //.plate= ITEM_ICICLE_PLATE, + //.plate = ITEM_ICICLE_PLATE, //.memory = ITEM_ICE_MEMORY, //.teraShard = ITEM_ICE_TERA_SHARD, //.arceusForm = SPECIES_ARCEUS_ICE, @@ -553,7 +553,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.berry = ITEM_HABAN_BERRY, //.gem = ITEM_DRAGON_GEM, //.zCrystal = ITEM_DRAGONIUM_Z, - //.plate= ITEM_DRACO_PLATE, + //.plate = ITEM_DRACO_PLATE, //.memory = ITEM_DRAGON_MEMORY, //.teraShard = ITEM_DRAGON_TERA_SHARD, //.arceusForm = SPECIES_ARCEUS_DRAGON, @@ -569,7 +569,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.berry = ITEM_COLBUR_BERRY, //.gem = ITEM_DARK_GEM, //.zCrystal = ITEM_DARKINIUM_Z, - //.plate= ITEM_DREAD_PLATE, + //.plate = ITEM_DREAD_PLATE, //.memory = ITEM_DARK_MEMORY, //.teraShard = ITEM_DARK_TERA_SHARD, //.arceusForm = SPECIES_ARCEUS_DARK, @@ -585,7 +585,7 @@ const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = //.berry = ITEM_ROSELI_BERRY, //.gem = ITEM_FAIRY_GEM, //.zCrystal = ITEM_FAIRIUM_Z, - //.plate= ITEM_PIXIE_PLATE, + //.plate = ITEM_PIXIE_PLATE, //.memory = ITEM_FAIRY_MEMORY, //.teraShard = ITEM_FAIRY_TERA_SHARD, //.arceusForm = SPECIES_ARCEUS_FAIRY, @@ -2180,7 +2180,9 @@ void ModifyPersonalityForNature(u32 *personality, u32 newNature) u32 GeneratePersonalityForGender(u32 gender, u32 species) { const struct SpeciesInfo *speciesInfo = &gSpeciesInfo[species]; - if (gender == MON_MALE) + if (gender == MON_GENDERLESS) + return 0; + else if (gender == MON_MALE) return ((255 - speciesInfo->genderRatio) / 2) + speciesInfo->genderRatio; else return speciesInfo->genderRatio / 2; @@ -2254,6 +2256,8 @@ u8 CreateNPCTrainerPartyFromTrainer(struct Pokemon *party, const struct Trainer personalityValue = (personalityValue & 0xFFFFFF00) | GeneratePersonalityForGender(MON_MALE, partyData[i].species); else if (partyData[i].gender == TRAINER_MON_FEMALE) personalityValue = (personalityValue & 0xFFFFFF00) | GeneratePersonalityForGender(MON_FEMALE, partyData[i].species); + else if (partyData[i].gender == TRAINER_MON_RANDOM_GENDER) + personalityValue = (personalityValue & 0xFFFFFF00) | GeneratePersonalityForGender(Random() & 1 ? MON_MALE : MON_FEMALE, partyData[i].species); ModifyPersonalityForNature(&personalityValue, partyData[i].nature); if (partyData[i].isShiny) { @@ -3273,6 +3277,17 @@ static void BattleMainCB1(void) gBattlerControllerFuncs[battler](battler); } +static void ClearSetBScriptingStruct(void) +{ + // windowsType is set up earlier in BattleInitBgsAndWindows, so we need to save the value + u32 temp = gBattleScripting.windowsType; + memset(&gBattleScripting, 0, sizeof(gBattleScripting)); + + gBattleScripting.windowsType = temp; + gBattleScripting.battleStyle = gSaveBlock2Ptr->optionsBattleStyle; + gBattleScripting.expOnCatch = (B_EXP_CATCH >= GEN_6); +} + static void BattleStartClearSetData(void) { s32 i; @@ -3286,10 +3301,7 @@ static void BattleStartClearSetData(void) memset(&gSideTimers, 0, sizeof(gSideTimers)); memset(&gWishFutureKnock, 0, sizeof(gWishFutureKnock)); memset(&gBattleResults, 0, sizeof(gBattleResults)); - memset(&gBattleScripting, 0, sizeof(gBattleScripting)); - - gBattleScripting.battleStyle = gSaveBlock2Ptr->optionsBattleStyle; - gBattleScripting.expOnCatch = (B_EXP_CATCH >= GEN_6); + ClearSetBScriptingStruct(); for (i = 0; i < MAX_BATTLERS_COUNT; i++) { @@ -3490,6 +3502,7 @@ void SwitchInClearSetData(u32 battler) gBattleStruct->lastTakenMoveFrom[battler][3] = 0; gBattleStruct->lastMoveFailed &= ~(gBitTable[battler]); gBattleStruct->palaceFlags &= ~(gBitTable[battler]); + gBattleStruct->boosterEnergyActivates &= ~(gBitTable[battler]); for (i = 0; i < ARRAY_COUNT(gSideTimers); i++) { @@ -3621,6 +3634,7 @@ const u8* FaintClearSetData(u32 battler) gBattleStruct->lastTakenMoveFrom[battler][3] = 0; gBattleStruct->palaceFlags &= ~(gBitTable[battler]); + gBattleStruct->boosterEnergyActivates &= ~(gBitTable[battler]); for (i = 0; i < ARRAY_COUNT(gSideTimers); i++) { @@ -4222,11 +4236,11 @@ void BattleTurnPassed(void) if (DoBattlerEndTurnEffects()) return; } + if (HandleWishPerishSongOnTurnEnd()) + return; if (HandleFaintedMonActions()) return; gBattleStruct->faintedActionsState = 0; - if (HandleWishPerishSongOnTurnEnd()) - return; TurnValuesCleanUp(FALSE); gHitMarker &= ~HITMARKER_NO_ATTACKSTRING; @@ -5288,11 +5302,11 @@ static void TurnValuesCleanUp(bool8 var0) gProtectStructs[i].quash = FALSE; gProtectStructs[i].usedCustapBerry = FALSE; gProtectStructs[i].quickDraw = FALSE; + memset(&gQueuedStatBoosts[i], 0, sizeof(struct QueuedStatBoost)); } else { memset(&gProtectStructs[i], 0, sizeof(struct ProtectStruct)); - memset(&gQueuedStatBoosts[i], 0, sizeof(struct QueuedStatBoost)); if (gDisableStructs[i].isFirstTurn) gDisableStructs[i].isFirstTurn--; @@ -5757,7 +5771,7 @@ static void HandleEndTurn_FinishBattle(void) TestRunner_Battle_AfterLastTurn(); BeginFastPaletteFade(3); FadeOutMapMusic(5); - if (B_TRAINERS_KNOCK_OFF_ITEMS == TRUE || B_RESTORE_HELD_BATTLE_ITEMS == TRUE) + if (B_TRAINERS_KNOCK_OFF_ITEMS == TRUE || B_RESTORE_HELD_BATTLE_ITEMS >= GEN_9) TryRestoreHeldItems(); // Undo Dynamax HP multiplier before recalculating stats. @@ -5977,7 +5991,7 @@ void SetTypeBeforeUsingMove(u32 move, u32 battlerAtk) gBattleStruct->dynamicMoveType = TYPE_ROCK | F_DYNAMIC_TYPE_SET; else if (gBattleWeather & B_WEATHER_SUN && holdEffect != HOLD_EFFECT_UTILITY_UMBRELLA) gBattleStruct->dynamicMoveType = TYPE_FIRE | F_DYNAMIC_TYPE_SET; - else if (gBattleWeather & (B_WEATHER_HAIL |B_WEATHER_SNOW)) + else if (gBattleWeather & (B_WEATHER_HAIL | B_WEATHER_SNOW)) gBattleStruct->dynamicMoveType = TYPE_ICE | F_DYNAMIC_TYPE_SET; else gBattleStruct->dynamicMoveType = TYPE_NORMAL | F_DYNAMIC_TYPE_SET; diff --git a/src/battle_message.c b/src/battle_message.c index 3ad1dc409b..2efb99ff5f 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -370,6 +370,9 @@ static const u8 sText_HailStopped[] = _("The hail stopped."); static const u8 sText_StartedSnow[] = _("It started to snow!"); static const u8 sText_SnowContinues[] = _("Snow continues to fall."); static const u8 sText_SnowStopped[] = _("The snow stopped."); +static const u8 sText_FogCreptUp[] = _("Fog crept up as thick as soup!"); +static const u8 sText_FogIsDeep[] = _("The fog is deep…"); +static const u8 sText_FogLifted[] = _("The fog lifted."); static const u8 sText_FailedToSpitUp[] = _("But it failed to spit up\na thing!"); static const u8 sText_FailedToSwallow[] = _("But it failed to swallow\na thing!"); static const u8 sText_WindBecameHeatWave[] = _("The wind turned into a\nHEAT WAVE!"); @@ -783,7 +786,7 @@ static const u8 sText_AttackerExpelledThePoison[] = _("{B_ATK_NAME_WITH_PREFIX} static const u8 sText_AttackerShookItselfAwake[] = _("{B_ATK_NAME_WITH_PREFIX} shook itself awake!"); static const u8 sText_AttackerBrokeThroughParalysis[] = _("{B_ATK_NAME_WITH_PREFIX} gathered all its energy\nto overcome its paralysis!"); static const u8 sText_AttackerHealedItsBurn[] = _("{B_ATK_NAME_WITH_PREFIX} healed its burn with\nits sheer determination!"); -static const u8 sText_AttackerHealedItsFrostbite[] = _("{B_ATK_NAME_WITH_PREFIX} healed its frostbite with\nits sheer determination!"); +static const u8 sText_AttackerHealedItsFrostbite[] = _("{B_ATK_NAME_WITH_PREFIX} healed its frostbite with\nits sheer determination!"); //not used, "melted the ice" is used instead in PLA static const u8 sText_AttackerMeltedTheIce[] = _("{B_ATK_NAME_WITH_PREFIX} melted the ice with\nits fiery determination!"); static const u8 sText_TargetToughedItOut[] = _("{B_DEF_NAME_WITH_PREFIX} toughed it out\nto show you its best side!"); static const u8 sText_AttackerLostElectricType[] = _("{B_ATK_NAME_WITH_PREFIX} used up all\nof its electricity!"); @@ -791,6 +794,7 @@ static const u8 sText_AttackerSwitchedStatWithTarget[] = _("{B_ATK_NAME_WITH_PRE static const u8 sText_BeingHitChargedPkmnWithPower[] = _("Being hit by {B_CURRENT_MOVE}\ncharged {B_DEF_NAME_WITH_PREFIX} with power!"); static const u8 sText_SunlightActivatedAbility[] = _("The harsh sunlight activated\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ABILITY}!"); static const u8 sText_StatWasHeightened[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_BUFF1} was heightened!"); +static const u8 sText_BoosterEnergyActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} used its Booster Energy\nto activate {B_SCR_ACTIVE_ABILITY}!"); static const u8 sText_ElectricTerrainActivatedAbility[] = _("The Electric Terrain activated\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ABILITY}!"); static const u8 sText_AbilityWeakenedSurroundingMonsStat[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}\nweakened the {B_BUFF1} of\lall surrounding Pokémon!\p"); static const u8 sText_AttackerGainedStrengthFromTheFallen[] = _("{B_ATK_NAME_WITH_PREFIX} gained strength\nfrom the fallen!"); @@ -892,6 +896,7 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = [STRINGID_ABILITYWEAKENEDFSURROUNDINGMONSSTAT - BATTLESTRINGS_TABLE_START] = sText_AbilityWeakenedSurroundingMonsStat, [STRINGID_ELECTRICTERRAINACTIVATEDABILITY - BATTLESTRINGS_TABLE_START] = sText_ElectricTerrainActivatedAbility, [STRINGID_STATWASHEIGHTENED - BATTLESTRINGS_TABLE_START] = sText_StatWasHeightened, + [STRINGID_BOOSTERENERGYACTIVATES - BATTLESTRINGS_TABLE_START] = sText_BoosterEnergyActivates, [STRINGID_SUNLIGHTACTIVATEDABILITY - BATTLESTRINGS_TABLE_START] = sText_SunlightActivatedAbility, [STRINGID_BEINGHITCHARGEDPKMNWITHPOWER - BATTLESTRINGS_TABLE_START] = sText_BeingHitChargedPkmnWithPower, [STRINGID_ATTACKERSWITCHEDSTATWITHTARGET - BATTLESTRINGS_TABLE_START] = sText_AttackerSwitchedStatWithTarget, @@ -1228,6 +1233,9 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = [STRINGID_STARTEDSNOW - BATTLESTRINGS_TABLE_START] = sText_StartedSnow, [STRINGID_SNOWCONTINUES -BATTLESTRINGS_TABLE_START] = sText_SnowContinues, [STRINGID_SNOWSTOPPED - BATTLESTRINGS_TABLE_START] = sText_SnowStopped, + [STRINGID_FOGCREPTUP - BATTLESTRINGS_TABLE_START] = sText_FogCreptUp, + [STRINGID_FOGISDEEP - BATTLESTRINGS_TABLE_START] = sText_FogIsDeep, + [STRINGID_FOGLIFTED - BATTLESTRINGS_TABLE_START] = sText_FogLifted, [STRINGID_FAILEDTOSPITUP - BATTLESTRINGS_TABLE_START] = sText_FailedToSpitUp, [STRINGID_FAILEDTOSWALLOW - BATTLESTRINGS_TABLE_START] = sText_FailedToSwallow, [STRINGID_WINDBECAMEHEATWAVE - BATTLESTRINGS_TABLE_START] = sText_WindBecameHeatWave, @@ -1571,7 +1579,7 @@ const u16 gMentalHerbCureStringIds[] = [B_MSG_MENTALHERBCURE_DISABLE] = STRINGID_PKMNMOVEDISABLEDNOMORE, }; -const u16 gStartingStatusStringIds[B_MSG_STARTING_STATUS_COUNT] = +const u16 gStartingStatusStringIds[B_MSG_STARTING_STATUS_COUNT] = { [B_MSG_TERRAIN_SET_MISTY] = STRINGID_TERRAINBECOMESMISTY, [B_MSG_TERRAIN_SET_ELECTRIC] = STRINGID_TERRAINBECOMESELECTRIC, @@ -1671,6 +1679,7 @@ const u16 gMoveWeatherChangeStringIds[] = [B_MSG_STARTED_SUNLIGHT] = STRINGID_SUNLIGHTGOTBRIGHT, [B_MSG_STARTED_HAIL] = STRINGID_STARTEDHAIL, [B_MSG_STARTED_SNOW] = STRINGID_STARTEDSNOW, + [B_MSG_STARTED_FOG] = STRINGID_FOGCREPTUP, // Unused, can use for custom moves that set fog }; const u16 gSandStormHailSnowContinuesStringIds[] = @@ -1923,10 +1932,10 @@ const u16 gWeatherStartsStringIds[] = [WEATHER_RAIN] = STRINGID_ITISRAINING, [WEATHER_SNOW] = (B_OVERWORLD_SNOW >= GEN_9 ? STRINGID_STARTEDSNOW : STRINGID_STARTEDHAIL), [WEATHER_RAIN_THUNDERSTORM] = STRINGID_ITISRAINING, - [WEATHER_FOG_HORIZONTAL] = STRINGID_ITISRAINING, + [WEATHER_FOG_HORIZONTAL] = STRINGID_FOGISDEEP, [WEATHER_VOLCANIC_ASH] = STRINGID_ITISRAINING, [WEATHER_SANDSTORM] = STRINGID_SANDSTORMISRAGING, - [WEATHER_FOG_DIAGONAL] = STRINGID_ITISRAINING, + [WEATHER_FOG_DIAGONAL] = STRINGID_FOGISDEEP, [WEATHER_UNDERWATER] = STRINGID_ITISRAINING, [WEATHER_SHADE] = STRINGID_ITISRAINING, [WEATHER_DROUGHT] = STRINGID_SUNLIGHTSTRONG, @@ -4167,7 +4176,7 @@ u32 ShouldDoTrainerSlide(u32 battler, u32 which) case TRAINER_SLIDE_LAST_LOW_HP: if (sTrainerSlides[i].msgLastLowHp != NULL && GetEnemyMonCount(firstId, lastId, TRUE) == 1 - && BattlerHPPercentage(battler, GREATER_THAN_OR_EQUAL, 4) + && BattlerHPPercentage(battler, LESS_THAN_OR_EQUAL, 4) && !gBattleStruct->trainerSlideLowHpMsgDone) { gBattleStruct->trainerSlideLowHpMsgDone = TRUE; diff --git a/src/battle_pyramid.c b/src/battle_pyramid.c index a21034d75a..ce7a0526f2 100644 --- a/src/battle_pyramid.c +++ b/src/battle_pyramid.c @@ -1401,27 +1401,32 @@ void GenerateBattlePyramidWildMon(void) if (reqs->nMoves != 0) moves = AllocZeroed(sizeof(u16) * reqs->nMoves); - + if (reqs->nAbilities != 0) abilities = AllocZeroed(sizeof(u16) * reqs->nAbilities); if (round >= TOTAL_PYRAMID_ROUNDS) round = TOTAL_PYRAMID_ROUNDS - 1; - + id = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL) - 1; // index in table (0-11) -> higher index is lower probability bstLim = 450 + (25*round) + (5*id); // higher BST limit for 'rarer' wild mon rolls while (1) { - species = Random() % FORMS_START; + species = Random() % NUM_SPECIES; + + // check if base species + if (GET_BASE_SPECIES_ID(species) != species) + continue; + // check type if (reqs->type != TYPE_MYSTERY && gSpeciesInfo[species].types[0] != reqs->type && gSpeciesInfo[species].types[1] != reqs->type) continue; - + // check base stat total if (GetTotalBaseStat(species) > bstLim) continue; - + // check moves if (reqs->nMoves != 0) { @@ -1438,7 +1443,7 @@ void GenerateBattlePyramidWildMon(void) if (moveCount == 0) continue; } - + // check abilities if (reqs->nAbilities != 0) { @@ -1460,9 +1465,9 @@ void GenerateBattlePyramidWildMon(void) continue; } // check evos - if (reqs->evoItems[0] != 0 && !CheckBattlePyramidEvoRequirement(species, reqs->evoItems, reqs->nEvoItems)) + if (reqs->evoItems != NULL && !CheckBattlePyramidEvoRequirement(species, reqs->evoItems, reqs->nEvoItems)) continue; - + // we found a species we can use! break; } @@ -1471,7 +1476,7 @@ void GenerateBattlePyramidWildMon(void) SetMonData(&gEnemyParty[0], MON_DATA_SPECIES, &species); StringCopy(name, GetSpeciesName(species)); SetMonData(&gEnemyParty[0], MON_DATA_NICKNAME, &name); - + // set level if (lvl != FRONTIER_LVL_50) { @@ -1507,7 +1512,7 @@ void GenerateBattlePyramidWildMon(void) } Free(moves); } - + // Initialize a random ability num if (gSpeciesInfo[species].abilities[1]) { @@ -1519,7 +1524,7 @@ void GenerateBattlePyramidWildMon(void) i = 0; SetMonData(&gEnemyParty[0], MON_DATA_ABILITY_NUM, &i); } - + // Try to replace with desired ability if (abilities != NULL) { @@ -1533,12 +1538,15 @@ void GenerateBattlePyramidWildMon(void) { // Set this ability num SetMonData(&gEnemyParty[0], MON_DATA_ABILITY_NUM, &id); + break; } } + if (id >= NUM_ABILITY_SLOTS - 1) + break; } Free(abilities); } - + if (gSaveBlock2Ptr->frontier.pyramidWinStreaks[gSaveBlock2Ptr->frontier.lvlMode] >= 140) { id = (Random() % 17) + 15; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 43071ff5f6..e3f6615832 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -66,37 +66,6 @@ #include "config/battle.h" #include "data/battle_move_effects.h" -// Helper for accessing command arguments and advancing gBattlescriptCurrInstr. -// -// For example accuracycheck is defined as: -// -// .macro accuracycheck failInstr:req, move:req -// .byte 0x1 -// .4byte \failInstr -// .2byte \move -// .endm -// -// Which corresponds to: -// -// CMD_ARGS(const u8 *failInstr, u16 move); -// -// The arguments can be accessed as cmd->failInstr and cmd->move. -// gBattlescriptCurrInstr = cmd->nextInstr; advances to the next instruction. -#define CMD_ARGS(...) const struct __attribute__((packed)) { u8 opcode; MEMBERS(__VA_ARGS__) const u8 nextInstr[0]; } *const cmd UNUSED = (const void *)gBattlescriptCurrInstr -#define VARIOUS_ARGS(...) CMD_ARGS(u8 battler, u8 id, ##__VA_ARGS__) -#define NATIVE_ARGS(...) CMD_ARGS(void (*func)(void), ##__VA_ARGS__) - -#define MEMBERS(...) VARARG_8(MEMBERS_, __VA_ARGS__) -#define MEMBERS_0() -#define MEMBERS_1(a) a; -#define MEMBERS_2(a, b) a; b; -#define MEMBERS_3(a, b, c) a; b; c; -#define MEMBERS_4(a, b, c, d) a; b; c; d; -#define MEMBERS_5(a, b, c, d, e) a; b; c; d; e; -#define MEMBERS_6(a, b, c, d, e, f) a; b; c; d; e; f; -#define MEMBERS_7(a, b, c, d, e, f, g) a; b; c; d; e; f; g; -#define MEMBERS_8(a, b, c, d, e, f, g, h) a; b; c; d; e; f; g; h; - // table to avoid ugly powing on gba (courtesy of doesnt) // this returns (i^2.5)/4 // the quarters cancel so no need to re-quadruple them in actual calculation @@ -1546,7 +1515,7 @@ static bool32 AccuracyCalcHelper(u16 move) return TRUE; } // If the attacker has the ability No Guard and they aren't targeting a Pokemon involved in a Sky Drop with the move Sky Drop, move hits. - else if (GetBattlerAbility(gBattlerTarget) == ABILITY_NO_GUARD && (move != MOVE_SKY_DROP || gBattleStruct->skyDropTargets[gBattlerTarget] == 0xFF)) + else if (GetBattlerAbility(gBattlerAttacker) == ABILITY_NO_GUARD && (move != MOVE_SKY_DROP || gBattleStruct->skyDropTargets[gBattlerTarget] == 0xFF)) { if (!JumpIfMoveFailed(7, move)) RecordAbilityBattle(gBattlerAttacker, ABILITY_NO_GUARD); @@ -1735,6 +1704,9 @@ u32 GetTotalAccuracy(u32 battlerAtk, u32 battlerDef, u32 move, u32 atkAbility, u if (B_AFFECTION_MECHANICS == TRUE && GetBattlerAffectionHearts(battlerDef) == AFFECTION_FIVE_HEARTS) calc = (calc * 90) / 100; + if (WEATHER_HAS_EFFECT && gBattleWeather & B_WEATHER_FOG) + calc = (calc * 60) / 100; // modified by 3/5 + return calc; } @@ -1893,7 +1865,7 @@ s32 CalcCritChanceStageArgs(u32 battlerAtk, u32 battlerDef, u32 move, bool32 rec { s32 critChance = 0; - if (gSideStatuses[battlerDef] & SIDE_STATUS_LUCKY_CHANT || gStatuses3[battlerAtk] & STATUS3_CANT_SCORE_A_CRIT + if (gSideStatuses[battlerDef] & SIDE_STATUS_LUCKY_CHANT || abilityDef == ABILITY_BATTLE_ARMOR || abilityDef == ABILITY_SHELL_ARMOR) { critChance = -1; @@ -2006,7 +1978,7 @@ static void Cmd_adjustdamage(void) if (DoesSubstituteBlockMove(gBattlerAttacker, gBattlerTarget, gCurrentMove)) goto END; - if (DoesDisguiseBlockMove(gBattlerAttacker, gBattlerTarget, gCurrentMove)) + if (DoesDisguiseBlockMove(gBattlerTarget, gCurrentMove)) { gBattleStruct->enduredDamage |= gBitTable[gBattlerTarget]; goto END; @@ -2258,7 +2230,7 @@ static void Cmd_healthbarupdate(void) { PrepareStringBattle(STRINGID_SUBSTITUTEDAMAGED, battler); } - else if (!DoesDisguiseBlockMove(gBattlerAttacker, battler, gCurrentMove)) + else if (!DoesDisguiseBlockMove(battler, gCurrentMove)) { s16 healthValue = min(gBattleMoveDamage, 10000); // Max damage (10000) not present in R/S, ensures that huge damage values don't change sign @@ -2311,16 +2283,19 @@ static void Cmd_datahpupdate(void) return; } } - else if (DoesDisguiseBlockMove(gBattlerAttacker, battler, gCurrentMove)) + else if (DoesDisguiseBlockMove(battler, gCurrentMove)) { // TODO: Convert this to a proper FORM_CHANGE type. u32 side = GetBattlerSide(battler); + gBattleScripting.battler = battler; if (gBattleStruct->changedSpecies[side][gBattlerPartyIndexes[battler]] == SPECIES_NONE) gBattleStruct->changedSpecies[side][gBattlerPartyIndexes[battler]] = gBattleMons[battler].species; if (gBattleMons[battler].species == SPECIES_MIMIKYU_TOTEM_DISGUISED) gBattleMons[battler].species = SPECIES_MIMIKYU_TOTEM_BUSTED; else gBattleMons[battler].species = SPECIES_MIMIKYU_BUSTED; + if (B_DISGUISE_HP_LOSS >= GEN_8) + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 8; BattleScriptPush(cmd->nextInstr); gBattlescriptCurrInstr = BattleScript_TargetFormChange; return; @@ -5132,7 +5107,8 @@ static void PlayAnimation(u32 battler, u8 animId, const u16 *argPtr, const u8 *n || animId == B_ANIM_SUN_CONTINUES || animId == B_ANIM_SANDSTORM_CONTINUES || animId == B_ANIM_HAIL_CONTINUES - || animId == B_ANIM_SNOW_CONTINUES) + || animId == B_ANIM_SNOW_CONTINUES + || animId == B_ANIM_FOG_CONTINUES) { BtlController_EmitBattleAnimation(battler, BUFFER_A, animId, &gDisableStructs[battler], *argPtr); MarkBattlerForControllerExec(battler); @@ -5341,9 +5317,19 @@ static bool32 TryKnockOffBattleScript(u32 battlerDef) gBattleMons[battlerDef].item = 0; if (gBattleMons[battlerDef].ability != ABILITY_GORILLA_TACTICS) gBattleStruct->choicedMove[battlerDef] = 0; - gWishFutureKnock.knockedOffMons[side] |= gBitTable[gBattlerPartyIndexes[battlerDef]]; CheckSetUnburden(battlerDef); + // In Gen 5+, Knock Off removes the target's item rather than rendering it unusable. + if (B_KNOCK_OFF_REMOVAL >= GEN_5) + { + BtlController_EmitSetMonData(battlerDef, BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[battlerDef].item), &gBattleMons[battlerDef].item); + MarkBattlerForControllerExec(battlerDef); + } + else + { + gWishFutureKnock.knockedOffMons[side] |= gBitTable[gBattlerPartyIndexes[battlerDef]]; + } + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_KnockedOff; } @@ -5870,31 +5856,7 @@ static void Cmd_moveend(void) } gBattleScripting.moveendState++; break; - case MOVEEND_MAGICIAN: - if (GetBattlerAbility(gBattlerAttacker) == ABILITY_MAGICIAN - && gCurrentMove != MOVE_FLING && gCurrentMove != MOVE_NATURAL_GIFT - && gBattleMons[gBattlerAttacker].item == ITEM_NONE - && gBattleMons[gBattlerTarget].item != ITEM_NONE - && IsBattlerAlive(gBattlerAttacker) - && TARGET_TURN_DAMAGED - && CanStealItem(gBattlerAttacker, gBattlerTarget, gBattleMons[gBattlerTarget].item) - && !gSpecialStatuses[gBattlerAttacker].gemBoost // In base game, gems are consumed after magician would activate. - && !(gWishFutureKnock.knockedOffMons[GetBattlerSide(gBattlerTarget)] & gBitTable[gBattlerPartyIndexes[gBattlerTarget]]) - && !DoesSubstituteBlockMove(gBattlerAttacker, gBattlerTarget, gCurrentMove) - && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) - && (GetBattlerAbility(gBattlerTarget) != ABILITY_STICKY_HOLD || !IsBattlerAlive(gBattlerTarget))) - { - StealTargetItem(gBattlerAttacker, gBattlerTarget); - gBattleScripting.battler = gBattlerAbility = gBattlerAttacker; - gEffectBattler = gBattlerTarget; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_MagicianActivates; - gSpecialStatuses[gBattlerAttacker].preventLifeOrbDamage = TRUE; - effect = TRUE; - } - gBattleScripting.moveendState++; - break; - case MOVEEND_NEXT_TARGET: // For moves hitting two opposing Pokémon. + case MOVEEND_NEXT_TARGET: // For moves hitting two opposing Pokemon. { u16 moveTarget = GetBattlerMoveTargetType(gBattlerAttacker, gCurrentMove); // Set a flag if move hits either target (for throat spray that can't check damage) @@ -6014,98 +5976,165 @@ static void Cmd_moveend(void) gBattleScripting.moveendState++; break; } - case MOVEEND_EJECT_BUTTON: - if (gMovesInfo[gCurrentMove].effect != EFFECT_HIT_SWITCH_TARGET + // The order of abilities/items activating after moves hitting multiple targets is + // 1. Magician + // 2. The fastest mon gets switched out using Eject Button / Eject Pack + // 3. White Herb activates + // 4. Red Card activates + // 5. Life Orb / Shell Bell + // 6. Pickpocket + case MOVEEND_MAGICIAN: + if (GetBattlerAbility(gBattlerAttacker) == ABILITY_MAGICIAN + && gCurrentMove != MOVE_FLING && gCurrentMove != MOVE_NATURAL_GIFT + && gBattleMons[gBattlerAttacker].item == ITEM_NONE + && gBattleMons[gBattlerTarget].item != ITEM_NONE && IsBattlerAlive(gBattlerAttacker) - && !TestIfSheerForceAffected(gBattlerAttacker, gCurrentMove) - && (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER || (gBattleTypeFlags & BATTLE_TYPE_TRAINER))) + && TARGET_TURN_DAMAGED + && CanStealItem(gBattlerAttacker, gBattlerTarget, gBattleMons[gBattlerTarget].item) + && !gSpecialStatuses[gBattlerAttacker].gemBoost // In base game, gems are consumed after magician would activate. + && !(gWishFutureKnock.knockedOffMons[GetBattlerSide(gBattlerTarget)] & gBitTable[gBattlerPartyIndexes[gBattlerTarget]]) + && !DoesSubstituteBlockMove(gBattlerAttacker, gBattlerTarget, gCurrentMove) + && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + && (GetBattlerAbility(gBattlerTarget) != ABILITY_STICKY_HOLD || !IsBattlerAlive(gBattlerTarget))) { - // Since we check if battler was damaged, we don't need to check move result. - // In fact, doing so actually prevents multi-target moves from activating eject button properly - u8 battlers[4] = {0, 1, 2, 3}; - SortBattlersBySpeed(battlers, FALSE); + StealTargetItem(gBattlerAttacker, gBattlerTarget); + gBattleScripting.battler = gBattlerAbility = gBattlerAttacker; + gEffectBattler = gBattlerTarget; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_MagicianActivates; + gSpecialStatuses[gBattlerAttacker].preventLifeOrbDamage = TRUE; + effect = TRUE; + } + gBattleScripting.moveendState++; + break; + case MOVEEND_EJECT_ITEMS: + { + // Because sorting the battlers by speed takes lots of cycles, it's better to just check if any of the battlers has the Eject items. + u32 ejectPackBattlers = 0, ejectButtonBattlers = 0, i; for (i = 0; i < gBattlersCount; i++) { - u8 battler = battlers[i]; - // Attacker is the damage-dealer, battler is mon to be switched out - if (IsBattlerAlive(battler) - && gBattlerAttacker != battler - && GetBattlerHoldEffect(battler, TRUE) == HOLD_EFFECT_EJECT_BUTTON - && BATTLER_TURN_DAMAGED(battler) - && CountUsablePartyMons(battler) > 0) // Has mon to switch into + u32 holdEffect; + if (i == gBattlerAttacker) + continue; + holdEffect = GetBattlerHoldEffect(i, TRUE); + if (holdEffect == HOLD_EFFECT_EJECT_BUTTON) + ejectButtonBattlers |= gBitTable[i]; + else if (holdEffect == HOLD_EFFECT_EJECT_PACK) + ejectPackBattlers |= gBitTable[i]; + } + if (ejectButtonBattlers || ejectPackBattlers) + { + u8 battlers[4] = {0, 1, 2, 3}; + SortBattlersBySpeed(battlers, FALSE); + + for (i = 0; i < gBattlersCount; i++) { - gBattleScripting.battler = battler; - gLastUsedItem = gBattleMons[battler].item; - if (gMovesInfo[gCurrentMove].effect == EFFECT_HIT_ESCAPE) - gBattlescriptCurrInstr = BattleScript_MoveEnd; // Prevent user switch-in selection - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_EjectButtonActivates; - effect = TRUE; - break; // Only the fastest Eject Button activates + u32 battler = battlers[i]; + + if (ejectButtonBattlers & gBitTable[battler]) + { + if (TestIfSheerForceAffected(gBattlerAttacker, gCurrentMove)) // Apparently Sheer Force blocks Eject Button, but not Eject Pack + continue; + // Since we check if battler was damaged, we don't need to check move result. + // In fact, doing so actually prevents multi-target moves from activating eject button properly + if (!BATTLER_TURN_DAMAGED(battler)) + continue; + } + else if (ejectPackBattlers & gBitTable[battler]) + { + if (!gProtectStructs[battler].statFell || gProtectStructs[battler].disableEjectPack) + continue; + } + else + { + continue; + } + + if (IsBattlerAlive(battler) + && CountUsablePartyMons(battler) > 0 // Has mon to switch into + // Does not activate if attacker used Parting Shot and can switch out + && !(gMovesInfo[gCurrentMove].effect == EFFECT_HIT_SWITCH_TARGET && CanBattlerSwitch(gBattlerAttacker)) + ) + { + gBattleScripting.battler = battler; + gLastUsedItem = gBattleMons[battler].item; + if (gMovesInfo[gCurrentMove].effect == EFFECT_HIT_ESCAPE) + gBattlescriptCurrInstr = BattleScript_MoveEnd; // Prevent user switch-in selection + effect = TRUE; + BattleScriptPushCursor(); + if (ejectButtonBattlers & gBitTable[battler]) + { + gBattlescriptCurrInstr = BattleScript_EjectButtonActivates; + } + else // Eject Pack + { + gBattlescriptCurrInstr = BattleScript_EjectPackActivates; + // Are these 2 lines below needed? + gProtectStructs[battler].statFell = FALSE; + gSpecialStatuses[gBattlerAttacker].preventLifeOrbDamage = TRUE; + } + break; // Only the fastest Eject item activates + } } } } gBattleScripting.moveendState++; break; + case MOVEEND_WHITE_HERB: + for (i = 0; i < gBattlersCount; i++) + { + if (IsBattlerAlive(i) + && ItemBattleEffects(ITEMEFFECT_STATS_CHANGED, i, FALSE)) + { + effect = TRUE; + break; + } + } + if (!effect) + gBattleScripting.moveendState++; + break; case MOVEEND_RED_CARD: - if ((gMovesInfo[gCurrentMove].effect != EFFECT_HIT_SWITCH_TARGET || gBattleStruct->hitSwitchTargetFailed) - && IsBattlerAlive(gBattlerAttacker) - && !TestIfSheerForceAffected(gBattlerAttacker, gCurrentMove) - && GetBattlerAbility(gBattlerAttacker) != ABILITY_GUARD_DOG) { - // Since we check if battler was damaged, we don't need to check move result. - // In fact, doing so actually prevents multi-target moves from activating red card properly - u8 battlers[4] = {0, 1, 2, 3}; - SortBattlersBySpeed(battlers, FALSE); + u32 redCardBattlers = 0, i; for (i = 0; i < gBattlersCount; i++) { - u8 battler = battlers[i]; - // Search for fastest hit pokemon with a red card - // Attacker is the one to be switched out, battler is one with red card - if (battler != gBattlerAttacker - && IsBattlerAlive(battler) - && !DoesSubstituteBlockMove(gBattlerAttacker, battler, gCurrentMove) - && GetBattlerHoldEffect(battler, TRUE) == HOLD_EFFECT_RED_CARD - && BATTLER_TURN_DAMAGED(battler) - && CanBattlerSwitch(gBattlerAttacker)) - { - gLastUsedItem = gBattleMons[battler].item; - gBattleStruct->savedBattlerTarget = gBattleScripting.battler = battler; // Battler with red card - gEffectBattler = gBattlerAttacker; - if (gMovesInfo[gCurrentMove].effect == EFFECT_HIT_ESCAPE) - gBattlescriptCurrInstr = BattleScript_MoveEnd; // Prevent user switch-in selection - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_RedCardActivates; - gSpecialStatuses[gBattlerAttacker].preventLifeOrbDamage = TRUE; - effect = TRUE; - break; // Only fastest red card activates - } + if (i == gBattlerAttacker) + continue; + if (GetBattlerHoldEffect(i, TRUE) == HOLD_EFFECT_RED_CARD) + redCardBattlers |= gBitTable[i]; } - } - gBattleScripting.moveendState++; - break; - case MOVEEND_EJECT_PACK: - { - u8 battlers[4] = {0, 1, 2, 3}; - SortBattlersBySpeed(battlers, FALSE); - for (i = 0; i < gBattlersCount; i++) + if (redCardBattlers + && (gMovesInfo[gCurrentMove].effect != EFFECT_HIT_SWITCH_TARGET || gBattleStruct->hitSwitchTargetFailed) + && IsBattlerAlive(gBattlerAttacker) + && !TestIfSheerForceAffected(gBattlerAttacker, gCurrentMove) + && GetBattlerAbility(gBattlerAttacker) != ABILITY_GUARD_DOG) { - u8 battler = battlers[i]; - if (IsBattlerAlive(battler) - && gProtectStructs[battler].statFell - && gProtectStructs[battler].disableEjectPack == 0 - && GetBattlerHoldEffect(battler, TRUE) == HOLD_EFFECT_EJECT_PACK - && !(gCurrentMove == MOVE_PARTING_SHOT && CanBattlerSwitch(gBattlerAttacker)) // Does not activate if attacker used Parting Shot and can switch out - && CountUsablePartyMons(battler) > 0) // Has mon to switch into + // Since we check if battler was damaged, we don't need to check move result. + // In fact, doing so actually prevents multi-target moves from activating red card properly + u8 battlers[4] = {0, 1, 2, 3}; + SortBattlersBySpeed(battlers, FALSE); + for (i = 0; i < gBattlersCount; i++) { - gProtectStructs[battler].statFell = FALSE; - gBattleScripting.battler = battler; - gLastUsedItem = gBattleMons[battler].item; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_EjectPackActivates; - gSpecialStatuses[gBattlerAttacker].preventLifeOrbDamage = TRUE; - effect = TRUE; - break; // Only fastest eject pack activates + u32 battler = battlers[i]; + // Search for fastest hit pokemon with a red card + // Attacker is the one to be switched out, battler is one with red card + if (redCardBattlers & gBitTable[battler] + && IsBattlerAlive(battler) + && !DoesSubstituteBlockMove(gBattlerAttacker, battler, gCurrentMove) + && BATTLER_TURN_DAMAGED(battler) + && CanBattlerSwitch(gBattlerAttacker)) + { + gLastUsedItem = gBattleMons[battler].item; + gBattleStruct->savedBattlerTarget = gBattleScripting.battler = battler; // Battler with red card + gEffectBattler = gBattlerAttacker; + if (gMovesInfo[gCurrentMove].effect == EFFECT_HIT_ESCAPE) + gBattlescriptCurrInstr = BattleScript_MoveEnd; // Prevent user switch-in selection + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_RedCardActivates; + gSpecialStatuses[gBattlerAttacker].preventLifeOrbDamage = TRUE; + effect = TRUE; + break; // Only fastest red card activates + } } } } @@ -8410,6 +8439,13 @@ static bool32 TryDefogClear(u32 battlerAtk, bool32 clear) DEFOG_CLEAR(SIDE_STATUS_TOXIC_SPIKES, toxicSpikesAmount, BattleScript_ToxicSpikesDefog, 0); DEFOG_CLEAR(SIDE_STATUS_STICKY_WEB, stickyWebAmount, BattleScript_StickyWebDefog, 0); DEFOG_CLEAR(SIDE_STATUS_STEELSURGE, steelsurgeAmount, BattleScript_SteelsurgeDefog, 0); + if (gBattleWeather & B_WEATHER_FOG) + { + gBattleWeather &= ~B_WEATHER_FOG; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_FogEnded_Ret; + return TRUE; + } if (B_DEFOG_CLEARS_TERRAIN >= GEN_8 && (gFieldStatuses & STATUS_FIELD_TERRAIN_ANY)) { RemoveAllTerrains(); @@ -10345,6 +10381,7 @@ static void Cmd_various(void) if (cmd->fromBattler) gLastUsedItem = gBattleMons[battler].item; + gBattleStruct->ateBerry[battler & BIT_SIDE] |= gBitTable[gBattlerPartyIndexes[battler]]; gBattleScripting.battler = gEffectBattler = gBattlerTarget = battler; // Cover all berry effect battler cases. e.g. ChangeStatBuffs uses target ID if (ItemBattleEffects(ITEMEFFECT_USE_LAST_ITEM, battler, FALSE)) return; @@ -10981,7 +11018,17 @@ static void Cmd_tryhealhalfhealth(void) static void SetMoveForMirrorMove(u32 move) { gHitMarker &= ~HITMARKER_ATTACKSTRING_PRINTED; - gCurrentMove = move; + // Edge case, we used Z Mirror Move, got the stat boost and now need to use the Z-move + if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] && !IS_MOVE_STATUS(move)) + { + gCurrentMove = gBattleStruct->zmove.chosenZMove = GetTypeBasedZMove(move, gBattlerAttacker); + QueueZMove(gBattlerAttacker, move); + } + else + { + gCurrentMove = move; + } + SetAtkCancellerForCalledMove(); gBattlerTarget = GetMoveTarget(gCurrentMove, NO_TARGET_OVERRIDE); gBattlescriptCurrInstr = GET_MOVE_BATTLESCRIPT(gCurrentMove); @@ -13652,7 +13699,8 @@ static void Cmd_trysetfutureattack(void) { gSideStatuses[GetBattlerSide(gBattlerTarget)] |= SIDE_STATUS_FUTUREATTACK; gWishFutureKnock.futureSightMove[gBattlerTarget] = gCurrentMove; - gWishFutureKnock.futureSightAttacker[gBattlerTarget] = gBattlerAttacker; + gWishFutureKnock.futureSightBattlerIndex[gBattlerTarget] = gBattlerAttacker; + gWishFutureKnock.futureSightPartyIndex[gBattlerTarget] = gBattlerPartyIndexes[gBattlerAttacker]; gWishFutureKnock.futureSightCounter[gBattlerTarget] = 3; if (gCurrentMove == MOVE_DOOM_DESIRE) @@ -14683,13 +14731,13 @@ bool32 DoesSubstituteBlockMove(u32 battlerAtk, u32 battlerDef, u32 move) return TRUE; } -bool32 DoesDisguiseBlockMove(u32 battlerAtk, u32 battlerDef, u32 move) +bool32 DoesDisguiseBlockMove(u32 battler, u32 move) { - if (!(gBattleMons[battlerDef].species == SPECIES_MIMIKYU_DISGUISED || gBattleMons[battlerDef].species == SPECIES_MIMIKYU_TOTEM_DISGUISED) - || gBattleMons[battlerDef].status2 & STATUS2_TRANSFORMED - || IS_MOVE_STATUS(move) + if (!(gBattleMons[battler].species == SPECIES_MIMIKYU_DISGUISED || gBattleMons[battler].species == SPECIES_MIMIKYU_TOTEM_DISGUISED) + || gBattleMons[battler].status2 & STATUS2_TRANSFORMED + || (!gProtectStructs[battler].confusionSelfDmg && (IS_MOVE_STATUS(move) || gHitMarker & HITMARKER_PASSIVE_DAMAGE)) || gHitMarker & HITMARKER_IGNORE_DISGUISE - || GetBattlerAbility(battlerDef) != ABILITY_DISGUISE) + || GetBattlerAbility(battler) != ABILITY_DISGUISE) return FALSE; else return TRUE; @@ -16698,6 +16746,15 @@ void BS_SetPhotonGeyserCategory(void) gBattlescriptCurrInstr = cmd->nextInstr; } +void BS_RunStatChangeItems(void) +{ + NATIVE_ARGS(u8 battler); + + // Change instruction before calling ItemBattleEffects. + gBattlescriptCurrInstr = cmd->nextInstr; + ItemBattleEffects(ITEMEFFECT_STATS_CHANGED, GetBattlerForBattleScript(cmd->battler), FALSE); +} + static void TryUpdateEvolutionTracker(u32 evolutionMethod, u32 upAmount) { u32 i; @@ -16759,3 +16816,16 @@ void BS_TryTidyUp(void) gBattlescriptCurrInstr = cmd->nextInstr; } } + +void BS_TryGulpMissile(void) +{ + NATIVE_ARGS(); + + if ((gBattleMons[gBattlerAttacker].species == SPECIES_CRAMORANT) + && (gCurrentMove == MOVE_DIVE) + && (GetBattlerAbility(gBattlerAttacker) == ABILITY_GULP_MISSILE) + && TryBattleFormChange(gBattlerAttacker, FORM_CHANGE_BATTLE_HP_PERCENT)) + gBattlescriptCurrInstr = BattleScript_GulpMissileFormChange; + else + gBattlescriptCurrInstr = cmd->nextInstr; +} diff --git a/src/battle_tent.c b/src/battle_tent.c index c003affebe..8c6a94509a 100644 --- a/src/battle_tent.c +++ b/src/battle_tent.c @@ -329,7 +329,7 @@ static void GenerateInitialRentalMons(void) // Cannot have two same held items. for (j = firstMonId; j < i + firstMonId; j++) { - if (heldItems[j] != 0 && heldItems[j] == gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId]) + if (heldItems[j] != 0 && heldItems[j] == gFacilityTrainerMons[monSetId].heldItem) { if (gFacilityTrainerMons[monSetId].species == currSpecies) currSpecies = SPECIES_NONE; @@ -341,7 +341,7 @@ static void GenerateInitialRentalMons(void) gSaveBlock2Ptr->frontier.rentalMons[i].monId = monSetId; species[i] = gFacilityTrainerMons[monSetId].species; - heldItems[i] = gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId]; + heldItems[i] = gFacilityTrainerMons[monSetId].heldItem; monIds[i] = monSetId; i++; } @@ -411,7 +411,7 @@ static void GenerateOpponentMons(void) // Ensure held items don't repeat on the opponent's team for (k = 0; k < i; k++) { - if (heldItems[k] != ITEM_NONE && heldItems[k] == gBattleFrontierHeldItems[gFacilityTrainerMons[sRandMonId].itemTableId]) + if (heldItems[k] != ITEM_NONE && heldItems[k] == gFacilityTrainerMons[sRandMonId].heldItem) break; } if (k != i) @@ -419,7 +419,7 @@ static void GenerateOpponentMons(void) // Successful selection species[i] = gFacilityTrainerMons[sRandMonId].species; - heldItems[i] = gBattleFrontierHeldItems[gFacilityTrainerMons[sRandMonId].itemTableId]; + heldItems[i] = gFacilityTrainerMons[sRandMonId].heldItem; gFrontierTempParty[i] = sRandMonId; i++; } diff --git a/src/battle_tower.c b/src/battle_tower.c index 904a43220d..354e72ce54 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -42,7 +42,7 @@ // EWRAM vars. EWRAM_DATA const struct BattleFrontierTrainer *gFacilityTrainers = NULL; -EWRAM_DATA const struct FacilityMon *gFacilityTrainerMons = NULL; +EWRAM_DATA const struct TrainerMon *gFacilityTrainerMons = NULL; // IWRAM common u16 gFrontierTempParty[MAX_FRONTIER_PARTY_SIZE]; @@ -81,73 +81,6 @@ static void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer *ereaderT #endif //FREE_BATTLE_TOWER_E_READER static u8 SetTentPtrsGetLevel(void); -const u16 gBattleFrontierHeldItems[] = -{ - [BATTLE_FRONTIER_ITEM_NONE] = ITEM_NONE, - [BATTLE_FRONTIER_ITEM_KINGS_ROCK] = ITEM_KINGS_ROCK, - [BATTLE_FRONTIER_ITEM_SITRUS_BERRY] = ITEM_SITRUS_BERRY, - [BATTLE_FRONTIER_ITEM_ORAN_BERRY] = ITEM_ORAN_BERRY, - [BATTLE_FRONTIER_ITEM_CHESTO_BERRY] = ITEM_CHESTO_BERRY, - [BATTLE_FRONTIER_ITEM_HARD_STONE] = ITEM_HARD_STONE, - [BATTLE_FRONTIER_ITEM_FOCUS_BAND] = ITEM_FOCUS_BAND, - [BATTLE_FRONTIER_ITEM_PERSIM_BERRY] = ITEM_PERSIM_BERRY, - [BATTLE_FRONTIER_ITEM_MIRACLE_SEED] = ITEM_MIRACLE_SEED, - [BATTLE_FRONTIER_ITEM_BERRY_JUICE] = ITEM_BERRY_JUICE, - [BATTLE_FRONTIER_ITEM_MACHO_BRACE] = ITEM_MACHO_BRACE, - [BATTLE_FRONTIER_ITEM_SILVER_POWDER] = ITEM_SILVER_POWDER, - [BATTLE_FRONTIER_ITEM_CHERI_BERRY] = ITEM_CHERI_BERRY, - [BATTLE_FRONTIER_ITEM_BLACK_GLASSES] = ITEM_BLACK_GLASSES, - [BATTLE_FRONTIER_ITEM_BLACK_BELT] = ITEM_BLACK_BELT, - [BATTLE_FRONTIER_ITEM_SOUL_DEW] = ITEM_SOUL_DEW, - [BATTLE_FRONTIER_ITEM_CHOICE_BAND] = ITEM_CHOICE_BAND, - [BATTLE_FRONTIER_ITEM_MAGNET] = ITEM_MAGNET, - [BATTLE_FRONTIER_ITEM_SILK_SCARF] = ITEM_SILK_SCARF, - [BATTLE_FRONTIER_ITEM_WHITE_HERB] = ITEM_WHITE_HERB, - [BATTLE_FRONTIER_ITEM_DEEP_SEA_SCALE] = ITEM_DEEP_SEA_SCALE, - [BATTLE_FRONTIER_ITEM_DEEP_SEA_TOOTH] = ITEM_DEEP_SEA_TOOTH, - [BATTLE_FRONTIER_ITEM_MYSTIC_WATER] = ITEM_MYSTIC_WATER, - [BATTLE_FRONTIER_ITEM_SHARP_BEAK] = ITEM_SHARP_BEAK, - [BATTLE_FRONTIER_ITEM_QUICK_CLAW] = ITEM_QUICK_CLAW, - [BATTLE_FRONTIER_ITEM_LEFTOVERS] = ITEM_LEFTOVERS, - [BATTLE_FRONTIER_ITEM_RAWST_BERRY] = ITEM_RAWST_BERRY, - [BATTLE_FRONTIER_ITEM_LIGHT_BALL] = ITEM_LIGHT_BALL, - [BATTLE_FRONTIER_ITEM_POISON_BARB] = ITEM_POISON_BARB, - [BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE] = ITEM_NEVER_MELT_ICE, - [BATTLE_FRONTIER_ITEM_ASPEAR_BERRY] = ITEM_ASPEAR_BERRY, - [BATTLE_FRONTIER_ITEM_SPELL_TAG] = ITEM_SPELL_TAG, - [BATTLE_FRONTIER_ITEM_BRIGHT_POWDER] = ITEM_BRIGHT_POWDER, - [BATTLE_FRONTIER_ITEM_LEPPA_BERRY] = ITEM_LEPPA_BERRY, - [BATTLE_FRONTIER_ITEM_SCOPE_LENS] = ITEM_SCOPE_LENS, - [BATTLE_FRONTIER_ITEM_TWISTED_SPOON] = ITEM_TWISTED_SPOON, - [BATTLE_FRONTIER_ITEM_METAL_COAT] = ITEM_METAL_COAT, - [BATTLE_FRONTIER_ITEM_MENTAL_HERB] = ITEM_MENTAL_HERB, - [BATTLE_FRONTIER_ITEM_CHARCOAL] = ITEM_CHARCOAL, - [BATTLE_FRONTIER_ITEM_PECHA_BERRY] = ITEM_PECHA_BERRY, - [BATTLE_FRONTIER_ITEM_SOFT_SAND] = ITEM_SOFT_SAND, - [BATTLE_FRONTIER_ITEM_LUM_BERRY] = ITEM_LUM_BERRY, - [BATTLE_FRONTIER_ITEM_DRAGON_SCALE] = ITEM_DRAGON_SCALE, - [BATTLE_FRONTIER_ITEM_DRAGON_FANG] = ITEM_DRAGON_FANG, - [BATTLE_FRONTIER_ITEM_IAPAPA_BERRY] = ITEM_IAPAPA_BERRY, - [BATTLE_FRONTIER_ITEM_WIKI_BERRY] = ITEM_WIKI_BERRY, - [BATTLE_FRONTIER_ITEM_SEA_INCENSE] = ITEM_SEA_INCENSE, - [BATTLE_FRONTIER_ITEM_SHELL_BELL] = ITEM_SHELL_BELL, - [BATTLE_FRONTIER_ITEM_SALAC_BERRY] = ITEM_SALAC_BERRY, - [BATTLE_FRONTIER_ITEM_LANSAT_BERRY] = ITEM_LANSAT_BERRY, - [BATTLE_FRONTIER_ITEM_APICOT_BERRY] = ITEM_APICOT_BERRY, - [BATTLE_FRONTIER_ITEM_STARF_BERRY] = ITEM_STARF_BERRY, - [BATTLE_FRONTIER_ITEM_LIECHI_BERRY] = ITEM_LIECHI_BERRY, - [BATTLE_FRONTIER_ITEM_LEEK] = ITEM_LEEK, - [BATTLE_FRONTIER_ITEM_LAX_INCENSE] = ITEM_LAX_INCENSE, - [BATTLE_FRONTIER_ITEM_AGUAV_BERRY] = ITEM_AGUAV_BERRY, - [BATTLE_FRONTIER_ITEM_FIGY_BERRY] = ITEM_FIGY_BERRY, - [BATTLE_FRONTIER_ITEM_THICK_CLUB] = ITEM_THICK_CLUB, - [BATTLE_FRONTIER_ITEM_MAGO_BERRY] = ITEM_MAGO_BERRY, - [BATTLE_FRONTIER_ITEM_METAL_POWDER] = ITEM_METAL_POWDER, - [BATTLE_FRONTIER_ITEM_PETAYA_BERRY] = ITEM_PETAYA_BERRY, - [BATTLE_FRONTIER_ITEM_LUCKY_PUNCH] = ITEM_LUCKY_PUNCH, - [BATTLE_FRONTIER_ITEM_GANLON_BERRY] = ITEM_GANLON_BERRY, -}; - #include "data/battle_frontier/battle_frontier_trainer_mons.h" #include "data/battle_frontier/battle_frontier_trainers.h" #include "data/battle_frontier/battle_frontier_mons.h" @@ -1627,11 +1560,93 @@ static void FillTentTrainerParty(u8 monsCount) FillTentTrainerParty_(gTrainerBattleOpponent_A, 0, monsCount); } +void CreateFacilityMon(const struct TrainerMon *fmon, u16 level, u8 fixedIV, u32 otID, u32 flags, struct Pokemon *dst) +{ + u8 ball = (fmon->ball == 0xFF) ? Random() % POKEBALL_COUNT : fmon->ball; + u16 move; + u32 personality, ability, friendship, j; + + if (fmon->gender == TRAINER_MON_MALE) + { + personality = GeneratePersonalityForGender(MON_MALE, fmon->species); + } + else if (fmon->gender == TRAINER_MON_FEMALE) + { + personality = GeneratePersonalityForGender(MON_FEMALE, fmon->species); + } + + ModifyPersonalityForNature(&personality, fmon->nature); + CreateMon(dst, fmon->species, level, fixedIV, TRUE, personality, otID, OT_ID_PRESET); + + friendship = MAX_FRIENDSHIP; + // Give the chosen Pokémon its specified moves. + for (j = 0; j < MAX_MON_MOVES; j++) + { + move = fmon->moves[j]; + if (flags & FLAG_FRONTIER_MON_FACTORY && move == MOVE_RETURN) + move = MOVE_FRUSTRATION; + + SetMonMoveSlot(dst, move, j); + if (gMovesInfo[move].effect == EFFECT_FRUSTRATION) + friendship = 0; // Frustration is more powerful the lower the pokemon's friendship is. + } + + SetMonData(dst, MON_DATA_FRIENDSHIP, &friendship); + SetMonData(dst, MON_DATA_HELD_ITEM, &fmon->heldItem); + + // try to set ability. Otherwise, random of non-hidden as per vanilla + if (fmon->ability != ABILITY_NONE) + { + const struct SpeciesInfo *speciesInfo = &gSpeciesInfo[fmon->species]; + u32 maxAbilities = ARRAY_COUNT(speciesInfo->abilities); + for (ability = 0; ability < maxAbilities; ++ability) + { + if (speciesInfo->abilities[ability] == fmon->ability) + break; + } + if (ability >= maxAbilities) + ability = 0; + SetMonData(dst, MON_DATA_ABILITY_NUM, &ability); + } + + if (fmon->ev != NULL) + { + SetMonData(dst, MON_DATA_HP_EV, &(fmon->ev[0])); + SetMonData(dst, MON_DATA_ATK_EV, &(fmon->ev[1])); + SetMonData(dst, MON_DATA_DEF_EV, &(fmon->ev[2])); + SetMonData(dst, MON_DATA_SPATK_EV, &(fmon->ev[3])); + SetMonData(dst, MON_DATA_SPDEF_EV, &(fmon->ev[4])); + SetMonData(dst, MON_DATA_SPEED_EV, &(fmon->ev[5])); + } + + if (fmon->iv) + SetMonData(dst, MON_DATA_IVS, &(fmon->iv)); + + if (fmon->isShiny) + { + u32 data = TRUE; + SetMonData(dst, MON_DATA_IS_SHINY, &data); + } + if (fmon->dynamaxLevel > 0) + { + u32 data = fmon->dynamaxLevel; + SetMonData(dst, MON_DATA_DYNAMAX_LEVEL, &data); + } + if (fmon->gigantamaxFactor) + { + u32 data = fmon->gigantamaxFactor; + SetMonData(dst, MON_DATA_GIGANTAMAX_FACTOR, &data); + } + + + SetMonData(dst, MON_DATA_POKEBALL, &ball); + CalculateMonStats(dst); +} + static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount) { s32 i, j; u16 chosenMonIndices[MAX_FRONTIER_PARTY_SIZE]; - u8 friendship = MAX_FRIENDSHIP; u8 level = SetFacilityPtrsGetLevel(); u8 fixedIV = 0; u8 bfMonCount; @@ -1708,7 +1723,7 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount) for (j = 0; j < i + firstMonId; j++) { if (GetMonData(&gEnemyParty[j], MON_DATA_HELD_ITEM, NULL) != ITEM_NONE - && GetMonData(&gEnemyParty[j], MON_DATA_HELD_ITEM, NULL) == gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]) + && GetMonData(&gEnemyParty[j], MON_DATA_HELD_ITEM, NULL) == gFacilityTrainerMons[monId].heldItem) break; } if (j != i + firstMonId) @@ -1725,27 +1740,9 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount) continue; chosenMonIndices[i] = monId; - + // Place the chosen Pokémon into the trainer's party. - CreateMonWithEVSpreadNatureOTID(&gEnemyParty[i + firstMonId], - gFacilityTrainerMons[monId].species, - level, - gFacilityTrainerMons[monId].nature, - fixedIV, - gFacilityTrainerMons[monId].evSpread, - otID); - - friendship = MAX_FRIENDSHIP; - // Give the chosen Pokémon its specified moves. - for (j = 0; j < MAX_MON_MOVES; j++) - { - SetMonMoveSlot(&gEnemyParty[i + firstMonId], gFacilityTrainerMons[monId].moves[j], j); - if (gMovesInfo[gFacilityTrainerMons[monId].moves[j]].effect == EFFECT_FRUSTRATION) - friendship = 0; // Frustration is more powerful the lower the pokemon's friendship is. - } - - SetMonData(&gEnemyParty[i + firstMonId], MON_DATA_FRIENDSHIP, &friendship); - SetMonData(&gEnemyParty[i + firstMonId], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]); + CreateFacilityMon(&gFacilityTrainerMons[monId], level, fixedIV, otID, 0, &gEnemyParty[i + firstMonId]); // The Pokémon was successfully added to the trainer's party, so it's safe to move on to // the next party slot. @@ -1822,8 +1819,7 @@ static void FillFactoryTrainerParty(void) static void FillFactoryFrontierTrainerParty(u16 trainerId, u8 firstMonId) { - u8 i, j; - u8 friendship; + u8 i; u8 level; u8 fixedIV; u32 otID; @@ -1868,27 +1864,15 @@ static void FillFactoryFrontierTrainerParty(u16 trainerId, u8 firstMonId) for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { u16 monId = gFrontierTempParty[i]; - CreateMonWithEVSpreadNatureOTID(&gEnemyParty[firstMonId + i], - gFacilityTrainerMons[monId].species, - level, - gFacilityTrainerMons[monId].nature, - fixedIV, - gFacilityTrainerMons[monId].evSpread, - otID); - - friendship = 0; - for (j = 0; j < MAX_MON_MOVES; j++) - SetMonMoveAvoidReturn(&gEnemyParty[firstMonId + i], gFacilityTrainerMons[monId].moves[j], j); - - SetMonData(&gEnemyParty[firstMonId + i], MON_DATA_FRIENDSHIP, &friendship); - SetMonData(&gEnemyParty[firstMonId + i], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]); + CreateFacilityMon(&gFacilityTrainerMons[monId], + level, fixedIV, otID, FLAG_FRONTIER_MON_FACTORY, + &gEnemyParty[firstMonId + i]); } } static void FillFactoryTentTrainerParty(u16 trainerId, u8 firstMonId) { - u8 i, j; - u8 friendship; + u8 i; u8 level = TENT_MIN_LEVEL; u8 fixedIV = 0; u32 otID = T1_READ_32(gSaveBlock2Ptr->playerTrainerId); @@ -1896,24 +1880,9 @@ static void FillFactoryTentTrainerParty(u16 trainerId, u8 firstMonId) for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { u16 monId = gFrontierTempParty[i]; - CreateMonWithEVSpreadNatureOTID(&gEnemyParty[firstMonId + i], - gFacilityTrainerMons[monId].species, - level, - gFacilityTrainerMons[monId].nature, - fixedIV, - gFacilityTrainerMons[monId].evSpread, - otID); - - friendship = 0; - for (j = 0; j < MAX_MON_MOVES; j++) - { - SetMonMoveAvoidReturn(&gEnemyParty[firstMonId + i], gFacilityTrainerMons[monId].moves[j], j); - if (gMovesInfo[gFacilityTrainerMons[monId].moves[j]].effect == EFFECT_FRUSTRATION) - friendship = 0; - } - - SetMonData(&gEnemyParty[firstMonId + i], MON_DATA_FRIENDSHIP, &friendship); - SetMonData(&gEnemyParty[firstMonId + i], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]); + CreateFacilityMon(&gFacilityTrainerMons[monId], + level, fixedIV, otID, 0, + &gEnemyParty[firstMonId + i]); } } @@ -2348,7 +2317,7 @@ static void LoadMultiPartnerCandidatesData(void) while (1) { monId = GetRandomFrontierMonFromSet(trainerId); - if (j % 2 != 0 && gFacilityTrainerMons[gSaveBlock2Ptr->frontier.trainerIds[r10 - 1]].itemTableId == gFacilityTrainerMons[monId].itemTableId) + if (j % 2 != 0 && gFacilityTrainerMons[gSaveBlock2Ptr->frontier.trainerIds[r10 - 1]].heldItem == gFacilityTrainerMons[monId].heldItem) continue; for (k = 8; k < r10; k++) @@ -3017,7 +2986,6 @@ static void FillPartnerParty(u16 trainerId) s32 i, j, k; u32 firstIdPart = 0, secondIdPart = 0, thirdIdPart = 0; u32 ivs, level, personality; - u32 friendship; u16 monId; u32 otID; u8 trainerName[(PLAYER_NAME_LENGTH * 3) + 1]; @@ -3124,22 +3092,7 @@ static void FillPartnerParty(u16 trainerId) for (i = 0; i < FRONTIER_MULTI_PARTY_SIZE; i++) { monId = gSaveBlock2Ptr->frontier.trainerIds[i + 18]; - CreateMonWithEVSpreadNatureOTID(&gPlayerParty[MULTI_PARTY_SIZE + i], - gFacilityTrainerMons[monId].species, - level, - gFacilityTrainerMons[monId].nature, - ivs, - gFacilityTrainerMons[monId].evSpread, - otID); - friendship = MAX_FRIENDSHIP; - for (j = 0; j < MAX_MON_MOVES; j++) - { - SetMonMoveSlot(&gPlayerParty[MULTI_PARTY_SIZE + i], gFacilityTrainerMons[monId].moves[j], j); - if (gMovesInfo[gFacilityTrainerMons[monId].moves[j]].effect == EFFECT_FRUSTRATION) - friendship = 0; - } - SetMonData(&gPlayerParty[MULTI_PARTY_SIZE + i], MON_DATA_FRIENDSHIP, &friendship); - SetMonData(&gPlayerParty[MULTI_PARTY_SIZE + i], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]); + CreateFacilityMon(&gFacilityTrainerMons[monId], level, ivs, otID, 0, &gPlayerParty[MULTI_PARTY_SIZE + i]); for (j = 0; j < PLAYER_NAME_LENGTH + 1; j++) trainerName[j] = gFacilityTrainers[trainerId].trainerName[j]; SetMonData(&gPlayerParty[MULTI_PARTY_SIZE + i], MON_DATA_OT_NAME, &trainerName); @@ -3499,7 +3452,6 @@ static void FillTentTrainerParty_(u16 trainerId, u8 firstMonId, u8 monCount) { s32 i, j; u16 chosenMonIndices[MAX_FRONTIER_PARTY_SIZE]; - u8 friendship; u8 level = SetTentPtrsGetLevel(); u8 fixedIV = 0; u8 bfMonCount; @@ -3538,7 +3490,7 @@ static void FillTentTrainerParty_(u16 trainerId, u8 firstMonId, u8 monCount) for (j = 0; j < i + firstMonId; j++) { if (GetMonData(&gEnemyParty[j], MON_DATA_HELD_ITEM, NULL) != ITEM_NONE - && GetMonData(&gEnemyParty[j], MON_DATA_HELD_ITEM, NULL) == gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]) + && GetMonData(&gEnemyParty[j], MON_DATA_HELD_ITEM, NULL) == gFacilityTrainerMons[monId].heldItem) break; } if (j != i + firstMonId) @@ -3555,27 +3507,9 @@ static void FillTentTrainerParty_(u16 trainerId, u8 firstMonId, u8 monCount) continue; chosenMonIndices[i] = monId; - - // Place the chosen Pokémon into the trainer's party. - CreateMonWithEVSpreadNatureOTID(&gEnemyParty[i + firstMonId], - gFacilityTrainerMons[monId].species, - level, - gFacilityTrainerMons[monId].nature, - fixedIV, - gFacilityTrainerMons[monId].evSpread, - otID); - - friendship = MAX_FRIENDSHIP; - // Give the chosen Pokémon its specified moves. - for (j = 0; j < MAX_MON_MOVES; j++) - { - SetMonMoveSlot(&gEnemyParty[i + firstMonId], gFacilityTrainerMons[monId].moves[j], j); - if (gMovesInfo[gFacilityTrainerMons[monId].moves[j]].effect == EFFECT_FRUSTRATION) - friendship = 0; // Frustration is more powerful the lower the pokemon's friendship is. - } - - SetMonData(&gEnemyParty[i + firstMonId], MON_DATA_FRIENDSHIP, &friendship); - SetMonData(&gEnemyParty[i + firstMonId], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]); + CreateFacilityMon(&gFacilityTrainerMons[monId], + level, fixedIV, otID, 0, + &gEnemyParty[i + firstMonId]); // The Pokémon was successfully added to the trainer's party, so it's safe to move on to // the next party slot. diff --git a/src/battle_util.c b/src/battle_util.c index 7a4bff4900..af56f038ec 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -1674,6 +1674,7 @@ enum ENDTURN_SUN, ENDTURN_HAIL, ENDTURN_SNOW, + ENDTURN_FOG, ENDTURN_DAMAGE_NON_TYPES, ENDTURN_GRAVITY, ENDTURN_WATER_SPORT, @@ -2059,6 +2060,24 @@ u8 DoFieldEndTurnEffects(void) } gBattleStruct->turnCountersTracker++; break; + case ENDTURN_FOG: + if (gBattleWeather & B_WEATHER_FOG) + { + if (!(gBattleWeather & B_WEATHER_FOG_PERMANENT) && --gWishFutureKnock.weatherDuration == 0) + { + gBattleWeather &= ~B_WEATHER_FOG_TEMPORARY; + gBattlescriptCurrInstr = BattleScript_FogEnded; + } + else + { + gBattlescriptCurrInstr = BattleScript_FogContinues; + } + + BattleScriptExecute(gBattlescriptCurrInstr); + effect++; + } + gBattleStruct->turnCountersTracker++; + break; case ENDTURN_DAMAGE_NON_TYPES: while (gBattleStruct->turnSideTracker < 2) { @@ -2964,17 +2983,15 @@ bool32 HandleWishPerishSongOnTurnEnd(void) while (gBattleStruct->wishPerishSongBattlerId < gBattlersCount) { battler = gBattleStruct->wishPerishSongBattlerId; - if (gAbsentBattlerFlags & gBitTable[battler]) - { - gBattleStruct->wishPerishSongBattlerId++; - continue; - } gBattleStruct->wishPerishSongBattlerId++; + if (gWishFutureKnock.futureSightCounter[battler] != 0 && --gWishFutureKnock.futureSightCounter[battler] == 0 - && gBattleMons[battler].hp != 0) + && !(gAbsentBattlerFlags & gBitTable[battler])) { + struct Pokemon *party; + if (gWishFutureKnock.futureSightMove[battler] == MOVE_FUTURE_SIGHT) gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_FUTURE_SIGHT; else @@ -2983,10 +3000,14 @@ bool32 HandleWishPerishSongOnTurnEnd(void) PREPARE_MOVE_BUFFER(gBattleTextBuff1, gWishFutureKnock.futureSightMove[battler]); gBattlerTarget = battler; - gBattlerAttacker = gWishFutureKnock.futureSightAttacker[battler]; + gBattlerAttacker = gWishFutureKnock.futureSightBattlerIndex[battler]; gSpecialStatuses[gBattlerTarget].shellBellDmg = IGNORE_SHELL_BELL; gCurrentMove = gWishFutureKnock.futureSightMove[battler]; - SetTypeBeforeUsingMove(gCurrentMove, battler); + + party = GetSideParty(GetBattlerSide(gBattlerAttacker)); + if (&party[gWishFutureKnock.futureSightPartyIndex[gBattlerTarget]] == &party[gBattlerPartyIndexes[gBattlerAttacker]]) + SetTypeBeforeUsingMove(gCurrentMove, gBattlerAttacker); + BattleScriptExecute(BattleScript_MonTookFutureAttack); if (gWishFutureKnock.futureSightCounter[battler] == 0 @@ -2994,6 +3015,7 @@ bool32 HandleWishPerishSongOnTurnEnd(void) { gSideStatuses[GetBattlerSide(gBattlerTarget)] &= ~SIDE_STATUS_FUTUREATTACK; } + return TRUE; } } @@ -3518,6 +3540,9 @@ u8 AtkCanceller_UnableToUseMove(u32 moveType) case CANCELLER_Z_MOVES: if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] != MOVE_NONE) { + // For Z-Mirror Move, so it doesn't play the animation twice. + bool32 alreadyUsed = (gBattleStruct->zmove.used[gBattlerAttacker] == TRUE); + //attacker has a queued z move gBattleStruct->zmove.active = TRUE; gBattleStruct->zmove.activeCategory = gBattleStruct->zmove.categories[gBattlerAttacker]; @@ -3530,13 +3555,19 @@ u8 AtkCanceller_UnableToUseMove(u32 moveType) if (gBattleStruct->zmove.activeCategory == DAMAGE_CATEGORY_STATUS) { gBattleStruct->zmove.effect = gMovesInfo[gBattleStruct->zmove.baseMoves[gBattlerAttacker]].zMove.effect; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_ZMoveActivateStatus; + if (!alreadyUsed) + { + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_ZMoveActivateStatus; + } } else { - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_ZMoveActivateDamaging; + if (!alreadyUsed) + { + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_ZMoveActivateDamaging; + } } effect = 1; } @@ -3801,6 +3832,7 @@ static const u16 sWeatherFlagsInfo[][3] = [ENUM_WEATHER_HAIL] = {B_WEATHER_HAIL_TEMPORARY, B_WEATHER_HAIL_PERMANENT, HOLD_EFFECT_ICY_ROCK}, [ENUM_WEATHER_STRONG_WINDS] = {B_WEATHER_STRONG_WINDS, B_WEATHER_STRONG_WINDS, HOLD_EFFECT_NONE}, [ENUM_WEATHER_SNOW] = {B_WEATHER_SNOW_TEMPORARY, B_WEATHER_SNOW_PERMANENT, HOLD_EFFECT_ICY_ROCK}, + [ENUM_WEATHER_FOG] = {B_WEATHER_FOG_TEMPORARY, B_WEATHER_FOG_PERMANENT, HOLD_EFFECT_NONE}, }; static void ShouldChangeFormInWeather(u32 battler) @@ -4141,7 +4173,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 BattleScriptPushCursorAndCallback(BattleScript_OverworldTerrain); effect++; } - else if (B_FOG_TERRAIN == TRUE + else if (B_OVERWORLD_FOG >= GEN_8 && (GetCurrentWeather() == WEATHER_FOG_HORIZONTAL || GetCurrentWeather() == WEATHER_FOG_DIAGONAL) && !(gFieldStatuses & STATUS_FIELD_MISTY_TERRAIN)) { @@ -4199,6 +4231,18 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 effect++; } break; + case WEATHER_FOG_DIAGONAL: + case WEATHER_FOG_HORIZONTAL: + if (B_OVERWORLD_FOG == GEN_4) + { + if (!(gBattleWeather & B_WEATHER_FOG)) + { + gBattleWeather = B_WEATHER_FOG; + gBattleScripting.animArg1 = B_ANIM_FOG_CONTINUES; + effect++; + } + break; + } } } if (effect != 0) @@ -4930,10 +4974,12 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 } break; case ABILITY_CUD_CHEW: - if (ItemId_GetPocket(GetUsedHeldItem(battler)) == POCKET_BERRIES && gDisableStructs[battler].cudChew == TRUE) + if (gDisableStructs[battler].cudChew == TRUE) { - gLastUsedItem = gBattleStruct->usedHeldItems[battler][GetBattlerSide(battler)]; - gBattleStruct->usedHeldItems[battler][GetBattlerSide(battler)] = ITEM_NONE; + gBattleScripting.battler = battler; + gDisableStructs[battler].cudChew = FALSE; + gLastUsedItem = gBattleStruct->usedHeldItems[gBattlerPartyIndexes[battler]][GetBattlerSide(battler)]; + gBattleStruct->usedHeldItems[gBattlerPartyIndexes[battler]][GetBattlerSide(battler)] = ITEM_NONE; BattleScriptPushCursorAndCallback(BattleScript_CudChewActivates); effect++; } @@ -5240,6 +5286,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) && IsBattlerAlive(gBattlerAttacker) && TARGET_TURN_DAMAGED + && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS && IsMoveMakingContact(move, gBattlerAttacker) && gBattleStruct->overwrittenAbilities[gBattlerAttacker] != GetBattlerAbility(gBattlerTarget) && gBattleMons[gBattlerTarget].ability != ABILITY_MUMMY @@ -5263,6 +5310,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) && IsBattlerAlive(gBattlerAttacker) && TARGET_TURN_DAMAGED + && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS && IsMoveMakingContact(move, gBattlerAttacker) && !IsDynamaxed(gBattlerTarget) && !gAbilitiesInfo[gBattleMons[gBattlerAttacker].ability].cantBeSwapped) @@ -5317,6 +5365,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && (CompareStat(gBattlerAttacker, STAT_SPEED, MIN_STAT_STAGE, CMP_GREATER_THAN) || GetBattlerAbility(gBattlerAttacker) == ABILITY_MIRROR_ARMOR) && !gProtectStructs[gBattlerAttacker].confusionSelfDmg && TARGET_TURN_DAMAGED + && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS && IsMoveMakingContact(move, gBattlerAttacker)) { SET_STATCHANGER(STAT_SPEED, 1, TRUE); @@ -5333,6 +5382,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && gBattleMons[gBattlerAttacker].hp != 0 && !gProtectStructs[gBattlerAttacker].confusionSelfDmg && TARGET_TURN_DAMAGED + && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS && IsMoveMakingContact(move, gBattlerAttacker)) { gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / (B_ROUGH_SKIN_DMG >= GEN_4 ? 8 : 16); @@ -5348,6 +5398,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) && gBattleMons[gBattlerTarget].hp == 0 && IsBattlerAlive(gBattlerAttacker) + && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS && IsMoveMakingContact(move, gBattlerAttacker)) { u32 battler; @@ -5395,6 +5446,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && !gProtectStructs[gBattlerAttacker].confusionSelfDmg && TARGET_TURN_DAMAGED && CanSleep(gBattlerAttacker) + && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS && IsMoveMakingContact(move, gBattlerAttacker) && (Random() % 3) == 0) { @@ -5414,6 +5466,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && !gProtectStructs[gBattlerAttacker].confusionSelfDmg && TARGET_TURN_DAMAGED && CanBePoisoned(gBattlerTarget, gBattlerAttacker) + && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS && IsMoveMakingContact(move, gBattlerAttacker) && RandomWeighted(RNG_POISON_POINT, 2, 1)) { @@ -5432,6 +5485,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && !gProtectStructs[gBattlerAttacker].confusionSelfDmg && TARGET_TURN_DAMAGED && CanBeParalyzed(gBattlerAttacker) + && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS && IsMoveMakingContact(move, gBattlerAttacker) && RandomWeighted(RNG_STATIC, 2, 1)) { @@ -5446,6 +5500,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) && gBattleMons[gBattlerAttacker].hp != 0 && !gProtectStructs[gBattlerAttacker].confusionSelfDmg + && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS && (IsMoveMakingContact(move, gBattlerAttacker)) && TARGET_TURN_DAMAGED && CanBeBurned(gBattlerAttacker) @@ -5468,6 +5523,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && !(gBattleMons[gBattlerAttacker].status2 & STATUS2_INFATUATION) && AreBattlersOfOppositeGender(gBattlerAttacker, gBattlerTarget) && GetBattlerAbility(gBattlerAttacker) != ABILITY_OBLIVIOUS + && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS && IsMoveMakingContact(move, gBattlerAttacker) && !IsAbilityOnSide(gBattlerAttacker, ABILITY_AROMA_VEIL)) { @@ -5537,6 +5593,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && !gProtectStructs[gBattlerAttacker].confusionSelfDmg && TARGET_TURN_DAMAGED && IsBattlerAlive(battler) + && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS && (IsMoveMakingContact(move, gBattlerAttacker)) && !(gStatuses3[gBattlerAttacker] & STATUS3_PERISH_SONG)) { @@ -5667,6 +5724,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && gBattleMons[gBattlerTarget].hp != 0 && !gProtectStructs[gBattlerAttacker].confusionSelfDmg && CanBePoisoned(gBattlerAttacker, gBattlerTarget) + && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS && IsMoveMakingContact(move, gBattlerAttacker) && TARGET_TURN_DAMAGED // Need to actually hit the target && (Random() % 3) == 0) @@ -5695,7 +5753,8 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 } break; case ABILITY_GULP_MISSILE: - if (((gCurrentMove == MOVE_SURF && TARGET_TURN_DAMAGED) || gStatuses3[gBattlerAttacker] & STATUS3_UNDERWATER) + if ((gBattleMons[gBattlerAttacker].species == SPECIES_CRAMORANT) + && ((gCurrentMove == MOVE_SURF && TARGET_TURN_DAMAGED) || gStatuses3[gBattlerAttacker] & STATUS3_UNDERWATER) && TryBattleFormChange(gBattlerAttacker, FORM_CHANGE_BATTLE_HP_PERCENT)) { BattleScriptPushCursor(); @@ -6115,7 +6174,9 @@ u32 GetBattlerAbility(u32 battler) if (gStatuses3[battler] & STATUS3_GASTRO_ACID) return ABILITY_NONE; - if (IsNeutralizingGasOnField() && gBattleMons[battler].ability != ABILITY_NEUTRALIZING_GAS) + if (IsNeutralizingGasOnField() + && gBattleMons[battler].ability != ABILITY_NEUTRALIZING_GAS + && GetBattlerHoldEffectIgnoreAbility(battler, TRUE) != HOLD_EFFECT_ABILITY_SHIELD) return ABILITY_NONE; if (IsMyceliumMightOnField()) @@ -6753,10 +6814,29 @@ static u8 TryConsumeMirrorHerb(u32 battler, bool32 execute) return effect; } +static u32 RestoreWhiteHerbStats(u32 battler) +{ + u32 i, effect = 0; + + for (i = 0; i < NUM_BATTLE_STATS; i++) + { + if (gBattleMons[battler].statStages[i] < DEFAULT_STAT_STAGE) + { + gBattleMons[battler].statStages[i] = DEFAULT_STAT_STAGE; + effect = ITEM_STATS_CHANGE; + } + } + if (effect != 0) + { + gBattleScripting.battler = battler; + gPotentialItemEffectBattler = battler; + } + return effect; +} + static u8 ItemEffectMoveEnd(u32 battler, u16 holdEffect) { u8 effect = 0; - u32 i; switch (holdEffect) { @@ -6871,7 +6951,7 @@ static u8 ItemEffectMoveEnd(u32 battler, u16 holdEffect) { gBattleMons[battler].status1 &= ~STATUS1_FROSTBITE; BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_BerryCureFsbRet; + gBattlescriptCurrInstr = BattleScript_BerryCureFrbRet; effect = ITEM_STATUS_CHANGE; } break; @@ -6936,24 +7016,6 @@ static u8 ItemEffectMoveEnd(u32 battler, u16 holdEffect) effect = ITEM_STATUS_CHANGE; } break; - case HOLD_EFFECT_RESTORE_STATS: - for (i = 0; i < NUM_BATTLE_STATS; i++) - { - if (gBattleMons[battler].statStages[i] < DEFAULT_STAT_STAGE) - { - gBattleMons[battler].statStages[i] = DEFAULT_STAT_STAGE; - effect = ITEM_STATS_CHANGE; - } - } - if (effect != 0) - { - gBattleScripting.battler = battler; - gPotentialItemEffectBattler = battler; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_WhiteHerbRet; - return effect; - } - break; case HOLD_EFFECT_CRITICAL_UP: // lansat berry if (B_BERRIES_INSTANT >= GEN_4 && !(gBattleMons[battler].status2 & STATUS2_FOCUS_ENERGY_ANY) @@ -7023,18 +7085,9 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) } break; case HOLD_EFFECT_RESTORE_STATS: - for (i = 0; i < NUM_BATTLE_STATS; i++) - { - if (gBattleMons[battler].statStages[i] < DEFAULT_STAT_STAGE) - { - gBattleMons[battler].statStages[i] = DEFAULT_STAT_STAGE; - effect = ITEM_STATS_CHANGE; - } - } + effect = RestoreWhiteHerbStats(battler); if (effect != 0) { - gBattleScripting.battler = battler; - gPotentialItemEffectBattler = battler; gBattlerAttacker = battler; BattleScriptExecute(BattleScript_WhiteHerbEnd2); } @@ -7138,7 +7191,7 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) && !UnnerveOn(battler, gLastUsedItem)) { gBattleMons[battler].status1 &= ~STATUS1_FROSTBITE; - BattleScriptExecute(BattleScript_BerryCureFsbEnd2); + BattleScriptExecute(BattleScript_BerryCureFrbEnd2); effect = ITEM_STATUS_CHANGE; } break; @@ -7241,6 +7294,7 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) case HOLD_EFFECT_EJECT_PACK: if (gProtectStructs[battler].statFell && gProtectStructs[battler].disableEjectPack == 0 + && CountUsablePartyMons(battler) > 0 && !(gCurrentMove == MOVE_PARTING_SHOT && CanBattlerSwitch(gBattlerAttacker))) // Does not activate if attacker used Parting Shot and can switch out { gProtectStructs[battler].statFell = FALSE; @@ -7272,6 +7326,18 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) BattleScriptPushCursorAndCallback(BattleScript_BerserkGeneRet); effect = ITEM_STATS_CHANGE; break; + case HOLD_EFFECT_BOOSTER_ENERGY: + if (!(gBattleStruct->boosterEnergyActivates & gBitTable[battler]) + && (((GetBattlerAbility(battler) == ABILITY_PROTOSYNTHESIS) && !(gBattleWeather & B_WEATHER_SUN)) + || ((GetBattlerAbility(battler) == ABILITY_QUARK_DRIVE) && !(gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN)))) + { + PREPARE_STAT_BUFFER(gBattleTextBuff1, GetHighestStatId(battler)); + gBattleScripting.battler = battler; + gBattleStruct->boosterEnergyActivates |= gBitTable[battler]; + BattleScriptExecute(BattleScript_BoosterEnergyEnd2); + effect = ITEM_EFFECT_OTHER; + } + break; } if (effect != 0) { @@ -7305,18 +7371,9 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) effect = ItemRestorePp(battler, gLastUsedItem, TRUE); break; case HOLD_EFFECT_RESTORE_STATS: - for (i = 0; i < NUM_BATTLE_STATS; i++) - { - if (gBattleMons[battler].statStages[i] < DEFAULT_STAT_STAGE) - { - gBattleMons[battler].statStages[i] = DEFAULT_STAT_STAGE; - effect = ITEM_STATS_CHANGE; - } - } + effect = RestoreWhiteHerbStats(battler); if (effect != 0) { - gBattleScripting.battler = battler; - gPotentialItemEffectBattler = battler; gBattlerAttacker = battler; BattleScriptExecute(BattleScript_WhiteHerbEnd2); } @@ -7439,7 +7496,7 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) if (gBattleMons[battler].status1 & STATUS1_FROSTBITE && !UnnerveOn(battler, gLastUsedItem)) { gBattleMons[battler].status1 &= ~STATUS1_FROSTBITE; - BattleScriptExecute(BattleScript_BerryCureFsbEnd2); + BattleScriptExecute(BattleScript_BerryCureFrbEnd2); effect = ITEM_STATUS_CHANGE; } break; @@ -7536,6 +7593,18 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) case HOLD_EFFECT_MIRROR_HERB: effect = TryConsumeMirrorHerb(battler, TRUE); break; + case HOLD_EFFECT_BOOSTER_ENERGY: + if (!(gBattleStruct->boosterEnergyActivates & gBitTable[battler]) + && (((GetBattlerAbility(battler) == ABILITY_PROTOSYNTHESIS) && !(gBattleWeather & B_WEATHER_SUN)) + || ((GetBattlerAbility(battler) == ABILITY_QUARK_DRIVE) && !(gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN)))) + { + PREPARE_STAT_BUFFER(gBattleTextBuff1, GetHighestStatId(battler)); + gBattlerAbility = gBattleScripting.battler = battler; + gBattleStruct->boosterEnergyActivates |= gBitTable[battler]; + BattleScriptExecute(BattleScript_BoosterEnergyEnd2); + effect = ITEM_EFFECT_OTHER; + } + break; } if (effect != 0) @@ -7695,6 +7764,7 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) break; case HOLD_EFFECT_ROCKY_HELMET: if (TARGET_TURN_DAMAGED + && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS && IsMoveMakingContact(gCurrentMove, gBattlerAttacker) && IsBattlerAlive(gBattlerAttacker) && GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD) @@ -7815,6 +7885,7 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) case HOLD_EFFECT_STICKY_BARB: if (TARGET_TURN_DAMAGED && (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) + && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS && IsMoveMakingContact(gCurrentMove, gBattlerAttacker) && !DoesSubstituteBlockMove(gBattlerAttacker, battler, gCurrentMove) && IsBattlerAlive(gBattlerAttacker) @@ -7876,6 +7947,19 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) } } break; + case ITEMEFFECT_STATS_CHANGED: + switch (battlerHoldEffect) + { + case HOLD_EFFECT_RESTORE_STATS: + effect = RestoreWhiteHerbStats(battler); + if (effect != 0) + { + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_WhiteHerbRet; + } + break; + } + break; } // Berry was successfully used on a Pokemon. @@ -8139,6 +8223,16 @@ u8 IsMonDisobedient(void) } u32 GetBattlerHoldEffect(u32 battler, bool32 checkNegating) +{ + return GetBattlerHoldEffectInternal(battler, checkNegating, TRUE); +} + +u32 GetBattlerHoldEffectIgnoreAbility(u32 battler, bool32 checkNegating) +{ + return GetBattlerHoldEffectInternal(battler, checkNegating, FALSE); +} + +u32 GetBattlerHoldEffectInternal(u32 battler, bool32 checkNegating, bool32 checkAbility) { if (checkNegating) { @@ -8146,7 +8240,7 @@ u32 GetBattlerHoldEffect(u32 battler, bool32 checkNegating) return HOLD_EFFECT_NONE; if (gFieldStatuses & STATUS_FIELD_MAGIC_ROOM) return HOLD_EFFECT_NONE; - if (GetBattlerAbility(battler) == ABILITY_KLUTZ) + if (checkAbility && GetBattlerAbility(battler) == ABILITY_KLUTZ) return HOLD_EFFECT_NONE; } @@ -8186,7 +8280,6 @@ bool32 IsMoveMakingContact(u32 move, u32 battlerAtk) return FALSE; } else if ((atkHoldEffect == HOLD_EFFECT_PUNCHING_GLOVE && gMovesInfo[move].punchingMove) - || atkHoldEffect == HOLD_EFFECT_PROTECTIVE_PADS || GetBattlerAbility(battlerAtk) == ABILITY_LONG_REACH) { return FALSE; @@ -8781,7 +8874,7 @@ static inline u32 CalcMoveBasePowerAfterModifiers(u32 move, u32 battlerAtk, u32 modifier = uq4_12_multiply(modifier, UQ_4_12(2.0)); break; case EFFECT_SOLAR_BEAM: - if (IsBattlerWeatherAffected(battlerAtk, (B_WEATHER_HAIL | B_WEATHER_SANDSTORM | B_WEATHER_RAIN | B_WEATHER_SNOW))) + if (IsBattlerWeatherAffected(battlerAtk, (B_WEATHER_HAIL | B_WEATHER_SANDSTORM | B_WEATHER_RAIN | B_WEATHER_SNOW | B_WEATHER_FOG))) modifier = uq4_12_multiply(modifier, UQ_4_12(0.5)); break; case EFFECT_STOMPING_TANTRUM: @@ -8940,7 +9033,7 @@ static inline u32 CalcMoveBasePowerAfterModifiers(u32 move, u32 battlerAtk, u32 case ABILITY_PROTOSYNTHESIS: { u8 atkHighestStat = GetHighestStatId(battlerAtk); - if (weather & B_WEATHER_SUN + if ((weather & B_WEATHER_SUN || gBattleStruct->boosterEnergyActivates & gBitTable[battlerAtk]) && ((IS_MOVE_PHYSICAL(move) && atkHighestStat == STAT_ATK) || (IS_MOVE_SPECIAL(move) && atkHighestStat == STAT_SPATK))) modifier = uq4_12_multiply(modifier, UQ_4_12(1.3)); } @@ -8948,7 +9041,7 @@ static inline u32 CalcMoveBasePowerAfterModifiers(u32 move, u32 battlerAtk, u32 case ABILITY_QUARK_DRIVE: { u8 atkHighestStat = GetHighestStatId(battlerAtk); - if (gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN + if ((gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN || gBattleStruct->boosterEnergyActivates & gBitTable[battlerAtk]) && ((IS_MOVE_PHYSICAL(move) && atkHighestStat == STAT_ATK) || (IS_MOVE_SPECIAL(move) && atkHighestStat == STAT_SPATK))) modifier = uq4_12_multiply(modifier, UQ_4_12(1.3)); } @@ -9018,7 +9111,7 @@ static inline u32 CalcMoveBasePowerAfterModifiers(u32 move, u32 battlerAtk, u32 case ABILITY_PROTOSYNTHESIS: { u8 defHighestStat = GetHighestStatId(battlerDef); - if (weather & B_WEATHER_SUN + if ((weather & B_WEATHER_SUN || gBattleStruct->boosterEnergyActivates & gBitTable[battlerDef]) && ((IS_MOVE_PHYSICAL(move) && defHighestStat == STAT_DEF) || (IS_MOVE_SPECIAL(move) && defHighestStat == STAT_SPDEF))) modifier = uq4_12_multiply(modifier, UQ_4_12(0.7)); } @@ -9026,7 +9119,7 @@ static inline u32 CalcMoveBasePowerAfterModifiers(u32 move, u32 battlerAtk, u32 case ABILITY_QUARK_DRIVE: { u8 defHighestStat = GetHighestStatId(battlerDef); - if (gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN + if ((gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN || gBattleStruct->boosterEnergyActivates & gBitTable[battlerDef]) && ((IS_MOVE_PHYSICAL(move) && defHighestStat == STAT_DEF) || (IS_MOVE_SPECIAL(move) && defHighestStat == STAT_SPDEF))) modifier = uq4_12_multiply(modifier, UQ_4_12(0.7)); } @@ -9132,8 +9225,16 @@ static inline u32 CalcAttackStat(u32 move, u32 battlerAtk, u32 battlerDef, u32 m } else if (gMovesInfo[move].effect == EFFECT_BODY_PRESS) { - atkStat = gBattleMons[battlerAtk].defense; - atkStage = gBattleMons[battlerAtk].statStages[STAT_DEF]; + if (IS_MOVE_PHYSICAL(move)) + { + atkStat = gBattleMons[battlerAtk].defense; + atkStage = gBattleMons[battlerAtk].statStages[STAT_DEF]; + } + else + { + atkStat = gBattleMons[battlerAtk].spDefense; + atkStage = gBattleMons[battlerAtk].statStages[STAT_SPDEF]; + } } else { @@ -9537,8 +9638,7 @@ static inline uq4_12_t GetBurnOrFrostBiteModifier(u32 battlerAtk, u32 move, u32 return UQ_4_12(0.5); if (gBattleMons[battlerAtk].status1 & STATUS1_FROSTBITE && IS_MOVE_SPECIAL(move) - && (B_BURN_FACADE_DMG < GEN_6 || gMovesInfo[move].effect != EFFECT_FACADE) - && abilityAtk != ABILITY_GUTS) + && (B_BURN_FACADE_DMG < GEN_6 || gMovesInfo[move].effect != EFFECT_FACADE)) return UQ_4_12(0.5); return UQ_4_12(1.0); } @@ -9828,6 +9928,66 @@ static inline s32 DoMoveDamageCalc(u32 move, u32 battlerAtk, u32 battlerDef, u32 updateFlags, typeEffectivenessModifier, weather, holdEffectAtk, holdEffectDef, abilityAtk, abilityDef); } +static inline s32 DoFutureSightAttackDamageCalcVars(u32 move, u32 battlerAtk, u32 battlerDef, u32 moveType, + bool32 isCrit, bool32 randomFactor, bool32 updateFlags, uq4_12_t typeEffectivenessModifier, u32 weather, + u32 holdEffectDef, u32 abilityDef) +{ + s32 dmg; + u32 userFinalAttack; + u32 targetFinalDefense; + + struct Pokemon *party = GetSideParty(GetBattlerSide(battlerAtk)); + struct Pokemon *partyMon = &party[gWishFutureKnock.futureSightPartyIndex[battlerDef]]; + u32 partyMonLevel = GetMonData(partyMon, MON_DATA_LEVEL, NULL); + u32 partyMonSpecies = GetMonData(partyMon, MON_DATA_SPECIES, NULL); + gBattleMovePower = gMovesInfo[move].power; + + if (IS_MOVE_PHYSICAL(move)) + userFinalAttack = GetMonData(partyMon, MON_DATA_ATK, NULL); + else + userFinalAttack = GetMonData(partyMon, MON_DATA_SPATK, NULL); + + targetFinalDefense = CalcDefenseStat(move, battlerAtk, battlerDef, moveType, isCrit, updateFlags, ABILITY_NONE, abilityDef, holdEffectDef, weather); + dmg = CalculateBaseDamage(gBattleMovePower, userFinalAttack, partyMonLevel, targetFinalDefense); + + DAMAGE_APPLY_MODIFIER(GetCriticalModifier(isCrit)); + + if (randomFactor) + { + dmg *= 100 - RandomUniform(RNG_DAMAGE_MODIFIER, 0, 15); + dmg /= 100; + } + + // Same type attack bonus + if (gSpeciesInfo[partyMonSpecies].types[0] == moveType || gSpeciesInfo[partyMonSpecies].types[1] == moveType) + DAMAGE_APPLY_MODIFIER(UQ_4_12(1.5)); + else + DAMAGE_APPLY_MODIFIER(UQ_4_12(1.0)); + DAMAGE_APPLY_MODIFIER(typeEffectivenessModifier); + + if (dmg == 0) + dmg = 1; + + gSpecialStatuses[battlerAtk].preventLifeOrbDamage = TRUE; + + return dmg; +} + +static inline s32 DoFutureSightAttackDamageCalc(u32 move, u32 battlerAtk, u32 battlerDef, u32 moveType, + bool32 isCrit, bool32 randomFactor, bool32 updateFlags, uq4_12_t typeEffectivenessModifier, u32 weather) +{ + u32 holdEffectDef, abilityDef; + + if (typeEffectivenessModifier == UQ_4_12(0.0)) + return 0; + + holdEffectDef = GetBattlerHoldEffect(battlerDef, TRUE); + abilityDef = GetBattlerAbility(battlerDef); + + return DoFutureSightAttackDamageCalcVars(move, battlerAtk, battlerDef, moveType, isCrit, randomFactor, + updateFlags, typeEffectivenessModifier, weather, holdEffectDef, abilityDef); +} + #undef DAMAGE_APPLY_MODIFIER static u32 GetWeather(void) @@ -9840,9 +10000,21 @@ static u32 GetWeather(void) s32 CalculateMoveDamage(u32 move, u32 battlerAtk, u32 battlerDef, u32 moveType, s32 fixedBasePower, bool32 isCrit, bool32 randomFactor, bool32 updateFlags) { - return DoMoveDamageCalc(move, battlerAtk, battlerDef, moveType, fixedBasePower, isCrit, randomFactor, + struct Pokemon *party = GetSideParty(GetBattlerSide(gBattlerAttacker)); + + if (gMovesInfo[move].effect == EFFECT_FUTURE_SIGHT + && (&party[gWishFutureKnock.futureSightPartyIndex[battlerDef]] != &party[gBattlerPartyIndexes[battlerAtk]]) ) + { + return DoFutureSightAttackDamageCalc(move, battlerAtk, battlerDef, moveType, isCrit, randomFactor, + updateFlags, CalcTypeEffectivenessMultiplier(move, moveType, battlerAtk, battlerDef, GetBattlerAbility(battlerDef), updateFlags), + GetWeather()); + } + else + { + return DoMoveDamageCalc(move, battlerAtk, battlerDef, moveType, fixedBasePower, isCrit, randomFactor, updateFlags, CalcTypeEffectivenessMultiplier(move, moveType, battlerAtk, battlerDef, GetBattlerAbility(battlerDef), updateFlags), GetWeather()); + } } // for AI so that typeEffectivenessModifier, weather, abilities and holdEffects are calculated only once @@ -9879,7 +10051,7 @@ static inline void MulByTypeEffectiveness(uq4_12_t *modifier, u32 move, u32 move if (moveType == TYPE_PSYCHIC && defType == TYPE_DARK && gStatuses3[battlerDef] & STATUS3_MIRACLE_EYED && mod == UQ_4_12(0.0)) mod = UQ_4_12(1.0); - if (gMovesInfo[move].effect == EFFECT_FREEZE_DRY && defType == TYPE_WATER) + if (gMovesInfo[move].effect == EFFECT_SUPER_EFFECTIVE_ON_ARG && defType == gMovesInfo[move].argument) mod = UQ_4_12(2.0); if (moveType == TYPE_GROUND && defType == TYPE_FLYING && IsBattlerGrounded(battlerDef) && mod == UQ_4_12(0.0)) mod = UQ_4_12(1.0); @@ -10382,7 +10554,8 @@ u16 GetBattleFormChangeTargetSpecies(u32 battler, u16 method) targetSpecies = formChanges[i].targetSpecies; } // Otherwise, just check for a match between the weather and the form change table. - else if (gBattleWeather & formChanges[i].param1 + // Added a check for whether the weather is in effect to prevent end-of-turn soft locks with Cloud Nine / Air Lock + else if (((gBattleWeather & formChanges[i].param1) && WEATHER_HAS_EFFECT) || (gBattleWeather == B_WEATHER_NONE && formChanges[i].param1 == B_WEATHER_NONE)) { targetSpecies = formChanges[i].targetSpecies; @@ -10507,6 +10680,9 @@ bool32 CanBattlerGetOrLoseItem(u32 battler, u16 itemId) return FALSE; else if (holdEffect == HOLD_EFFECT_Z_CRYSTAL) return FALSE; + else if (holdEffect == HOLD_EFFECT_BOOSTER_ENERGY + && (gSpeciesInfo[gBattleMons[gBattlerAttacker].species].isParadoxForm || gSpeciesInfo[gBattleMons[gBattlerTarget].species].isParadoxForm)) + return FALSE; else return TRUE; } @@ -10751,7 +10927,7 @@ void TryRestoreHeldItems(void) for (i = 0; i < PARTY_SIZE; i++) { - if (B_RESTORE_HELD_BATTLE_ITEMS == TRUE || gBattleStruct->itemLost[i].stolen) + if (B_RESTORE_HELD_BATTLE_ITEMS >= GEN_9 || gBattleStruct->itemLost[i].stolen) { lostItem = gBattleStruct->itemLost[i].originalItem; if (lostItem != ITEM_NONE && ItemId_GetPocket(lostItem) != POCKET_BERRIES) diff --git a/src/battle_z_move.c b/src/battle_z_move.c index b65f017f19..203185cfdc 100644 --- a/src/battle_z_move.c +++ b/src/battle_z_move.c @@ -47,7 +47,6 @@ // Function Declarations static void SpriteCB_ZMoveTrigger(struct Sprite *sprite); static u16 GetSignatureZMove(u16 move, u16 species, u16 item); -static u16 GetTypeBasedZMove(u16 move, u8 battler); static void ZMoveSelectionDisplayPpNumber(u32 battler); static void ZMoveSelectionDisplayPower(u16 move, u16 zMove); static void ShowZMoveTriggerSprite(u8 battleId); @@ -376,7 +375,7 @@ static u16 GetSignatureZMove(u16 move, u16 species, u16 item) return MOVE_NONE; } -static u16 GetTypeBasedZMove(u16 move, u8 battler) +u16 GetTypeBasedZMove(u16 move, u8 battler) { u8 moveType = gMovesInfo[move].type; diff --git a/src/berry_crush.c b/src/berry_crush.c index baf0e2fb65..2bb03e60a3 100755 --- a/src/berry_crush.c +++ b/src/berry_crush.c @@ -1373,7 +1373,6 @@ static void CreateBerrySprites(struct BerryCrushGame *game, struct BerryCrushGam u8 spriteId; s16 distance, var1; s16 *data; - s32 amplitude; s16 speed; u32 var2; @@ -1395,11 +1394,7 @@ static void CreateBerrySprites(struct BerryCrushGame *game, struct BerryCrushGam sYAccel = 32; sBitfield = 112; // Setting bits in MASK_TARGET_Y distance = gfx->playerCoords[i]->berryXDest - gfx->playerCoords[i]->berryXOffset; - amplitude = distance; - if (distance < 0) - amplitude += 3; - - sAmplitude = amplitude >> 2; + sAmplitude = distance / 4; distance *= 128; var2 = speed + 32; var2 = var2 / 2; diff --git a/src/data.c b/src/data.c index b2521427fd..ccb6b4c623 100644 --- a/src/data.c +++ b/src/data.c @@ -226,5 +226,10 @@ const union AnimCmd *const sAnims_Trainer[] ={ }; #include "data/trainer_parties.h" + +const struct Trainer gTrainers[] = +{ #include "data/trainers.h" +}; + #include "data/text/follower_messages.h" diff --git a/src/data/abilities.h b/src/data/abilities.h index fad9b9f039..8c26934d9a 100644 --- a/src/data/abilities.h +++ b/src/data/abilities.h @@ -1902,6 +1902,7 @@ const struct Ability gAbilitiesInfo[ABILITIES_COUNT] = .name = _("Gulp Missile"), .description = COMPOUND_STRING("If hit, spits prey from sea."), .aiRating = 3, + .cantBeCopied = TRUE, .cantBeSuppressed = TRUE, .cantBeOverwritten = TRUE, .failsOnImposter = TRUE, @@ -2265,6 +2266,7 @@ const struct Ability gAbilitiesInfo[ABILITIES_COUNT] = .cantBeCopied = TRUE, .cantBeSwapped = TRUE, .cantBeTraced = TRUE, + .cantBeSuppressed = TRUE, }, [ABILITY_ELECTROMORPHOSIS] = diff --git a/src/data/battle_frontier/battle_frontier_mons.h b/src/data/battle_frontier/battle_frontier_mons.h index 1147ab9080..7299e78a03 100644 --- a/src/data/battle_frontier/battle_frontier_mons.h +++ b/src/data/battle_frontier/battle_frontier_mons.h @@ -1,6177 +1,6177 @@ -const struct FacilityMon gBattleFrontierMons[NUM_FRONTIER_MONS] = +const struct TrainerMon gBattleFrontierMons[NUM_FRONTIER_MONS] = { [FRONTIER_MON_SUNKERN] = { .species = SPECIES_SUNKERN, .moves = {MOVE_MEGA_DRAIN, MOVE_HELPING_HAND, MOVE_SUNNY_DAY, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_AZURILL] = { .species = SPECIES_AZURILL, .moves = {MOVE_WATER_PULSE, MOVE_ATTRACT, MOVE_SING, MOVE_CHARM}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RASH }, [FRONTIER_MON_CATERPIE] = { .species = SPECIES_CATERPIE, .moves = {MOVE_TACKLE, MOVE_STRING_SHOT, MOVE_NONE, MOVE_NONE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_WEEDLE] = { .species = SPECIES_WEEDLE, .moves = {MOVE_POISON_STING, MOVE_STRING_SHOT, MOVE_NONE, MOVE_NONE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_WURMPLE] = { .species = SPECIES_WURMPLE, .moves = {MOVE_TACKLE, MOVE_STRING_SHOT, MOVE_POISON_STING, MOVE_NONE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_RALTS] = { .species = SPECIES_RALTS, .moves = {MOVE_CONFUSION, MOVE_IMPRISON, MOVE_DOUBLE_TEAM, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_TWISTED_SPOON, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MAGIKARP] = { .species = SPECIES_MAGIKARP, .moves = {MOVE_FLAIL, MOVE_NONE, MOVE_NONE, MOVE_NONE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_FEEBAS] = { .species = SPECIES_FEEBAS, .moves = {MOVE_FLAIL, MOVE_MIRROR_COAT, MOVE_NONE, MOVE_NONE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_LONELY }, [FRONTIER_MON_METAPOD] = { .species = SPECIES_METAPOD, .moves = {MOVE_HARDEN, MOVE_NONE, MOVE_NONE, MOVE_NONE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_BASHFUL }, [FRONTIER_MON_KAKUNA] = { .species = SPECIES_KAKUNA, .moves = {MOVE_HARDEN, MOVE_NONE, MOVE_NONE, MOVE_NONE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_BASHFUL }, [FRONTIER_MON_PICHU] = { .species = SPECIES_PICHU, .moves = {MOVE_SWEET_KISS, MOVE_THUNDER_WAVE, MOVE_ATTRACT, MOVE_SHOCK_WAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RASH }, [FRONTIER_MON_SILCOON] = { .species = SPECIES_SILCOON, .moves = {MOVE_HARDEN, MOVE_NONE, MOVE_NONE, MOVE_NONE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_BASHFUL }, [FRONTIER_MON_CASCOON] = { .species = SPECIES_CASCOON, .moves = {MOVE_HARDEN, MOVE_NONE, MOVE_NONE, MOVE_NONE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_BASHFUL }, [FRONTIER_MON_IGGLYBUFF] = { .species = SPECIES_IGGLYBUFF, .moves = {MOVE_SWEET_KISS, MOVE_SING, MOVE_ATTRACT, MOVE_SEISMIC_TOSS}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_WOOPER] = { .species = SPECIES_WOOPER, .moves = {MOVE_YAWN, MOVE_DIG, MOVE_WATER_PULSE, MOVE_RAIN_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_TYROGUE] = { .species = SPECIES_TYROGUE, .moves = {MOVE_MACH_PUNCH, MOVE_PROTECT, MOVE_DOUBLE_TEAM, MOVE_FACADE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_SENTRET] = { .species = SPECIES_SENTRET, .moves = {MOVE_QUICK_ATTACK, MOVE_FOLLOW_ME, MOVE_HELPING_HAND, MOVE_ASSIST}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_CLEFFA] = { .species = SPECIES_CLEFFA, .moves = {MOVE_SWEET_KISS, MOVE_SING, MOVE_ATTRACT, MOVE_METRONOME}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_SERIOUS }, [FRONTIER_MON_SEEDOT] = { .species = SPECIES_SEEDOT, .moves = {MOVE_BULLET_SEED, MOVE_BIDE, MOVE_DEFENSE_CURL, MOVE_ROLLOUT}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_LOTAD] = { .species = SPECIES_LOTAD, .moves = {MOVE_RAIN_DANCE, MOVE_WATER_PULSE, MOVE_SUNNY_DAY, MOVE_MEGA_DRAIN}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_POOCHYENA] = { .species = SPECIES_POOCHYENA, .moves = {MOVE_CRUNCH, MOVE_SWAGGER, MOVE_ROAR, MOVE_SAND_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_SHEDINJA] = { .species = SPECIES_SHEDINJA, .moves = {MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY, MOVE_SILVER_WIND, MOVE_GRUDGE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_NAIVE }, [FRONTIER_MON_MAKUHITA] = { .species = SPECIES_MAKUHITA, .moves = {MOVE_FAKE_OUT, MOVE_SEISMIC_TOSS, MOVE_DETECT, MOVE_WHIRLWIND}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_WHISMUR] = { .species = SPECIES_WHISMUR, .moves = {MOVE_UPROAR, MOVE_SWAGGER, MOVE_BODY_SLAM, MOVE_SMELLING_SALTS}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_ZIGZAGOON] = { .species = SPECIES_ZIGZAGOON, .moves = {MOVE_HEADBUTT, MOVE_PIN_MISSILE, MOVE_SWIFT, MOVE_SAND_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SILK_SCARF, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_TIMID }, [FRONTIER_MON_ZUBAT] = { .species = SPECIES_ZUBAT, .moves = {MOVE_POISON_FANG, MOVE_WHIRLWIND, MOVE_CONFUSE_RAY, MOVE_AERIAL_ACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_SASSY }, [FRONTIER_MON_TOGEPI] = { .species = SPECIES_TOGEPI, .moves = {MOVE_RETURN, MOVE_YAWN, MOVE_WISH, MOVE_SWEET_KISS}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_SPINARAK] = { .species = SPECIES_SPINARAK, .moves = {MOVE_SIGNAL_BEAM, MOVE_NIGHT_SHADE, MOVE_SPIDER_WEB, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LIECHI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_MARILL] = { .species = SPECIES_MARILL, .moves = {MOVE_WATER_PULSE, MOVE_RAIN_DANCE, MOVE_LIGHT_SCREEN, MOVE_RETURN}, - .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_MYSTIC_WATER, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_GENTLE }, [FRONTIER_MON_HOPPIP] = { .species = SPECIES_HOPPIP, .moves = {MOVE_MEGA_DRAIN, MOVE_LEECH_SEED, MOVE_SLEEP_POWDER, MOVE_STUN_SPORE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_LAX }, [FRONTIER_MON_SLUGMA] = { .species = SPECIES_SLUGMA, .moves = {MOVE_EMBER, MOVE_ROCK_SLIDE, MOVE_YAWN, MOVE_BODY_SLAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_SASSY }, [FRONTIER_MON_SWINUB] = { .species = SPECIES_SWINUB, .moves = {MOVE_ICY_WIND, MOVE_DIG, MOVE_ROCK_TOMB, MOVE_ENDURE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_GENTLE }, [FRONTIER_MON_SMEARGLE] = { .species = SPECIES_SMEARGLE, .moves = {MOVE_EXTREME_SPEED, MOVE_FAKE_OUT, MOVE_QUICK_ATTACK, MOVE_MACH_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_PIDGEY] = { .species = SPECIES_PIDGEY, .moves = {MOVE_GUST, MOVE_SAND_ATTACK, MOVE_WHIRLWIND, MOVE_QUICK_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHARP_BEAK, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SHARP_BEAK, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_LONELY }, [FRONTIER_MON_RATTATA] = { .species = SPECIES_RATTATA, .moves = {MOVE_HYPER_FANG, MOVE_PURSUIT, MOVE_QUICK_ATTACK, MOVE_SWAGGER}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_WYNAUT] = { .species = SPECIES_WYNAUT, .moves = {MOVE_ENCORE, MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_CHARM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_JOLLY }, [FRONTIER_MON_SKITTY] = { .species = SPECIES_SKITTY, .moves = {MOVE_SING, MOVE_ATTRACT, MOVE_CHARM, MOVE_DOUBLE_SLAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_SPEAROW] = { .species = SPECIES_SPEAROW, .moves = {MOVE_FURY_ATTACK, MOVE_PURSUIT, MOVE_MIRROR_MOVE, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_LIECHI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_HOOTHOOT] = { .species = SPECIES_HOOTHOOT, .moves = {MOVE_CONFUSION, MOVE_HYPNOSIS, MOVE_SUPERSONIC, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_DIGLETT] = { .species = SPECIES_DIGLETT, .moves = {MOVE_MAGNITUDE, MOVE_SLASH, MOVE_ROCK_TOMB, MOVE_SAND_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_NAIVE }, [FRONTIER_MON_LEDYBA] = { .species = SPECIES_LEDYBA, .moves = {MOVE_PSYBEAM, MOVE_AGILITY, MOVE_BATON_PASS, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_BASHFUL }, [FRONTIER_MON_NINCADA] = { .species = SPECIES_NINCADA, .moves = {MOVE_MUD_SLAP, MOVE_DIG, MOVE_TOXIC, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PECHA_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_CALM }, [FRONTIER_MON_SURSKIT] = { .species = SPECIES_SURSKIT, .moves = {MOVE_BUBBLE_BEAM, MOVE_RAIN_DANCE, MOVE_SWEET_SCENT, MOVE_QUICK_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_MYSTIC_WATER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_JIGGLYPUFF] = { .species = SPECIES_JIGGLYPUFF, .moves = {MOVE_SING, MOVE_WISH, MOVE_MIMIC, MOVE_DOUBLE_SLAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_RELAXED }, [FRONTIER_MON_TAILLOW] = { .species = SPECIES_TAILLOW, .moves = {MOVE_FLY, MOVE_QUICK_ATTACK, MOVE_ENDEAVOR, MOVE_FOCUS_ENERGY}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 170, 0, 0), .nature = NATURE_GENTLE }, [FRONTIER_MON_WINGULL] = { .species = SPECIES_WINGULL, .moves = {MOVE_WATER_PULSE, MOVE_FLY, MOVE_QUICK_ATTACK, MOVE_STEEL_WING}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_NIDORAN_M] = { .species = SPECIES_NIDORAN_M, .moves = {MOVE_DOUBLE_KICK, MOVE_POISON_STING, MOVE_DISABLE, MOVE_HELPING_HAND}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_NIDORAN_F] = { .species = SPECIES_NIDORAN_F, .moves = {MOVE_CRUNCH, MOVE_DOUBLE_KICK, MOVE_FLATTER, MOVE_HELPING_HAND}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_KIRLIA] = { .species = SPECIES_KIRLIA, .moves = {MOVE_CONFUSION, MOVE_WILL_O_WISP, MOVE_FUTURE_SIGHT, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MAREEP] = { .species = SPECIES_MAREEP, .moves = {MOVE_SHOCK_WAVE, MOVE_FLASH, MOVE_REFLECT, MOVE_COTTON_SPORE}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_MEDITITE] = { .species = SPECIES_MEDITITE, .moves = {MOVE_HIGH_JUMP_KICK, MOVE_MEDITATE, MOVE_SWAGGER, MOVE_PSYCH_UP}, - .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_MENTAL_HERB, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_NAUGHTY }, [FRONTIER_MON_SLAKOTH] = { .species = SPECIES_SLAKOTH, .moves = {MOVE_YAWN, MOVE_SCRATCH, MOVE_ENCORE, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_PARAS] = { .species = SPECIES_PARAS, .moves = {MOVE_SPORE, MOVE_LEECH_LIFE, MOVE_SLASH, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_EKANS] = { .species = SPECIES_EKANS, .moves = {MOVE_ACID, MOVE_DIG, MOVE_SCREECH, MOVE_TORMENT}, - .itemTableId = BATTLE_FRONTIER_ITEM_POISON_BARB, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_POISON_BARB, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_DITTO] = { .species = SPECIES_DITTO, .moves = {MOVE_TRANSFORM, MOVE_NONE, MOVE_NONE, MOVE_NONE}, - .itemTableId = BATTLE_FRONTIER_ITEM_METAL_POWDER, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_METAL_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_BARBOACH] = { .species = SPECIES_BARBOACH, .moves = {MOVE_MAGNITUDE, MOVE_WATER_PULSE, MOVE_SPARK, MOVE_FUTURE_SIGHT}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_BASHFUL }, [FRONTIER_MON_MEOWTH] = { .species = SPECIES_MEOWTH, .moves = {MOVE_SLASH, MOVE_BITE, MOVE_SCREECH, MOVE_FAKE_OUT}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_PINECO] = { .species = SPECIES_PINECO, .moves = {MOVE_SELF_DESTRUCT, MOVE_TAKE_DOWN, MOVE_REFLECT, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_TRAPINCH] = { .species = SPECIES_TRAPINCH, .moves = {MOVE_TOXIC, MOVE_DIG, MOVE_SANDSTORM, MOVE_SAND_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_SERIOUS }, [FRONTIER_MON_SPHEAL] = { .species = SPECIES_SPHEAL, .moves = {MOVE_ICE_BALL, MOVE_WATER_PULSE, MOVE_HAIL, MOVE_MUD_SLAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_NEVER_MELT_ICE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_HORSEA] = { .species = SPECIES_HORSEA, .moves = {MOVE_WATER_GUN, MOVE_AGILITY, MOVE_ICY_WIND, MOVE_TWISTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_SHROOMISH] = { .species = SPECIES_SHROOMISH, .moves = {MOVE_SPORE, MOVE_BULLET_SEED, MOVE_LEECH_SEED, MOVE_HEADBUTT}, - .itemTableId = BATTLE_FRONTIER_ITEM_MIRACLE_SEED, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_MIRACLE_SEED, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_SHUPPET] = { .species = SPECIES_SHUPPET, .moves = {MOVE_WILL_O_WISP, MOVE_NIGHT_SHADE, MOVE_GRUDGE, MOVE_KNOCK_OFF}, - .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_RAWST_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_RASH }, [FRONTIER_MON_DUSKULL] = { .species = SPECIES_DUSKULL, .moves = {MOVE_SKILL_SWAP, MOVE_NIGHT_SHADE, MOVE_DISABLE, MOVE_CONFUSE_RAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_ELECTRIKE] = { .species = SPECIES_ELECTRIKE, .moves = {MOVE_SPARK, MOVE_THUNDER_WAVE, MOVE_ROAR, MOVE_QUICK_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_VULPIX] = { .species = SPECIES_VULPIX, .moves = {MOVE_WILL_O_WISP, MOVE_CONFUSE_RAY, MOVE_FIRE_SPIN, MOVE_QUICK_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_RAWST_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_PIKACHU] = { .species = SPECIES_PIKACHU, .moves = {MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, MOVE_DOUBLE_TEAM, MOVE_QUICK_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_LIGHT_BALL, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_LIGHT_BALL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_SANDSHREW] = { .species = SPECIES_SANDSHREW, .moves = {MOVE_DIG, MOVE_ROCK_TOMB, MOVE_SANDSTORM, MOVE_SAND_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SOFT_SAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SOFT_SAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_POLIWAG] = { .species = SPECIES_POLIWAG, .moves = {MOVE_HYPNOSIS, MOVE_ICY_WIND, MOVE_WATER_GUN, MOVE_RAIN_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_MYSTIC_WATER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_BELLSPROUT] = { .species = SPECIES_BELLSPROUT, .moves = {MOVE_RAZOR_LEAF, MOVE_ACID, MOVE_STUN_SPORE, MOVE_WRAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_LAX }, [FRONTIER_MON_GEODUDE] = { .species = SPECIES_GEODUDE, .moves = {MOVE_MAGNITUDE, MOVE_ROCK_BLAST, MOVE_STRENGTH, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_BRAVE }, [FRONTIER_MON_DRATINI] = { .species = SPECIES_DRATINI, .moves = {MOVE_OUTRAGE, MOVE_THUNDER_WAVE, MOVE_SUPERSONIC, MOVE_WATER_PULSE}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_SNUBBULL] = { .species = SPECIES_SNUBBULL, .moves = {MOVE_BITE, MOVE_CHARM, MOVE_SWAGGER, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_REMORAID] = { .species = SPECIES_REMORAID, .moves = {MOVE_BUBBLE_BEAM, MOVE_AURORA_BEAM, MOVE_PSYBEAM, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_LARVITAR] = { .species = SPECIES_LARVITAR, .moves = {MOVE_THRASH, MOVE_ROCK_SLIDE, MOVE_DIG, MOVE_DRAGON_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_NAUGHTY }, [FRONTIER_MON_BALTOY] = { .species = SPECIES_BALTOY, .moves = {MOVE_PSYBEAM, MOVE_ANCIENT_POWER, MOVE_LIGHT_SCREEN, MOVE_MUD_SLAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_NAUGHTY }, [FRONTIER_MON_SNORUNT] = { .species = SPECIES_SNORUNT, .moves = {MOVE_ICY_WIND, MOVE_HEADBUTT, MOVE_LEER, MOVE_BITE}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_BRAVE }, [FRONTIER_MON_BAGON] = { .species = SPECIES_BAGON, .moves = {MOVE_DRAGON_BREATH, MOVE_HEADBUTT, MOVE_BRICK_BREAK, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LIECHI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_NAUGHTY }, [FRONTIER_MON_BELDUM] = { .species = SPECIES_BELDUM, .moves = {MOVE_TAKE_DOWN, MOVE_NONE, MOVE_NONE, MOVE_NONE}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHOICE_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_GULPIN] = { .species = SPECIES_GULPIN, .moves = {MOVE_TOXIC, MOVE_YAWN, MOVE_PAIN_SPLIT, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_SERIOUS }, [FRONTIER_MON_VENONAT] = { .species = SPECIES_VENONAT, .moves = {MOVE_PSYBEAM, MOVE_SUPERSONIC, MOVE_STUN_SPORE, MOVE_SKILL_SWAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_MANKEY] = { .species = SPECIES_MANKEY, .moves = {MOVE_KARATE_CHOP, MOVE_LOW_KICK, MOVE_SCREECH, MOVE_SWAGGER}, - .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_BELT, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BLACK_BELT, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_NAUGHTY }, [FRONTIER_MON_MACHOP] = { .species = SPECIES_MACHOP, .moves = {MOVE_SEISMIC_TOSS, MOVE_REVENGE, MOVE_ROCK_TOMB, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SHELLDER] = { .species = SPECIES_SHELLDER, .moves = {MOVE_ICICLE_SPEAR, MOVE_SUPERSONIC, MOVE_CLAMP, MOVE_WITHDRAW}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_SMOOCHUM] = { .species = SPECIES_SMOOCHUM, .moves = {MOVE_SWEET_KISS, MOVE_SING, MOVE_MUD_SLAP, MOVE_FAKE_OUT}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_NUMEL] = { .species = SPECIES_NUMEL, .moves = {MOVE_EMBER, MOVE_MAGNITUDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_CARVANHA] = { .species = SPECIES_CARVANHA, .moves = {MOVE_BITE, MOVE_SCREECH, MOVE_SCARY_FACE, MOVE_SWAGGER}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_CORPHISH] = { .species = SPECIES_CORPHISH, .moves = {MOVE_CRABHAMMER, MOVE_WATER_PULSE, MOVE_MUD_SLAP, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_MYSTIC_WATER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_BRAVE }, [FRONTIER_MON_CHARMANDER] = { .species = SPECIES_CHARMANDER, .moves = {MOVE_FIRE_SPIN, MOVE_METAL_CLAW, MOVE_SMOKESCREEN, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_CYNDAQUIL] = { .species = SPECIES_CYNDAQUIL, .moves = {MOVE_EMBER, MOVE_SWIFT, MOVE_QUICK_ATTACK, MOVE_SMOKESCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_ABRA] = { .species = SPECIES_ABRA, .moves = {MOVE_MIMIC, MOVE_METRONOME, MOVE_FLASH, MOVE_SEISMIC_TOSS}, - .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_TWISTED_SPOON, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_LONELY }, [FRONTIER_MON_DODUO] = { .species = SPECIES_DODUO, .moves = {MOVE_FURY_ATTACK, MOVE_UPROAR, MOVE_MUD_SLAP, MOVE_FEINT_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_LIECHI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_LONELY }, [FRONTIER_MON_GASTLY] = { .species = SPECIES_GASTLY, .moves = {MOVE_DREAM_EATER, MOVE_HYPNOSIS, MOVE_NIGHT_SHADE, MOVE_CONFUSE_RAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_LONELY }, [FRONTIER_MON_SWABLU] = { .species = SPECIES_SWABLU, .moves = {MOVE_TAKE_DOWN, MOVE_DREAM_EATER, MOVE_SING, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_MENTAL_HERB, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_LONELY }, [FRONTIER_MON_TREECKO] = { .species = SPECIES_TREECKO, .moves = {MOVE_BULLET_SEED, MOVE_AERIAL_ACE, MOVE_QUICK_ATTACK, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_LONELY }, [FRONTIER_MON_TORCHIC] = { .species = SPECIES_TORCHIC, .moves = {MOVE_FIRE_SPIN, MOVE_QUICK_ATTACK, MOVE_SAND_ATTACK, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_LONELY }, [FRONTIER_MON_MUDKIP] = { .species = SPECIES_MUDKIP, .moves = {MOVE_WHIRLPOOL, MOVE_ENDEAVOR, MOVE_MUD_SPORT, MOVE_MUD_SLAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_SQUIRTLE] = { .species = SPECIES_SQUIRTLE, .moves = {MOVE_WATER_PULSE, MOVE_BITE, MOVE_WITHDRAW, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_TOTODILE] = { .species = SPECIES_TOTODILE, .moves = {MOVE_SLASH, MOVE_WATER_PULSE, MOVE_SCREECH, MOVE_ICY_WIND}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_SLOWPOKE] = { .species = SPECIES_SLOWPOKE, .moves = {MOVE_CONFUSION, MOVE_DISABLE, MOVE_WATER_PULSE, MOVE_YAWN}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_BRAVE }, [FRONTIER_MON_BULBASAUR] = { .species = SPECIES_BULBASAUR, .moves = {MOVE_RAZOR_LEAF, MOVE_SWEET_SCENT, MOVE_SLEEP_POWDER, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_CHIKORITA] = { .species = SPECIES_CHIKORITA, .moves = {MOVE_SECRET_POWER, MOVE_BULLET_SEED, MOVE_MUD_SLAP, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_ODDISH] = { .species = SPECIES_ODDISH, .moves = {MOVE_ACID, MOVE_STUN_SPORE, MOVE_SWEET_SCENT, MOVE_MOONLIGHT}, - .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PECHA_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_PSYDUCK] = { .species = SPECIES_PSYDUCK, .moves = {MOVE_CONFUSION, MOVE_FURY_SWIPES, MOVE_AERIAL_ACE, MOVE_DISABLE}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HASTY }, [FRONTIER_MON_CUBONE] = { .species = SPECIES_CUBONE, .moves = {MOVE_BONE_CLUB, MOVE_HEADBUTT, MOVE_BRICK_BREAK, MOVE_AERIAL_ACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SOFT_SAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SOFT_SAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_GOLDEEN] = { .species = SPECIES_GOLDEEN, .moves = {MOVE_WATERFALL, MOVE_FURY_ATTACK, MOVE_AGILITY, MOVE_PSYBEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_NATU] = { .species = SPECIES_NATU, .moves = {MOVE_NIGHT_SHADE, MOVE_FUTURE_SIGHT, MOVE_CONFUSE_RAY, MOVE_FLASH}, - .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_TWISTED_SPOON, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_CLEFAIRY] = { .species = SPECIES_CLEFAIRY, .moves = {MOVE_FOLLOW_ME, MOVE_RETURN, MOVE_ENCORE, MOVE_SING}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_LONELY }, [FRONTIER_MON_MAGNEMITE] = { .species = SPECIES_MAGNEMITE, .moves = {MOVE_SHOCK_WAVE, MOVE_SUPERSONIC, MOVE_METAL_SOUND, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_RAWST_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_GENTLE }, [FRONTIER_MON_SEEL] = { .species = SPECIES_SEEL, .moves = {MOVE_AURORA_BEAM, MOVE_DIVE, MOVE_BODY_SLAM, MOVE_FAKE_OUT}, - .itemTableId = BATTLE_FRONTIER_ITEM_ASPEAR_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_ASPEAR_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_GRIMER] = { .species = SPECIES_GRIMER, .moves = {MOVE_SLUDGE, MOVE_ROCK_TOMB, MOVE_ACID_ARMOR, MOVE_MINIMIZE}, - .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_PECHA_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_QUIRKY }, [FRONTIER_MON_KRABBY] = { .species = SPECIES_KRABBY, .moves = {MOVE_CRABHAMMER, MOVE_MUD_SHOT, MOVE_FLAIL, MOVE_KNOCK_OFF}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_EXEGGCUTE] = { .species = SPECIES_EXEGGCUTE, .moves = {MOVE_CONFUSION, MOVE_ANCIENT_POWER, MOVE_LEECH_SEED, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_NAUGHTY }, [FRONTIER_MON_EEVEE] = { .species = SPECIES_EEVEE, .moves = {MOVE_CHARM, MOVE_ATTRACT, MOVE_FLAIL, MOVE_ENDURE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_DROWZEE] = { .species = SPECIES_DROWZEE, .moves = {MOVE_CONFUSION, MOVE_HEADBUTT, MOVE_DISABLE, MOVE_BARRIER}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_VOLTORB] = { .species = SPECIES_VOLTORB, .moves = {MOVE_SPARK, MOVE_SCREECH, MOVE_ROLLOUT, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_CHINCHOU] = { .species = SPECIES_CHINCHOU, .moves = {MOVE_SPARK, MOVE_DIVE, MOVE_CONFUSE_RAY, MOVE_TAKE_DOWN}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_TEDDIURSA] = { .species = SPECIES_TEDDIURSA, .moves = {MOVE_SECRET_POWER, MOVE_FAKE_TEARS, MOVE_FEINT_ATTACK, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_DELIBIRD] = { .species = SPECIES_DELIBIRD, .moves = {MOVE_PRESENT, MOVE_ICE_BALL, MOVE_AERIAL_ACE, MOVE_HAIL}, - .itemTableId = BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_NEVER_MELT_ICE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_HOUNDOUR] = { .species = SPECIES_HOUNDOUR, .moves = {MOVE_CRUNCH, MOVE_EMBER, MOVE_ROAR, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHARCOAL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHARCOAL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_PHANPY] = { .species = SPECIES_PHANPY, .moves = {MOVE_ROLLOUT, MOVE_DEFENSE_CURL, MOVE_ROCK_TOMB, MOVE_SANDSTORM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_NAUGHTY }, [FRONTIER_MON_SPOINK] = { .species = SPECIES_SPOINK, .moves = {MOVE_PSYWAVE, MOVE_BOUNCE, MOVE_MAGIC_COAT, MOVE_CONFUSE_RAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_ARON] = { .species = SPECIES_ARON, .moves = {MOVE_METAL_CLAW, MOVE_AERIAL_ACE, MOVE_METAL_SOUND, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_LUVDISC] = { .species = SPECIES_LUVDISC, .moves = {MOVE_SWEET_KISS, MOVE_ATTRACT, MOVE_DIVE, MOVE_RAIN_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_TENTACOOL] = { .species = SPECIES_TENTACOOL, .moves = {MOVE_BUBBLE_BEAM, MOVE_ACID, MOVE_BARRIER, MOVE_WRAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PECHA_BERRY, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_CACNEA] = { .species = SPECIES_CACNEA, .moves = {MOVE_NEEDLE_ARM, MOVE_FEINT_ATTACK, MOVE_COTTON_SPORE, MOVE_SAND_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_UNOWN] = { .species = SPECIES_UNOWN, .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_KOFFING] = { .species = SPECIES_KOFFING, .moves = {MOVE_SLUDGE, MOVE_SMOKESCREEN, MOVE_TORMENT, MOVE_HAZE}, - .itemTableId = BATTLE_FRONTIER_ITEM_POISON_BARB, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_POISON_BARB, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_STARYU] = { .species = SPECIES_STARYU, .moves = {MOVE_BUBBLE_BEAM, MOVE_MINIMIZE, MOVE_SWIFT, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_SKIPLOOM] = { .species = SPECIES_SKIPLOOM, .moves = {MOVE_MEGA_DRAIN, MOVE_CONFUSION, MOVE_COTTON_SPORE, MOVE_SYNTHESIS}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_NUZLEAF] = { .species = SPECIES_NUZLEAF, .moves = {MOVE_EXTRASENSORY, MOVE_FAKE_OUT, MOVE_RAZOR_WIND, MOVE_FEINT_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_LOMBRE] = { .species = SPECIES_LOMBRE, .moves = {MOVE_WATER_PULSE, MOVE_FAKE_OUT, MOVE_BRICK_BREAK, MOVE_ABSORB}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_VIBRAVA] = { .species = SPECIES_VIBRAVA, .moves = {MOVE_DRAGON_BREATH, MOVE_DIG, MOVE_SCREECH, MOVE_ROCK_TOMB}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_RHYHORN] = { .species = SPECIES_RHYHORN, .moves = {MOVE_ROCK_BLAST, MOVE_DIG, MOVE_SCARY_FACE, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_CLAMPERL] = { .species = SPECIES_CLAMPERL, .moves = {MOVE_DIVE, MOVE_TOXIC, MOVE_IRON_DEFENSE, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_DEEP_SEA_SCALE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_DEEP_SEA_SCALE, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_DOCILE }, [FRONTIER_MON_PIDGEOTTO] = { .species = SPECIES_PIDGEOTTO, .moves = {MOVE_AERIAL_ACE, MOVE_QUICK_ATTACK, MOVE_FEATHER_DANCE, MOVE_SAND_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_GROWLITHE] = { .species = SPECIES_GROWLITHE, .moves = {MOVE_FLAME_WHEEL, MOVE_BITE, MOVE_ROAR, MOVE_AGILITY}, - .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_RAWST_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_FARFETCHD] = { .species = SPECIES_FARFETCHD, .moves = {MOVE_SLASH, MOVE_KNOCK_OFF, MOVE_SWORDS_DANCE, MOVE_AGILITY}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEEK, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEEK, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_RELAXED }, [FRONTIER_MON_OMANYTE] = { .species = SPECIES_OMANYTE, .moves = {MOVE_MUD_SHOT, MOVE_WATER_GUN, MOVE_ANCIENT_POWER, MOVE_TICKLE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_KABUTO] = { .species = SPECIES_KABUTO, .moves = {MOVE_MEGA_DRAIN, MOVE_ANCIENT_POWER, MOVE_SAND_ATTACK, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_LILEEP] = { .species = SPECIES_LILEEP, .moves = {MOVE_ANCIENT_POWER, MOVE_ACID, MOVE_INGRAIN, MOVE_CONFUSE_RAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_ANORITH] = { .species = SPECIES_ANORITH, .moves = {MOVE_METAL_CLAW, MOVE_FURY_CUTTER, MOVE_ANCIENT_POWER, MOVE_WATER_GUN}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_AIPOM] = { .species = SPECIES_AIPOM, .moves = {MOVE_FURY_SWIPES, MOVE_SAND_ATTACK, MOVE_BATON_PASS, MOVE_AGILITY}, - .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SILK_SCARF, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_ELEKID] = { .species = SPECIES_ELEKID, .moves = {MOVE_THUNDER_PUNCH, MOVE_QUICK_ATTACK, MOVE_SWIFT, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_NAIVE }, [FRONTIER_MON_LOUDRED] = { .species = SPECIES_LOUDRED, .moves = {MOVE_STOMP, MOVE_HOWL, MOVE_ASTONISH, MOVE_SUPERSONIC}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_SPINDA] = { .species = SPECIES_SPINDA, .moves = {MOVE_DIZZY_PUNCH, MOVE_TEETER_DANCE, MOVE_PSYBEAM, MOVE_FEINT_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_NIDORINA] = { .species = SPECIES_NIDORINA, .moves = {MOVE_DOUBLE_KICK, MOVE_BITE, MOVE_AERIAL_ACE, MOVE_FLATTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_NIDORINO] = { .species = SPECIES_NIDORINO, .moves = {MOVE_DOUBLE_KICK, MOVE_WATER_PULSE, MOVE_MUD_SLAP, MOVE_FLATTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_FLAAFFY] = { .species = SPECIES_FLAAFFY, .moves = {MOVE_SHOCK_WAVE, MOVE_THUNDER_WAVE, MOVE_COTTON_SPORE, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_MAGNET, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_MAGNET, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MILD }, [FRONTIER_MON_MAGBY] = { .species = SPECIES_MAGBY, .moves = {MOVE_FIRE_PUNCH, MOVE_SMOKESCREEN, MOVE_CONFUSE_RAY, MOVE_SMOG}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_NOSEPASS] = { .species = SPECIES_NOSEPASS, .moves = {MOVE_ROCK_SLIDE, MOVE_SHOCK_WAVE, MOVE_THUNDER_WAVE, MOVE_SANDSTORM}, - .itemTableId = BATTLE_FRONTIER_ITEM_HARD_STONE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_HARD_STONE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_SASSY }, [FRONTIER_MON_CORSOLA] = { .species = SPECIES_CORSOLA, .moves = {MOVE_BUBBLE_BEAM, MOVE_MIRROR_COAT, MOVE_ATTRACT, MOVE_ANCIENT_POWER}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_IMPISH }, [FRONTIER_MON_MAWILE] = { .species = SPECIES_MAWILE, .moves = {MOVE_CRUNCH, MOVE_FAKE_TEARS, MOVE_IRON_DEFENSE, MOVE_BATON_PASS}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_BUTTERFREE] = { .species = SPECIES_BUTTERFREE, .moves = {MOVE_SILVER_WIND, MOVE_PSYBEAM, MOVE_TOXIC, MOVE_WHIRLWIND}, - .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PECHA_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_BEEDRILL] = { .species = SPECIES_BEEDRILL, .moves = {MOVE_TWINEEDLE, MOVE_PURSUIT, MOVE_ENDEAVOR, MOVE_AGILITY}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_NAUGHTY }, [FRONTIER_MON_POLIWHIRL] = { .species = SPECIES_POLIWHIRL, .moves = {MOVE_WATER_PULSE, MOVE_DOUBLE_SLAP, MOVE_ICY_WIND, MOVE_RAIN_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_ONIX] = { .species = SPECIES_ONIX, .moves = {MOVE_ROCK_SLIDE, MOVE_BIND, MOVE_DRAGON_BREATH, MOVE_SANDSTORM}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_HARDY }, [FRONTIER_MON_BEAUTIFLY] = { .species = SPECIES_BEAUTIFLY, .moves = {MOVE_SILVER_WIND, MOVE_MEGA_DRAIN, MOVE_ATTRACT, MOVE_WHIRLWIND}, - .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_MENTAL_HERB, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_DUSTOX] = { .species = SPECIES_DUSTOX, .moves = {MOVE_SILVER_WIND, MOVE_TOXIC, MOVE_PSYBEAM, MOVE_WHIRLWIND}, - .itemTableId = BATTLE_FRONTIER_ITEM_SILVER_POWDER, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_SILVER_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_LEDIAN] = { .species = SPECIES_LEDIAN, .moves = {MOVE_COMET_PUNCH, MOVE_BATON_PASS, MOVE_SWORDS_DANCE, MOVE_AGILITY}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_BASHFUL }, [FRONTIER_MON_ARIADOS] = { .species = SPECIES_ARIADOS, .moves = {MOVE_SIGNAL_BEAM, MOVE_SPIDER_WEB, MOVE_NIGHT_SHADE, MOVE_TOXIC}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_SERIOUS }, [FRONTIER_MON_YANMA] = { .species = SPECIES_YANMA, .moves = {MOVE_SIGNAL_BEAM, MOVE_AERIAL_ACE, MOVE_DOUBLE_TEAM, MOVE_DETECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_RELAXED }, [FRONTIER_MON_DELCATTY_1] = { .species = SPECIES_DELCATTY, .moves = {MOVE_SECRET_POWER, MOVE_FEINT_ATTACK, MOVE_DOUBLE_TEAM, MOVE_HEAL_BELL}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_LONELY }, [FRONTIER_MON_SABLEYE_1] = { .species = SPECIES_SABLEYE, .moves = {MOVE_FEINT_ATTACK, MOVE_CONFUSE_RAY, MOVE_KNOCK_OFF, MOVE_FAKE_OUT}, - .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_GLASSES, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BLACK_GLASSES, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_LONELY }, [FRONTIER_MON_LICKITUNG_1] = { .species = SPECIES_LICKITUNG, .moves = {MOVE_SLAM, MOVE_BRICK_BREAK, MOVE_LICK, MOVE_MUD_SLAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_WEEPINBELL_1] = { .species = SPECIES_WEEPINBELL, .moves = {MOVE_RAZOR_LEAF, MOVE_ACID, MOVE_WRAP, MOVE_SWEET_SCENT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_GRAVELER_1] = { .species = SPECIES_GRAVELER, .moves = {MOVE_MAGNITUDE, MOVE_ROCK_THROW, MOVE_DEFENSE_CURL, MOVE_BRICK_BREAK}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_GLOOM_1] = { .species = SPECIES_GLOOM, .moves = {MOVE_PETAL_DANCE, MOVE_ACID, MOVE_STUN_SPORE, MOVE_MOONLIGHT}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_PORYGON_1] = { .species = SPECIES_PORYGON, .moves = {MOVE_PSYBEAM, MOVE_ICY_WIND, MOVE_RECYCLE, MOVE_AGILITY}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_KADABRA_1] = { .species = SPECIES_KADABRA, .moves = {MOVE_CONFUSION, MOVE_ROLE_PLAY, MOVE_FUTURE_SIGHT, MOVE_DISABLE}, - .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_TWISTED_SPOON, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_IMPISH }, [FRONTIER_MON_WAILMER_1] = { .species = SPECIES_WAILMER, .moves = {MOVE_WHIRLPOOL, MOVE_ROAR, MOVE_DEFENSE_CURL, MOVE_ROLLOUT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_DOCILE }, [FRONTIER_MON_ROSELIA_1] = { .species = SPECIES_ROSELIA, .moves = {MOVE_MAGICAL_LEAF, MOVE_TOXIC, MOVE_GRASS_WHISTLE, MOVE_COTTON_SPORE}, - .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_PECHA_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_VOLBEAT_1] = { .species = SPECIES_VOLBEAT, .moves = {MOVE_SILVER_WIND, MOVE_CONFUSE_RAY, MOVE_QUICK_ATTACK, MOVE_HELPING_HAND}, - .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LIECHI_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_ILLUMISE_1] = { .species = SPECIES_ILLUMISE, .moves = {MOVE_SILVER_WIND, MOVE_WISH, MOVE_QUICK_ATTACK, MOVE_HELPING_HAND}, - .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LIECHI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_IVYSAUR_1] = { .species = SPECIES_IVYSAUR, .moves = {MOVE_PETAL_DANCE, MOVE_GROWTH, MOVE_SWEET_SCENT, MOVE_FURY_CUTTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_GENTLE }, [FRONTIER_MON_CHARMELEON_1] = { .species = SPECIES_CHARMELEON, .moves = {MOVE_SLASH, MOVE_FIRE_SPIN, MOVE_SWORDS_DANCE, MOVE_AERIAL_ACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_NAUGHTY }, [FRONTIER_MON_WARTORTLE_1] = { .species = SPECIES_WARTORTLE, .moves = {MOVE_WATER_PULSE, MOVE_BITE, MOVE_MUD_SLAP, MOVE_YAWN}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_PARASECT_1] = { .species = SPECIES_PARASECT, .moves = {MOVE_SLASH, MOVE_PSYBEAM, MOVE_STUN_SPORE, MOVE_FLASH}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_RASH }, [FRONTIER_MON_MACHOKE_1] = { .species = SPECIES_MACHOKE, .moves = {MOVE_LOW_KICK, MOVE_ROCK_TOMB, MOVE_FORESIGHT, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_HAUNTER_1] = { .species = SPECIES_HAUNTER, .moves = {MOVE_SHADOW_PUNCH, MOVE_CONFUSE_RAY, MOVE_SPITE, MOVE_GRUDGE}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_RASH }, [FRONTIER_MON_BAYLEEF_1] = { .species = SPECIES_BAYLEEF, .moves = {MOVE_RAZOR_LEAF, MOVE_TOXIC, MOVE_SAFEGUARD, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_QUILAVA_1] = { .species = SPECIES_QUILAVA, .moves = {MOVE_FLAME_WHEEL, MOVE_FURY_SWIPES, MOVE_SWIFT, MOVE_SMOKESCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_CROCONAW_1] = { .species = SPECIES_CROCONAW, .moves = {MOVE_SLASH, MOVE_WATER_PULSE, MOVE_BITE, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_TOGETIC_1] = { .species = SPECIES_TOGETIC, .moves = {MOVE_AERIAL_ACE, MOVE_MAGICAL_LEAF, MOVE_WISH, MOVE_FOLLOW_ME}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_MURKROW_1] = { .species = SPECIES_MURKROW, .moves = {MOVE_FEINT_ATTACK, MOVE_FLY, MOVE_TORMENT, MOVE_TAUNT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_QUIRKY }, [FRONTIER_MON_WOBBUFFET_1] = { .species = SPECIES_WOBBUFFET, .moves = {MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_CHARM, MOVE_SAFEGUARD}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_CAREFUL }, [FRONTIER_MON_PLUSLE_1] = { .species = SPECIES_PLUSLE, .moves = {MOVE_SPARK, MOVE_FAKE_TEARS, MOVE_QUICK_ATTACK, MOVE_HELPING_HAND}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MINUN_1] = { .species = SPECIES_MINUN, .moves = {MOVE_SPARK, MOVE_CHARM, MOVE_ENCORE, MOVE_HELPING_HAND}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_GROVYLE_1] = { .species = SPECIES_GROVYLE, .moves = {MOVE_FURY_CUTTER, MOVE_ENDEAVOR, MOVE_BRICK_BREAK, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_COMBUSKEN_1] = { .species = SPECIES_COMBUSKEN, .moves = {MOVE_EMBER, MOVE_DOUBLE_KICK, MOVE_QUICK_ATTACK, MOVE_SAND_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MARSHTOMP_1] = { .species = SPECIES_MARSHTOMP, .moves = {MOVE_MUD_SHOT, MOVE_WATER_GUN, MOVE_ROCK_TOMB, MOVE_MUD_SLAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_PONYTA_1] = { .species = SPECIES_PONYTA, .moves = {MOVE_FIRE_SPIN, MOVE_BOUNCE, MOVE_QUICK_ATTACK, MOVE_TAIL_WHIP}, - .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_RAWST_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_AZUMARILL_1] = { .species = SPECIES_AZUMARILL, .moves = {MOVE_BUBBLE_BEAM, MOVE_FACADE, MOVE_DIG, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_DOCILE }, [FRONTIER_MON_SUDOWOODO_1] = { .species = SPECIES_SUDOWOODO, .moves = {MOVE_ROCK_SLIDE, MOVE_FEINT_ATTACK, MOVE_SANDSTORM, MOVE_BLOCK}, - .itemTableId = BATTLE_FRONTIER_ITEM_HARD_STONE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_HARD_STONE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_HARDY }, [FRONTIER_MON_MAGCARGO_1] = { .species = SPECIES_MAGCARGO, .moves = {MOVE_ROCK_SLIDE, MOVE_EMBER, MOVE_ACID_ARMOR, MOVE_SANDSTORM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_GENTLE }, [FRONTIER_MON_PUPITAR_1] = { .species = SPECIES_PUPITAR, .moves = {MOVE_DIG, MOVE_BITE, MOVE_SCARY_FACE, MOVE_SANDSTORM}, - .itemTableId = BATTLE_FRONTIER_ITEM_SOFT_SAND, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_SOFT_SAND, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_SEALEO_1] = { .species = SPECIES_SEALEO, .moves = {MOVE_ICE_BALL, MOVE_HAIL, MOVE_SNORE, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_QUIRKY }, [FRONTIER_MON_RATICATE_1] = { .species = SPECIES_RATICATE, .moves = {MOVE_ENDEAVOR, MOVE_PURSUIT, MOVE_SCARY_FACE, MOVE_QUICK_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SILK_SCARF, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 170, 0, 0), .nature = NATURE_NAIVE }, [FRONTIER_MON_MASQUERAIN_1] = { .species = SPECIES_MASQUERAIN, .moves = {MOVE_SILVER_WIND, MOVE_AERIAL_ACE, MOVE_ICY_WIND, MOVE_STUN_SPORE}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_FURRET_1] = { .species = SPECIES_FURRET, .moves = {MOVE_SLAM, MOVE_PROTECT, MOVE_HELPING_HAND, MOVE_FOLLOW_ME}, - .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LIECHI_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_SERIOUS }, [FRONTIER_MON_DUNSPARCE_1] = { .species = SPECIES_DUNSPARCE, .moves = {MOVE_HEADBUTT, MOVE_GLARE, MOVE_DEFENSE_CURL, MOVE_ROLLOUT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_DRAGONAIR_1] = { .species = SPECIES_DRAGONAIR, .moves = {MOVE_DRAGON_BREATH, MOVE_LEER, MOVE_WRAP, MOVE_SAFEGUARD}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_DOCILE }, [FRONTIER_MON_MIGHTYENA_1] = { .species = SPECIES_MIGHTYENA, .moves = {MOVE_BITE, MOVE_POISON_FANG, MOVE_TAUNT, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_MENTAL_HERB, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_TIMID }, [FRONTIER_MON_LINOONE_1] = { .species = SPECIES_LINOONE, .moves = {MOVE_SECRET_POWER, MOVE_SAND_ATTACK, MOVE_COVET, MOVE_TICKLE}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_CASTFORM_1] = { .species = SPECIES_CASTFORM_NORMAL, .moves = {MOVE_EMBER, MOVE_WATER_PULSE, MOVE_SHOCK_WAVE, MOVE_ICY_WIND}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_HASTY }, [FRONTIER_MON_SHELGON_1] = { .species = SPECIES_SHELGON, .moves = {MOVE_HEADBUTT, MOVE_DRAGON_BREATH, MOVE_PROTECT, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 0, 170), .nature = NATURE_HARDY }, [FRONTIER_MON_METANG_1] = { .species = SPECIES_METANG, .moves = {MOVE_METAL_CLAW, MOVE_CONFUSION, MOVE_PURSUIT, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_HARDY }, [FRONTIER_MON_WIGGLYTUFF_1] = { .species = SPECIES_WIGGLYTUFF, .moves = {MOVE_SING, MOVE_DISABLE, MOVE_WISH, MOVE_SECRET_POWER}, - .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_SILK_SCARF, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_RELAXED }, [FRONTIER_MON_SUNFLORA_1] = { .species = SPECIES_SUNFLORA, .moves = {MOVE_PETAL_DANCE, MOVE_INGRAIN, MOVE_LEECH_SEED, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_CHIMECHO_1] = { .species = SPECIES_CHIMECHO, .moves = {MOVE_PSYWAVE, MOVE_TAKE_DOWN, MOVE_HEAL_BELL, MOVE_SAFEGUARD}, - .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_TWISTED_SPOON, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_SASSY }, [FRONTIER_MON_GLIGAR_1] = { .species = SPECIES_GLIGAR, .moves = {MOVE_METAL_CLAW, MOVE_DIG, MOVE_AERIAL_ACE, MOVE_QUICK_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_HASTY }, [FRONTIER_MON_QWILFISH_1] = { .species = SPECIES_QWILFISH, .moves = {MOVE_BUBBLE_BEAM, MOVE_PIN_MISSILE, MOVE_SPIKES, MOVE_MINIMIZE}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 0, 252, 252), .nature = NATURE_IMPISH }, [FRONTIER_MON_SNEASEL_1] = { .species = SPECIES_SNEASEL, .moves = {MOVE_FEINT_ATTACK, MOVE_FAKE_OUT, MOVE_ICY_WIND, MOVE_QUICK_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_RELAXED }, [FRONTIER_MON_PELIPPER_1] = { .species = SPECIES_PELIPPER, .moves = {MOVE_WATER_PULSE, MOVE_AERIAL_ACE, MOVE_STOCKPILE, MOVE_SWALLOW}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_QUIET }, [FRONTIER_MON_SWELLOW_1] = { .species = SPECIES_SWELLOW, .moves = {MOVE_FLY, MOVE_ENDEAVOR, MOVE_FACADE, MOVE_QUICK_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_LAIRON_1] = { .species = SPECIES_LAIRON, .moves = {MOVE_METAL_CLAW, MOVE_ROCK_TOMB, MOVE_IRON_DEFENSE, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_METAL_COAT, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_METAL_COAT, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_SASSY }, [FRONTIER_MON_TANGELA_1] = { .species = SPECIES_TANGELA, .moves = {MOVE_MEGA_DRAIN, MOVE_SLAM, MOVE_TOXIC, MOVE_BIND}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_HARDY }, [FRONTIER_MON_ARBOK_1] = { .species = SPECIES_ARBOK, .moves = {MOVE_POISON_FANG, MOVE_DIG, MOVE_BITE, MOVE_GLARE}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_PERSIAN_1] = { .species = SPECIES_PERSIAN, .moves = {MOVE_FAKE_OUT, MOVE_SLASH, MOVE_TORMENT, MOVE_SWAGGER}, - .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SILK_SCARF, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_QUIRKY }, [FRONTIER_MON_SEADRA_1] = { .species = SPECIES_SEADRA, .moves = {MOVE_AURORA_BEAM, MOVE_SMOKESCREEN, MOVE_WATER_GUN, MOVE_RAIN_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_MYSTIC_WATER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_SASSY }, [FRONTIER_MON_KECLEON_1] = { .species = SPECIES_KECLEON, .moves = {MOVE_SECRET_POWER, MOVE_PSYBEAM, MOVE_MAGIC_COAT, MOVE_SEISMIC_TOSS}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(170, 170, 170, 0, 0, 0), .nature = NATURE_NAIVE }, [FRONTIER_MON_VIGOROTH_1] = { .species = SPECIES_VIGOROTH, .moves = {MOVE_SLASH, MOVE_COUNTER, MOVE_ENCORE, MOVE_UPROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_LONELY }, [FRONTIER_MON_LUNATONE_1] = { .species = SPECIES_LUNATONE, .moves = {MOVE_CONFUSION, MOVE_COSMIC_POWER, MOVE_LIGHT_SCREEN, MOVE_SANDSTORM}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_SOLROCK_1] = { .species = SPECIES_SOLROCK, .moves = {MOVE_CONFUSION, MOVE_FIRE_SPIN, MOVE_LIGHT_SCREEN, MOVE_SANDSTORM}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_QUIET }, [FRONTIER_MON_NOCTOWL_1] = { .species = SPECIES_NOCTOWL, .moves = {MOVE_CONFUSION, MOVE_AERIAL_ACE, MOVE_FEINT_ATTACK, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_SANDSLASH_1] = { .species = SPECIES_SANDSLASH, .moves = {MOVE_CRUSH_CLAW, MOVE_ROCK_SLIDE, MOVE_SWIFT, MOVE_SANDSTORM}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_VENOMOTH_1] = { .species = SPECIES_VENOMOTH, .moves = {MOVE_SILVER_WIND, MOVE_PSYBEAM, MOVE_SLEEP_POWDER, MOVE_SKILL_SWAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_CHANSEY_1] = { .species = SPECIES_CHANSEY, .moves = {MOVE_METRONOME, MOVE_REFRESH, MOVE_DEFENSE_CURL, MOVE_MINIMIZE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_RELAXED }, [FRONTIER_MON_SEAKING_1] = { .species = SPECIES_SEAKING, .moves = {MOVE_WATER_PULSE, MOVE_PSYBEAM, MOVE_SWIFT, MOVE_AGILITY}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_DOCILE }, [FRONTIER_MON_JUMPLUFF_1] = { .species = SPECIES_JUMPLUFF, .moves = {MOVE_AERIAL_ACE, MOVE_SWAGGER, MOVE_PSYCH_UP, MOVE_SYNTHESIS}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_PILOSWINE_1] = { .species = SPECIES_PILOSWINE, .moves = {MOVE_DIG, MOVE_ANCIENT_POWER, MOVE_HAIL, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_SOFT_SAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SOFT_SAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_GOLBAT_1] = { .species = SPECIES_GOLBAT, .moves = {MOVE_AIR_CUTTER, MOVE_CONFUSE_RAY, MOVE_TOXIC, MOVE_STEEL_WING}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_PRIMEAPE_1] = { .species = SPECIES_PRIMEAPE, .moves = {MOVE_KARATE_CHOP, MOVE_COUNTER, MOVE_SWAGGER, MOVE_SCREECH}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_QUIRKY }, [FRONTIER_MON_HITMONLEE_1] = { .species = SPECIES_HITMONLEE, .moves = {MOVE_ROLLING_KICK, MOVE_BRICK_BREAK, MOVE_FOCUS_ENERGY, MOVE_FACADE}, - .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_BELT, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BLACK_BELT, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_HITMONCHAN_1] = { .species = SPECIES_HITMONCHAN, .moves = {MOVE_MACH_PUNCH, MOVE_SKY_UPPERCUT, MOVE_DETECT, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_GIRAFARIG_1] = { .species = SPECIES_GIRAFARIG, .moves = {MOVE_PSYBEAM, MOVE_STOMP, MOVE_WISH, MOVE_SKILL_SWAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_HITMONTOP_1] = { .species = SPECIES_HITMONTOP, .moves = {MOVE_TRIPLE_KICK, MOVE_DIG, MOVE_MACH_PUNCH, MOVE_QUICK_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LIECHI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_BANETTE_1] = { .species = SPECIES_BANETTE, .moves = {MOVE_NIGHT_SHADE, MOVE_WILL_O_WISP, MOVE_SPITE, MOVE_KNOCK_OFF}, - .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_RAWST_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_SASSY }, [FRONTIER_MON_NINJASK_1] = { .species = SPECIES_NINJASK, .moves = {MOVE_BATON_PASS, MOVE_SWORDS_DANCE, MOVE_ENDURE, MOVE_DIG}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_MILD }, [FRONTIER_MON_SEVIPER_1] = { .species = SPECIES_SEVIPER, .moves = {MOVE_POISON_TAIL, MOVE_BITE, MOVE_GLARE, MOVE_SCREECH}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_ZANGOOSE_1] = { .species = SPECIES_ZANGOOSE, .moves = {MOVE_SLASH, MOVE_DOUBLE_KICK, MOVE_ROAR, MOVE_QUICK_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_CAMERUPT_1] = { .species = SPECIES_CAMERUPT, .moves = {MOVE_MAGNITUDE, MOVE_PROTECT, MOVE_SANDSTORM, MOVE_ROCK_SLIDE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_SHARPEDO_1] = { .species = SPECIES_SHARPEDO, .moves = {MOVE_SLASH, MOVE_BITE, MOVE_WATER_PULSE, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_TROPIUS_1] = { .species = SPECIES_TROPIUS, .moves = {MOVE_MAGICAL_LEAF, MOVE_WHIRLWIND, MOVE_AERIAL_ACE, MOVE_STEEL_WING}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_MAGNETON_1] = { .species = SPECIES_MAGNETON, .moves = {MOVE_SHOCK_WAVE, MOVE_SONIC_BOOM, MOVE_THUNDER_WAVE, MOVE_SUPERSONIC}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_LONELY }, [FRONTIER_MON_MANTINE_1] = { .species = SPECIES_MANTINE, .moves = {MOVE_BUBBLE_BEAM, MOVE_AERIAL_ACE, MOVE_RAIN_DANCE, MOVE_ICY_WIND}, - .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_MYSTIC_WATER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_DOCILE }, [FRONTIER_MON_STANTLER_1] = { .species = SPECIES_STANTLER, .moves = {MOVE_EXTRASENSORY, MOVE_CONFUSE_RAY, MOVE_STOMP, MOVE_SAND_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_TWISTED_SPOON, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_GENTLE }, [FRONTIER_MON_ABSOL_1] = { .species = SPECIES_ABSOL, .moves = {MOVE_BITE, MOVE_RAZOR_WIND, MOVE_FUTURE_SIGHT, MOVE_QUICK_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SWALOT_1] = { .species = SPECIES_SWALOT, .moves = {MOVE_STOCKPILE, MOVE_SWALLOW, MOVE_SPIT_UP, MOVE_SLUDGE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_QUIRKY }, [FRONTIER_MON_CRAWDAUNT_1] = { .species = SPECIES_CRAWDAUNT, .moves = {MOVE_BUBBLE_BEAM, MOVE_VISE_GRIP, MOVE_KNOCK_OFF, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_PIDGEOT_1] = { .species = SPECIES_PIDGEOT, .moves = {MOVE_AERIAL_ACE, MOVE_FEATHER_DANCE, MOVE_MUD_SLAP, MOVE_FEINT_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHARP_BEAK, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SHARP_BEAK, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_GRUMPIG_1] = { .species = SPECIES_GRUMPIG, .moves = {MOVE_PSYBEAM, MOVE_CONFUSE_RAY, MOVE_FUTURE_SIGHT, MOVE_MAGIC_COAT}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_TORKOAL_1] = { .species = SPECIES_TORKOAL, .moves = {MOVE_EMBER, MOVE_FIRE_SPIN, MOVE_SMOKESCREEN, MOVE_AMNESIA}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_RELAXED }, [FRONTIER_MON_KINGLER_1] = { .species = SPECIES_KINGLER, .moves = {MOVE_CRABHAMMER, MOVE_METAL_CLAW, MOVE_MUD_SHOT, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_HARDY }, [FRONTIER_MON_CACTURNE_1] = { .species = SPECIES_CACTURNE, .moves = {MOVE_NEEDLE_ARM, MOVE_FEINT_ATTACK, MOVE_ACID, MOVE_MEGA_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_HASTY }, [FRONTIER_MON_BELLOSSOM_1] = { .species = SPECIES_BELLOSSOM, .moves = {MOVE_PETAL_DANCE, MOVE_SAFEGUARD, MOVE_SUNNY_DAY, MOVE_SYNTHESIS}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_OCTILLERY_1] = { .species = SPECIES_OCTILLERY, .moves = {MOVE_OCTAZOOKA, MOVE_AURORA_BEAM, MOVE_PSYBEAM, MOVE_ROCK_BLAST}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_HUNTAIL_1] = { .species = SPECIES_HUNTAIL, .moves = {MOVE_WHIRLPOOL, MOVE_SCARY_FACE, MOVE_MUD_SLAP, MOVE_BITE}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_GOREBYSS_1] = { .species = SPECIES_GOREBYSS, .moves = {MOVE_WHIRLPOOL, MOVE_AMNESIA, MOVE_ICY_WIND, MOVE_CONFUSION}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_BRAVE }, [FRONTIER_MON_RELICANTH_1] = { .species = SPECIES_RELICANTH, .moves = {MOVE_ANCIENT_POWER, MOVE_WATER_PULSE, MOVE_HARDEN, MOVE_AMNESIA}, - .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LIECHI_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 0, 0, 170, 170), .nature = NATURE_SASSY }, [FRONTIER_MON_OMASTAR_1] = { .species = SPECIES_OMASTAR, .moves = {MOVE_BUBBLE_BEAM, MOVE_SPIKE_CANNON, MOVE_TICKLE, MOVE_ANCIENT_POWER}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_KABUTOPS_1] = { .species = SPECIES_KABUTOPS, .moves = {MOVE_SLASH, MOVE_DIG, MOVE_FURY_CUTTER, MOVE_KNOCK_OFF}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_POLIWRATH_1] = { .species = SPECIES_POLIWRATH, .moves = {MOVE_SUBMISSION, MOVE_DIG, MOVE_ROCK_TOMB, MOVE_BUBBLE_BEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_BELT, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BLACK_BELT, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SCYTHER_1] = { .species = SPECIES_SCYTHER, .moves = {MOVE_FURY_CUTTER, MOVE_AERIAL_ACE, MOVE_LIGHT_SCREEN, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LIECHI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_PINSIR_1] = { .species = SPECIES_PINSIR, .moves = {MOVE_SUBMISSION, MOVE_FOCUS_ENERGY, MOVE_SWORDS_DANCE, MOVE_REVENGE}, - .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_BELT, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BLACK_BELT, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_NAUGHTY }, [FRONTIER_MON_POLITOED_1] = { .species = SPECIES_POLITOED, .moves = {MOVE_DIVE, MOVE_DIG, MOVE_HYPNOSIS, MOVE_SWAGGER}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_RELAXED }, [FRONTIER_MON_CLOYSTER_1] = { .species = SPECIES_CLOYSTER, .moves = {MOVE_AURORA_BEAM, MOVE_SPIKE_CANNON, MOVE_SUPERSONIC, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_NEVER_MELT_ICE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_SASSY }, [FRONTIER_MON_DELCATTY_2] = { .species = SPECIES_DELCATTY, .moves = {MOVE_FAKE_TEARS, MOVE_SING, MOVE_THUNDERBOLT, MOVE_ICE_BEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_SABLEYE_2] = { .species = SPECIES_SABLEYE, .moves = {MOVE_SHADOW_BALL, MOVE_FEINT_ATTACK, MOVE_CONFUSE_RAY, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_LICKITUNG_2] = { .species = SPECIES_LICKITUNG, .moves = {MOVE_EARTHQUAKE, MOVE_BODY_SLAM, MOVE_SHADOW_BALL, MOVE_ROCK_SLIDE}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(0, 170, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_WEEPINBELL_2] = { .species = SPECIES_WEEPINBELL, .moves = {MOVE_SLUDGE_BOMB, MOVE_RAZOR_LEAF, MOVE_SLEEP_POWDER, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_QUIRKY }, [FRONTIER_MON_GRAVELER_2] = { .species = SPECIES_GRAVELER, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_GLOOM_2] = { .species = SPECIES_GLOOM, .moves = {MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_SLUDGE_BOMB, MOVE_MOONLIGHT}, - .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_PECHA_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_PORYGON_2] = { .species = SPECIES_PORYGON, .moves = {MOVE_TRI_ATTACK, MOVE_PSYCHIC, MOVE_THUNDER_WAVE, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_KADABRA_2] = { .species = SPECIES_KADABRA, .moves = {MOVE_PSYCHIC, MOVE_THUNDER_WAVE, MOVE_REFLECT, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_TWISTED_SPOON, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_WAILMER_2] = { .species = SPECIES_WAILMER, .moves = {MOVE_WATER_SPOUT, MOVE_EARTHQUAKE, MOVE_BODY_SLAM, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_DOCILE }, [FRONTIER_MON_ROSELIA_2] = { .species = SPECIES_ROSELIA, .moves = {MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB, MOVE_GRASS_WHISTLE, MOVE_SYNTHESIS}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_VOLBEAT_2] = { .species = SPECIES_VOLBEAT, .moves = {MOVE_SIGNAL_BEAM, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_TAIL_GLOW}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_ILLUMISE_2] = { .species = SPECIES_ILLUMISE, .moves = {MOVE_SILVER_WIND, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_GIGA_DRAIN}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_IVYSAUR_2] = { .species = SPECIES_IVYSAUR, .moves = {MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB, MOVE_SLEEP_POWDER, MOVE_LEECH_SEED}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_CHARMELEON_2] = { .species = SPECIES_CHARMELEON, .moves = {MOVE_FLAMETHROWER, MOVE_SLASH, MOVE_ANCIENT_POWER, MOVE_DRAGON_RAGE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_WARTORTLE_2] = { .species = SPECIES_WARTORTLE, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_RAPID_SPIN, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_PARASECT_2] = { .species = SPECIES_PARASECT, .moves = {MOVE_SPORE, MOVE_GIGA_DRAIN, MOVE_DIG, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_CALM }, [FRONTIER_MON_MACHOKE_2] = { .species = SPECIES_MACHOKE, .moves = {MOVE_CROSS_CHOP, MOVE_ROCK_SLIDE, MOVE_FORESIGHT, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_HAUNTER_2] = { .species = SPECIES_HAUNTER, .moves = {MOVE_PSYCHIC, MOVE_HYPNOSIS, MOVE_NIGHTMARE, MOVE_CONFUSE_RAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_RELAXED }, [FRONTIER_MON_BAYLEEF_2] = { .species = SPECIES_BAYLEEF, .moves = {MOVE_GIGA_DRAIN, MOVE_BODY_SLAM, MOVE_GRASS_WHISTLE, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_DOCILE }, [FRONTIER_MON_QUILAVA_2] = { .species = SPECIES_QUILAVA, .moves = {MOVE_FLAMETHROWER, MOVE_CRUSH_CLAW, MOVE_BODY_SLAM, MOVE_SMOKESCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_CROCONAW_2] = { .species = SPECIES_CROCONAW, .moves = {MOVE_MEGA_KICK, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE, MOVE_DIG}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_TOGETIC_2] = { .species = SPECIES_TOGETIC, .moves = {MOVE_RETURN, MOVE_SWEET_KISS, MOVE_AERIAL_ACE, MOVE_YAWN}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_MURKROW_2] = { .species = SPECIES_MURKROW, .moves = {MOVE_PERISH_SONG, MOVE_MEAN_LOOK, MOVE_DOUBLE_TEAM, MOVE_THUNDER_WAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_QUIRKY }, [FRONTIER_MON_WOBBUFFET_2] = { .species = SPECIES_WOBBUFFET, .moves = {MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_ENCORE, MOVE_DESTINY_BOND}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_CAREFUL }, [FRONTIER_MON_PLUSLE_2] = { .species = SPECIES_PLUSLE, .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_SEISMIC_TOSS, MOVE_WISH}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MINUN_2] = { .species = SPECIES_MINUN, .moves = {MOVE_THUNDERBOLT, MOVE_ATTRACT, MOVE_CHARM, MOVE_WISH}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_GROVYLE_2] = { .species = SPECIES_GROVYLE, .moves = {MOVE_GIGA_DRAIN, MOVE_CRUSH_CLAW, MOVE_SCREECH, MOVE_ROCK_TOMB}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_COMBUSKEN_2] = { .species = SPECIES_COMBUSKEN, .moves = {MOVE_FLAMETHROWER, MOVE_SKY_UPPERCUT, MOVE_SLASH, MOVE_SAND_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MARSHTOMP_2] = { .species = SPECIES_MARSHTOMP, .moves = {MOVE_MUDDY_WATER, MOVE_EARTHQUAKE, MOVE_MUD_SLAP, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_PONYTA_2] = { .species = SPECIES_PONYTA, .moves = {MOVE_FLAMETHROWER, MOVE_BODY_SLAM, MOVE_DOUBLE_KICK, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_AZUMARILL_2] = { .species = SPECIES_AZUMARILL, .moves = {MOVE_MEGA_KICK, MOVE_BRICK_BREAK, MOVE_IRON_TAIL, MOVE_DIG}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SUDOWOODO_2] = { .species = SPECIES_SUDOWOODO, .moves = {MOVE_MEGA_KICK, MOVE_EARTHQUAKE, MOVE_LOW_KICK, MOVE_SELF_DESTRUCT}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_HARDY }, [FRONTIER_MON_MAGCARGO_2] = { .species = SPECIES_MAGCARGO, .moves = {MOVE_OVERHEAT, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BODY_SLAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_QUIET }, [FRONTIER_MON_PUPITAR_2] = { .species = SPECIES_PUPITAR, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_CRUNCH, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_SEALEO_2] = { .species = SPECIES_SEALEO, .moves = {MOVE_ICE_BEAM, MOVE_SURF, MOVE_BODY_SLAM, MOVE_HAIL}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_RATICATE_2] = { .species = SPECIES_RATICATE, .moves = {MOVE_SUPER_FANG, MOVE_HYPER_FANG, MOVE_SHADOW_BALL, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_MASQUERAIN_2] = { .species = SPECIES_MASQUERAIN, .moves = {MOVE_HYDRO_PUMP, MOVE_ICE_BEAM, MOVE_GIGA_DRAIN, MOVE_STUN_SPORE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_FURRET_2] = { .species = SPECIES_FURRET, .moves = {MOVE_TRICK, MOVE_FRUSTRATION, MOVE_SHADOW_BALL, MOVE_FOLLOW_ME}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHOICE_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_DUNSPARCE_2] = { .species = SPECIES_DUNSPARCE, .moves = {MOVE_ICE_BEAM, MOVE_ROCK_TOMB, MOVE_BITE, MOVE_SHADOW_BALL}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_QUIET }, [FRONTIER_MON_DRAGONAIR_2] = { .species = SPECIES_DRAGONAIR, .moves = {MOVE_RETURN, MOVE_REST, MOVE_THUNDER_WAVE, MOVE_DRAGON_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_MIGHTYENA_2] = { .species = SPECIES_MIGHTYENA, .moves = {MOVE_CRUNCH, MOVE_SHADOW_BALL, MOVE_FRUSTRATION, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_LINOONE_2] = { .species = SPECIES_LINOONE, .moves = {MOVE_TRICK, MOVE_FRUSTRATION, MOVE_THUNDER_WAVE, MOVE_SAND_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHOICE_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_JOLLY }, [FRONTIER_MON_CASTFORM_2] = { .species = SPECIES_CASTFORM_NORMAL, .moves = {MOVE_THUNDERBOLT, MOVE_FLAMETHROWER, MOVE_ICE_BEAM, MOVE_WATER_PULSE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_SHELGON_2] = { .species = SPECIES_SHELGON, .moves = {MOVE_FRUSTRATION, MOVE_DRAGON_DANCE, MOVE_CRUNCH, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_HARDY }, [FRONTIER_MON_METANG_2] = { .species = SPECIES_METANG, .moves = {MOVE_METEOR_MASH, MOVE_PSYCHIC, MOVE_BODY_SLAM, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_WIGGLYTUFF_2] = { .species = SPECIES_WIGGLYTUFF, .moves = {MOVE_FAKE_TEARS, MOVE_SING, MOVE_DREAM_EATER, MOVE_BRICK_BREAK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_DOCILE }, [FRONTIER_MON_SUNFLORA_2] = { .species = SPECIES_SUNFLORA, .moves = {MOVE_GIGA_DRAIN, MOVE_GRASS_WHISTLE, MOVE_GROWTH, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_CHIMECHO_2] = { .species = SPECIES_CHIMECHO, .moves = {MOVE_PSYCHIC, MOVE_HYPNOSIS, MOVE_DREAM_EATER, MOVE_HEAL_BELL}, - .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_TWISTED_SPOON, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_QUIET }, [FRONTIER_MON_GLIGAR_2] = { .species = SPECIES_GLIGAR, .moves = {MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_GUILLOTINE, MOVE_SCREECH}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_QWILFISH_2] = { .species = SPECIES_QWILFISH, .moves = {MOVE_REVENGE, MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_DESTINY_BOND}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SNEASEL_2] = { .species = SPECIES_SNEASEL, .moves = {MOVE_CRUSH_CLAW, MOVE_BRICK_BREAK, MOVE_AERIAL_ACE, MOVE_SCREECH}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 170, 0, 0), .nature = NATURE_JOLLY }, [FRONTIER_MON_PELIPPER_2] = { .species = SPECIES_PELIPPER, .moves = {MOVE_SURF, MOVE_BLIZZARD, MOVE_AERIAL_ACE, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_QUIET }, [FRONTIER_MON_SWELLOW_2] = { .species = SPECIES_SWELLOW, .moves = {MOVE_FACADE, MOVE_AERIAL_ACE, MOVE_PURSUIT, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_LAIRON_2] = { .species = SPECIES_LAIRON, .moves = {MOVE_EARTHQUAKE, MOVE_IRON_TAIL, MOVE_ROAR, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_SASSY }, [FRONTIER_MON_TANGELA_2] = { .species = SPECIES_TANGELA, .moves = {MOVE_GIGA_DRAIN, MOVE_STUN_SPORE, MOVE_REST, MOVE_AMNESIA}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_CALM }, [FRONTIER_MON_ARBOK_2] = { .species = SPECIES_ARBOK, .moves = {MOVE_SLUDGE_BOMB, MOVE_EARTHQUAKE, MOVE_IRON_TAIL, MOVE_GLARE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_PERSIAN_2] = { .species = SPECIES_PERSIAN, .moves = {MOVE_FRUSTRATION, MOVE_SHADOW_BALL, MOVE_ROAR, MOVE_FAKE_OUT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SILK_SCARF, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_QUIRKY }, [FRONTIER_MON_SEADRA_2] = { .species = SPECIES_SEADRA, .moves = {MOVE_HYDRO_PUMP, MOVE_FRUSTRATION, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_DOCILE }, [FRONTIER_MON_KECLEON_2] = { .species = SPECIES_KECLEON, .moves = {MOVE_TRICK, MOVE_BRICK_BREAK, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHOICE_BAND, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_VIGOROTH_2] = { .species = SPECIES_VIGOROTH, .moves = {MOVE_CRUSH_CLAW, MOVE_REVERSAL, MOVE_ENDURE, MOVE_SHADOW_BALL}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_LUNATONE_2] = { .species = SPECIES_LUNATONE, .moves = {MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_COSMIC_POWER, MOVE_CALM_MIND}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_SOLROCK_2] = { .species = SPECIES_SOLROCK, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_COSMIC_POWER, MOVE_OVERHEAT}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_HARDY }, [FRONTIER_MON_NOCTOWL_2] = { .species = SPECIES_NOCTOWL, .moves = {MOVE_PSYCHIC, MOVE_FEINT_ATTACK, MOVE_AERIAL_ACE, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_SANDSLASH_2] = { .species = SPECIES_SANDSLASH, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_CRUSH_CLAW, MOVE_SANDSTORM}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_VENOMOTH_2] = { .species = SPECIES_VENOMOTH, .moves = {MOVE_SIGNAL_BEAM, MOVE_PSYCHIC, MOVE_SLUDGE_BOMB, MOVE_GIGA_DRAIN}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_CHANSEY_2] = { .species = SPECIES_CHANSEY, .moves = {MOVE_SEISMIC_TOSS, MOVE_SHADOW_BALL, MOVE_DOUBLE_TEAM, MOVE_SOFT_BOILED}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_RELAXED }, [FRONTIER_MON_SEAKING_2] = { .species = SPECIES_SEAKING, .moves = {MOVE_HORN_DRILL, MOVE_MEGAHORN, MOVE_SLEEP_TALK, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_IMPISH }, [FRONTIER_MON_JUMPLUFF_2] = { .species = SPECIES_JUMPLUFF, .moves = {MOVE_LEECH_SEED, MOVE_SLEEP_POWDER, MOVE_GIGA_DRAIN, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_BOLD }, [FRONTIER_MON_PILOSWINE_2] = { .species = SPECIES_PILOSWINE, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BODY_SLAM, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_GOLBAT_2] = { .species = SPECIES_GOLBAT, .moves = {MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY, MOVE_AIR_CUTTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_PRIMEAPE_2] = { .species = SPECIES_PRIMEAPE, .moves = {MOVE_CROSS_CHOP, MOVE_ROCK_TOMB, MOVE_OVERHEAT, MOVE_BULK_UP}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_QUIRKY }, [FRONTIER_MON_HITMONLEE_2] = { .species = SPECIES_HITMONLEE, .moves = {MOVE_MEGA_KICK, MOVE_BRICK_BREAK, MOVE_FORESIGHT, MOVE_ROCK_TOMB}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_HITMONCHAN_2] = { .species = SPECIES_HITMONCHAN, .moves = {MOVE_DYNAMIC_PUNCH, MOVE_MACH_PUNCH, MOVE_DETECT, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_GIRAFARIG_2] = { .species = SPECIES_GIRAFARIG, .moves = {MOVE_PSYCHIC, MOVE_CRUNCH, MOVE_BATON_PASS, MOVE_AGILITY}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_MODEST }, [FRONTIER_MON_HITMONTOP_2] = { .species = SPECIES_HITMONTOP, .moves = {MOVE_DOUBLE_EDGE, MOVE_SEISMIC_TOSS, MOVE_ROCK_SLIDE, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_BANETTE_2] = { .species = SPECIES_BANETTE, .moves = {MOVE_SHADOW_BALL, MOVE_FRUSTRATION, MOVE_SCREECH, MOVE_WILL_O_WISP}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_NINJASK_2] = { .species = SPECIES_NINJASK, .moves = {MOVE_SLASH, MOVE_SHADOW_BALL, MOVE_SWORDS_DANCE, MOVE_BATON_PASS}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_QUIRKY }, [FRONTIER_MON_SEVIPER_2] = { .species = SPECIES_SEVIPER, .moves = {MOVE_SLUDGE_BOMB, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_GIGA_DRAIN}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_QUIRKY }, [FRONTIER_MON_ZANGOOSE_2] = { .species = SPECIES_ZANGOOSE, .moves = {MOVE_CRUSH_CLAW, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_AERIAL_ACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_CAMERUPT_2] = { .species = SPECIES_CAMERUPT, .moves = {MOVE_EARTHQUAKE, MOVE_ERUPTION, MOVE_BODY_SLAM, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_SHARPEDO_2] = { .species = SPECIES_SHARPEDO, .moves = {MOVE_DOUBLE_EDGE, MOVE_CRUNCH, MOVE_EARTHQUAKE, MOVE_SURF}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_TROPIUS_2] = { .species = SPECIES_TROPIUS, .moves = {MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_SYNTHESIS, MOVE_BODY_SLAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_MAGNETON_2] = { .species = SPECIES_MAGNETON, .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_THUNDER_WAVE, MOVE_METAL_SOUND}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_HARDY }, [FRONTIER_MON_MANTINE_2] = { .species = SPECIES_MANTINE, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_RAIN_DANCE, MOVE_CONFUSE_RAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_STANTLER_2] = { .species = SPECIES_STANTLER, .moves = {MOVE_FRUSTRATION, MOVE_SHADOW_BALL, MOVE_THUNDER_WAVE, MOVE_CONFUSE_RAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_ABSOL_2] = { .species = SPECIES_ABSOL, .moves = {MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_AERIAL_ACE, MOVE_IRON_TAIL}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHOICE_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SWALOT_2] = { .species = SPECIES_SWALOT, .moves = {MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_BODY_SLAM, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_CRAWDAUNT_2] = { .species = SPECIES_CRAWDAUNT, .moves = {MOVE_GUILLOTINE, MOVE_FRUSTRATION, MOVE_ANCIENT_POWER, MOVE_AERIAL_ACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_PIDGEOT_2] = { .species = SPECIES_PIDGEOT, .moves = {MOVE_RETURN, MOVE_AERIAL_ACE, MOVE_STEEL_WING, MOVE_MUD_SLAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_GRUMPIG_2] = { .species = SPECIES_GRUMPIG, .moves = {MOVE_PSYCHIC, MOVE_ICE_PUNCH, MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_TORKOAL_2] = { .species = SPECIES_TORKOAL, .moves = {MOVE_OVERHEAT, MOVE_BODY_SLAM, MOVE_SMOKESCREEN, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_SASSY }, [FRONTIER_MON_KINGLER_2] = { .species = SPECIES_KINGLER, .moves = {MOVE_GUILLOTINE, MOVE_ROCK_TOMB, MOVE_FLAIL, MOVE_ENDURE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_CACTURNE_2] = { .species = SPECIES_CACTURNE, .moves = {MOVE_MEGA_KICK, MOVE_TEETER_DANCE, MOVE_FEINT_ATTACK, MOVE_SANDSTORM}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_HARDY }, [FRONTIER_MON_BELLOSSOM_2] = { .species = SPECIES_BELLOSSOM, .moves = {MOVE_SOLAR_BEAM, MOVE_ATTRACT, MOVE_SUNNY_DAY, MOVE_SYNTHESIS}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_OCTILLERY_2] = { .species = SPECIES_OCTILLERY, .moves = {MOVE_OCTAZOOKA, MOVE_FIRE_BLAST, MOVE_THUNDER_WAVE, MOVE_MUD_SLAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_QUIRKY }, [FRONTIER_MON_HUNTAIL_2] = { .species = SPECIES_HUNTAIL, .moves = {MOVE_SURF, MOVE_RAIN_DANCE, MOVE_CRUNCH, MOVE_BODY_SLAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_QUIET }, [FRONTIER_MON_GOREBYSS_2] = { .species = SPECIES_GOREBYSS, .moves = {MOVE_SURF, MOVE_RAIN_DANCE, MOVE_PSYCHIC, MOVE_BODY_SLAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_QUIET }, [FRONTIER_MON_RELICANTH_2] = { .species = SPECIES_RELICANTH, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_AMNESIA, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_SASSY }, [FRONTIER_MON_OMASTAR_2] = { .species = SPECIES_OMASTAR, .moves = {MOVE_HYDRO_PUMP, MOVE_RAIN_DANCE, MOVE_ICE_BEAM, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_MODEST }, [FRONTIER_MON_KABUTOPS_2] = { .species = SPECIES_KABUTOPS, .moves = {MOVE_SLASH, MOVE_ROCK_SLIDE, MOVE_FLAIL, MOVE_ENDURE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_POLIWRATH_2] = { .species = SPECIES_POLIWRATH, .moves = {MOVE_BRICK_BREAK, MOVE_HYPNOSIS, MOVE_REST, MOVE_BELLY_DRUM}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SCYTHER_2] = { .species = SPECIES_SCYTHER, .moves = {MOVE_SILVER_WIND, MOVE_AERIAL_ACE, MOVE_SWORDS_DANCE, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_PINSIR_2] = { .species = SPECIES_PINSIR, .moves = {MOVE_GUILLOTINE, MOVE_SWORDS_DANCE, MOVE_FLAIL, MOVE_ENDURE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_JOLLY }, [FRONTIER_MON_POLITOED_2] = { .species = SPECIES_POLITOED, .moves = {MOVE_SURF, MOVE_PSYCHIC, MOVE_MUD_SLAP, MOVE_SWAGGER}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_CLOYSTER_2] = { .species = SPECIES_CLOYSTER, .moves = {MOVE_DIVE, MOVE_TOXIC, MOVE_DOUBLE_TEAM, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_CAREFUL }, [FRONTIER_MON_DUGTRIO_1] = { .species = SPECIES_DUGTRIO, .moves = {MOVE_EARTHQUAKE, MOVE_TRI_ATTACK, MOVE_SLASH, MOVE_SAND_TOMB}, - .itemTableId = BATTLE_FRONTIER_ITEM_SOFT_SAND, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SOFT_SAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_MEDICHAM_1] = { .species = SPECIES_MEDICHAM, .moves = {MOVE_PSYCHIC, MOVE_HIGH_JUMP_KICK, MOVE_CALM_MIND, MOVE_BATON_PASS}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MISDREAVUS_1] = { .species = SPECIES_MISDREAVUS, .moves = {MOVE_PAIN_SPLIT, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY, MOVE_THUNDER_WAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_IMPISH }, [FRONTIER_MON_FEAROW_1] = { .species = SPECIES_FEAROW, .moves = {MOVE_DRILL_PECK, MOVE_TRI_ATTACK, MOVE_FACADE, MOVE_MUD_SLAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHARP_BEAK, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SHARP_BEAK, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_GRANBULL_1] = { .species = SPECIES_GRANBULL, .moves = {MOVE_MEGA_KICK, MOVE_SMELLING_SALTS, MOVE_THUNDER_WAVE, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_JYNX_1] = { .species = SPECIES_JYNX, .moves = {MOVE_ICE_BEAM, MOVE_FAKE_OUT, MOVE_LOVELY_KISS, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_DUSCLOPS_1] = { .species = SPECIES_DUSCLOPS, .moves = {MOVE_WILL_O_WISP, MOVE_SEISMIC_TOSS, MOVE_PAIN_SPLIT, MOVE_CONFUSE_RAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_IMPISH }, [FRONTIER_MON_DODRIO_1] = { .species = SPECIES_DODRIO, .moves = {MOVE_DRILL_PECK, MOVE_TRI_ATTACK, MOVE_SLEEP_TALK, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_MR_MIME_1] = { .species = SPECIES_MR_MIME, .moves = {MOVE_PSYCHIC, MOVE_MAGICAL_LEAF, MOVE_FAKE_OUT, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_LANTURN_1] = { .species = SPECIES_LANTURN, .moves = {MOVE_SURF, MOVE_CONFUSE_RAY, MOVE_ATTRACT, MOVE_THUNDER_WAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_BRELOOM_1] = { .species = SPECIES_BRELOOM, .moves = {MOVE_SKY_UPPERCUT, MOVE_MACH_PUNCH, MOVE_HEADBUTT, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_JOLLY }, [FRONTIER_MON_FORRETRESS_1] = { .species = SPECIES_FORRETRESS, .moves = {MOVE_DOUBLE_EDGE, MOVE_ROCK_SLIDE, MOVE_LIGHT_SCREEN, MOVE_SPIKES}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_WHISCASH_1] = { .species = SPECIES_WHISCASH, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_AMNESIA, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_XATU_1] = { .species = SPECIES_XATU, .moves = {MOVE_DRILL_PECK, MOVE_NIGHT_SHADE, MOVE_WISH, MOVE_FUTURE_SIGHT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHARP_BEAK, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SHARP_BEAK, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_SKARMORY_1] = { .species = SPECIES_SKARMORY, .moves = {MOVE_STEEL_WING, MOVE_AIR_CUTTER, MOVE_COUNTER, MOVE_AGILITY}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_MAROWAK_1] = { .species = SPECIES_MAROWAK, .moves = {MOVE_BONEMERANG, MOVE_ROCK_SLIDE, MOVE_ICY_WIND, MOVE_HEADBUTT}, - .itemTableId = BATTLE_FRONTIER_ITEM_THICK_CLUB, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_THICK_CLUB, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_QUAGSIRE_1] = { .species = SPECIES_QUAGSIRE, .moves = {MOVE_EARTHQUAKE, MOVE_BRICK_BREAK, MOVE_COUNTER, MOVE_MUD_SLAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_CLEFABLE_1] = { .species = SPECIES_CLEFABLE, .moves = {MOVE_METRONOME, MOVE_DOUBLE_TEAM, MOVE_REFLECT, MOVE_FOLLOW_ME}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_BRAVE }, [FRONTIER_MON_HARIYAMA_1] = { .species = SPECIES_HARIYAMA, .moves = {MOVE_CROSS_CHOP, MOVE_ROCK_SLIDE, MOVE_COUNTER, MOVE_FAKE_OUT}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_RAICHU_1] = { .species = SPECIES_RAICHU, .moves = {MOVE_THUNDERBOLT, MOVE_QUICK_ATTACK, MOVE_LIGHT_SCREEN, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 170, 170, 170, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_DEWGONG_1] = { .species = SPECIES_DEWGONG, .moves = {MOVE_ICE_BEAM, MOVE_ICY_WIND, MOVE_HEADBUTT, MOVE_FAKE_OUT}, - .itemTableId = BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_NEVER_MELT_ICE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_MANECTRIC_1] = { .species = SPECIES_MANECTRIC, .moves = {MOVE_THUNDERBOLT, MOVE_FLASH, MOVE_QUICK_ATTACK, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_MAGNET, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_MAGNET, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_VILEPLUME_1] = { .species = SPECIES_VILEPLUME, .moves = {MOVE_SLUDGE_BOMB, MOVE_PETAL_DANCE, MOVE_MOONLIGHT, MOVE_AROMATHERAPY}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_IMPISH }, [FRONTIER_MON_VICTREEBEL_1] = { .species = SPECIES_VICTREEBEL, .moves = {MOVE_GIGA_DRAIN, MOVE_SLEEP_POWDER, MOVE_SWEET_SCENT, MOVE_SYNTHESIS}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_QUIET }, [FRONTIER_MON_ELECTRODE_1] = { .species = SPECIES_ELECTRODE, .moves = {MOVE_THUNDERBOLT, MOVE_SWIFT, MOVE_LIGHT_SCREEN, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_EXPLOUD_1] = { .species = SPECIES_EXPLOUD, .moves = {MOVE_HYPER_VOICE, MOVE_SHADOW_BALL, MOVE_SLEEP_TALK, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_IMPISH }, [FRONTIER_MON_SHIFTRY_1] = { .species = SPECIES_SHIFTRY, .moves = {MOVE_GIGA_DRAIN, MOVE_FEINT_ATTACK, MOVE_QUICK_ATTACK, MOVE_FAKE_OUT}, - .itemTableId = BATTLE_FRONTIER_ITEM_MIRACLE_SEED, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_MIRACLE_SEED, + .ev = TRAINER_PARTY_EVS(0, 0, 170, 0, 170, 170), .nature = NATURE_QUIET }, [FRONTIER_MON_GLALIE_1] = { .species = SPECIES_GLALIE, .moves = {MOVE_ICE_BEAM, MOVE_CRUNCH, MOVE_HAIL, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_LUDICOLO_1] = { .species = SPECIES_LUDICOLO, .moves = {MOVE_SURF, MOVE_RAIN_DANCE, MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_HYPNO_1] = { .species = SPECIES_HYPNO, .moves = {MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_HYPNOSIS}, - .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_TWISTED_SPOON, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_GOLEM_1] = { .species = SPECIES_GOLEM, .moves = {MOVE_EARTHQUAKE, MOVE_BODY_SLAM, MOVE_COUNTER, MOVE_ROCK_TOMB}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_RHYDON_1] = { .species = SPECIES_RHYDON, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_TOMB, MOVE_SCARY_FACE, MOVE_BRICK_BREAK}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_ALAKAZAM_1] = { .species = SPECIES_ALAKAZAM, .moves = {MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_THUNDER_WAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_WEEZING_1] = { .species = SPECIES_WEEZING, .moves = {MOVE_SLUDGE_BOMB, MOVE_WILL_O_WISP, MOVE_SHADOW_BALL, MOVE_SMOKESCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_KANGASKHAN_1] = { .species = SPECIES_KANGASKHAN, .moves = {MOVE_DIZZY_PUNCH, MOVE_BRICK_BREAK, MOVE_COUNTER, MOVE_FAKE_OUT}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_ELECTABUZZ_1] = { .species = SPECIES_ELECTABUZZ, .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_BRICK_BREAK, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_TAUROS_1] = { .species = SPECIES_TAUROS, .moves = {MOVE_EARTHQUAKE, MOVE_THRASH, MOVE_SWAGGER, MOVE_FACADE}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SLOWBRO_1] = { .species = SPECIES_SLOWBRO, .moves = {MOVE_SURF, MOVE_RAIN_DANCE, MOVE_HEADBUTT, MOVE_ICE_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_QUIET }, [FRONTIER_MON_SLOWKING_1] = { .species = SPECIES_SLOWKING, .moves = {MOVE_PSYCHIC, MOVE_BRICK_BREAK, MOVE_AMNESIA, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_MILTANK_1] = { .species = SPECIES_MILTANK, .moves = {MOVE_FACADE, MOVE_SHADOW_BALL, MOVE_COUNTER, MOVE_MILK_DRINK}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_CAREFUL }, [FRONTIER_MON_ALTARIA_1] = { .species = SPECIES_ALTARIA, .moves = {MOVE_DRAGON_CLAW, MOVE_AERIAL_ACE, MOVE_REFRESH, MOVE_BODY_SLAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_NIDOQUEEN_1] = { .species = SPECIES_NIDOQUEEN, .moves = {MOVE_SLUDGE_BOMB, MOVE_DOUBLE_KICK, MOVE_BODY_SLAM, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_NIDOKING_1] = { .species = SPECIES_NIDOKING, .moves = {MOVE_HORN_DRILL, MOVE_DOUBLE_KICK, MOVE_BODY_SLAM, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_MAGMAR_1] = { .species = SPECIES_MAGMAR, .moves = {MOVE_FLAMETHROWER, MOVE_SMOKESCREEN, MOVE_BRICK_BREAK, MOVE_BARRIER}, - .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_RAWST_BERRY, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_CRADILY_1] = { .species = SPECIES_CRADILY, .moves = {MOVE_GIGA_DRAIN, MOVE_ROCK_SLIDE, MOVE_BARRIER, MOVE_CONFUSE_RAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_RELAXED }, [FRONTIER_MON_ARMALDO_1] = { .species = SPECIES_ARMALDO, .moves = {MOVE_SLASH, MOVE_AERIAL_ACE, MOVE_ANCIENT_POWER, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_GOLDUCK_1] = { .species = SPECIES_GOLDUCK, .moves = {MOVE_HYDRO_PUMP, MOVE_DIG, MOVE_BRICK_BREAK, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_RAPIDASH_1] = { .species = SPECIES_RAPIDASH, .moves = {MOVE_FLAMETHROWER, MOVE_DOUBLE_KICK, MOVE_QUICK_ATTACK, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHARCOAL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_CHARCOAL, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_MUK_1] = { .species = SPECIES_MUK, .moves = {MOVE_SLUDGE_BOMB, MOVE_BODY_SLAM, MOVE_SCREECH, MOVE_MINIMIZE}, - .itemTableId = BATTLE_FRONTIER_ITEM_POISON_BARB, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_POISON_BARB, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_GENGAR_1] = { .species = SPECIES_GENGAR, .moves = {MOVE_DREAM_EATER, MOVE_HYPNOSIS, MOVE_CONFUSE_RAY, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 0, 170, 170, 0), .nature = NATURE_TIMID }, [FRONTIER_MON_AMPHAROS_1] = { .species = SPECIES_AMPHAROS, .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_THUNDER_WAVE, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_MAGNET, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_MAGNET, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_SCIZOR_1] = { .species = SPECIES_SCIZOR, .moves = {MOVE_METAL_CLAW, MOVE_AERIAL_ACE, MOVE_COUNTER, MOVE_QUICK_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_HERACROSS_1] = { .species = SPECIES_HERACROSS, .moves = {MOVE_MEGAHORN, MOVE_BRICK_BREAK, MOVE_ROCK_TOMB, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_URSARING_1] = { .species = SPECIES_URSARING, .moves = {MOVE_MEGA_KICK, MOVE_CRUNCH, MOVE_AERIAL_ACE, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_HOUNDOOM_1] = { .species = SPECIES_HOUNDOOM, .moves = {MOVE_FLAMETHROWER, MOVE_SHADOW_BALL, MOVE_COUNTER, MOVE_WILL_O_WISP}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_DONPHAN_1] = { .species = SPECIES_DONPHAN, .moves = {MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_SWAGGER, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_CLAYDOL_1] = { .species = SPECIES_CLAYDOL, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_SWAGGER, MOVE_PSYCH_UP}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_WAILORD_1] = { .species = SPECIES_WAILORD, .moves = {MOVE_SURF, MOVE_ICY_WIND, MOVE_BODY_SLAM, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_SASSY }, [FRONTIER_MON_NINETALES_1] = { .species = SPECIES_NINETALES, .moves = {MOVE_FLAMETHROWER, MOVE_ROAR, MOVE_CONFUSE_RAY, MOVE_WILL_O_WISP}, - .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_RAWST_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_MACHAMP_1] = { .species = SPECIES_MACHAMP, .moves = {MOVE_CROSS_CHOP, MOVE_ROCK_SLIDE, MOVE_COUNTER, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SHUCKLE_1] = { .species = SPECIES_SHUCKLE, .moves = {MOVE_ROLLOUT, MOVE_DEFENSE_CURL, MOVE_SLEEP_TALK, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_BRAVE }, [FRONTIER_MON_STEELIX_1] = { .species = SPECIES_STEELIX, .moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_BREATH, MOVE_ROCK_TOMB, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_TENTACRUEL_1] = { .species = SPECIES_TENTACRUEL, .moves = {MOVE_SLUDGE_BOMB, MOVE_ICY_WIND, MOVE_BARRIER, MOVE_CONFUSE_RAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0), .nature = NATURE_IMPISH }, [FRONTIER_MON_AERODACTYL_1] = { .species = SPECIES_AERODACTYL, .moves = {MOVE_ANCIENT_POWER, MOVE_DRAGON_BREATH, MOVE_AERIAL_ACE, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 170, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_PORYGON2_1] = { .species = SPECIES_PORYGON2, .moves = {MOVE_TRI_ATTACK, MOVE_AERIAL_ACE, MOVE_SHADOW_BALL, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_GARDEVOIR_1] = { .species = SPECIES_GARDEVOIR, .moves = {MOVE_DREAM_EATER, MOVE_HYPNOSIS, MOVE_MAGICAL_LEAF, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 170, 0, 0), .nature = NATURE_TIMID }, [FRONTIER_MON_EXEGGUTOR_1] = { .species = SPECIES_EXEGGUTOR, .moves = {MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_SYNTHESIS, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_QUIET }, [FRONTIER_MON_STARMIE_1] = { .species = SPECIES_STARMIE, .moves = {MOVE_PSYCHIC, MOVE_CONFUSE_RAY, MOVE_THUNDER_WAVE, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_FLYGON_1] = { .species = SPECIES_FLYGON, .moves = {MOVE_EARTHQUAKE, MOVE_STEEL_WING, MOVE_FEINT_ATTACK, MOVE_FACADE}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_VENUSAUR_1] = { .species = SPECIES_VENUSAUR, .moves = {MOVE_GIGA_DRAIN, MOVE_SUNNY_DAY, MOVE_SYNTHESIS, MOVE_SLEEP_POWDER}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_VAPOREON_1] = { .species = SPECIES_VAPOREON, .moves = {MOVE_SURF, MOVE_ROAR, MOVE_BITE, MOVE_QUICK_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_MYSTIC_WATER, + .ev = TRAINER_PARTY_EVS(0, 0, 170, 0, 170, 170), .nature = NATURE_MODEST }, [FRONTIER_MON_JOLTEON_1] = { .species = SPECIES_JOLTEON, .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_ATTRACT, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_FLAREON_1] = { .species = SPECIES_FLAREON, .moves = {MOVE_FLAMETHROWER, MOVE_ROAR, MOVE_BITE, MOVE_SAND_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_MEGANIUM_1] = { .species = SPECIES_MEGANIUM, .moves = {MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_LIGHT_SCREEN, MOVE_SYNTHESIS}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_ESPEON_1] = { .species = SPECIES_ESPEON, .moves = {MOVE_PSYCHIC, MOVE_CHARM, MOVE_CALM_MIND, MOVE_BATON_PASS}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 170, 170, 0, 170), .nature = NATURE_MODEST }, [FRONTIER_MON_UMBREON_1] = { .species = SPECIES_UMBREON, .moves = {MOVE_CONFUSE_RAY, MOVE_FEINT_ATTACK, MOVE_DOUBLE_TEAM, MOVE_BATON_PASS}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_BOLD }, [FRONTIER_MON_BLASTOISE_1] = { .species = SPECIES_BLASTOISE, .moves = {MOVE_HYDRO_PUMP, MOVE_RAIN_DANCE, MOVE_BITE, MOVE_SEISMIC_TOSS}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_FERALIGATR_1] = { .species = SPECIES_FERALIGATR, .moves = {MOVE_SURF, MOVE_RAIN_DANCE, MOVE_AERIAL_ACE, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 0, 0, 170, 170), .nature = NATURE_QUIET }, [FRONTIER_MON_AGGRON_1] = { .species = SPECIES_AGGRON, .moves = {MOVE_IRON_TAIL, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_BLAZIKEN_1] = { .species = SPECIES_BLAZIKEN, .moves = {MOVE_FLAMETHROWER, MOVE_SUNNY_DAY, MOVE_DOUBLE_KICK, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_WALREIN_1] = { .species = SPECIES_WALREIN, .moves = {MOVE_BLIZZARD, MOVE_HAIL, MOVE_YAWN, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_QUIET }, [FRONTIER_MON_SCEPTILE_1] = { .species = SPECIES_SCEPTILE, .moves = {MOVE_LEAF_BLADE, MOVE_LEECH_SEED, MOVE_AERIAL_ACE, MOVE_DETECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_CHARIZARD_1] = { .species = SPECIES_CHARIZARD, .moves = {MOVE_FIRE_BLAST, MOVE_SUNNY_DAY, MOVE_ROAR, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_TYPHLOSION_1] = { .species = SPECIES_TYPHLOSION, .moves = {MOVE_FIRE_BLAST, MOVE_SUNNY_DAY, MOVE_SMOKESCREEN, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_LAPRAS_1] = { .species = SPECIES_LAPRAS, .moves = {MOVE_SURF, MOVE_ATTRACT, MOVE_CONFUSE_RAY, MOVE_SING}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_BOLD }, [FRONTIER_MON_CROBAT_1] = { .species = SPECIES_CROBAT, .moves = {MOVE_SLUDGE_BOMB, MOVE_BITE, MOVE_ASTONISH, MOVE_SCREECH}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_SWAMPERT_1] = { .species = SPECIES_SWAMPERT, .moves = {MOVE_EARTHQUAKE, MOVE_COUNTER, MOVE_REST, MOVE_CURSE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_GYARADOS_1] = { .species = SPECIES_GYARADOS, .moves = {MOVE_RETURN, MOVE_BITE, MOVE_THUNDER_WAVE, MOVE_DRAGON_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_CAREFUL }, [FRONTIER_MON_SNORLAX_1] = { .species = SPECIES_SNORLAX, .moves = {MOVE_FACADE, MOVE_SHADOW_BALL, MOVE_ATTRACT, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_KINGDRA_1] = { .species = SPECIES_KINGDRA, .moves = {MOVE_HYDRO_PUMP, MOVE_DRAGON_BREATH, MOVE_ICY_WIND, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_BLISSEY_1] = { .species = SPECIES_BLISSEY, .moves = {MOVE_TOXIC, MOVE_DOUBLE_TEAM, MOVE_SING, MOVE_SOFT_BOILED}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_BOLD }, [FRONTIER_MON_MILOTIC_1] = { .species = SPECIES_MILOTIC, .moves = {MOVE_HYDRO_PUMP, MOVE_ICY_WIND, MOVE_RECOVER, MOVE_MIRROR_COAT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_ARCANINE_1] = { .species = SPECIES_ARCANINE, .moves = {MOVE_FLAMETHROWER, MOVE_EXTREME_SPEED, MOVE_CRUNCH, MOVE_BODY_SLAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SALAMENCE_1] = { .species = SPECIES_SALAMENCE, .moves = {MOVE_DRAGON_CLAW, MOVE_AERIAL_ACE, MOVE_HEADBUTT, MOVE_ROCK_SLIDE}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_METAGROSS_1] = { .species = SPECIES_METAGROSS, .moves = {MOVE_METEOR_MASH, MOVE_AERIAL_ACE, MOVE_FACADE, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SLAKING_1] = { .species = SPECIES_SLAKING, .moves = {MOVE_YAWN, MOVE_BULK_UP, MOVE_SWAGGER, MOVE_AERIAL_ACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_DUGTRIO_2] = { .species = SPECIES_DUGTRIO, .moves = {MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_AERIAL_ACE, MOVE_TRI_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_MEDICHAM_2] = { .species = SPECIES_MEDICHAM, .moves = {MOVE_REVERSAL, MOVE_ENDURE, MOVE_PSYCHIC, MOVE_FAKE_OUT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_MAROWAK_2] = { .species = SPECIES_MAROWAK, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_SWORDS_DANCE, MOVE_ICY_WIND}, - .itemTableId = BATTLE_FRONTIER_ITEM_THICK_CLUB, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_THICK_CLUB, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_QUAGSIRE_2] = { .species = SPECIES_QUAGSIRE, .moves = {MOVE_CURSE, MOVE_ATTRACT, MOVE_YAWN, MOVE_ANCIENT_POWER}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_SASSY }, [FRONTIER_MON_MISDREAVUS_2] = { .species = SPECIES_MISDREAVUS, .moves = {MOVE_PSYCHIC, MOVE_ATTRACT, MOVE_THUNDER_WAVE, MOVE_CONFUSE_RAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_BOLD }, [FRONTIER_MON_FEAROW_2] = { .species = SPECIES_FEAROW, .moves = {MOVE_DRILL_PECK, MOVE_TRI_ATTACK, MOVE_ATTRACT, MOVE_PURSUIT}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_GRANBULL_2] = { .species = SPECIES_GRANBULL, .moves = {MOVE_OVERHEAT, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_FACADE}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 0, 252, 252), .nature = NATURE_QUIET }, [FRONTIER_MON_JYNX_2] = { .species = SPECIES_JYNX, .moves = {MOVE_PERISH_SONG, MOVE_MEAN_LOOK, MOVE_LOVELY_KISS, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_IMPISH }, [FRONTIER_MON_DUSCLOPS_2] = { .species = SPECIES_DUSCLOPS, .moves = {MOVE_TOXIC, MOVE_CONFUSE_RAY, MOVE_DOUBLE_TEAM, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_IMPISH }, [FRONTIER_MON_DODRIO_2] = { .species = SPECIES_DODRIO, .moves = {MOVE_DRILL_PECK, MOVE_DOUBLE_EDGE, MOVE_FEINT_ATTACK, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_MR_MIME_2] = { .species = SPECIES_MR_MIME, .moves = {MOVE_BATON_PASS, MOVE_SWAGGER, MOVE_PSYCH_UP, MOVE_PSYCHIC}, - .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LIECHI_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_LANTURN_2] = { .species = SPECIES_LANTURN, .moves = {MOVE_FLAIL, MOVE_ENDURE, MOVE_THUNDERBOLT, MOVE_SURF}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_BRELOOM_2] = { .species = SPECIES_BRELOOM, .moves = {MOVE_GIGA_DRAIN, MOVE_LEECH_SEED, MOVE_FOCUS_PUNCH, MOVE_SPORE}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_FORRETRESS_2] = { .species = SPECIES_FORRETRESS, .moves = {MOVE_EARTHQUAKE, MOVE_DOUBLE_EDGE, MOVE_COUNTER, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SKARMORY_2] = { .species = SPECIES_SKARMORY, .moves = {MOVE_SPIKES, MOVE_ROAR, MOVE_DRILL_PECK, MOVE_TOXIC}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 0, 170), .nature = NATURE_CAREFUL }, [FRONTIER_MON_WHISCASH_2] = { .species = SPECIES_WHISCASH, .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_SPARK, MOVE_FUTURE_SIGHT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_XATU_2] = { .species = SPECIES_XATU, .moves = {MOVE_FLY, MOVE_TOXIC, MOVE_CONFUSE_RAY, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_IMPISH }, [FRONTIER_MON_CLEFABLE_2] = { .species = SPECIES_CLEFABLE, .moves = {MOVE_METEOR_MASH, MOVE_COSMIC_POWER, MOVE_DOUBLE_TEAM, MOVE_FOLLOW_ME}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_HARIYAMA_2] = { .species = SPECIES_HARIYAMA, .moves = {MOVE_CROSS_CHOP, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_THUNDER_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_RAICHU_2] = { .species = SPECIES_RAICHU, .moves = {MOVE_THUNDERBOLT, MOVE_REVERSAL, MOVE_ENDURE, MOVE_AGILITY}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_DEWGONG_2] = { .species = SPECIES_DEWGONG, .moves = {MOVE_BLIZZARD, MOVE_DOUBLE_EDGE, MOVE_ENCORE, MOVE_DISABLE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MANECTRIC_2] = { .species = SPECIES_MANECTRIC, .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_CRUNCH, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_VILEPLUME_2] = { .species = SPECIES_VILEPLUME, .moves = {MOVE_INGRAIN, MOVE_DOUBLE_TEAM, MOVE_TOXIC, MOVE_GIGA_DRAIN}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_BOLD }, [FRONTIER_MON_VICTREEBEL_2] = { .species = SPECIES_VICTREEBEL, .moves = {MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB, MOVE_SLEEP_POWDER, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_SERIOUS }, [FRONTIER_MON_ELECTRODE_2] = { .species = SPECIES_ELECTRODE, .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_DOUBLE_TEAM, MOVE_SWAGGER}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_MODEST }, [FRONTIER_MON_EXPLOUD_2] = { .species = SPECIES_EXPLOUD, .moves = {MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_EARTHQUAKE, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_SHIFTRY_2] = { .species = SPECIES_SHIFTRY, .moves = {MOVE_LEECH_SEED, MOVE_DIG, MOVE_DOUBLE_TEAM, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_IMPISH }, [FRONTIER_MON_GLALIE_2] = { .species = SPECIES_GLALIE, .moves = {MOVE_EXPLOSION, MOVE_ENDURE, MOVE_BODY_SLAM, MOVE_ICY_WIND}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_LUDICOLO_2] = { .species = SPECIES_LUDICOLO, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_HYPNO_2] = { .species = SPECIES_HYPNO, .moves = {MOVE_HYPNOSIS, MOVE_NIGHTMARE, MOVE_DREAM_EATER, MOVE_PSYCHIC}, - .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_TWISTED_SPOON, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_MODEST }, [FRONTIER_MON_GOLEM_2] = { .species = SPECIES_GOLEM, .moves = {MOVE_FOCUS_PUNCH, MOVE_SUBSTITUTE, MOVE_DOUBLE_TEAM, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_RHYDON_2] = { .species = SPECIES_RHYDON, .moves = {MOVE_EARTHQUAKE, MOVE_HORN_DRILL, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_ALAKAZAM_2] = { .species = SPECIES_ALAKAZAM, .moves = {MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_THUNDER_WAVE, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_WEEZING_2] = { .species = SPECIES_WEEZING, .moves = {MOVE_MEMENTO, MOVE_SLUDGE_BOMB, MOVE_FACADE, MOVE_DESTINY_BOND}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_KANGASKHAN_2] = { .species = SPECIES_KANGASKHAN, .moves = {MOVE_CRUSH_CLAW, MOVE_SHADOW_BALL, MOVE_ATTRACT, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_ELECTABUZZ_2] = { .species = SPECIES_ELECTABUZZ, .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_ATTRACT, MOVE_FOCUS_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_TAUROS_2] = { .species = SPECIES_TAUROS, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_DOUBLE_TEAM, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SLOWBRO_2] = { .species = SPECIES_SLOWBRO, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_CALM_MIND, MOVE_YAWN}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_MODEST }, [FRONTIER_MON_SLOWKING_2] = { .species = SPECIES_SLOWKING, .moves = {MOVE_YAWN, MOVE_THUNDER_WAVE, MOVE_SURF, MOVE_PSYCHIC}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_MILTANK_2] = { .species = SPECIES_MILTANK, .moves = {MOVE_FOCUS_PUNCH, MOVE_SHADOW_BALL, MOVE_ATTRACT, MOVE_THUNDER_WAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 0, 170), .nature = NATURE_CAREFUL }, [FRONTIER_MON_ALTARIA_2] = { .species = SPECIES_ALTARIA, .moves = {MOVE_PERISH_SONG, MOVE_DRAGON_BREATH, MOVE_PURSUIT, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_BOLD }, [FRONTIER_MON_NIDOQUEEN_2] = { .species = SPECIES_NIDOQUEEN, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_NIDOKING_2] = { .species = SPECIES_NIDOKING, .moves = {MOVE_MEGA_KICK, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_MAGMAR_2] = { .species = SPECIES_MAGMAR, .moves = {MOVE_FIRE_BLAST, MOVE_SMOKESCREEN, MOVE_THUNDER_PUNCH, MOVE_CONFUSE_RAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_CRADILY_2] = { .species = SPECIES_CRADILY, .moves = {MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_SWAGGER, MOVE_PSYCH_UP}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_ARMALDO_2] = { .species = SPECIES_ARMALDO, .moves = {MOVE_IRON_TAIL, MOVE_ANCIENT_POWER, MOVE_BRICK_BREAK, MOVE_KNOCK_OFF}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_GOLDUCK_2] = { .species = SPECIES_GOLDUCK, .moves = {MOVE_CROSS_CHOP, MOVE_SURF, MOVE_SWAGGER, MOVE_PSYCH_UP}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_RAPIDASH_2] = { .species = SPECIES_RAPIDASH, .moves = {MOVE_FIRE_BLAST, MOVE_BOUNCE, MOVE_DOUBLE_TEAM, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MUK_2] = { .species = SPECIES_MUK, .moves = {MOVE_CURSE, MOVE_REST, MOVE_SLUDGE_BOMB, MOVE_DYNAMIC_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_GENGAR_2] = { .species = SPECIES_GENGAR, .moves = {MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY, MOVE_WILL_O_WISP}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_AMPHAROS_2] = { .species = SPECIES_AMPHAROS, .moves = {MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_FOCUS_PUNCH, MOVE_THUNDER_WAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_SCIZOR_2] = { .species = SPECIES_SCIZOR, .moves = {MOVE_SILVER_WIND, MOVE_STEEL_WING, MOVE_SWORDS_DANCE, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_HERACROSS_2] = { .species = SPECIES_HERACROSS, .moves = {MOVE_MEGAHORN, MOVE_EARTHQUAKE, MOVE_ATTRACT, MOVE_BULK_UP}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_JOLLY }, [FRONTIER_MON_URSARING_2] = { .species = SPECIES_URSARING, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_BRICK_BREAK, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_HOUNDOOM_2] = { .species = SPECIES_HOUNDOOM, .moves = {MOVE_FIRE_BLAST, MOVE_CRUNCH, MOVE_ROAR, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_DONPHAN_2] = { .species = SPECIES_DONPHAN, .moves = {MOVE_FLAIL, MOVE_ENDURE, MOVE_EARTHQUAKE, MOVE_ROCK_TOMB}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_JOLLY }, [FRONTIER_MON_CLAYDOL_2] = { .species = SPECIES_CLAYDOL, .moves = {MOVE_PSYCHIC, MOVE_EARTHQUAKE, MOVE_DOUBLE_TEAM, MOVE_COSMIC_POWER}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_CALM }, [FRONTIER_MON_WAILORD_2] = { .species = SPECIES_WAILORD, .moves = {MOVE_DOUBLE_EDGE, MOVE_REST, MOVE_CURSE, MOVE_AMNESIA}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_NINETALES_2] = { .species = SPECIES_NINETALES, .moves = {MOVE_HEAT_WAVE, MOVE_BODY_SLAM, MOVE_GRUDGE, MOVE_SUNNY_DAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_MACHAMP_2] = { .species = SPECIES_MACHAMP, .moves = {MOVE_CROSS_CHOP, MOVE_EARTHQUAKE, MOVE_BULK_UP, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SHUCKLE_2] = { .species = SPECIES_SHUCKLE, .moves = {MOVE_SANDSTORM, MOVE_DIG, MOVE_FLASH, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_CAREFUL }, [FRONTIER_MON_STEELIX_2] = { .species = SPECIES_STEELIX, .moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_BREATH, MOVE_SANDSTORM, MOVE_BLOCK}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_HARDY }, [FRONTIER_MON_TENTACRUEL_2] = { .species = SPECIES_TENTACRUEL, .moves = {MOVE_TOXIC, MOVE_GIGA_DRAIN, MOVE_CONFUSE_RAY, MOVE_SURF}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_AERODACTYL_2] = { .species = SPECIES_AERODACTYL, .moves = {MOVE_HYPER_BEAM, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ANCIENT_POWER}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHOICE_BAND, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 170, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_PORYGON2_2] = { .species = SPECIES_PORYGON2, .moves = {MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_THUNDER_WAVE, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_GARDEVOIR_2] = { .species = SPECIES_GARDEVOIR, .moves = {MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_EXEGGUTOR_2] = { .species = SPECIES_EXEGGUTOR, .moves = {MOVE_RETURN, MOVE_CURSE, MOVE_SLEEP_POWDER, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_HARDY }, [FRONTIER_MON_STARMIE_2] = { .species = SPECIES_STARMIE, .moves = {MOVE_HYDRO_PUMP, MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_MODEST }, [FRONTIER_MON_FLYGON_2] = { .species = SPECIES_FLYGON, .moves = {MOVE_SOLAR_BEAM, MOVE_FIRE_BLAST, MOVE_CRUNCH, MOVE_SUNNY_DAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_VENUSAUR_2] = { .species = SPECIES_VENUSAUR, .moves = {MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_DOUBLE_TEAM, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_BOLD }, [FRONTIER_MON_VAPOREON_2] = { .species = SPECIES_VAPOREON, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_BODY_SLAM, MOVE_SHADOW_BALL}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_DOCILE }, [FRONTIER_MON_JOLTEON_2] = { .species = SPECIES_JOLTEON, .moves = {MOVE_THUNDERBOLT, MOVE_DIG, MOVE_DOUBLE_KICK, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_FLAREON_2] = { .species = SPECIES_FLAREON, .moves = {MOVE_CURSE, MOVE_ATTRACT, MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_RELAXED }, [FRONTIER_MON_MEGANIUM_2] = { .species = SPECIES_MEGANIUM, .moves = {MOVE_LEECH_SEED, MOVE_SUBSTITUTE, MOVE_DOUBLE_TEAM, MOVE_GRASS_WHISTLE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_CALM }, [FRONTIER_MON_ESPEON_2] = { .species = SPECIES_ESPEON, .moves = {MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_CALM_MIND, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_UMBREON_2] = { .species = SPECIES_UMBREON, .moves = {MOVE_CURSE, MOVE_SCREECH, MOVE_DOUBLE_TEAM, MOVE_DOUBLE_EDGE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_BLASTOISE_2] = { .species = SPECIES_BLASTOISE, .moves = {MOVE_HYDRO_PUMP, MOVE_MEGA_KICK, MOVE_BRICK_BREAK, MOVE_MIRROR_COAT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_BRAVE }, [FRONTIER_MON_FERALIGATR_2] = { .species = SPECIES_FERALIGATR, .moves = {MOVE_SURF, MOVE_DRAGON_CLAW, MOVE_BRICK_BREAK, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 0, 0, 0, 170, 170), .nature = NATURE_SASSY }, [FRONTIER_MON_AGGRON_2] = { .species = SPECIES_AGGRON, .moves = {MOVE_FOCUS_PUNCH, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_THUNDER_WAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_BLAZIKEN_2] = { .species = SPECIES_BLAZIKEN, .moves = {MOVE_BLAZE_KICK, MOVE_MEGA_KICK, MOVE_THUNDER_PUNCH, MOVE_BRICK_BREAK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_WALREIN_2] = { .species = SPECIES_WALREIN, .moves = {MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_CURSE, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_QUIRKY }, [FRONTIER_MON_SCEPTILE_2] = { .species = SPECIES_SCEPTILE, .moves = {MOVE_LEAF_BLADE, MOVE_THUNDER_PUNCH, MOVE_ATTRACT, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_CHARIZARD_2] = { .species = SPECIES_CHARIZARD, .moves = {MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_DRAGON_DANCE, MOVE_SMOKESCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_TYPHLOSION_2] = { .species = SPECIES_TYPHLOSION, .moves = {MOVE_FLAMETHROWER, MOVE_THUNDER_PUNCH, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_LAPRAS_2] = { .species = SPECIES_LAPRAS, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_BODY_SLAM, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_TIMID }, [FRONTIER_MON_CROBAT_2] = { .species = SPECIES_CROBAT, .moves = {MOVE_TOXIC, MOVE_GIGA_DRAIN, MOVE_CONFUSE_RAY, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_CALM }, [FRONTIER_MON_SWAMPERT_2] = { .species = SPECIES_SWAMPERT, .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_COUNTER, MOVE_MIRROR_COAT}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_DOCILE }, [FRONTIER_MON_GYARADOS_2] = { .species = SPECIES_GYARADOS, .moves = {MOVE_HYDRO_PUMP, MOVE_THUNDERBOLT, MOVE_FIRE_BLAST, MOVE_BLIZZARD}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_SNORLAX_2] = { .species = SPECIES_SNORLAX, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_CURSE, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_KINGDRA_2] = { .species = SPECIES_KINGDRA, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_DRAGON_BREATH, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_MODEST }, [FRONTIER_MON_BLISSEY_2] = { .species = SPECIES_BLISSEY, .moves = {MOVE_SEISMIC_TOSS, MOVE_SING, MOVE_ATTRACT, MOVE_SUBSTITUTE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_BOLD }, [FRONTIER_MON_MILOTIC_2] = { .species = SPECIES_MILOTIC, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_SAFEGUARD, MOVE_MIRROR_COAT}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_ARCANINE_2] = { .species = SPECIES_ARCANINE, .moves = {MOVE_FIRE_BLAST, MOVE_SUNNY_DAY, MOVE_CRUNCH, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_SALAMENCE_2] = { .species = SPECIES_SALAMENCE, .moves = {MOVE_DOUBLE_EDGE, MOVE_CRUNCH, MOVE_SWAGGER, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_METAGROSS_2] = { .species = SPECIES_METAGROSS, .moves = {MOVE_EARTHQUAKE, MOVE_METEOR_MASH, MOVE_PSYCH_UP, MOVE_SWAGGER}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 0, 170, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SLAKING_2] = { .species = SPECIES_SLAKING, .moves = {MOVE_MEGA_KICK, MOVE_SHADOW_BALL, MOVE_YAWN, MOVE_AMNESIA}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_DUGTRIO_3] = { .species = SPECIES_DUGTRIO, .moves = {MOVE_EARTHQUAKE, MOVE_DOUBLE_EDGE, MOVE_SLUDGE_BOMB, MOVE_FISSURE}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_MEDICHAM_3] = { .species = SPECIES_MEDICHAM, .moves = {MOVE_DYNAMIC_PUNCH, MOVE_THUNDER_PUNCH, MOVE_ICE_PUNCH, MOVE_FIRE_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_MISDREAVUS_3] = { .species = SPECIES_MISDREAVUS, .moves = {MOVE_PERISH_SONG, MOVE_MEAN_LOOK, MOVE_THUNDER_WAVE, MOVE_CONFUSE_RAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_BOLD }, [FRONTIER_MON_FEAROW_3] = { .species = SPECIES_FEAROW, .moves = {MOVE_DRILL_PECK, MOVE_RETURN, MOVE_STEEL_WING, MOVE_FEINT_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_GRANBULL_3] = { .species = SPECIES_GRANBULL, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_SLUDGE_BOMB, MOVE_ROCK_SLIDE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_JYNX_3] = { .species = SPECIES_JYNX, .moves = {MOVE_DREAM_EATER, MOVE_LOVELY_KISS, MOVE_ATTRACT, MOVE_SUBSTITUTE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_DUSCLOPS_3] = { .species = SPECIES_DUSCLOPS, .moves = {MOVE_PSYCH_UP, MOVE_SWAGGER, MOVE_SHADOW_BALL, MOVE_EARTHQUAKE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_DODRIO_3] = { .species = SPECIES_DODRIO, .moves = {MOVE_DOUBLE_EDGE, MOVE_DRILL_PECK, MOVE_STEEL_WING, MOVE_FEINT_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_MR_MIME_3] = { .species = SPECIES_MR_MIME, .moves = {MOVE_TRICK, MOVE_TORMENT, MOVE_PSYCHIC, MOVE_THUNDERBOLT}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHOICE_BAND, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_LANTURN_3] = { .species = SPECIES_LANTURN, .moves = {MOVE_HYDRO_PUMP, MOVE_THUNDER, MOVE_CONFUSE_RAY, MOVE_RAIN_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_BRELOOM_3] = { .species = SPECIES_BRELOOM, .moves = {MOVE_IRON_TAIL, MOVE_FOCUS_PUNCH, MOVE_ATTRACT, MOVE_SPORE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_FORRETRESS_3] = { .species = SPECIES_FORRETRESS, .moves = {MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_GIGA_DRAIN, MOVE_ZAP_CANNON}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 0, 170, 170), .nature = NATURE_QUIET }, [FRONTIER_MON_WHISCASH_3] = { .species = SPECIES_WHISCASH, .moves = {MOVE_SLEEP_TALK, MOVE_REST, MOVE_SURF, MOVE_FISSURE}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_HARDY }, [FRONTIER_MON_XATU_3] = { .species = SPECIES_XATU, .moves = {MOVE_DRILL_PECK, MOVE_PSYCHIC, MOVE_GIGA_DRAIN, MOVE_STEEL_WING}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_JOLLY }, [FRONTIER_MON_SKARMORY_3] = { .species = SPECIES_SKARMORY, .moves = {MOVE_TOXIC, MOVE_CURSE, MOVE_REST, MOVE_FLY}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_CAREFUL }, [FRONTIER_MON_MAROWAK_3] = { .species = SPECIES_MAROWAK, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_SWORDS_DANCE, MOVE_BRICK_BREAK}, - .itemTableId = BATTLE_FRONTIER_ITEM_THICK_CLUB, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_THICK_CLUB, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_QUAGSIRE_3] = { .species = SPECIES_QUAGSIRE, .moves = {MOVE_EARTHQUAKE, MOVE_SLUDGE_BOMB, MOVE_DOUBLE_EDGE, MOVE_CURSE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_CLEFABLE_3] = { .species = SPECIES_CLEFABLE, .moves = {MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_FLAMETHROWER, MOVE_MAGICAL_LEAF}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_HARIYAMA_3] = { .species = SPECIES_HARIYAMA, .moves = {MOVE_CROSS_CHOP, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_FACADE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_RAICHU_3] = { .species = SPECIES_RAICHU, .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_IRON_TAIL, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_DEWGONG_3] = { .species = SPECIES_DEWGONG, .moves = {MOVE_HORN_DRILL, MOVE_SHEER_COLD, MOVE_SLEEP_TALK, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_BOLD }, [FRONTIER_MON_MANECTRIC_3] = { .species = SPECIES_MANECTRIC, .moves = {MOVE_THUNDERBOLT, MOVE_IRON_TAIL, MOVE_THUNDER_WAVE, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_VILEPLUME_3] = { .species = SPECIES_VILEPLUME, .moves = {MOVE_ATTRACT, MOVE_STUN_SPORE, MOVE_SLUDGE_BOMB, MOVE_GIGA_DRAIN}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_VICTREEBEL_3] = { .species = SPECIES_VICTREEBEL, .moves = {MOVE_STUN_SPORE, MOVE_INGRAIN, MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_ELECTRODE_3] = { .species = SPECIES_ELECTRODE, .moves = {MOVE_EXPLOSION, MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_ENDURE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LIECHI_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_NAUGHTY }, [FRONTIER_MON_EXPLOUD_3] = { .species = SPECIES_EXPLOUD, .moves = {MOVE_OVERHEAT, MOVE_ICE_BEAM, MOVE_THUNDER_PUNCH, MOVE_EXTRASENSORY}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_SHIFTRY_3] = { .species = SPECIES_SHIFTRY, .moves = {MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_EXPLOSION, MOVE_SYNTHESIS}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_GLALIE_3] = { .species = SPECIES_GLALIE, .moves = {MOVE_BLIZZARD, MOVE_EARTHQUAKE, MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_LUDICOLO_3] = { .species = SPECIES_LUDICOLO, .moves = {MOVE_LEECH_SEED, MOVE_RAIN_DANCE, MOVE_DOUBLE_TEAM, MOVE_GIGA_DRAIN}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_BOLD }, [FRONTIER_MON_HYPNO_3] = { .species = SPECIES_HYPNO, .moves = {MOVE_PSYCH_UP, MOVE_SWAGGER, MOVE_MEGA_KICK, MOVE_SHADOW_BALL}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_GOLEM_3] = { .species = SPECIES_GOLEM, .moves = {MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_FLAMETHROWER, MOVE_BRICK_BREAK}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_RHYDON_3] = { .species = SPECIES_RHYDON, .moves = {MOVE_MEGAHORN, MOVE_CRUSH_CLAW, MOVE_EARTHQUAKE, MOVE_HORN_DRILL}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_ALAKAZAM_3] = { .species = SPECIES_ALAKAZAM, .moves = {MOVE_TRICK, MOVE_DISABLE, MOVE_PSYCHIC, MOVE_SKILL_SWAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_CHOICE_BAND, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_WEEZING_3] = { .species = SPECIES_WEEZING, .moves = {MOVE_EXPLOSION, MOVE_SLUDGE_BOMB, MOVE_FLAMETHROWER, MOVE_THUNDERBOLT}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_KANGASKHAN_3] = { .species = SPECIES_KANGASKHAN, .moves = {MOVE_REVERSAL, MOVE_ENDURE, MOVE_THUNDERBOLT, MOVE_EARTHQUAKE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_JOLLY }, [FRONTIER_MON_ELECTABUZZ_3] = { .species = SPECIES_ELECTABUZZ, .moves = {MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_THUNDERBOLT, MOVE_CROSS_CHOP}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_TAUROS_3] = { .species = SPECIES_TAUROS, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_FLAMETHROWER, MOVE_ICE_BEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_SLOWBRO_3] = { .species = SPECIES_SLOWBRO, .moves = {MOVE_SURF, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 0, 252, 252), .nature = NATURE_QUIET }, [FRONTIER_MON_SLOWKING_3] = { .species = SPECIES_SLOWKING, .moves = {MOVE_PSYCHIC, MOVE_SURF, MOVE_ICE_BEAM, MOVE_EARTHQUAKE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 170, 170, 0, 170, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_MILTANK_3] = { .species = SPECIES_MILTANK, .moves = {MOVE_REVERSAL, MOVE_ENDURE, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_ALTARIA_3] = { .species = SPECIES_ALTARIA, .moves = {MOVE_SING, MOVE_DRAGON_DANCE, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_NIDOQUEEN_3] = { .species = SPECIES_NIDOQUEEN, .moves = {MOVE_THUNDERBOLT, MOVE_FLAMETHROWER, MOVE_ICE_BEAM, MOVE_CRUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_NIDOKING_3] = { .species = SPECIES_NIDOKING, .moves = {MOVE_HORN_DRILL, MOVE_FIRE_BLAST, MOVE_BLIZZARD, MOVE_SURF}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEPPA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LEPPA_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_MAGMAR_3] = { .species = SPECIES_MAGMAR, .moves = {MOVE_MEGA_KICK, MOVE_CROSS_CHOP, MOVE_IRON_TAIL, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0), .nature = NATURE_IMPISH }, [FRONTIER_MON_CRADILY_3] = { .species = SPECIES_CRADILY, .moves = {MOVE_SUBSTITUTE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 0, 170, 0, 170, 170), .nature = NATURE_MODEST }, [FRONTIER_MON_ARMALDO_3] = { .species = SPECIES_ARMALDO, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK, MOVE_SWORDS_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_GOLDUCK_3] = { .species = SPECIES_GOLDUCK, .moves = {MOVE_HYDRO_PUMP, MOVE_CROSS_CHOP, MOVE_BLIZZARD, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_RAPIDASH_3] = { .species = SPECIES_RAPIDASH, .moves = {MOVE_OVERHEAT, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_HYPNOSIS}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(170, 0, 0, 170, 170, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_MUK_3] = { .species = SPECIES_MUK, .moves = {MOVE_SLUDGE_BOMB, MOVE_THUNDERBOLT, MOVE_FLAMETHROWER, MOVE_ICE_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_GENGAR_3] = { .species = SPECIES_GENGAR, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_GIGA_DRAIN, MOVE_SKILL_SWAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_AMPHAROS_3] = { .species = SPECIES_AMPHAROS, .moves = {MOVE_THUNDERBOLT, MOVE_MEGA_KICK, MOVE_IRON_TAIL, MOVE_BRICK_BREAK}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_SCIZOR_3] = { .species = SPECIES_SCIZOR, .moves = {MOVE_REVERSAL, MOVE_ENDURE, MOVE_AGILITY, MOVE_SLASH}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_CAREFUL }, [FRONTIER_MON_HERACROSS_3] = { .species = SPECIES_HERACROSS, .moves = {MOVE_MEGAHORN, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_URSARING_3] = { .species = SPECIES_URSARING, .moves = {MOVE_FIRE_PUNCH, MOVE_THUNDER_PUNCH, MOVE_ICE_PUNCH, MOVE_CRUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 0, 170, 170, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_HOUNDOOM_3] = { .species = SPECIES_HOUNDOOM, .moves = {MOVE_OVERHEAT, MOVE_SHADOW_BALL, MOVE_SLUDGE_BOMB, MOVE_DOUBLE_EDGE}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_DONPHAN_3] = { .species = SPECIES_DONPHAN, .moves = {MOVE_FISSURE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_SECRET_POWER}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_CLAYDOL_3] = { .species = SPECIES_CLAYDOL, .moves = {MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_WAILORD_3] = { .species = SPECIES_WAILORD, .moves = {MOVE_HYDRO_PUMP, MOVE_FISSURE, MOVE_DOUBLE_TEAM, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_MODEST }, [FRONTIER_MON_NINETALES_3] = { .species = SPECIES_NINETALES, .moves = {MOVE_FIRE_BLAST, MOVE_IRON_TAIL, MOVE_CONFUSE_RAY, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_MACHAMP_3] = { .species = SPECIES_MACHAMP, .moves = {MOVE_CROSS_CHOP, MOVE_FIRE_BLAST, MOVE_THUNDER_PUNCH, MOVE_ICE_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_SHUCKLE_3] = { .species = SPECIES_SHUCKLE, .moves = {MOVE_SUBSTITUTE, MOVE_ATTRACT, MOVE_TOXIC, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_CAREFUL }, [FRONTIER_MON_STEELIX_3] = { .species = SPECIES_STEELIX, .moves = {MOVE_EARTHQUAKE, MOVE_BODY_SLAM, MOVE_ROCK_SLIDE, MOVE_EXPLOSION}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_TENTACRUEL_3] = { .species = SPECIES_TENTACRUEL, .moves = {MOVE_SURF, MOVE_GIGA_DRAIN, MOVE_ICE_BEAM, MOVE_MIRROR_COAT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 0, 170, 170, 170, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_AERODACTYL_3] = { .species = SPECIES_AERODACTYL, .moves = {MOVE_DOUBLE_EDGE, MOVE_ROCK_SLIDE, MOVE_FIRE_BLAST, MOVE_DRAGON_CLAW}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_PORYGON2_3] = { .species = SPECIES_PORYGON2, .moves = {MOVE_PSYCHIC, MOVE_TRI_ATTACK, MOVE_THUNDER_WAVE, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_GARDEVOIR_3] = { .species = SPECIES_GARDEVOIR, .moves = {MOVE_PSYCHIC, MOVE_ICE_PUNCH, MOVE_FIRE_PUNCH, MOVE_MAGICAL_LEAF}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_EXEGGUTOR_3] = { .species = SPECIES_EXEGGUTOR, .moves = {MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_TOXIC, MOVE_EXPLOSION}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_HARDY }, [FRONTIER_MON_STARMIE_3] = { .species = SPECIES_STARMIE, .moves = {MOVE_SURF, MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_FLYGON_3] = { .species = SPECIES_FLYGON, .moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_CLAW, MOVE_FLAMETHROWER, MOVE_GIGA_DRAIN}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_VENUSAUR_3] = { .species = SPECIES_VENUSAUR, .moves = {MOVE_DOUBLE_EDGE, MOVE_SLUDGE_BOMB, MOVE_EARTHQUAKE, MOVE_SLEEP_POWDER}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 170, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_VAPOREON_3] = { .species = SPECIES_VAPOREON, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_ACID_ARMOR, MOVE_BATON_PASS}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_CALM }, [FRONTIER_MON_JOLTEON_3] = { .species = SPECIES_JOLTEON, .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_AGILITY, MOVE_BATON_PASS}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_BOLD }, [FRONTIER_MON_FLAREON_3] = { .species = SPECIES_FLAREON, .moves = {MOVE_SHADOW_BALL, MOVE_FLAIL, MOVE_ENDURE, MOVE_OVERHEAT}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_JOLLY }, [FRONTIER_MON_MEGANIUM_3] = { .species = SPECIES_MEGANIUM, .moves = {MOVE_EARTHQUAKE, MOVE_FLAIL, MOVE_ENDURE, MOVE_GIGA_DRAIN}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_JOLLY }, [FRONTIER_MON_ESPEON_3] = { .species = SPECIES_ESPEON, .moves = {MOVE_PSYCHIC, MOVE_BITE, MOVE_WISH, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_UMBREON_3] = { .species = SPECIES_UMBREON, .moves = {MOVE_SWAGGER, MOVE_PSYCH_UP, MOVE_ATTRACT, MOVE_SHADOW_BALL}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_BOLD }, [FRONTIER_MON_BLASTOISE_3] = { .species = SPECIES_BLASTOISE, .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_FERALIGATR_3] = { .species = SPECIES_FERALIGATR, .moves = {MOVE_HYDRO_PUMP, MOVE_CRUNCH, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_AGGRON_3] = { .species = SPECIES_AGGRON, .moves = {MOVE_SURF, MOVE_THUNDER, MOVE_FIRE_BLAST, MOVE_BLIZZARD}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_BLAZIKEN_3] = { .species = SPECIES_BLAZIKEN, .moves = {MOVE_OVERHEAT, MOVE_EARTHQUAKE, MOVE_ENDURE, MOVE_REVERSAL}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_WALREIN_3] = { .species = SPECIES_WALREIN, .moves = {MOVE_SHEER_COLD, MOVE_FISSURE, MOVE_SURF, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_HARDY }, [FRONTIER_MON_SCEPTILE_3] = { .species = SPECIES_SCEPTILE, .moves = {MOVE_LEAF_BLADE, MOVE_EARTHQUAKE, MOVE_CRUSH_CLAW, MOVE_AERIAL_ACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_CHARIZARD_3] = { .species = SPECIES_CHARIZARD, .moves = {MOVE_FLAMETHROWER, MOVE_DRAGON_CLAW, MOVE_BITE, MOVE_BRICK_BREAK}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_TYPHLOSION_3] = { .species = SPECIES_TYPHLOSION, .moves = {MOVE_EARTHQUAKE, MOVE_OVERHEAT, MOVE_ENDURE, MOVE_REVERSAL}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_LAPRAS_3] = { .species = SPECIES_LAPRAS, .moves = {MOVE_DOUBLE_EDGE, MOVE_PSYCHIC, MOVE_CONFUSE_RAY, MOVE_DRAGON_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_DOCILE }, [FRONTIER_MON_CROBAT_3] = { .species = SPECIES_CROBAT, .moves = {MOVE_AIR_CUTTER, MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_SCREECH}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SWAMPERT_3] = { .species = SPECIES_SWAMPERT, .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_BRAVE }, [FRONTIER_MON_GYARADOS_3] = { .species = SPECIES_GYARADOS, .moves = {MOVE_SURF, MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_EARTHQUAKE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_SNORLAX_3] = { .species = SPECIES_SNORLAX, .moves = {MOVE_MEGA_KICK, MOVE_SHADOW_BALL, MOVE_SWAGGER, MOVE_PSYCH_UP}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_KINGDRA_3] = { .species = SPECIES_KINGDRA, .moves = {MOVE_FLAIL, MOVE_HYDRO_PUMP, MOVE_DRAGON_DANCE, MOVE_ENDURE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_BLISSEY_3] = { .species = SPECIES_BLISSEY, .moves = {MOVE_FIRE_BLAST, MOVE_BLIZZARD, MOVE_CALM_MIND, MOVE_SOFT_BOILED}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_BOLD }, [FRONTIER_MON_MILOTIC_3] = { .species = SPECIES_MILOTIC, .moves = {MOVE_SURF, MOVE_BLIZZARD, MOVE_ATTRACT, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_BOLD }, [FRONTIER_MON_ARCANINE_3] = { .species = SPECIES_ARCANINE, .moves = {MOVE_OVERHEAT, MOVE_EXTREME_SPEED, MOVE_CRUNCH, MOVE_AERIAL_ACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_SALAMENCE_3] = { .species = SPECIES_SALAMENCE, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_ENDURE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_METAGROSS_3] = { .species = SPECIES_METAGROSS, .moves = {MOVE_EARTHQUAKE, MOVE_METEOR_MASH, MOVE_DOUBLE_TEAM, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 170, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SLAKING_3] = { .species = SPECIES_SLAKING, .moves = {MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_AERIAL_ACE, MOVE_BRICK_BREAK}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_CHOICE_BAND, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_DUGTRIO_4] = { .species = SPECIES_DUGTRIO, .moves = {MOVE_EARTHQUAKE, MOVE_DOUBLE_EDGE, MOVE_ROCK_SLIDE, MOVE_FISSURE}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_MEDICHAM_4] = { .species = SPECIES_MEDICHAM, .moves = {MOVE_MEGA_KICK, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_ROCK_SLIDE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_MISDREAVUS_4] = { .species = SPECIES_MISDREAVUS, .moves = {MOVE_DESTINY_BOND, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_THUNDERBOLT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_TIMID }, [FRONTIER_MON_FEAROW_4] = { .species = SPECIES_FEAROW, .moves = {MOVE_DRILL_PECK, MOVE_DOUBLE_EDGE, MOVE_STEEL_WING, MOVE_SKY_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_GRANBULL_4] = { .species = SPECIES_GRANBULL, .moves = {MOVE_MEGA_KICK, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_SHADOW_BALL}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHOICE_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_BRAVE }, [FRONTIER_MON_JYNX_4] = { .species = SPECIES_JYNX, .moves = {MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_LOVELY_KISS, MOVE_FAKE_TEARS}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_DUSCLOPS_4] = { .species = SPECIES_DUSCLOPS, .moves = {MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_CURSE, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_DODRIO_4] = { .species = SPECIES_DODRIO, .moves = {MOVE_FLAIL, MOVE_ENDURE, MOVE_DRILL_PECK, MOVE_FACADE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_MR_MIME_4] = { .species = SPECIES_MR_MIME, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_FIRE_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_LANTURN_4] = { .species = SPECIES_LANTURN, .moves = {MOVE_SURF, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_CONFUSE_RAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_BRELOOM_4] = { .species = SPECIES_BRELOOM, .moves = {MOVE_FOCUS_PUNCH, MOVE_SLUDGE_BOMB, MOVE_SPORE, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_FORRETRESS_4] = { .species = SPECIES_FORRETRESS, .moves = {MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_DOUBLE_EDGE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_WHISCASH_4] = { .species = SPECIES_WHISCASH, .moves = {MOVE_FISSURE, MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_XATU_4] = { .species = SPECIES_XATU, .moves = {MOVE_PSYCHIC, MOVE_DRILL_PECK, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_SKARMORY_4] = { .species = SPECIES_SKARMORY, .moves = {MOVE_DRILL_PECK, MOVE_STEEL_WING, MOVE_COUNTER, MOVE_ROCK_SLIDE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_MAROWAK_4] = { .species = SPECIES_MAROWAK, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_SWORDS_DANCE, MOVE_MEGA_KICK}, - .itemTableId = BATTLE_FRONTIER_ITEM_THICK_CLUB, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_THICK_CLUB, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_QUAGSIRE_4] = { .species = SPECIES_QUAGSIRE, .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_AMNESIA}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 0, 170, 170), .nature = NATURE_SASSY }, [FRONTIER_MON_CLEFABLE_4] = { .species = SPECIES_CLEFABLE, .moves = {MOVE_MEGA_KICK, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_SOFT_BOILED}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_HARIYAMA_4] = { .species = SPECIES_HARIYAMA, .moves = {MOVE_CROSS_CHOP, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_FAKE_OUT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_RAICHU_4] = { .species = SPECIES_RAICHU, .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_PROTECT, MOVE_MEGA_KICK}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_DEWGONG_4] = { .species = SPECIES_DEWGONG, .moves = {MOVE_SHEER_COLD, MOVE_ICE_BEAM, MOVE_SURF, MOVE_SIGNAL_BEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MANECTRIC_4] = { .species = SPECIES_MANECTRIC, .moves = {MOVE_THUNDERBOLT, MOVE_CRUNCH, MOVE_THUNDER_WAVE, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_VILEPLUME_4] = { .species = SPECIES_VILEPLUME, .moves = {MOVE_SOLAR_BEAM, MOVE_SLUDGE_BOMB, MOVE_SUNNY_DAY, MOVE_SYNTHESIS}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_VICTREEBEL_4] = { .species = SPECIES_VICTREEBEL, .moves = {MOVE_GIGA_DRAIN, MOVE_DOUBLE_EDGE, MOVE_SLUDGE_BOMB, MOVE_SYNTHESIS}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_ELECTRODE_4] = { .species = SPECIES_ELECTRODE, .moves = {MOVE_EXPLOSION, MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_MIRROR_COAT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_NAUGHTY }, [FRONTIER_MON_EXPLOUD_4] = { .species = SPECIES_EXPLOUD, .moves = {MOVE_MEGA_KICK, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_OVERHEAT}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_SHIFTRY_4] = { .species = SPECIES_SHIFTRY, .moves = {MOVE_EXPLOSION, MOVE_GIGA_DRAIN, MOVE_MEGA_KICK, MOVE_FAKE_OUT}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_GLALIE_4] = { .species = SPECIES_GLALIE, .moves = {MOVE_ICE_BEAM, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_SHADOW_BALL}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_LUDICOLO_4] = { .species = SPECIES_LUDICOLO, .moves = {MOVE_LEECH_SEED, MOVE_RAIN_DANCE, MOVE_DOUBLE_TEAM, MOVE_TOXIC}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_BOLD }, [FRONTIER_MON_HYPNO_4] = { .species = SPECIES_HYPNO, .moves = {MOVE_PSYCHIC, MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_GOLEM_4] = { .species = SPECIES_GOLEM, .moves = {MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_DOUBLE_EDGE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_RHYDON_4] = { .species = SPECIES_RHYDON, .moves = {MOVE_MEGAHORN, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_HORN_DRILL}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_ALAKAZAM_4] = { .species = SPECIES_ALAKAZAM, .moves = {MOVE_PSYCHIC, MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_WEEZING_4] = { .species = SPECIES_WEEZING, .moves = {MOVE_EXPLOSION, MOVE_SLUDGE_BOMB, MOVE_FRUSTRATION, MOVE_SHADOW_BALL}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_KANGASKHAN_4] = { .species = SPECIES_KANGASKHAN, .moves = {MOVE_MEGA_KICK, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_SHADOW_BALL}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_ELECTABUZZ_4] = { .species = SPECIES_ELECTABUZZ, .moves = {MOVE_THUNDERBOLT, MOVE_PSYCHIC, MOVE_MEGA_KICK, MOVE_CROSS_CHOP}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_TAUROS_4] = { .species = SPECIES_TAUROS, .moves = {MOVE_DOUBLE_EDGE, MOVE_ROCK_TOMB, MOVE_THUNDERBOLT, MOVE_SURF}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_SLOWBRO_4] = { .species = SPECIES_SLOWBRO, .moves = {MOVE_PSYCHIC, MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 0, 252, 252), .nature = NATURE_SASSY }, [FRONTIER_MON_SLOWKING_4] = { .species = SPECIES_SLOWKING, .moves = {MOVE_PSYCHIC, MOVE_SURF, MOVE_ICE_BEAM, MOVE_FLAMETHROWER}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_MILTANK_4] = { .species = SPECIES_MILTANK, .moves = {MOVE_DOUBLE_EDGE, MOVE_CURSE, MOVE_DOUBLE_TEAM, MOVE_MILK_DRINK}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_ALTARIA_4] = { .species = SPECIES_ALTARIA, .moves = {MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, MOVE_FLAMETHROWER, MOVE_ICE_BEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_NIDOQUEEN_4] = { .species = SPECIES_NIDOQUEEN, .moves = {MOVE_SUPERPOWER, MOVE_SLUDGE_BOMB, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_NIDOKING_4] = { .species = SPECIES_NIDOKING, .moves = {MOVE_MEGAHORN, MOVE_SLUDGE_BOMB, MOVE_EARTHQUAKE, MOVE_THUNDER}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MAGMAR_4] = { .species = SPECIES_MAGMAR, .moves = {MOVE_FLAMETHROWER, MOVE_PSYCHIC, MOVE_CROSS_CHOP, MOVE_CONFUSE_RAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_CRADILY_4] = { .species = SPECIES_CRADILY, .moves = {MOVE_TOXIC, MOVE_INGRAIN, MOVE_MIRROR_COAT, MOVE_GIGA_DRAIN}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_BOLD }, [FRONTIER_MON_ARMALDO_4] = { .species = SPECIES_ARMALDO, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHOICE_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_GOLDUCK_4] = { .species = SPECIES_GOLDUCK, .moves = {MOVE_SURF, MOVE_CROSS_CHOP, MOVE_ICE_BEAM, MOVE_AERIAL_ACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_RAPIDASH_4] = { .species = SPECIES_RAPIDASH, .moves = {MOVE_OVERHEAT, MOVE_DOUBLE_EDGE, MOVE_IRON_TAIL, MOVE_DOUBLE_KICK}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MUK_4] = { .species = SPECIES_MUK, .moves = {MOVE_SLUDGE_BOMB, MOVE_BRICK_BREAK, MOVE_GIGA_DRAIN, MOVE_EXPLOSION}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0), .nature = NATURE_BRAVE }, [FRONTIER_MON_GENGAR_4] = { .species = SPECIES_GENGAR, .moves = {MOVE_PSYCHIC, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_DESTINY_BOND}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_AMPHAROS_4] = { .species = SPECIES_AMPHAROS, .moves = {MOVE_THUNDERBOLT, MOVE_FIRE_PUNCH, MOVE_THUNDER_WAVE, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_SCIZOR_4] = { .species = SPECIES_SCIZOR, .moves = {MOVE_SILVER_WIND, MOVE_SWORDS_DANCE, MOVE_AGILITY, MOVE_BATON_PASS}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_CAREFUL }, [FRONTIER_MON_HERACROSS_4] = { .species = SPECIES_HERACROSS, .moves = {MOVE_MEGAHORN, MOVE_EARTHQUAKE, MOVE_REVERSAL, MOVE_ENDURE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_URSARING_4] = { .species = SPECIES_URSARING, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_AERIAL_ACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_HOUNDOOM_4] = { .species = SPECIES_HOUNDOOM, .moves = {MOVE_OVERHEAT, MOVE_SOLAR_BEAM, MOVE_CRUNCH, MOVE_SUNNY_DAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_DONPHAN_4] = { .species = SPECIES_DONPHAN, .moves = {MOVE_FISSURE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_IRON_TAIL}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_CLAYDOL_4] = { .species = SPECIES_CLAYDOL, .moves = {MOVE_PSYCHIC, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_EXPLOSION}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_WAILORD_4] = { .species = SPECIES_WAILORD, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_EARTHQUAKE, MOVE_FISSURE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_HARDY }, [FRONTIER_MON_NINETALES_4] = { .species = SPECIES_NINETALES, .moves = {MOVE_OVERHEAT, MOVE_DOUBLE_EDGE, MOVE_CONFUSE_RAY, MOVE_WILL_O_WISP}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_MACHAMP_4] = { .species = SPECIES_MACHAMP, .moves = {MOVE_CROSS_CHOP, MOVE_EARTHQUAKE, MOVE_FLAMETHROWER, MOVE_ROCK_SLIDE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_SHUCKLE_4] = { .species = SPECIES_SHUCKLE, .moves = {MOVE_TOXIC, MOVE_DOUBLE_TEAM, MOVE_WRAP, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_CAREFUL }, [FRONTIER_MON_STEELIX_4] = { .species = SPECIES_STEELIX, .moves = {MOVE_EARTHQUAKE, MOVE_IRON_TAIL, MOVE_DOUBLE_EDGE, MOVE_EXPLOSION}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_TENTACRUEL_4] = { .species = SPECIES_TENTACRUEL, .moves = {MOVE_HYDRO_PUMP, MOVE_SLUDGE_BOMB, MOVE_ICE_BEAM, MOVE_MIRROR_COAT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 170, 170, 0, 170, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_AERODACTYL_4] = { .species = SPECIES_AERODACTYL, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_FIRE_BLAST, MOVE_BITE}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_PORYGON2_4] = { .species = SPECIES_PORYGON2, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_GARDEVOIR_4] = { .species = SPECIES_GARDEVOIR, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_FIRE_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_EXEGGUTOR_4] = { .species = SPECIES_EXEGGUTOR, .moves = {MOVE_PSYCHIC, MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB, MOVE_EXPLOSION}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_STARMIE_4] = { .species = SPECIES_STARMIE, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_FLYGON_4] = { .species = SPECIES_FLYGON, .moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_CLAW, MOVE_DOUBLE_EDGE, MOVE_CRUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_VENUSAUR_4] = { .species = SPECIES_VENUSAUR, .moves = {MOVE_SOLAR_BEAM, MOVE_SLUDGE_BOMB, MOVE_SUNNY_DAY, MOVE_EARTHQUAKE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 0, 170, 170), .nature = NATURE_DOCILE }, [FRONTIER_MON_VAPOREON_4] = { .species = SPECIES_VAPOREON, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_ACID_ARMOR, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 0, 0, 170, 170), .nature = NATURE_CALM }, [FRONTIER_MON_JOLTEON_4] = { .species = SPECIES_JOLTEON, .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_BITE, MOVE_SHADOW_BALL}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_TIMID }, [FRONTIER_MON_FLAREON_4] = { .species = SPECIES_FLAREON, .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_MEGANIUM_4] = { .species = SPECIES_MEGANIUM, .moves = {MOVE_GIGA_DRAIN, MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_BODY_SLAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_ESPEON_4] = { .species = SPECIES_ESPEON, .moves = {MOVE_PSYCHIC, MOVE_BITE, MOVE_ATTRACT, MOVE_CALM_MIND}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_UMBREON_4] = { .species = SPECIES_UMBREON, .moves = {MOVE_CONFUSE_RAY, MOVE_TOXIC, MOVE_FEINT_ATTACK, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_BOLD }, [FRONTIER_MON_BLASTOISE_4] = { .species = SPECIES_BLASTOISE, .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_MIRROR_COAT}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_FERALIGATR_4] = { .species = SPECIES_FERALIGATR, .moves = {MOVE_HYDRO_PUMP, MOVE_ICE_BEAM, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_AGGRON_4] = { .species = SPECIES_AGGRON, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_AERIAL_ACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_BLAZIKEN_4] = { .species = SPECIES_BLAZIKEN, .moves = {MOVE_OVERHEAT, MOVE_EARTHQUAKE, MOVE_THUNDER_PUNCH, MOVE_ROCK_SLIDE}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_WALREIN_4] = { .species = SPECIES_WALREIN, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_EARTHQUAKE, MOVE_SHEER_COLD}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_SCEPTILE_4] = { .species = SPECIES_SCEPTILE, .moves = {MOVE_LEAF_BLADE, MOVE_DRAGON_CLAW, MOVE_CRUNCH, MOVE_THUNDER_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_CHARIZARD_4] = { .species = SPECIES_CHARIZARD, .moves = {MOVE_OVERHEAT, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_TYPHLOSION_4] = { .species = SPECIES_TYPHLOSION, .moves = {MOVE_OVERHEAT, MOVE_THUNDER_PUNCH, MOVE_EARTHQUAKE, MOVE_CRUSH_CLAW}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_LAPRAS_4] = { .species = SPECIES_LAPRAS, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_THUNDERBOLT, MOVE_PSYCHIC}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_CROBAT_4] = { .species = SPECIES_CROBAT, .moves = {MOVE_SLUDGE_BOMB, MOVE_AERIAL_ACE, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SWAMPERT_4] = { .species = SPECIES_SWAMPERT, .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_MIRROR_COAT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_GYARADOS_4] = { .species = SPECIES_GYARADOS, .moves = {MOVE_RETURN, MOVE_EARTHQUAKE, MOVE_DRAGON_DANCE, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SNORLAX_4] = { .species = SPECIES_SNORLAX, .moves = {MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_CURSE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_KINGDRA_4] = { .species = SPECIES_KINGDRA, .moves = {MOVE_DOUBLE_EDGE, MOVE_ICE_BEAM, MOVE_DRAGON_DANCE, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_HARDY }, [FRONTIER_MON_BLISSEY_4] = { .species = SPECIES_BLISSEY, .moves = {MOVE_ICE_BEAM, MOVE_CALM_MIND, MOVE_COUNTER, MOVE_SOFT_BOILED}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_BOLD }, [FRONTIER_MON_MILOTIC_4] = { .species = SPECIES_MILOTIC, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_RECOVER, MOVE_MIRROR_COAT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 0, 170, 0, 170, 170), .nature = NATURE_MODEST }, [FRONTIER_MON_ARCANINE_4] = { .species = SPECIES_ARCANINE, .moves = {MOVE_OVERHEAT, MOVE_EXTREME_SPEED, MOVE_CRUNCH, MOVE_DOUBLE_EDGE}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_SALAMENCE_4] = { .species = SPECIES_SALAMENCE, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_DRAGON_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_METAGROSS_4] = { .species = SPECIES_METAGROSS, .moves = {MOVE_METEOR_MASH, MOVE_PSYCHIC, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_SLAKING_4] = { .species = SPECIES_SLAKING, .moves = {MOVE_THUNDERBOLT, MOVE_FLAMETHROWER, MOVE_ICE_BEAM, MOVE_YAWN}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 0, 252, 252), .nature = NATURE_MODEST }, [FRONTIER_MON_ARTICUNO_1] = { .species = SPECIES_ARTICUNO, .moves = {MOVE_ICE_BEAM, MOVE_WATER_PULSE, MOVE_ICY_WIND, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_ZAPDOS_1] = { .species = SPECIES_ZAPDOS, .moves = {MOVE_THUNDERBOLT, MOVE_DRILL_PECK, MOVE_THUNDER_WAVE, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MOLTRES_1] = { .species = SPECIES_MOLTRES, .moves = {MOVE_FLAMETHROWER, MOVE_AERIAL_ACE, MOVE_MUD_SLAP, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_RAIKOU_1] = { .species = SPECIES_RAIKOU, .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_CALM_MIND, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_ENTEI_1] = { .species = SPECIES_ENTEI, .moves = {MOVE_FLAMETHROWER, MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_SUICUNE_1] = { .species = SPECIES_SUICUNE, .moves = {MOVE_SURF, MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_REGIROCK_1] = { .species = SPECIES_REGIROCK, .moves = {MOVE_SUPERPOWER, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_EXPLOSION}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_REGICE_1] = { .species = SPECIES_REGICE, .moves = {MOVE_ICE_BEAM, MOVE_THUNDERBOLT, MOVE_AMNESIA, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_REGISTEEL_1] = { .species = SPECIES_REGISTEEL, .moves = {MOVE_METAL_CLAW, MOVE_CURSE, MOVE_AMNESIA, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_LATIAS_1] = { .species = SPECIES_LATIAS, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_DRAGON_CLAW}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_LATIOS_1] = { .species = SPECIES_LATIOS, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_DRAGON_CLAW}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_ARTICUNO_2] = { .species = SPECIES_ARTICUNO, .moves = {MOVE_SUBSTITUTE, MOVE_TOXIC, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_IMPISH }, [FRONTIER_MON_ZAPDOS_2] = { .species = SPECIES_ZAPDOS, .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_DRILL_PECK, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MOLTRES_2] = { .species = SPECIES_MOLTRES, .moves = {MOVE_OVERHEAT, MOVE_AERIAL_ACE, MOVE_DOUBLE_TEAM, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_RAIKOU_2] = { .species = SPECIES_RAIKOU, .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_DOUBLE_TEAM, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_ENTEI_2] = { .species = SPECIES_ENTEI, .moves = {MOVE_FIRE_BLAST, MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_SUICUNE_2] = { .species = SPECIES_SUICUNE, .moves = {MOVE_TOXIC, MOVE_DIVE, MOVE_DOUBLE_TEAM, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_CALM }, [FRONTIER_MON_REGIROCK_2] = { .species = SPECIES_REGIROCK, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_COUNTER, MOVE_EXPLOSION}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_REGICE_2] = { .species = SPECIES_REGICE, .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_BLIZZARD, MOVE_BRICK_BREAK}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_REGISTEEL_2] = { .species = SPECIES_REGISTEEL, .moves = {MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_LATIAS_2] = { .species = SPECIES_LATIAS, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_EARTHQUAKE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_LATIOS_2] = { .species = SPECIES_LATIOS, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_EARTHQUAKE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_ARTICUNO_3] = { .species = SPECIES_ARTICUNO, .moves = {MOVE_ICE_BEAM, MOVE_FACADE, MOVE_AERIAL_ACE, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_ZAPDOS_3] = { .species = SPECIES_ZAPDOS, .moves = {MOVE_THUNDERBOLT, MOVE_DRILL_PECK, MOVE_THUNDER_WAVE, MOVE_SUBSTITUTE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MOLTRES_3] = { .species = SPECIES_MOLTRES, .moves = {MOVE_FIRE_BLAST, MOVE_SUNNY_DAY, MOVE_DOUBLE_TEAM, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_RAIKOU_3] = { .species = SPECIES_RAIKOU, .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_QUICK_ATTACK, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_ENTEI_3] = { .species = SPECIES_ENTEI, .moves = {MOVE_FLAMETHROWER, MOVE_DOUBLE_EDGE, MOVE_SWAGGER, MOVE_PSYCH_UP}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_SUICUNE_3] = { .species = SPECIES_SUICUNE, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_RAIN_DANCE, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_REGIROCK_3] = { .species = SPECIES_REGIROCK, .moves = {MOVE_ROCK_SLIDE, MOVE_EARTHQUAKE, MOVE_CURSE, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_REGICE_3] = { .species = SPECIES_REGICE, .moves = {MOVE_ICE_BEAM, MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_EXPLOSION}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_REGISTEEL_3] = { .species = SPECIES_REGISTEEL, .moves = {MOVE_ANCIENT_POWER, MOVE_AMNESIA, MOVE_COUNTER, MOVE_EXPLOSION}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_LATIAS_3] = { .species = SPECIES_LATIAS, .moves = {MOVE_DRAGON_CLAW, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_EARTHQUAKE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_LATIOS_3] = { .species = SPECIES_LATIOS, .moves = {MOVE_DRAGON_CLAW, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_EARTHQUAKE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_ARTICUNO_4] = { .species = SPECIES_ARTICUNO, .moves = {MOVE_BLIZZARD, MOVE_DOUBLE_EDGE, MOVE_REST, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_ZAPDOS_4] = { .species = SPECIES_ZAPDOS, .moves = {MOVE_THUNDERBOLT, MOVE_DRILL_PECK, MOVE_THUNDER_WAVE, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MOLTRES_4] = { .species = SPECIES_MOLTRES, .moves = {MOVE_OVERHEAT, MOVE_DOUBLE_EDGE, MOVE_STEEL_WING, MOVE_SAFEGUARD}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_RAIKOU_4] = { .species = SPECIES_RAIKOU, .moves = {MOVE_THUNDERBOLT, MOVE_BITE, MOVE_THUNDER_WAVE, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_ENTEI_4] = { .species = SPECIES_ENTEI, .moves = {MOVE_FLAMETHROWER, MOVE_BITE, MOVE_DOUBLE_TEAM, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_SUICUNE_4] = { .species = SPECIES_SUICUNE, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_BITE, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_REGIROCK_4] = { .species = SPECIES_REGIROCK, .moves = {MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK, MOVE_DOUBLE_TEAM, MOVE_THUNDER_WAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 0, 170), .nature = NATURE_CAREFUL }, [FRONTIER_MON_REGICE_4] = { .species = SPECIES_REGICE, .moves = {MOVE_ICE_BEAM, MOVE_HAIL, MOVE_DOUBLE_TEAM, MOVE_THUNDER_WAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_BOLD }, [FRONTIER_MON_REGISTEEL_4] = { .species = SPECIES_REGISTEEL, .moves = {MOVE_ANCIENT_POWER, MOVE_EARTHQUAKE, MOVE_DOUBLE_TEAM, MOVE_THUNDER_WAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_IMPISH }, [FRONTIER_MON_LATIAS_4] = { .species = SPECIES_LATIAS, .moves = {MOVE_MIST_BALL, MOVE_SHADOW_BALL, MOVE_CHARM, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_LATIOS_4] = { .species = SPECIES_LATIOS, .moves = {MOVE_LUSTER_PURGE, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_DRAGON_CLAW}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_GENGAR_5] = { .species = SPECIES_GENGAR, .moves = {MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_THUNDERBOLT, MOVE_FIRE_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_GENGAR_6] = { .species = SPECIES_GENGAR, .moves = {MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_GENGAR_7] = { .species = SPECIES_GENGAR, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_FIRE_PUNCH, MOVE_DESTINY_BOND}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_GENGAR_8] = { .species = SPECIES_GENGAR, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_DESTINY_BOND}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_URSARING_5] = { .species = SPECIES_URSARING, .moves = {MOVE_MEGA_KICK, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHOICE_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_URSARING_6] = { .species = SPECIES_URSARING, .moves = {MOVE_HYPER_BEAM, MOVE_YAWN, MOVE_SWORDS_DANCE, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_URSARING_7] = { .species = SPECIES_URSARING, .moves = {MOVE_FACADE, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_BULK_UP}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_URSARING_8] = { .species = SPECIES_URSARING, .moves = {MOVE_FACADE, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_BRICK_BREAK}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MACHAMP_5] = { .species = SPECIES_MACHAMP, .moves = {MOVE_CROSS_CHOP, MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_MACHAMP_6] = { .species = SPECIES_MACHAMP, .moves = {MOVE_CROSS_CHOP, MOVE_EARTHQUAKE, MOVE_COUNTER, MOVE_ROCK_TOMB}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_MACHAMP_7] = { .species = SPECIES_MACHAMP, .moves = {MOVE_FOCUS_PUNCH, MOVE_SUBSTITUTE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_MACHAMP_8] = { .species = SPECIES_MACHAMP, .moves = {MOVE_REVENGE, MOVE_ROCK_SLIDE, MOVE_FACADE, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_GARDEVOIR_5] = { .species = SPECIES_GARDEVOIR, .moves = {MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_ENDURE, MOVE_DESTINY_BOND}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 170, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_GARDEVOIR_6] = { .species = SPECIES_GARDEVOIR, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_WILL_O_WISP, MOVE_DESTINY_BOND}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_TIMID }, [FRONTIER_MON_GARDEVOIR_7] = { .species = SPECIES_GARDEVOIR, .moves = {MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_WILL_O_WISP, MOVE_DESTINY_BOND}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_BOLD }, [FRONTIER_MON_GARDEVOIR_8] = { .species = SPECIES_GARDEVOIR, .moves = {MOVE_PSYCHIC, MOVE_MAGICAL_LEAF, MOVE_ATTRACT, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_STARMIE_5] = { .species = SPECIES_STARMIE, .moves = {MOVE_SURF, MOVE_PSYCHIC, MOVE_RECOVER, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_STARMIE_6] = { .species = SPECIES_STARMIE, .moves = {MOVE_SURF, MOVE_CONFUSE_RAY, MOVE_THUNDER_WAVE, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_CALM }, [FRONTIER_MON_STARMIE_7] = { .species = SPECIES_STARMIE, .moves = {MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_COSMIC_POWER, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_STARMIE_8] = { .species = SPECIES_STARMIE, .moves = {MOVE_SURF, MOVE_THUNDERBOLT, MOVE_COSMIC_POWER, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_LAPRAS_5] = { .species = SPECIES_LAPRAS, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_IRON_TAIL, MOVE_DOUBLE_EDGE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_LAPRAS_6] = { .species = SPECIES_LAPRAS, .moves = {MOVE_HYDRO_PUMP, MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_BLIZZARD}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_LAPRAS_7] = { .species = SPECIES_LAPRAS, .moves = {MOVE_SHEER_COLD, MOVE_HORN_DRILL, MOVE_REST, MOVE_SLEEP_TALK}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEPPA_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEPPA_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_CALM }, [FRONTIER_MON_LAPRAS_8] = { .species = SPECIES_LAPRAS, .moves = {MOVE_SHEER_COLD, MOVE_HORN_DRILL, MOVE_SING, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_CALM }, [FRONTIER_MON_SNORLAX_5] = { .species = SPECIES_SNORLAX, .moves = {MOVE_MEGA_KICK, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SNORLAX_6] = { .species = SPECIES_SNORLAX, .moves = {MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SNORLAX_7] = { .species = SPECIES_SNORLAX, .moves = {MOVE_HYPER_BEAM, MOVE_SHADOW_BALL, MOVE_EARTHQUAKE, MOVE_CURSE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SNORLAX_8] = { .species = SPECIES_SNORLAX, .moves = {MOVE_RETURN, MOVE_SHADOW_BALL, MOVE_BELLY_DRUM, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SALAMENCE_5] = { .species = SPECIES_SALAMENCE, .moves = {MOVE_FACADE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_DRAGON_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SALAMENCE_6] = { .species = SPECIES_SALAMENCE, .moves = {MOVE_HEADBUTT, MOVE_AERIAL_ACE, MOVE_CRUNCH, MOVE_DRAGON_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_HARDY }, [FRONTIER_MON_SALAMENCE_7] = { .species = SPECIES_SALAMENCE, .moves = {MOVE_FLAMETHROWER, MOVE_DRAGON_CLAW, MOVE_CRUNCH, MOVE_BRICK_BREAK}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_SALAMENCE_8] = { .species = SPECIES_SALAMENCE, .moves = {MOVE_FLAMETHROWER, MOVE_DRAGON_CLAW, MOVE_CRUNCH, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_METAGROSS_5] = { .species = SPECIES_METAGROSS, .moves = {MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 170, 0, 0), .nature = NATURE_JOLLY }, [FRONTIER_MON_METAGROSS_6] = { .species = SPECIES_METAGROSS, .moves = {MOVE_METEOR_MASH, MOVE_PSYCHIC, MOVE_ICE_PUNCH, MOVE_THUNDER_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_METAGROSS_7] = { .species = SPECIES_METAGROSS, .moves = {MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_ICE_PUNCH, MOVE_THUNDER_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_METAGROSS_8] = { .species = SPECIES_METAGROSS, .moves = {MOVE_METEOR_MASH, MOVE_EARTHQUAKE, MOVE_BRICK_BREAK, MOVE_EXPLOSION}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 170, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_REGIROCK_5] = { .species = SPECIES_REGIROCK, .moves = {MOVE_HYPER_BEAM, MOVE_FOCUS_PUNCH, MOVE_ROCK_SLIDE, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_REGIROCK_6] = { .species = SPECIES_REGIROCK, .moves = {MOVE_SWAGGER, MOVE_PSYCH_UP, MOVE_ROCK_SLIDE, MOVE_EXPLOSION}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_REGICE_5] = { .species = SPECIES_REGICE, .moves = {MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_CURSE, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_BRAVE }, [FRONTIER_MON_REGICE_6] = { .species = SPECIES_REGICE, .moves = {MOVE_ICE_BEAM, MOVE_THUNDERBOLT, MOVE_SLEEP_TALK, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_REGISTEEL_5] = { .species = SPECIES_REGISTEEL, .moves = {MOVE_FOCUS_PUNCH, MOVE_SUBSTITUTE, MOVE_TOXIC, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_REGISTEEL_6] = { .species = SPECIES_REGISTEEL, .moves = {MOVE_SUPERPOWER, MOVE_AERIAL_ACE, MOVE_SWAGGER, MOVE_PSYCH_UP}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_LATIAS_5] = { .species = SPECIES_LATIAS, .moves = {MOVE_DRAGON_CLAW, MOVE_THUNDER_WAVE, MOVE_CALM_MIND, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_MODEST }, [FRONTIER_MON_LATIAS_6] = { .species = SPECIES_LATIAS, .moves = {MOVE_MIST_BALL, MOVE_DRAGON_CLAW, MOVE_ATTRACT, MOVE_THUNDER_WAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_LATIAS_7] = { .species = SPECIES_LATIAS, .moves = {MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_SWAGGER, MOVE_PSYCH_UP}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_LATIAS_8] = { .species = SPECIES_LATIAS, .moves = {MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_LATIOS_5] = { .species = SPECIES_LATIOS, .moves = {MOVE_DRAGON_CLAW, MOVE_THUNDER_WAVE, MOVE_CALM_MIND, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_MODEST }, [FRONTIER_MON_LATIOS_6] = { .species = SPECIES_LATIOS, .moves = {MOVE_LUSTER_PURGE, MOVE_SHADOW_BALL, MOVE_DRAGON_CLAW, MOVE_THUNDER_WAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_LATIOS_7] = { .species = SPECIES_LATIOS, .moves = {MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_DRAGON_DANCE, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_LATIOS_8] = { .species = SPECIES_LATIOS, .moves = {MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_DRAGONITE_1] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, MOVE_DRAGON_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_DRAGONITE_2] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_EARTHQUAKE, MOVE_DOUBLE_EDGE, MOVE_AERIAL_ACE, MOVE_DRAGON_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_DRAGONITE_3] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_HYPER_BEAM, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_THUNDER_WAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 170, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_DRAGONITE_4] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_HYPER_BEAM, MOVE_THUNDER_WAVE, MOVE_DRAGON_DANCE, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_DRAGONITE_5] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_OUTRAGE, MOVE_DOUBLE_EDGE, MOVE_THUNDER_WAVE, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_DRAGONITE_6] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_DRAGON_CLAW, MOVE_THUNDERBOLT, MOVE_SURF, MOVE_FLAMETHROWER}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_DRAGONITE_7] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_DRAGON_CLAW, MOVE_THUNDERBOLT, MOVE_SURF, MOVE_ICE_BEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_DRAGONITE_8] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_DRAGON_CLAW, MOVE_FLAMETHROWER, MOVE_ICE_BEAM, MOVE_BRICK_BREAK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_DRAGONITE_9] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_THUNDER, MOVE_SURF, MOVE_RAIN_DANCE, MOVE_EARTHQUAKE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_DRAGONITE_10] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_FIRE_BLAST, MOVE_BLIZZARD, MOVE_SUNNY_DAY, MOVE_EARTHQUAKE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_TYRANITAR_1] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_THUNDERBOLT, MOVE_SURF}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_TYRANITAR_2] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_CRUNCH, MOVE_THUNDERBOLT}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_TYRANITAR_3] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_COUNTER, MOVE_DRAGON_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_TYRANITAR_4] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_CRUNCH, MOVE_ICE_BEAM, MOVE_THUNDERBOLT, MOVE_FLAMETHROWER}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_TYRANITAR_5] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_DRAGON_DANCE, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_TYRANITAR_6] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_CURSE, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_TYRANITAR_7] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_ROCK_SLIDE, MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, MOVE_CURSE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_TYRANITAR_8] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_ROCK_SLIDE, MOVE_THUNDER_WAVE, MOVE_DRAGON_DANCE, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_TYRANITAR_9] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_CRUNCH, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_TYRANITAR_10] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_DRAGON_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_ARTICUNO_5] = { .species = SPECIES_ARTICUNO, .moves = {MOVE_BLIZZARD, MOVE_DOUBLE_EDGE, MOVE_AGILITY, MOVE_SWAGGER}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_ARTICUNO_6] = { .species = SPECIES_ARTICUNO, .moves = {MOVE_ICE_BEAM, MOVE_AERIAL_ACE, MOVE_REFLECT, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_ZAPDOS_5] = { .species = SPECIES_ZAPDOS, .moves = {MOVE_THUNDERBOLT, MOVE_DRILL_PECK, MOVE_DOUBLE_EDGE, MOVE_THUNDER_WAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_ZAPDOS_6] = { .species = SPECIES_ZAPDOS, .moves = {MOVE_THUNDER, MOVE_DRILL_PECK, MOVE_RAIN_DANCE, MOVE_DOUBLE_EDGE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MOLTRES_5] = { .species = SPECIES_MOLTRES, .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_FACADE}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MOLTRES_6] = { .species = SPECIES_MOLTRES, .moves = {MOVE_OVERHEAT, MOVE_DOUBLE_EDGE, MOVE_AERIAL_ACE, MOVE_STEEL_WING}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_RAIKOU_5] = { .species = SPECIES_RAIKOU, .moves = {MOVE_THUNDERBOLT, MOVE_DOUBLE_EDGE, MOVE_ROAR, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_RAIKOU_6] = { .species = SPECIES_RAIKOU, .moves = {MOVE_THUNDERBOLT, MOVE_CALM_MIND, MOVE_SUBSTITUTE, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_ENTEI_5] = { .species = SPECIES_ENTEI, .moves = {MOVE_FIRE_BLAST, MOVE_DOUBLE_EDGE, MOVE_ENDURE, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_DOCILE }, [FRONTIER_MON_ENTEI_6] = { .species = SPECIES_ENTEI, .moves = {MOVE_FLAMETHROWER, MOVE_CALM_MIND, MOVE_ROAR, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_MODEST }, [FRONTIER_MON_SUICUNE_5] = { .species = SPECIES_SUICUNE, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_CALM_MIND, MOVE_ICY_WIND}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_SUICUNE_6] = { .species = SPECIES_SUICUNE, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_CALM_MIND, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_MODEST } }; diff --git a/src/data/battle_frontier/battle_tent.h b/src/data/battle_frontier/battle_tent.h index 46598b2120..4ee203ea90 100644 --- a/src/data/battle_frontier/battle_tent.h +++ b/src/data/battle_frontier/battle_tent.h @@ -751,496 +751,496 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[NUM_BATTLE_TENT_ } }; -const struct FacilityMon gSlateportBattleTentMons[NUM_SLATEPORT_TENT_MONS] = +const struct TrainerMon gSlateportBattleTentMons[NUM_SLATEPORT_TENT_MONS] = { [SLATEPORT_TENT_MON_ZIGZAGOON_1] = { .species = SPECIES_ZIGZAGOON, .moves = {MOVE_TACKLE, MOVE_CHARM, MOVE_ODOR_SLEUTH, MOVE_PIN_MISSILE}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHOICE_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_JOLLY }, [SLATEPORT_TENT_MON_ZIGZAGOON_2] = { .species = SPECIES_ZIGZAGOON, .moves = {MOVE_DIG, MOVE_MUD_SPORT, MOVE_TAIL_WHIP, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_JOLLY }, [SLATEPORT_TENT_MON_BEAUTIFLY] = { .species = SPECIES_BEAUTIFLY, .moves = {MOVE_STUN_SPORE, MOVE_MEGA_DRAIN, MOVE_GUST, MOVE_HARDEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [SLATEPORT_TENT_MON_DUSTOX] = { .species = SPECIES_DUSTOX, .moves = {MOVE_POISON_STING, MOVE_MOONLIGHT, MOVE_PROTECT, MOVE_GUST}, - .itemTableId = BATTLE_FRONTIER_ITEM_ORAN_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_ORAN_BERRY, + .ev = TRAINER_PARTY_EVS(128, 0, 128, 0, 128, 128), .nature = NATURE_MODEST }, [SLATEPORT_TENT_MON_WAILMER_1] = { .species = SPECIES_WAILMER, .moves = {MOVE_ROLLOUT, MOVE_CURSE, MOVE_GROWL, MOVE_WHIRLPOOL}, - .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_RAWST_BERRY, + .ev = TRAINER_PARTY_EVS(170, 170, 170, 0, 0, 0), .nature = NATURE_ADAMANT }, [SLATEPORT_TENT_MON_WAILMER_2] = { .species = SPECIES_WAILMER, .moves = {MOVE_ROLLOUT, MOVE_GROWL, MOVE_WHIRLPOOL, MOVE_WATER_PULSE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 170, 0), .nature = NATURE_MODEST }, [SLATEPORT_TENT_MON_MARILL_1] = { .species = SPECIES_MARILL, .moves = {MOVE_ROLLOUT, MOVE_DEFENSE_CURL, MOVE_TAIL_WHIP, MOVE_BUBBLE_BEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_IMPISH }, [SLATEPORT_TENT_MON_WINGULL_1] = { .species = SPECIES_WINGULL, .moves = {MOVE_SUPERSONIC, MOVE_GROWL, MOVE_WING_ATTACK, MOVE_STEEL_WING}, - .itemTableId = BATTLE_FRONTIER_ITEM_METAL_COAT, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_METAL_COAT, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_NAIVE }, [SLATEPORT_TENT_MON_PELIPPER_1] = { .species = SPECIES_PELIPPER, .moves = {MOVE_TWISTER, MOVE_WATER_SPORT, MOVE_GROWL, MOVE_WING_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_DRAGON_FANG, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_DRAGON_FANG, + .ev = TRAINER_PARTY_EVS(0, 0, 170, 0, 170, 170), .nature = NATURE_MODEST }, [SLATEPORT_TENT_MON_CACNEA_1] = { .species = SPECIES_CACNEA, .moves = {MOVE_SANDSTORM, MOVE_LEER, MOVE_LEECH_SEED, MOVE_PIN_MISSILE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SPEED, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 0, 0), .nature = NATURE_JOLLY }, [SLATEPORT_TENT_MON_LOMBRE_1] = { .species = SPECIES_LOMBRE, .moves = {MOVE_ASTONISH, MOVE_WATER_GUN, MOVE_FAKE_OUT, MOVE_ABSORB}, - .itemTableId = BATTLE_FRONTIER_ITEM_MIRACLE_SEED, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_MIRACLE_SEED, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [SLATEPORT_TENT_MON_LOTAD] = { .species = SPECIES_LOTAD, .moves = {MOVE_SYNTHESIS, MOVE_NATURE_POWER, MOVE_RAIN_DANCE, MOVE_MEGA_DRAIN}, - .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_MYSTIC_WATER, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 170, 0), .nature = NATURE_DOCILE }, [SLATEPORT_TENT_MON_SEEDOT] = { .species = SPECIES_SEEDOT, .moves = {MOVE_SUNNY_DAY, MOVE_SYNTHESIS, MOVE_LEECH_SEED, MOVE_BIDE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_TIMID }, [SLATEPORT_TENT_MON_NUZLEAF] = { .species = SPECIES_NUZLEAF, .moves = {MOVE_FAKE_OUT, MOVE_NATURE_POWER, MOVE_HARDEN, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_LONELY }, [SLATEPORT_TENT_MON_NINJASK_1] = { .species = SPECIES_NINJASK, .moves = {MOVE_FURY_CUTTER, MOVE_SCREECH, MOVE_SWORDS_DANCE, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(102, 0, 102, 102, 102, 102), .nature = NATURE_QUIRKY }, [SLATEPORT_TENT_MON_NINJASK_2] = { .species = SPECIES_NINJASK, .moves = {MOVE_FURY_CUTTER, MOVE_DOUBLE_TEAM, MOVE_SCREECH, MOVE_SAND_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SILVER_POWDER, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SILVER_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0), .nature = NATURE_NAUGHTY }, [SLATEPORT_TENT_MON_GRAVELER] = { .species = SPECIES_GRAVELER, .moves = {MOVE_MUD_SPORT, MOVE_BLOCK, MOVE_ROCK_TOMB, MOVE_MAGNITUDE}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 0, 170), .nature = NATURE_BRAVE }, [SLATEPORT_TENT_MON_BALTOY] = { .species = SPECIES_BALTOY, .moves = {MOVE_SELF_DESTRUCT, MOVE_ANCIENT_POWER, MOVE_PSYBEAM, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_NAIVE }, [SLATEPORT_TENT_MON_MIGHTYENA_1] = { .species = SPECIES_MIGHTYENA, .moves = {MOVE_BITE, MOVE_ROAR, MOVE_SWAGGER, MOVE_TACKLE}, - .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_GLASSES, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_BLACK_GLASSES, + .ev = TRAINER_PARTY_EVS(170, 0, 0, 170, 170, 0), .nature = NATURE_CALM }, [SLATEPORT_TENT_MON_MIGHTYENA_2] = { .species = SPECIES_MIGHTYENA, .moves = {MOVE_ODOR_SLEUTH, MOVE_HOWL, MOVE_SAND_ATTACK, MOVE_POISON_FANG}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_LONELY }, [SLATEPORT_TENT_MON_LINOONE] = { .species = SPECIES_LINOONE, .moves = {MOVE_HEADBUTT, MOVE_TICKLE, MOVE_TAIL_WHIP, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_MENTAL_HERB, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 0, 170), .nature = NATURE_JOLLY }, [SLATEPORT_TENT_MON_GOLDEEN] = { .species = SPECIES_GOLDEEN, .moves = {MOVE_WATER_SPORT, MOVE_HORN_ATTACK, MOVE_WATERFALL, MOVE_SUPERSONIC}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 0, 170, 0, 170, 170), .nature = NATURE_CALM }, [SLATEPORT_TENT_MON_ELECTRIKE_1] = { .species = SPECIES_ELECTRIKE, .moves = {MOVE_BITE, MOVE_SPARK, MOVE_ROAR, MOVE_FLASH}, - .itemTableId = BATTLE_FRONTIER_ITEM_MAGNET, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_MAGNET, + .ev = TRAINER_PARTY_EVS(0, 170, 170, 170, 0, 0), .nature = NATURE_MODEST }, [SLATEPORT_TENT_MON_VOLTORB] = { .species = SPECIES_VOLTORB, .moves = {MOVE_SPARK, MOVE_ROLLOUT, MOVE_CHARGE, MOVE_SCREECH}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 0, 252, 252), .nature = NATURE_MILD }, [SLATEPORT_TENT_MON_ARON_1] = { .species = SPECIES_ARON, .moves = {MOVE_DIG, MOVE_METAL_CLAW, MOVE_IRON_DEFENSE, MOVE_ENDEAVOR}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(170, 170, 170, 0, 0, 0), .nature = NATURE_NAUGHTY }, [SLATEPORT_TENT_MON_ARON_2] = { .species = SPECIES_ARON, .moves = {MOVE_MUD_SLAP, MOVE_IRON_TAIL, MOVE_HARDEN, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEPPA_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LEPPA_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 0, 0, 170, 170), .nature = NATURE_MODEST }, [SLATEPORT_TENT_MON_TRAPINCH_1] = { .species = SPECIES_TRAPINCH, .moves = {MOVE_BODY_SLAM, MOVE_FOCUS_ENERGY, MOVE_SAND_TOMB, MOVE_SAND_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_BRAVE }, [SLATEPORT_TENT_MON_CACNEA_2] = { .species = SPECIES_CACNEA, .moves = {MOVE_INGRAIN, MOVE_SANDSTORM, MOVE_POISON_STING, MOVE_DESTINY_BOND}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_TIMID }, [SLATEPORT_TENT_MON_TAILLOW] = { .species = SPECIES_TAILLOW, .moves = {MOVE_GROWL, MOVE_AERIAL_ACE, MOVE_AGILITY, MOVE_ENDEAVOR}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHARP_BEAK, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SHARP_BEAK, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [SLATEPORT_TENT_MON_SWELLOW] = { .species = SPECIES_SWELLOW, .moves = {MOVE_SUPERSONIC, MOVE_GROWL, MOVE_FOCUS_ENERGY, MOVE_PECK}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(170, 170, 170, 0, 0, 0), .nature = NATURE_IMPISH }, [SLATEPORT_TENT_MON_GOLBAT_1] = { .species = SPECIES_GOLBAT, .moves = {MOVE_ASTONISH, MOVE_GUST, MOVE_MEAN_LOOK, MOVE_CONFUSE_RAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_SPELL_TAG, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_SPELL_TAG, + .ev = TRAINER_PARTY_EVS(0, 0, 170, 170, 0, 170), .nature = NATURE_TIMID }, [SLATEPORT_TENT_MON_LOUDRED] = { .species = SPECIES_LOUDRED, .moves = {MOVE_ASTONISH, MOVE_SCREECH, MOVE_UPROAR, MOVE_SUPERSONIC}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(170, 170, 170, 0, 0, 0), .nature = NATURE_ADAMANT }, [SLATEPORT_TENT_MON_SPINDA] = { .species = SPECIES_SPINDA, .moves = {MOVE_DIZZY_PUNCH, MOVE_FEINT_ATTACK, MOVE_HYPNOSIS, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 170, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [SLATEPORT_TENT_MON_MAGNEMITE] = { .species = SPECIES_MAGNEMITE, .moves = {MOVE_METAL_SOUND, MOVE_SUPERSONIC, MOVE_THUNDER_WAVE, MOVE_SPARK}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_SERIOUS }, [SLATEPORT_TENT_MON_WHISMUR] = { .species = SPECIES_WHISMUR, .moves = {MOVE_REST, MOVE_SLEEP_TALK, MOVE_HOWL, MOVE_BODY_SLAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SILK_SCARF, + .ev = TRAINER_PARTY_EVS(128, 128, 128, 0, 0, 128), .nature = NATURE_ADAMANT }, [SLATEPORT_TENT_MON_MAKUHITA] = { .species = SPECIES_MAKUHITA, .moves = {MOVE_SAND_ATTACK, MOVE_KNOCK_OFF, MOVE_ARM_THRUST, MOVE_BELLY_DRUM}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [SLATEPORT_TENT_MON_NUMEL_1] = { .species = SPECIES_NUMEL, .moves = {MOVE_EMBER, MOVE_TAKE_DOWN, MOVE_GROWL, MOVE_FOCUS_ENERGY}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_MODEST }, [SLATEPORT_TENT_MON_BARBOACH] = { .species = SPECIES_BARBOACH, .moves = {MOVE_MAGNITUDE, MOVE_MUD_SPORT, MOVE_WATER_SPORT, MOVE_WATER_GUN}, - .itemTableId = BATTLE_FRONTIER_ITEM_SEA_INCENSE, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SEA_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_JOLLY }, [SLATEPORT_TENT_MON_TENTACOOL] = { .species = SPECIES_TENTACOOL, .moves = {MOVE_SCREECH, MOVE_BUBBLE_BEAM, MOVE_ACID, MOVE_BARRIER}, - .itemTableId = BATTLE_FRONTIER_ITEM_POISON_BARB, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_POISON_BARB, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [SLATEPORT_TENT_MON_VIGOROTH] = { .species = SPECIES_VIGOROTH, .moves = {MOVE_FOCUS_ENERGY, MOVE_FURY_SWIPES, MOVE_ENDURE, MOVE_YAWN}, - .itemTableId = BATTLE_FRONTIER_ITEM_AGUAV_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_AGUAV_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [SLATEPORT_TENT_MON_MAGIKARP] = { .species = SPECIES_MAGIKARP, .moves = {MOVE_TACKLE, MOVE_FLAIL, MOVE_SPLASH, MOVE_NONE}, - .itemTableId = BATTLE_FRONTIER_ITEM_DRAGON_SCALE, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_DRAGON_SCALE, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [SLATEPORT_TENT_MON_SEVIPER_1] = { .species = SPECIES_SEVIPER, .moves = {MOVE_LICK, MOVE_POISON_FANG, MOVE_GLARE, MOVE_WRAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_ADAMANT }, [SLATEPORT_TENT_MON_SOLROCK] = { .species = SPECIES_SOLROCK, .moves = {MOVE_ROCK_THROW, MOVE_HARDEN, MOVE_PSYWAVE, MOVE_TACKLE}, - .itemTableId = BATTLE_FRONTIER_ITEM_HARD_STONE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_HARD_STONE, + .ev = TRAINER_PARTY_EVS(0, 170, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [SLATEPORT_TENT_MON_KECLEON_1] = { .species = SPECIES_KECLEON, .moves = {MOVE_PSYBEAM, MOVE_SUBSTITUTE, MOVE_THIEF, MOVE_TAIL_WHIP}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(170, 0, 0, 170, 170, 0), .nature = NATURE_MODEST }, [SLATEPORT_TENT_MON_KECLEON_2] = { .species = SPECIES_KECLEON, .moves = {MOVE_FEINT_ATTACK, MOVE_ASTONISH, MOVE_LICK, MOVE_SCREECH}, - .itemTableId = BATTLE_FRONTIER_ITEM_IAPAPA_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_IAPAPA_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_CALM }, [SLATEPORT_TENT_MON_SHROOMISH_1] = { .species = SPECIES_SHROOMISH, .moves = {MOVE_STUN_SPORE, MOVE_TACKLE, MOVE_LEECH_SEED, MOVE_MEGA_DRAIN}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [SLATEPORT_TENT_MON_SHROOMISH_2] = { .species = SPECIES_SHROOMISH, .moves = {MOVE_ABSORB, MOVE_STUN_SPORE, MOVE_SPORE, MOVE_LEECH_SEED}, - .itemTableId = BATTLE_FRONTIER_ITEM_FIGY_BERRY, - .evSpread = F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FIGY_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 0), .nature = NATURE_BRAVE }, [SLATEPORT_TENT_MON_LOMBRE_2] = { .species = SPECIES_LOMBRE, .moves = {MOVE_NATURE_POWER, MOVE_ASTONISH, MOVE_GROWL, MOVE_ABSORB}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_LONELY }, [SLATEPORT_TENT_MON_NUMEL_2] = { .species = SPECIES_NUMEL, .moves = {MOVE_EMBER, MOVE_GROWL, MOVE_EARTHQUAKE, MOVE_SUNNY_DAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHARCOAL, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_CHARCOAL, + .ev = TRAINER_PARTY_EVS(0, 0, 170, 0, 170, 170), .nature = NATURE_MODEST }, [SLATEPORT_TENT_MON_TRAPINCH_2] = { .species = SPECIES_TRAPINCH, .moves = {MOVE_FEINT_ATTACK, MOVE_DIG, MOVE_BITE, MOVE_QUICK_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_ASPEAR_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_ASPEAR_BERRY, + .ev = TRAINER_PARTY_EVS(170, 170, 170, 0, 0, 0), .nature = NATURE_BRAVE }, [SLATEPORT_TENT_MON_PELIPPER_2] = { .species = SPECIES_PELIPPER, .moves = {MOVE_WING_ATTACK, MOVE_SUPERSONIC, MOVE_MIST, MOVE_AGILITY}, - .itemTableId = BATTLE_FRONTIER_ITEM_WIKI_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_WIKI_BERRY, + .ev = TRAINER_PARTY_EVS(128, 0, 128, 128, 0, 128), .nature = NATURE_ADAMANT }, [SLATEPORT_TENT_MON_WINGULL_2] = { .species = SPECIES_WINGULL, .moves = {MOVE_WATER_GUN, MOVE_SUPERSONIC, MOVE_GROWL, MOVE_ICY_WIND}, - .itemTableId = BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_NEVER_MELT_ICE, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [SLATEPORT_TENT_MON_MARILL_2] = { .species = SPECIES_MARILL, .moves = {MOVE_DOUBLE_EDGE, MOVE_RAIN_DANCE, MOVE_TAIL_WHIP, MOVE_WATER_GUN}, - .itemTableId = BATTLE_FRONTIER_ITEM_GANLON_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_GANLON_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [SLATEPORT_TENT_MON_SKITTY] = { .species = SPECIES_SKITTY, .moves = {MOVE_ASSIST, MOVE_ATTRACT, MOVE_SING, MOVE_CHARM}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(170, 170, 170, 0, 0, 0), .nature = NATURE_CAREFUL }, [SLATEPORT_TENT_MON_SEVIPER_2] = { .species = SPECIES_SEVIPER, .moves = {MOVE_SWAGGER, MOVE_WRAP, MOVE_POISON_TAIL, MOVE_HAZE}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(0, 0, 170, 0, 170, 170), .nature = NATURE_BRAVE }, [SLATEPORT_TENT_MON_GOLBAT_2] = { .species = SPECIES_GOLBAT, .moves = {MOVE_BITE, MOVE_TORMENT, MOVE_SCREECH, MOVE_POISON_FANG}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_HARDY }, [SLATEPORT_TENT_MON_RALTS] = { .species = SPECIES_RALTS, .moves = {MOVE_HYPNOSIS, MOVE_IMPRISON, MOVE_PSYCHIC, MOVE_DREAM_EATER}, - .itemTableId = BATTLE_FRONTIER_ITEM_MAGO_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_MAGO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_TIMID }, [SLATEPORT_TENT_MON_SANDSHREW] = { .species = SPECIES_SANDSHREW, .moves = {MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_SAND_TOMB, MOVE_DEFENSE_CURL}, - .itemTableId = BATTLE_FRONTIER_ITEM_SOFT_SAND, - .evSpread = 0, + .heldItem = ITEM_SOFT_SAND, + .ev = NULL, .nature = NATURE_HARDY }, [SLATEPORT_TENT_MON_SWALOT] = { .species = SPECIES_SWALOT, .moves = {MOVE_YAWN, MOVE_SLUDGE, MOVE_ENCORE, MOVE_POUND}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(0, 170, 170, 0, 0, 170), .nature = NATURE_IMPISH }, [SLATEPORT_TENT_MON_VOLBEAT] = { .species = SPECIES_VOLBEAT, .moves = {MOVE_TACKLE, MOVE_CONFUSE_RAY, MOVE_QUICK_ATTACK, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_HARDY }, [SLATEPORT_TENT_MON_ILLUMISE] = { .species = SPECIES_ILLUMISE, .moves = {MOVE_CHARM, MOVE_TACKLE, MOVE_ENCORE, MOVE_MOONLIGHT}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 170, 0, 0), .nature = NATURE_ADAMANT }, [SLATEPORT_TENT_MON_KADABRA] = { .species = SPECIES_KADABRA, .moves = {MOVE_DISABLE, MOVE_CONFUSION, MOVE_REFLECT, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_QUIRKY }, [SLATEPORT_TENT_MON_KIRLIA] = { .species = SPECIES_KIRLIA, .moves = {MOVE_CALM_MIND, MOVE_CONFUSION, MOVE_DOUBLE_TEAM, MOVE_GROWL}, - .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_TWISTED_SPOON, + .ev = TRAINER_PARTY_EVS(128, 128, 128, 0, 0, 128), .nature = NATURE_CAREFUL }, [SLATEPORT_TENT_MON_BRELOOM] = { .species = SPECIES_BRELOOM, .moves = {MOVE_ABSORB, MOVE_TACKLE, MOVE_STUN_SPORE, MOVE_MEGA_DRAIN}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(170, 170, 170, 0, 0, 0), .nature = NATURE_NAIVE }, [SLATEPORT_TENT_MON_PLUSLE_1] = { .species = SPECIES_PLUSLE, .moves = {MOVE_SPARK, MOVE_ENCORE, MOVE_THUNDER_WAVE, MOVE_GROWL}, - .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LIECHI_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_LONELY }, [SLATEPORT_TENT_MON_PLUSLE_2] = { .species = SPECIES_PLUSLE, .moves = {MOVE_SPARK, MOVE_FAKE_TEARS, MOVE_SUBSTITUTE, MOVE_QUICK_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PECHA_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MILD }, [SLATEPORT_TENT_MON_ELECTRIKE_2] = { .species = SPECIES_ELECTRIKE, .moves = {MOVE_SPARK, MOVE_CHARGE, MOVE_ROAR, MOVE_THUNDER_WAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_APICOT_BERRY, - .evSpread = F_EV_SPREAD_SPEED, + .heldItem = ITEM_APICOT_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 0, 0), .nature = NATURE_TIMID }, [SLATEPORT_TENT_MON_SWABLU] = { .species = SPECIES_SWABLU, .moves = {MOVE_SING, MOVE_PECK, MOVE_STEEL_WING, MOVE_SAFEGUARD}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_JOLLY }, [SLATEPORT_TENT_MON_MACHOP] = { .species = SPECIES_MACHOP, .moves = {MOVE_FOCUS_ENERGY, MOVE_VITAL_THROW, MOVE_SEISMIC_TOSS, MOVE_FORESIGHT}, - .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_BELT, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BLACK_BELT, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [SLATEPORT_TENT_MON_MACHOKE] = { .species = SPECIES_MACHOKE, .moves = {MOVE_FOCUS_ENERGY, MOVE_LEER, MOVE_KARATE_CHOP, MOVE_FORESIGHT}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_MODEST } }; @@ -1804,321 +1804,321 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[NUM_BATTLE_TENT } }; -const struct FacilityMon gVerdanturfBattleTentMons[NUM_VERDANTURF_TENT_MONS] = +const struct TrainerMon gVerdanturfBattleTentMons[NUM_VERDANTURF_TENT_MONS] = { [VERDANTURF_TENT_MON_POOCHYENA] = { .species = SPECIES_POOCHYENA, .moves = {MOVE_ROAR, MOVE_THIEF, MOVE_BITE, MOVE_HOWL}, - .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_GLASSES, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BLACK_GLASSES, + .ev = TRAINER_PARTY_EVS(102, 102, 102, 102, 0, 102), .nature = NATURE_NAUGHTY }, [VERDANTURF_TENT_MON_ZIGZAGOON] = { .species = SPECIES_ZIGZAGOON, .moves = {MOVE_COVET, MOVE_GROWL, MOVE_PIN_MISSILE, MOVE_MUD_SPORT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [VERDANTURF_TENT_MON_DUSTOX] = { .species = SPECIES_DUSTOX, .moves = {MOVE_CONFUSION, MOVE_MOONLIGHT, MOVE_PROTECT, MOVE_FLASH}, - .itemTableId = BATTLE_FRONTIER_ITEM_SILVER_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_SILVER_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 170, 170, 170, 0), .nature = NATURE_MODEST }, [VERDANTURF_TENT_MON_TAILLOW] = { .species = SPECIES_TAILLOW, .moves = {MOVE_AGILITY, MOVE_DOUBLE_TEAM, MOVE_WING_ATTACK, MOVE_GROWL}, - .itemTableId = BATTLE_FRONTIER_ITEM_ORAN_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_ORAN_BERRY, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 170, 0, 0), .nature = NATURE_RELAXED }, [VERDANTURF_TENT_MON_SHROOMISH] = { .species = SPECIES_SHROOMISH, .moves = {MOVE_HEADBUTT, MOVE_STUN_SPORE, MOVE_LEECH_SEED, MOVE_FLASH}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_RASH }, [VERDANTURF_TENT_MON_MACHOP] = { .species = SPECIES_MACHOP, .moves = {MOVE_LOW_KICK, MOVE_LEER, MOVE_FOCUS_ENERGY, MOVE_ENCORE}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 170, 170, 170, 0, 0), .nature = NATURE_LONELY }, [VERDANTURF_TENT_MON_MAGIKARP] = { .species = SPECIES_MAGIKARP, .moves = {MOVE_SPLASH, MOVE_FLAIL, MOVE_TACKLE, MOVE_NONE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF, - .evSpread = F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SILK_SCARF, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 0), .nature = NATURE_HARDY }, [VERDANTURF_TENT_MON_BARBOACH] = { .species = SPECIES_BARBOACH, .moves = {MOVE_MUD_SLAP, MOVE_WATER_GUN, MOVE_RAIN_DANCE, MOVE_SPARK}, - .itemTableId = BATTLE_FRONTIER_ITEM_ASPEAR_BERRY, - .evSpread = F_EV_SPREAD_SPEED, + .heldItem = ITEM_ASPEAR_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 0, 0), .nature = NATURE_HASTY }, [VERDANTURF_TENT_MON_WINGULL] = { .species = SPECIES_WINGULL, .moves = {MOVE_ATTRACT, MOVE_TWISTER, MOVE_WING_ATTACK, MOVE_SUPERSONIC}, - .itemTableId = BATTLE_FRONTIER_ITEM_DRAGON_FANG, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_DRAGON_FANG, + .ev = TRAINER_PARTY_EVS(0, 170, 170, 0, 0, 170), .nature = NATURE_IMPISH }, [VERDANTURF_TENT_MON_ARON_1] = { .species = SPECIES_ARON, .moves = {MOVE_ENDEAVOR, MOVE_METAL_CLAW, MOVE_TACKLE, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_PECHA_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0), .nature = NATURE_HARDY }, [VERDANTURF_TENT_MON_NUMEL_1] = { .species = SPECIES_NUMEL, .moves = {MOVE_EMBER, MOVE_ROCK_SLIDE, MOVE_ROLLOUT, MOVE_GROWL}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHARCOAL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHARCOAL, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_SASSY }, [VERDANTURF_TENT_MON_SWALOT] = { .species = SPECIES_SWALOT, .moves = {MOVE_YAWN, MOVE_SLUDGE, MOVE_ACID_ARMOR, MOVE_AMNESIA}, - .itemTableId = BATTLE_FRONTIER_ITEM_POISON_BARB, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_POISON_BARB, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_BOLD }, [VERDANTURF_TENT_MON_KECLEON] = { .species = SPECIES_KECLEON, .moves = {MOVE_SUBSTITUTE, MOVE_FEINT_ATTACK, MOVE_DOUBLE_TEAM, MOVE_BIND}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_QUIET }, [VERDANTURF_TENT_MON_BALTOY] = { .species = SPECIES_BALTOY, .moves = {MOVE_SANDSTORM, MOVE_FLASH, MOVE_SELF_DESTRUCT, MOVE_HARDEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 170, 170, 0, 0, 170), .nature = NATURE_NAUGHTY }, [VERDANTURF_TENT_MON_NINJASK] = { .species = SPECIES_NINJASK, .moves = {MOVE_DIG, MOVE_SCREECH, MOVE_SWORDS_DANCE, MOVE_LEECH_LIFE}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(102, 0, 102, 102, 102, 102), .nature = NATURE_SASSY }, [VERDANTURF_TENT_MON_MAKUHITA] = { .species = SPECIES_MAKUHITA, .moves = {MOVE_BULK_UP, MOVE_ARM_THRUST, MOVE_SMELLING_SALTS, MOVE_SAND_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0), .nature = NATURE_NAUGHTY }, [VERDANTURF_TENT_MON_SWABLU] = { .species = SPECIES_SWABLU, .moves = {MOVE_REFRESH, MOVE_SAFEGUARD, MOVE_ATTRACT, MOVE_MIRROR_MOVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MILD }, [VERDANTURF_TENT_MON_GOLDEEN_1] = { .species = SPECIES_GOLDEEN, .moves = {MOVE_WATERFALL, MOVE_MUD_SPORT, MOVE_SUPERSONIC, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_MYSTIC_WATER, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_GENTLE }, [VERDANTURF_TENT_MON_LOTAD] = { .species = SPECIES_LOTAD, .moves = {MOVE_GROWL, MOVE_WATER_GUN, MOVE_MEGA_DRAIN, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_IAPAPA_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_IAPAPA_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_QUIRKY }, [VERDANTURF_TENT_MON_NUMEL_2] = { .species = SPECIES_NUMEL, .moves = {MOVE_MAGNITUDE, MOVE_EMBER, MOVE_GROWL, MOVE_DEFENSE_CURL}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHARCOAL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHARCOAL, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_RELAXED }, [VERDANTURF_TENT_MON_LINOONE] = { .species = SPECIES_LINOONE, .moves = {MOVE_HEADBUTT, MOVE_TICKLE, MOVE_PROTECT, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(128, 128, 128, 0, 0, 128), .nature = NATURE_IMPISH }, [VERDANTURF_TENT_MON_SEVIPER] = { .species = SPECIES_SEVIPER, .moves = {MOVE_WRAP, MOVE_GLARE, MOVE_POISON_FANG, MOVE_SWAGGER}, - .itemTableId = BATTLE_FRONTIER_ITEM_ASPEAR_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_ASPEAR_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 0, 0, 170, 170), .nature = NATURE_LONELY }, [VERDANTURF_TENT_MON_SKARMORY] = { .species = SPECIES_SKARMORY, .moves = {MOVE_AIR_CUTTER, MOVE_SANDSTORM, MOVE_LEER, MOVE_AGILITY}, - .itemTableId = BATTLE_FRONTIER_ITEM_MACHO_BRACE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_MACHO_BRACE, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_BASHFUL }, [VERDANTURF_TENT_MON_SWELLOW] = { .species = SPECIES_SWELLOW, .moves = {MOVE_AGILITY, MOVE_WING_ATTACK, MOVE_DOUBLE_TEAM, MOVE_SUPERSONIC}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHARP_BEAK, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SHARP_BEAK, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_NAUGHTY }, [VERDANTURF_TENT_MON_GOLDEEN_2] = { .species = SPECIES_GOLDEEN, .moves = {MOVE_PECK, MOVE_SUPERSONIC, MOVE_PSYBEAM, MOVE_RAIN_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(170, 0, 0, 170, 170, 0), .nature = NATURE_GENTLE }, [VERDANTURF_TENT_MON_ELECTRIKE] = { .species = SPECIES_ELECTRIKE, .moves = {MOVE_SHOCK_WAVE, MOVE_TACKLE, MOVE_CHARGE, MOVE_THUNDER_WAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_MILD }, [VERDANTURF_TENT_MON_NUZLEAF] = { .species = SPECIES_NUZLEAF, .moves = {MOVE_SUNNY_DAY, MOVE_TORMENT, MOVE_FAKE_OUT, MOVE_THIEF}, - .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_GLASSES, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BLACK_GLASSES, + .ev = TRAINER_PARTY_EVS(128, 0, 128, 0, 128, 128), .nature = NATURE_BOLD }, [VERDANTURF_TENT_MON_ARON_2] = { .species = SPECIES_ARON, .moves = {MOVE_TAKE_DOWN, MOVE_METAL_CLAW, MOVE_IRON_DEFENSE, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_MODEST }, [VERDANTURF_TENT_MON_MIGHTYENA] = { .species = SPECIES_MIGHTYENA, .moves = {MOVE_HOWL, MOVE_TAKE_DOWN, MOVE_ODOR_SLEUTH, MOVE_SAND_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(170, 170, 170, 0, 0, 0), .nature = NATURE_QUIRKY }, [VERDANTURF_TENT_MON_SOLROCK] = { .species = SPECIES_SOLROCK, .moves = {MOVE_HARDEN, MOVE_FIRE_SPIN, MOVE_MIMIC, MOVE_PSYWAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_TWISTED_SPOON, + .ev = TRAINER_PARTY_EVS(0, 128, 128, 0, 128, 128), .nature = NATURE_ADAMANT }, [VERDANTURF_TENT_MON_GRAVELER] = { .species = SPECIES_GRAVELER, .moves = {MOVE_ROLLOUT, MOVE_ROCK_SMASH, MOVE_SANDSTORM, MOVE_BLOCK}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0), .nature = NATURE_IMPISH }, [VERDANTURF_TENT_MON_KADABRA] = { .species = SPECIES_KADABRA, .moves = {MOVE_ENCORE, MOVE_PSYBEAM, MOVE_DISABLE, MOVE_KINESIS}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(170, 0, 0, 170, 170, 0), .nature = NATURE_QUIET }, [VERDANTURF_TENT_MON_VOLTORB] = { .species = SPECIES_VOLTORB, .moves = {MOVE_PROTECT, MOVE_SELF_DESTRUCT, MOVE_SPARK, MOVE_SCREECH}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_BASHFUL }, [VERDANTURF_TENT_MON_MAGNEMITE] = { .species = SPECIES_MAGNEMITE, .moves = {MOVE_METAL_SOUND, MOVE_SUPERSONIC, MOVE_THUNDER_WAVE, MOVE_SHOCK_WAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_MAGNET, - .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, + .heldItem = ITEM_MAGNET, + .ev = TRAINER_PARTY_EVS(84, 84, 84, 84, 84, 84), .nature = NATURE_SERIOUS }, [VERDANTURF_TENT_MON_PELIPPER] = { .species = SPECIES_PELIPPER, .moves = {MOVE_WING_ATTACK, MOVE_MIST, MOVE_AGILITY, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_FIGY_BERRY, - .evSpread = 0, + .heldItem = ITEM_FIGY_BERRY, + .ev = NULL, .nature = NATURE_BRAVE }, [VERDANTURF_TENT_MON_LOUDRED] = { .species = SPECIES_LOUDRED, .moves = {MOVE_HOWL, MOVE_UPROAR, MOVE_REST, MOVE_SCREECH}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_CALM }, [VERDANTURF_TENT_MON_MARILL] = { .species = SPECIES_MARILL, .moves = {MOVE_ROLLOUT, MOVE_DEFENSE_CURL, MOVE_TAIL_WHIP, MOVE_BUBBLE_BEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_RAWST_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_JOLLY }, [VERDANTURF_TENT_MON_TRAPINCH] = { .species = SPECIES_TRAPINCH, .moves = {MOVE_DIG, MOVE_ROCK_TOMB, MOVE_SANDSTORM, MOVE_FEINT_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 170, 0, 0), .nature = NATURE_NAUGHTY }, [VERDANTURF_TENT_MON_TENTACOOL] = { .species = SPECIES_TENTACOOL, .moves = {MOVE_SCREECH, MOVE_CONFUSE_RAY, MOVE_WRAP, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_RELAXED }, [VERDANTURF_TENT_MON_VIGOROTH] = { .species = SPECIES_VIGOROTH, .moves = {MOVE_ENCORE, MOVE_SLACK_OFF, MOVE_YAWN, MOVE_SECRET_POWER}, - .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_MENTAL_HERB, + .ev = TRAINER_PARTY_EVS(0, 170, 170, 0, 0, 170), .nature = NATURE_QUIRKY }, [VERDANTURF_TENT_MON_WAILMER] = { .species = SPECIES_WAILMER, .moves = {MOVE_WATER_PULSE, MOVE_ROLLOUT, MOVE_CURSE, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_HP, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 0), .nature = NATURE_RELAXED }, [VERDANTURF_TENT_MON_ILLUMISE] = { .species = SPECIES_ILLUMISE, .moves = {MOVE_TACKLE, MOVE_SWEET_SCENT, MOVE_WISH, MOVE_ENCORE}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_QUIRKY }, [VERDANTURF_TENT_MON_MACHOKE] = { .species = SPECIES_MACHOKE, .moves = {MOVE_LEER, MOVE_KARATE_CHOP, MOVE_BULK_UP, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_CALM }, [VERDANTURF_TENT_MON_WHISMUR] = { .species = SPECIES_WHISMUR, .moves = {MOVE_SECRET_POWER, MOVE_SUPERSONIC, MOVE_STOMP, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_RAWST_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_QUIRKY }, [VERDANTURF_TENT_MON_CACNEA] = { .species = SPECIES_CACNEA, .moves = {MOVE_INGRAIN, MOVE_LEECH_SEED, MOVE_NEEDLE_ARM, MOVE_GROWTH}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_SERIOUS } }; @@ -2685,321 +2685,321 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[NUM_BATTLE_TENT_ } }; -const struct FacilityMon gFallarborBattleTentMons[NUM_FALLARBOR_TENT_MONS] = +const struct TrainerMon gFallarborBattleTentMons[NUM_FALLARBOR_TENT_MONS] = { [FALLARBOR_TENT_MON_NUMEL] = { .species = SPECIES_NUMEL, .moves = {MOVE_GROWL, MOVE_FLAMETHROWER, MOVE_TACKLE, MOVE_SUNNY_DAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHARCOAL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHARCOAL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FALLARBOR_TENT_MON_LINOONE_1] = { .species = SPECIES_LINOONE, .moves = {MOVE_ODOR_SLEUTH, MOVE_COVET, MOVE_ROCK_SMASH, MOVE_CHARM}, - .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_SILK_SCARF, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_SASSY }, [FALLARBOR_TENT_MON_PLUSLE] = { .species = SPECIES_PLUSLE, .moves = {MOVE_SPARK, MOVE_GROWL, MOVE_QUICK_ATTACK, MOVE_FAKE_TEARS}, - .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_MENTAL_HERB, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FALLARBOR_TENT_MON_POOCHYENA] = { .species = SPECIES_POOCHYENA, .moves = {MOVE_YAWN, MOVE_ODOR_SLEUTH, MOVE_HOWL, MOVE_FRUSTRATION}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEPPA_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LEPPA_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_NAUGHTY }, [FALLARBOR_TENT_MON_KECLEON] = { .species = SPECIES_KECLEON, .moves = {MOVE_LICK, MOVE_SLASH, MOVE_FEINT_ATTACK, MOVE_PSYBEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_WIKI_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_WIKI_BERRY, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_MODEST }, [FALLARBOR_TENT_MON_MAGIKARP] = { .species = SPECIES_MAGIKARP, .moves = {MOVE_SPLASH, MOVE_TACKLE, MOVE_FLAIL, MOVE_NONE}, - .itemTableId = BATTLE_FRONTIER_ITEM_DRAGON_SCALE, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_DRAGON_SCALE, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FALLARBOR_TENT_MON_SOLROCK] = { .species = SPECIES_SOLROCK, .moves = {MOVE_ROCK_THROW, MOVE_FLASH, MOVE_SANDSTORM, MOVE_PSYWAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_HARD_STONE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_HARD_STONE, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_SASSY }, [FALLARBOR_TENT_MON_MAKUHITA] = { .species = SPECIES_MAKUHITA, .moves = {MOVE_DETECT, MOVE_ARM_THRUST, MOVE_FAKE_OUT, MOVE_SMELLING_SALTS}, - .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_BELT, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BLACK_BELT, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_ADAMANT }, [FALLARBOR_TENT_MON_MACHOKE] = { .species = SPECIES_MACHOKE, .moves = {MOVE_COUNTER, MOVE_REVENGE, MOVE_BULK_UP, MOVE_FOCUS_ENERGY}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_NAIVE }, [FALLARBOR_TENT_MON_NINCADA] = { .species = SPECIES_NINCADA, .moves = {MOVE_FURY_SWIPES, MOVE_ENDURE, MOVE_MUD_SLAP, MOVE_DIG}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_SERIOUS }, [FALLARBOR_TENT_MON_BEAUTIFLY] = { .species = SPECIES_BEAUTIFLY, .moves = {MOVE_FLASH, MOVE_MORNING_SUN, MOVE_HARDEN, MOVE_MEGA_DRAIN}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 128, 128, 128, 0, 128), .nature = NATURE_QUIRKY }, [FALLARBOR_TENT_MON_DUSTOX] = { .species = SPECIES_DUSTOX, .moves = {MOVE_MOONLIGHT, MOVE_HARDEN, MOVE_POISON_STING, MOVE_PSYBEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 0, 170, 170, 0, 170), .nature = NATURE_DOCILE }, [FALLARBOR_TENT_MON_ILLUMISE] = { .species = SPECIES_ILLUMISE, .moves = {MOVE_METRONOME, MOVE_FLATTER, MOVE_WISH, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0), .nature = NATURE_ADAMANT }, [FALLARBOR_TENT_MON_VOLBEAT] = { .species = SPECIES_VOLBEAT, .moves = {MOVE_TACKLE, MOVE_MOONLIGHT, MOVE_SIGNAL_BEAM, MOVE_TAIL_GLOW}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEPPA_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LEPPA_BERRY, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 0, 170), .nature = NATURE_ADAMANT }, [FALLARBOR_TENT_MON_NINJASK_1] = { .species = SPECIES_NINJASK, .moves = {MOVE_DOUBLE_TEAM, MOVE_PROTECT, MOVE_DIG, MOVE_SAND_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(128, 0, 128, 128, 0, 128), .nature = NATURE_TIMID }, [FALLARBOR_TENT_MON_NINJASK_2] = { .species = SPECIES_NINJASK, .moves = {MOVE_SWORDS_DANCE, MOVE_CUT, MOVE_FURY_CUTTER, MOVE_LEECH_LIFE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SILVER_POWDER, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SILVER_POWDER, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FALLARBOR_TENT_MON_ARON_1] = { .species = SPECIES_ARON, .moves = {MOVE_METAL_CLAW, MOVE_PROTECT, MOVE_SHOCK_WAVE, MOVE_METAL_SOUND}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_LONELY }, [FALLARBOR_TENT_MON_ARON_2] = { .species = SPECIES_ARON, .moves = {MOVE_SECRET_POWER, MOVE_METAL_CLAW, MOVE_IRON_DEFENSE, MOVE_MUD_SLAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_GENTLE }, [FALLARBOR_TENT_MON_ELECTRIKE] = { .species = SPECIES_ELECTRIKE, .moves = {MOVE_CRUNCH, MOVE_THUNDER_WAVE, MOVE_HOWL, MOVE_QUICK_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SEA_INCENSE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SEA_INCENSE, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_HASTY }, [FALLARBOR_TENT_MON_MAGNEMITE] = { .species = SPECIES_MAGNEMITE, .moves = {MOVE_THUNDER_WAVE, MOVE_SUPERSONIC, MOVE_ENDURE, MOVE_SPARK}, - .itemTableId = BATTLE_FRONTIER_ITEM_MAGNET, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_MAGNET, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FALLARBOR_TENT_MON_VOLTORB] = { .species = SPECIES_VOLTORB, .moves = {MOVE_CHARGE, MOVE_SPARK, MOVE_SCREECH, MOVE_SONIC_BOOM}, - .itemTableId = BATTLE_FRONTIER_ITEM_ASPEAR_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_ASPEAR_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FALLARBOR_TENT_MON_WHISMUR] = { .species = SPECIES_WHISMUR, .moves = {MOVE_REST, MOVE_SLEEP_TALK, MOVE_HYPER_VOICE, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 170, 0, 0), .nature = NATURE_ADAMANT }, [FALLARBOR_TENT_MON_LOUDRED] = { .species = SPECIES_LOUDRED, .moves = {MOVE_STOMP, MOVE_REST, MOVE_SCREECH, MOVE_UPROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FALLARBOR_TENT_MON_LINOONE_2] = { .species = SPECIES_LINOONE, .moves = {MOVE_FURY_SWIPES, MOVE_SAND_ATTACK, MOVE_SHOCK_WAVE, MOVE_GROWL}, - .itemTableId = BATTLE_FRONTIER_ITEM_MAGNET, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_MAGNET, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FALLARBOR_TENT_MON_MIGHTYENA] = { .species = SPECIES_MIGHTYENA, .moves = {MOVE_SAND_ATTACK, MOVE_HOWL, MOVE_SWAGGER, MOVE_SECRET_POWER}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 170, 0, 0), .nature = NATURE_JOLLY }, [FALLARBOR_TENT_MON_SWABLU] = { .species = SPECIES_SWABLU, .moves = {MOVE_TAKE_DOWN, MOVE_SING, MOVE_GROWL, MOVE_SAFEGUARD}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_QUIRKY }, [FALLARBOR_TENT_MON_SKARMORY] = { .species = SPECIES_SKARMORY, .moves = {MOVE_AGILITY, MOVE_STEEL_WING, MOVE_SAND_ATTACK, MOVE_TORMENT}, - .itemTableId = BATTLE_FRONTIER_ITEM_METAL_COAT, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_METAL_COAT, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 0, 170), .nature = NATURE_BOLD }, [FALLARBOR_TENT_MON_GOLBAT] = { .species = SPECIES_GOLBAT, .moves = {MOVE_CONFUSE_RAY, MOVE_BITE, MOVE_DOUBLE_TEAM, MOVE_SUBSTITUTE}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_BOLD }, [FALLARBOR_TENT_MON_WINGULL] = { .species = SPECIES_WINGULL, .moves = {MOVE_WING_ATTACK, MOVE_HAIL, MOVE_DOUBLE_TEAM, MOVE_SUPERSONIC}, - .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_RAWST_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FALLARBOR_TENT_MON_PELIPPER] = { .species = SPECIES_PELIPPER, .moves = {MOVE_TWISTER, MOVE_ICY_WIND, MOVE_DOUBLE_TEAM, MOVE_WATER_GUN}, - .itemTableId = BATTLE_FRONTIER_ITEM_DRAGON_FANG, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_DRAGON_FANG, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FALLARBOR_TENT_MON_BARBOACH] = { .species = SPECIES_BARBOACH, .moves = {MOVE_SPARK, MOVE_WATER_GUN, MOVE_EARTHQUAKE, MOVE_WATER_SPORT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LIECHI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FALLARBOR_TENT_MON_WAILMER] = { .species = SPECIES_WAILMER, .moves = {MOVE_WATER_PULSE, MOVE_RAIN_DANCE, MOVE_SPLASH, MOVE_CURSE}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FALLARBOR_TENT_MON_MARILL] = { .species = SPECIES_MARILL, .moves = {MOVE_DEFENSE_CURL, MOVE_ROLLOUT, MOVE_BUBBLE_BEAM, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_HARD_STONE, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_HARD_STONE, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FALLARBOR_TENT_MON_GOLDEEN_1] = { .species = SPECIES_GOLDEEN, .moves = {MOVE_WATERFALL, MOVE_RAIN_DANCE, MOVE_FLAIL, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_GANLON_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_GANLON_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HASTY }, [FALLARBOR_TENT_MON_GOLDEEN_2] = { .species = SPECIES_GOLDEEN, .moves = {MOVE_SLEEP_TALK, MOVE_HORN_DRILL, MOVE_REST, MOVE_SUPERSONIC}, - .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_MENTAL_HERB, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_CAREFUL }, [FALLARBOR_TENT_MON_TRAPINCH] = { .species = SPECIES_TRAPINCH, .moves = {MOVE_RETURN, MOVE_SAND_ATTACK, MOVE_ATTRACT, MOVE_STRENGTH}, - .itemTableId = BATTLE_FRONTIER_ITEM_MAGO_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_MAGO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FALLARBOR_TENT_MON_BALTOY] = { .species = SPECIES_BALTOY, .moves = {MOVE_SELF_DESTRUCT, MOVE_SANDSTORM, MOVE_RAPID_SPIN, MOVE_MIMIC}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 0, 170), .nature = NATURE_JOLLY }, [FALLARBOR_TENT_MON_GRAVELER] = { .species = SPECIES_GRAVELER, .moves = {MOVE_ROCK_BLAST, MOVE_DEFENSE_CURL, MOVE_MAGNITUDE, MOVE_MUD_SPORT}, - .itemTableId = BATTLE_FRONTIER_ITEM_HARD_STONE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_HARD_STONE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FALLARBOR_TENT_MON_SANDSHREW] = { .species = SPECIES_SANDSHREW, .moves = {MOVE_SAND_TOMB, MOVE_SANDSTORM, MOVE_DOUBLE_TEAM, MOVE_FOCUS_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_SOFT_SAND, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SOFT_SAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_JOLLY }, [FALLARBOR_TENT_MON_SWALOT] = { .species = SPECIES_SWALOT, .moves = {MOVE_YAWN, MOVE_ENCORE, MOVE_BULLET_SEED, MOVE_SLUDGE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_BRAVE }, [FALLARBOR_TENT_MON_SHROOMISH] = { .species = SPECIES_SHROOMISH, .moves = {MOVE_HEADBUTT, MOVE_SPORE, MOVE_SWAGGER, MOVE_LEECH_SEED}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_IMPISH }, [FALLARBOR_TENT_MON_KIRLIA] = { .species = SPECIES_KIRLIA, .moves = {MOVE_HYPNOSIS, MOVE_GROWL, MOVE_ATTRACT, MOVE_DREAM_EATER}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FALLARBOR_TENT_MON_LOMBRE] = { .species = SPECIES_LOMBRE, .moves = {MOVE_NATURE_POWER, MOVE_WATER_GUN, MOVE_RAIN_DANCE, MOVE_FLASH}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_BASHFUL }, [FALLARBOR_TENT_MON_NUZLEAF] = { .species = SPECIES_NUZLEAF, .moves = {MOVE_NATURE_POWER, MOVE_TORMENT, MOVE_SWAGGER, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FALLARBOR_TENT_MON_CACNEA] = { .species = SPECIES_CACNEA, .moves = {MOVE_SANDSTORM, MOVE_NEEDLE_ARM, MOVE_TEETER_DANCE, MOVE_LEECH_SEED}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(128, 0, 128, 128, 0, 128), .nature = NATURE_ADAMANT } }; diff --git a/src/data/battle_move_effects.h b/src/data/battle_move_effects.h index 4cf54b0370..52efcb1212 100644 --- a/src/data/battle_move_effects.h +++ b/src/data/battle_move_effects.h @@ -1429,7 +1429,7 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = .battleTvScore = 0, // TODO: Assign points }, - [EFFECT_FREEZE_DRY] = + [EFFECT_SUPER_EFFECTIVE_ON_ARG] = { .battleScript = BattleScript_EffectHit, .battleTvScore = 0, // TODO: Assign points diff --git a/src/data/graphics/pokemon.h b/src/data/graphics/pokemon.h index cd83579489..667d60a116 100644 --- a/src/data/graphics/pokemon.h +++ b/src/data/graphics/pokemon.h @@ -621,6 +621,11 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #endif //OW_FOLLOWERS_ENABLED #endif //P_GIGANTAMAX_FORMS + const u8 gMonIcon_PikachuPartner[] = INCBIN_U8("graphics/pokemon/pikachu/partner/icon.4bpp"); + #if P_CUSTOM_GENDER_DIFF_ICONS + const u8 gMonIcon_PikachuPartnerF[] = INCBIN_U8("graphics/pokemon/pikachu/partner/iconf.4bpp"); + #endif + const u32 gMonFrontPic_Raichu[] = INCBIN_U32("graphics/pokemon/raichu/anim_front.4bpp.lz"); const u32 gMonPalette_Raichu[] = INCBIN_U32("graphics/pokemon/raichu/normal.gbapal.lz"); const u32 gMonBackPic_Raichu[] = INCBIN_U32("graphics/pokemon/raichu/back.4bpp.lz"); @@ -2957,6 +2962,11 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #endif //OW_FOLLOWERS_ENABLED #endif //P_GIGANTAMAX_FORMS + const u8 gMonIcon_EeveePartner[] = INCBIN_U8("graphics/pokemon/eevee/partner/icon.4bpp"); + #if P_CUSTOM_GENDER_DIFF_ICONS + const u8 gMonIcon_EeveePartnerF[] = INCBIN_U8("graphics/pokemon/eevee/partner/iconf.4bpp"); + #endif + const u32 gMonFrontPic_Vaporeon[] = INCBIN_U32("graphics/pokemon/vaporeon/anim_front.4bpp.lz"); const u32 gMonPalette_Vaporeon[] = INCBIN_U32("graphics/pokemon/vaporeon/normal.gbapal.lz"); const u32 gMonBackPic_Vaporeon[] = INCBIN_U32("graphics/pokemon/vaporeon/back.4bpp.lz"); @@ -4640,7 +4650,7 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonPalette_UrsalunaBloodmoon[] = INCBIN_U32("graphics/pokemon/ursaluna/bloodmoon/normal.gbapal.lz"); const u32 gMonBackPic_UrsalunaBloodmoon[] = INCBIN_U32("graphics/pokemon/ursaluna/bloodmoon/back.4bpp.lz"); const u32 gMonShinyPalette_UrsalunaBloodmoon[] = INCBIN_U32("graphics/pokemon/ursaluna/bloodmoon/shiny.gbapal.lz"); - // const u8 gMonIcon_UrsalunaBloodmoon[] = INCBIN_U8("graphics/pokemon/ursaluna/bloodmoon/icon.4bpp"); + const u8 gMonIcon_UrsalunaBloodmoon[] = INCBIN_U8("graphics/pokemon/ursaluna/bloodmoon/icon.4bpp"); #if OW_FOLLOWERS_ENABLED const u32 gObjectEventPic_UrsalunaBloodmoon[] = INCBIN_COMP("graphics/pokemon/ursaluna/bloodmoon/follower.4bpp"); #endif //OW_FOLLOWERS_ENABLED @@ -8614,13 +8624,13 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #if P_FAMILY_ARCEUS const u32 gMonFrontPic_Arceus[] = INCBIN_U32("graphics/pokemon/arceus/anim_front.4bpp.lz"); const u32 gMonBackPic_Arceus[] = INCBIN_U32("graphics/pokemon/arceus/back.4bpp.lz"); - const u8 gMonIcon_Arceus[] = INCBIN_U8("graphics/pokemon/arceus/icon.4bpp"); #if P_FOOTPRINTS const u8 gMonFootprint_Arceus[] = INCBIN_U8("graphics/pokemon/arceus/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonPalette_ArceusNormal[] = INCBIN_U32("graphics/pokemon/arceus/normal.gbapal.lz"); const u32 gMonShinyPalette_ArceusNormal[] = INCBIN_U32("graphics/pokemon/arceus/shiny.gbapal.lz"); + const u8 gMonIcon_ArceusNormal[] = INCBIN_U8("graphics/pokemon/arceus/icon.4bpp"); const u32 gMonPalette_ArceusFighting[] = INCBIN_U32("graphics/pokemon/arceus/fighting/normal.gbapal.lz"); const u32 gMonShinyPalette_ArceusFighting[] = INCBIN_U32("graphics/pokemon/arceus/fighting/shiny.gbapal.lz"); @@ -8673,6 +8683,25 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonPalette_ArceusFairy[] = INCBIN_U32("graphics/pokemon/arceus/fairy/normal.gbapal.lz"); const u32 gMonShinyPalette_ArceusFairy[] = INCBIN_U32("graphics/pokemon/arceus/fairy/shiny.gbapal.lz"); +#if P_ARCEUS_UNIQUE_FORM_ICONS >= GEN_9 + const u8 gMonIcon_ArceusFighting[] = INCBIN_U8("graphics/pokemon/arceus/fighting/icon.4bpp"); + const u8 gMonIcon_ArceusFlying[] = INCBIN_U8("graphics/pokemon/arceus/flying/icon.4bpp"); + const u8 gMonIcon_ArceusPoison[] = INCBIN_U8("graphics/pokemon/arceus/poison/icon.4bpp"); + const u8 gMonIcon_ArceusGround[] = INCBIN_U8("graphics/pokemon/arceus/ground/icon.4bpp"); + const u8 gMonIcon_ArceusRock[] = INCBIN_U8("graphics/pokemon/arceus/rock/icon.4bpp"); + const u8 gMonIcon_ArceusBug[] = INCBIN_U8("graphics/pokemon/arceus/bug/icon.4bpp"); + const u8 gMonIcon_ArceusGhost[] = INCBIN_U8("graphics/pokemon/arceus/ghost/icon.4bpp"); + const u8 gMonIcon_ArceusSteel[] = INCBIN_U8("graphics/pokemon/arceus/steel/icon.4bpp"); + const u8 gMonIcon_ArceusFire[] = INCBIN_U8("graphics/pokemon/arceus/fire/icon.4bpp"); + const u8 gMonIcon_ArceusWater[] = INCBIN_U8("graphics/pokemon/arceus/water/icon.4bpp"); + const u8 gMonIcon_ArceusGrass[] = INCBIN_U8("graphics/pokemon/arceus/grass/icon.4bpp"); + const u8 gMonIcon_ArceusElectric[] = INCBIN_U8("graphics/pokemon/arceus/electric/icon.4bpp"); + const u8 gMonIcon_ArceusPsychic[] = INCBIN_U8("graphics/pokemon/arceus/psychic/icon.4bpp"); + const u8 gMonIcon_ArceusIce[] = INCBIN_U8("graphics/pokemon/arceus/ice/icon.4bpp"); + const u8 gMonIcon_ArceusDragon[] = INCBIN_U8("graphics/pokemon/arceus/dragon/icon.4bpp"); + const u8 gMonIcon_ArceusDark[] = INCBIN_U8("graphics/pokemon/arceus/dark/icon.4bpp"); + const u8 gMonIcon_ArceusFairy[] = INCBIN_U8("graphics/pokemon/arceus/fairy/icon.4bpp"); +#endif //P_ARCEUS_UNIQUE_FORM_ICONS #if OW_FOLLOWERS_ENABLED const u32 gObjectEventPic_ArceusNormal[] = INCBIN_COMP("graphics/pokemon/arceus/follower.4bpp"); const u32 gObjectEventPic_ArceusFighting[] = INCBIN_COMP("graphics/pokemon/arceus/follower.4bpp"); @@ -15154,7 +15183,7 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonPalette_Archaludon[] = INCBIN_U32("graphics/pokemon/archaludon/normal.gbapal.lz"); const u32 gMonBackPic_Archaludon[] = INCBIN_U32("graphics/pokemon/archaludon/back.4bpp.lz"); const u32 gMonShinyPalette_Archaludon[] = INCBIN_U32("graphics/pokemon/archaludon/shiny.gbapal.lz"); - // const u8 gMonIcon_Archaludon[] = INCBIN_U8("graphics/pokemon/archaludon/icon.4bpp"); + const u8 gMonIcon_Archaludon[] = INCBIN_U8("graphics/pokemon/archaludon/icon.4bpp"); #if P_FOOTPRINTS // const u8 gMonFootprint_Archaludon[] = INCBIN_U8("graphics/pokemon/archaludon/footprint.1bpp"); #endif //P_FOOTPRINTS @@ -16913,19 +16942,19 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonPalette_OgerponWellspringMask[] = INCBIN_U32("graphics/pokemon/ogerpon/wellspring/normal.gbapal.lz"); const u32 gMonBackPic_OgerponWellspringMask[] = INCBIN_U32("graphics/pokemon/ogerpon/wellspring/back.4bpp.lz"); const u32 gMonShinyPalette_OgerponWellspringMask[] = INCBIN_U32("graphics/pokemon/ogerpon/wellspring/shiny.gbapal.lz"); - // const u8 gMonIcon_OgerponWellspringMask[] = INCBIN_U8("graphics/pokemon/ogerpon/wellspring/icon.4bpp"); + const u8 gMonIcon_OgerponWellspringMask[] = INCBIN_U8("graphics/pokemon/ogerpon/wellspring/icon.4bpp"); const u32 gMonFrontPic_OgerponHearthflameMask[] = INCBIN_U32("graphics/pokemon/ogerpon/hearthflame/front.4bpp.lz"); const u32 gMonPalette_OgerponHearthflameMask[] = INCBIN_U32("graphics/pokemon/ogerpon/hearthflame/normal.gbapal.lz"); const u32 gMonBackPic_OgerponHearthflameMask[] = INCBIN_U32("graphics/pokemon/ogerpon/hearthflame/back.4bpp.lz"); const u32 gMonShinyPalette_OgerponHearthflameMask[] = INCBIN_U32("graphics/pokemon/ogerpon/hearthflame/shiny.gbapal.lz"); - // const u8 gMonIcon_OgerponHearthflameMask[] = INCBIN_U8("graphics/pokemon/ogerpon/hearthflame/icon.4bpp"); + const u8 gMonIcon_OgerponHearthflameMask[] = INCBIN_U8("graphics/pokemon/ogerpon/hearthflame/icon.4bpp"); const u32 gMonFrontPic_OgerponCornerstoneMask[] = INCBIN_U32("graphics/pokemon/ogerpon/cornerstone/front.4bpp.lz"); const u32 gMonPalette_OgerponCornerstoneMask[] = INCBIN_U32("graphics/pokemon/ogerpon/cornerstone/normal.gbapal.lz"); const u32 gMonBackPic_OgerponCornerstoneMask[] = INCBIN_U32("graphics/pokemon/ogerpon/cornerstone/back.4bpp.lz"); const u32 gMonShinyPalette_OgerponCornerstoneMask[] = INCBIN_U32("graphics/pokemon/ogerpon/cornerstone/shiny.gbapal.lz"); - // const u8 gMonIcon_OgerponCornerstoneMask[] = INCBIN_U8("graphics/pokemon/ogerpon/cornerstone/icon.4bpp"); + const u8 gMonIcon_OgerponCornerstoneMask[] = INCBIN_U8("graphics/pokemon/ogerpon/cornerstone/icon.4bpp"); // const u32 gMonFrontPic_OgerponTealMaskTera[] = INCBIN_U32("graphics/pokemon/ogerpon/tera/front.4bpp.lz"); // const u32 gMonPalette_OgerponTealMaskTera[] = INCBIN_U32("graphics/pokemon/ogerpon/tera/normal.gbapal.lz"); @@ -16960,7 +16989,7 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonPalette_GougingFire[] = INCBIN_U32("graphics/pokemon/gouging_fire/normal.gbapal.lz"); const u32 gMonBackPic_GougingFire[] = INCBIN_U32("graphics/pokemon/gouging_fire/back.4bpp.lz"); const u32 gMonShinyPalette_GougingFire[] = INCBIN_U32("graphics/pokemon/gouging_fire/shiny.gbapal.lz"); - // const u8 gMonIcon_GougingFire[] = INCBIN_U8("graphics/pokemon/gouging_fire/icon.4bpp"); + const u8 gMonIcon_GougingFire[] = INCBIN_U8("graphics/pokemon/gouging_fire/icon.4bpp"); #if P_FOOTPRINTS // const u8 gMonFootprint_GougingFire[] = INCBIN_U8("graphics/pokemon/gouging_fire/footprint.1bpp"); #endif //P_FOOTPRINTS @@ -16974,7 +17003,7 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonPalette_RagingBolt[] = INCBIN_U32("graphics/pokemon/raging_bolt/normal.gbapal.lz"); const u32 gMonBackPic_RagingBolt[] = INCBIN_U32("graphics/pokemon/raging_bolt/back.4bpp.lz"); const u32 gMonShinyPalette_RagingBolt[] = INCBIN_U32("graphics/pokemon/raging_bolt/shiny.gbapal.lz"); - // const u8 gMonIcon_RagingBolt[] = INCBIN_U8("graphics/pokemon/raging_bolt/icon.4bpp"); + const u8 gMonIcon_RagingBolt[] = INCBIN_U8("graphics/pokemon/raging_bolt/icon.4bpp"); #if P_FOOTPRINTS // const u8 gMonFootprint_RagingBolt[] = INCBIN_U8("graphics/pokemon/raging_bolt/footprint.1bpp"); #endif //P_FOOTPRINTS @@ -16988,7 +17017,7 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonPalette_IronBoulder[] = INCBIN_U32("graphics/pokemon/iron_boulder/normal.gbapal.lz"); const u32 gMonBackPic_IronBoulder[] = INCBIN_U32("graphics/pokemon/iron_boulder/back.4bpp.lz"); const u32 gMonShinyPalette_IronBoulder[] = INCBIN_U32("graphics/pokemon/iron_boulder/shiny.gbapal.lz"); - // const u8 gMonIcon_IronBoulder[] = INCBIN_U8("graphics/pokemon/iron_boulder/icon.4bpp"); + const u8 gMonIcon_IronBoulder[] = INCBIN_U8("graphics/pokemon/iron_boulder/icon.4bpp"); #if P_FOOTPRINTS // const u8 gMonFootprint_IronBoulder[] = INCBIN_U8("graphics/pokemon/iron_boulder/footprint.1bpp"); #endif //P_FOOTPRINTS @@ -17002,7 +17031,7 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ const u32 gMonPalette_IronCrown[] = INCBIN_U32("graphics/pokemon/iron_crown/normal.gbapal.lz"); const u32 gMonBackPic_IronCrown[] = INCBIN_U32("graphics/pokemon/iron_crown/back.4bpp.lz"); const u32 gMonShinyPalette_IronCrown[] = INCBIN_U32("graphics/pokemon/iron_crown/shiny.gbapal.lz"); - // const u8 gMonIcon_IronCrown[] = INCBIN_U8("graphics/pokemon/iron_crown/icon.4bpp"); + const u8 gMonIcon_IronCrown[] = INCBIN_U8("graphics/pokemon/iron_crown/icon.4bpp"); #if P_FOOTPRINTS // const u8 gMonFootprint_IronCrown[] = INCBIN_U8("graphics/pokemon/iron_crown/footprint.1bpp"); #endif //P_FOOTPRINTS @@ -17016,7 +17045,7 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ // const u32 gMonPalette_TerapagosNormal[] = INCBIN_U32("graphics/pokemon/terapagos/normal.gbapal.lz"); // const u32 gMonBackPic_TerapagosNormal[] = INCBIN_U32("graphics/pokemon/terapagos/back.4bpp.lz"); // const u32 gMonShinyPalette_TerapagosNormal[] = INCBIN_U32("graphics/pokemon/terapagos/shiny.gbapal.lz"); - // const u8 gMonIcon_TerapagosNormal[] = INCBIN_U8("graphics/pokemon/terapagos/icon.4bpp"); + const u8 gMonIcon_TerapagosNormal[] = INCBIN_U8("graphics/pokemon/terapagos/icon.4bpp"); #if P_FOOTPRINTS // const u8 gMonFootprint_Terapagos[] = INCBIN_U8("graphics/pokemon/terapagos/footprint.1bpp"); #endif //P_FOOTPRINTS @@ -17028,7 +17057,7 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ // const u32 gMonPalette_TerapagosTerastal[] = INCBIN_U32("graphics/pokemon/terapagos/terastal/normal.gbapal.lz"); // const u32 gMonBackPic_TerapagosTerastal[] = INCBIN_U32("graphics/pokemon/terapagos/terastal/back.4bpp.lz"); // const u32 gMonShinyPalette_TerapagosTerastal[] = INCBIN_U32("graphics/pokemon/terapagos/terastal/shiny.gbapal.lz"); - // const u8 gMonIcon_TerapagosTerastal[] = INCBIN_U8("graphics/pokemon/terapagos/terastal/icon.4bpp"); + const u8 gMonIcon_TerapagosTerastal[] = INCBIN_U8("graphics/pokemon/terapagos/terastal/icon.4bpp"); #if OW_FOLLOWERS_ENABLED // const u32 gObjectEventPic_TerapagosTerastal[] = INCBIN_COMP("graphics/pokemon/terapagos/terastal/follower.4bpp"); #endif //OW_FOLLOWERS_ENABLED @@ -17037,18 +17066,18 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ // const u32 gMonPalette_TerapagosStellar[] = INCBIN_U32("graphics/pokemon/terapagos/stellar/normal.gbapal.lz"); // const u32 gMonBackPic_TerapagosStellar[] = INCBIN_U32("graphics/pokemon/terapagos/stellar/back.4bpp.lz"); // const u32 gMonShinyPalette_TerapagosStellar[] = INCBIN_U32("graphics/pokemon/terapagos/stellar/shiny.gbapal.lz"); - // const u8 gMonIcon_TerapagosStellar[] = INCBIN_U8("graphics/pokemon/terapagos/stellar/icon.4bpp"); + const u8 gMonIcon_TerapagosStellar[] = INCBIN_U8("graphics/pokemon/terapagos/stellar/icon.4bpp"); #if OW_FOLLOWERS_ENABLED // const u32 gObjectEventPic_TerapagosStellar[] = INCBIN_COMP("graphics/pokemon/terapagos/stellar/follower.4bpp"); #endif //OW_FOLLOWERS_ENABLED #endif //P_FAMILY_TERAPAGOS #if P_FAMILY_PECHARUNT - // const u32 gMonFrontPic_Pecharunt[] = INCBIN_U32("graphics/pokemon/pecharunt/front.4bpp.lz"); - // const u32 gMonPalette_Pecharunt[] = INCBIN_U32("graphics/pokemon/pecharunt/normal.gbapal.lz"); - // const u32 gMonBackPic_Pecharunt[] = INCBIN_U32("graphics/pokemon/pecharunt/back.4bpp.lz"); - // const u32 gMonShinyPalette_Pecharunt[] = INCBIN_U32("graphics/pokemon/pecharunt/shiny.gbapal.lz"); - // const u8 gMonIcon_Pecharunt[] = INCBIN_U8("graphics/pokemon/pecharunt/icon.4bpp"); + const u32 gMonFrontPic_Pecharunt[] = INCBIN_U32("graphics/pokemon/pecharunt/front.4bpp.lz"); + const u32 gMonPalette_Pecharunt[] = INCBIN_U32("graphics/pokemon/pecharunt/normal.gbapal.lz"); + const u32 gMonBackPic_Pecharunt[] = INCBIN_U32("graphics/pokemon/pecharunt/back.4bpp.lz"); + const u32 gMonShinyPalette_Pecharunt[] = INCBIN_U32("graphics/pokemon/pecharunt/shiny.gbapal.lz"); + const u8 gMonIcon_Pecharunt[] = INCBIN_U8("graphics/pokemon/pecharunt/icon.4bpp"); #if P_FOOTPRINTS // const u8 gMonFootprint_Pecharunt[] = INCBIN_U8("graphics/pokemon/pecharunt/footprint.1bpp"); #endif //P_FOOTPRINTS diff --git a/src/data/items.h b/src/data/items.h index 1185f65178..3a65f8758c 100644 --- a/src/data/items.h +++ b/src/data/items.h @@ -9412,7 +9412,11 @@ const struct Item gItemsInfo[] = .description = COMPOUND_STRING( "Fires an icy cold\n" "beam that may\n" + #if B_USE_FROSTBITE == TRUE + "give the foe frostbite."), + #else "freeze the foe."), + #endif .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, @@ -9427,7 +9431,11 @@ const struct Item gItemsInfo[] = .description = COMPOUND_STRING( "A brutal snow-and-\n" "wind attack that\n" + #if B_USE_FROSTBITE == TRUE + "may give the foe frostbite."), + #else "may freeze the foe."), + #endif .importance = I_REUSABLE_TMS, .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, diff --git a/src/data/moves_info.h b/src/data/moves_info.h index b4639fd290..10e0c8ef28 100644 --- a/src/data/moves_info.h +++ b/src/data/moves_info.h @@ -4435,7 +4435,11 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Powder Snow"), .description = COMPOUND_STRING( "Blasts the foe with a snowy\n" + #if B_USE_FROSTBITE == TRUE + "gust. May cause frostbite."), + #else "gust. May cause freezing."), + #endif .effect = EFFECT_HIT, .power = 40, .type = TYPE_ICE, @@ -10166,7 +10170,11 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Ice Fang"), .description = COMPOUND_STRING( "May cause flinching or\n" + #if B_USE_FROSTBITE == TRUE "leave the foe frozen."), + #else + "leave the foe with frostbite."), + #endif .effect = EFFECT_HIT, .power = 65, .type = TYPE_ICE, @@ -13679,8 +13687,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .name = COMPOUND_STRING("Freeze-Dry"), .description = COMPOUND_STRING( "Super effective on Water-\n" + #if B_USE_FROSTBITE == TRUE + "types. May cause frostbite."), + #else "types. May cause freezing."), - .effect = EFFECT_FREEZE_DRY, + #endif + .effect = EFFECT_SUPER_EFFECTIVE_ON_ARG, .power = 70, .type = TYPE_ICE, .accuracy = 100, @@ -13688,6 +13700,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, + .argument = TYPE_WATER, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FREEZE_OR_FROSTBITE, .chance = 10, @@ -20231,6 +20244,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .ignoresTargetAbility = TRUE, }, [MOVE_MENACING_MOONRAZE_MAELSTROM] = { @@ -20244,6 +20258,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, + .ignoresTargetAbility = TRUE, }, [MOVE_LIGHT_THAT_BURNS_THE_SKY] = { @@ -20257,6 +20272,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, + .ignoresTargetAbility = TRUE, }, [MOVE_SOUL_STEALING_7_STAR_STRIKE] = { diff --git a/src/data/pokemon/form_change_table_pointers.h b/src/data/pokemon/form_change_table_pointers.h index 282ea29d3a..4d26837b28 100644 --- a/src/data/pokemon/form_change_table_pointers.h +++ b/src/data/pokemon/form_change_table_pointers.h @@ -1,5 +1,6 @@ const struct Fusion *const gFusionTablePointers[NUM_SPECIES] = { +#if P_FUSION_FORMS #if P_FAMILY_KYUREM [SPECIES_KYUREM] = sKyuremFusionTable, #if P_FAMILY_RESHIRAM @@ -31,4 +32,5 @@ const struct Fusion *const gFusionTablePointers[NUM_SPECIES] = [SPECIES_GLASTRIER] = sCalyrexFusionTable, #endif //P_FAMILY_GLASTRIER #endif //P_FAMILY_CALYREX +#endif //P_FUSION_FORMS }; diff --git a/src/data/pokemon/form_change_tables.h b/src/data/pokemon/form_change_tables.h index d285ad85f4..5edd6f42b5 100644 --- a/src/data/pokemon/form_change_tables.h +++ b/src/data/pokemon/form_change_tables.h @@ -1,24 +1,36 @@ #if P_FAMILY_BULBASAUR static const struct FormChange sVenusaurFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_VENUSAUR_MEGA, ITEM_VENUSAURITE}, +#endif +#if P_GIGANTAMAX_FORMS {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_VENUSAUR_GIGANTAMAX}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_BULBASAUR #if P_FAMILY_CHARMANDER static const struct FormChange sCharizardFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_CHARIZARD_MEGA_X, ITEM_CHARIZARDITE_X}, {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_CHARIZARD_MEGA_Y, ITEM_CHARIZARDITE_Y}, +#endif +#if P_GIGANTAMAX_FORMS {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_CHARIZARD_GIGANTAMAX}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_CHARMANDER #if P_FAMILY_SQUIRTLE static const struct FormChange sBlastoiseFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_BLASTOISE_MEGA, ITEM_BLASTOISINITE}, +#endif +#if P_GIGANTAMAX_FORMS {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_BLASTOISE_GIGANTAMAX}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_SQUIRTLE @@ -26,21 +38,27 @@ static const struct FormChange sBlastoiseFormChangeTable[] = { #if P_FAMILY_CATERPIE static const struct FormChange sButterfreeFormChangeTable[] = { +#if P_GIGANTAMAX_FORMS {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_BUTTERFREE_GIGANTAMAX}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_CATERPIE #if P_FAMILY_WEEDLE static const struct FormChange sBeedrillFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_BEEDRILL_MEGA, ITEM_BEEDRILLITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_WEEDLE #if P_FAMILY_PIDGEY static const struct FormChange sPidgeotFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_PIDGEOT_MEGA, ITEM_PIDGEOTITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_PIDGEY @@ -48,7 +66,9 @@ static const struct FormChange sPidgeotFormChangeTable[] = { #if P_FAMILY_PIKACHU static const struct FormChange sPikachuFormChangeTable[] = { +#if P_GIGANTAMAX_FORMS {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_PIKACHU_GIGANTAMAX}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_PIKACHU @@ -56,14 +76,18 @@ static const struct FormChange sPikachuFormChangeTable[] = #if P_FAMILY_MEOWTH static const struct FormChange sMeowthFormChangeTable[] = { +#if P_GIGANTAMAX_FORMS {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_MEOWTH_GIGANTAMAX}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_MEOWTH #if P_FAMILY_ABRA static const struct FormChange sAlakazamFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_ALAKAZAM_MEGA, ITEM_ALAKAZITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_ABRA @@ -71,22 +95,30 @@ static const struct FormChange sAlakazamFormChangeTable[] = { #if P_FAMILY_MACHOP static const struct FormChange sMachampFormChangeTable[] = { +#if P_GIGANTAMAX_FORMS {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_MACHAMP_GIGANTAMAX}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_MACHOP #if P_FAMILY_SLOWPOKE static const struct FormChange sSlowbroFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_SLOWBRO_MEGA, ITEM_SLOWBRONITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_SLOWPOKE #if P_FAMILY_GASTLY static const struct FormChange sGengarFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_GENGAR_MEGA, ITEM_GENGARITE}, +#endif +#if P_GIGANTAMAX_FORMS {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_GENGAR_GIGANTAMAX}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_GASTLY @@ -94,7 +126,9 @@ static const struct FormChange sGengarFormChangeTable[] = { #if P_FAMILY_ONIX #if P_GEN_2_CROSS_EVOS static const struct FormChange sSteelixFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_STEELIX_MEGA, ITEM_STEELIXITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_GEN_2_CROSS_EVOS @@ -103,14 +137,18 @@ static const struct FormChange sSteelixFormChangeTable[] = { #if P_FAMILY_KRABBY static const struct FormChange sKinglerFormChangeTable[] = { +#if P_GIGANTAMAX_FORMS {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_KINGLER_GIGANTAMAX}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_KRABBY #if P_FAMILY_KANGASKHAN static const struct FormChange sKangaskhanFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_KANGASKHAN_MEGA, ITEM_KANGASKHANITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_KANGASKHAN @@ -118,7 +156,9 @@ static const struct FormChange sKangaskhanFormChangeTable[] = { #if P_FAMILY_SCYTHER #if P_GEN_2_CROSS_EVOS static const struct FormChange sScizorFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_SCIZOR_MEGA, ITEM_SCIZORITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_GEN_2_CROSS_EVOS @@ -126,112 +166,144 @@ static const struct FormChange sScizorFormChangeTable[] = { #if P_FAMILY_PINSIR static const struct FormChange sPinsirFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_PINSIR_MEGA, ITEM_PINSIRITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_PINSIR #if P_FAMILY_MAGIKARP static const struct FormChange sGyaradosFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_GYARADOS_MEGA, ITEM_GYARADOSITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_MAGIKARP #if P_FAMILY_LAPRAS static const struct FormChange sLaprasFormChangeTable[] = { +#if P_GIGANTAMAX_FORMS {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_LAPRAS_GIGANTAMAX}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_LAPRAS #if P_FAMILY_EEVEE static const struct FormChange sEeveeFormChangeTable[] = { +#if P_GIGANTAMAX_FORMS {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_EEVEE_GIGANTAMAX}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_EEVEE #if P_FAMILY_AERODACTYL static const struct FormChange sAerodactylFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_AERODACTYL_MEGA, ITEM_AERODACTYLITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_AERODACTYL #if P_FAMILY_SNORLAX static const struct FormChange sSnorlaxFormChangeTable[] = { +#if P_GIGANTAMAX_FORMS {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_SNORLAX_GIGANTAMAX}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_SNORLAX #if P_FAMILY_MEWTWO static const struct FormChange sMewtwoFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_MEWTWO_MEGA_X, ITEM_MEWTWONITE_X}, {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_MEWTWO_MEGA_Y, ITEM_MEWTWONITE_Y}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_MEWTWO #if P_FAMILY_MAREEP static const struct FormChange sAmpharosFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_AMPHAROS_MEGA, ITEM_AMPHAROSITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_MAREEP #if P_FAMILY_HERACROSS static const struct FormChange sHeracrossFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_HERACROSS_MEGA, ITEM_HERACRONITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_HERACROSS #if P_FAMILY_HOUNDOUR static const struct FormChange sHoundoomFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_HOUNDOOM_MEGA, ITEM_HOUNDOOMINITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_HOUNDOUR #if P_FAMILY_LARVITAR static const struct FormChange sTyranitarFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_TYRANITAR_MEGA, ITEM_TYRANITARITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_LARVITAR #if P_FAMILY_TREECKO static const struct FormChange sSceptileFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_SCEPTILE_MEGA, ITEM_SCEPTILITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_TREECKO #if P_FAMILY_TORCHIC static const struct FormChange sBlazikenFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_BLAZIKEN_MEGA, ITEM_BLAZIKENITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_TORCHIC #if P_FAMILY_MUDKIP static const struct FormChange sSwampertFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_SWAMPERT_MEGA, ITEM_SWAMPERTITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_MUDKIP #if P_FAMILY_RALTS static const struct FormChange sGardevoirFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_GARDEVOIR_MEGA, ITEM_GARDEVOIRITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #if P_GEN_4_CROSS_EVOS static const struct FormChange sGalladeFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_GALLADE_MEGA, ITEM_GALLADITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_GEN_4_CROSS_EVOS @@ -239,77 +311,99 @@ static const struct FormChange sGalladeFormChangeTable[] = { #if P_FAMILY_SABLEYE static const struct FormChange sSableyeFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_SABLEYE_MEGA, ITEM_SABLENITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_SABLEYE #if P_FAMILY_MAWILE static const struct FormChange sMawileFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_MAWILE_MEGA, ITEM_MAWILITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_MAWILE #if P_FAMILY_ARON static const struct FormChange sAggronFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_AGGRON_MEGA, ITEM_AGGRONITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_ARON #if P_FAMILY_MEDITITE static const struct FormChange sMedichamFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_MEDICHAM_MEGA, ITEM_MEDICHAMITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_MEDITITE #if P_FAMILY_ELECTRIKE static const struct FormChange sManectricFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_MANECTRIC_MEGA, ITEM_MANECTITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_ELECTRIKE #if P_FAMILY_CARVANHA static const struct FormChange sSharpedoFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_SHARPEDO_MEGA, ITEM_SHARPEDONITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_CARVANHA #if P_FAMILY_NUMEL static const struct FormChange sCameruptFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_CAMERUPT_MEGA, ITEM_CAMERUPTITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_NUMEL #if P_FAMILY_SWABLU static const struct FormChange sAltariaFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_ALTARIA_MEGA, ITEM_ALTARIANITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_SWABLU #if P_FAMILY_SHUPPET static const struct FormChange sBanetteFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_BANETTE_MEGA, ITEM_BANETTITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_SHUPPET #if P_FAMILY_ABSOL static const struct FormChange sAbsolFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_ABSOL_MEGA, ITEM_ABSOLITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_ABSOL #if P_FAMILY_SNORUNT static const struct FormChange sGlalieFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_GLALIE_MEGA, ITEM_GLALITITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_SNORUNT @@ -338,49 +432,63 @@ static const struct FormChange sCastformFormChangeTable[] = { #if P_FAMILY_BAGON static const struct FormChange sSalamenceFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_SALAMENCE_MEGA, ITEM_SALAMENCITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_BAGON #if P_FAMILY_BELDUM static const struct FormChange sMetagrossFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_METAGROSS_MEGA, ITEM_METAGROSSITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_BELDUM #if P_FAMILY_LATIAS static const struct FormChange sLatiasFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_LATIAS_MEGA, ITEM_LATIASITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_LATIAS #if P_FAMILY_LATIOS static const struct FormChange sLatiosFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_LATIOS_MEGA, ITEM_LATIOSITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_LATIOS #if P_FAMILY_KYOGRE static const struct FormChange sKyogreFormChangeTable[] = { +#if P_PRIMAL_REVERSIONS {FORM_CHANGE_BATTLE_PRIMAL_REVERSION, SPECIES_KYOGRE_PRIMAL, ITEM_BLUE_ORB}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_KYOGRE #if P_FAMILY_GROUDON static const struct FormChange sGroudonFormChangeTable[] = { +#if P_PRIMAL_REVERSIONS {FORM_CHANGE_BATTLE_PRIMAL_REVERSION, SPECIES_GROUDON_PRIMAL, ITEM_RED_ORB}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_GROUDON #if P_FAMILY_RAYQUAZA static const struct FormChange sRayquazaFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_MOVE, SPECIES_RAYQUAZA_MEGA, MOVE_DRAGON_ASCENT}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_RAYQUAZA @@ -441,28 +549,36 @@ static const struct FormChange sCherrimFormChangeTable[] = { #if P_FAMILY_BUNEARY static const struct FormChange sLopunnyFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_LOPUNNY_MEGA, ITEM_LOPUNNITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_BUNEARY #if P_FAMILY_GIBLE static const struct FormChange sGarchompFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_GARCHOMP_MEGA, ITEM_GARCHOMPITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_GIBLE #if P_FAMILY_RIOLU static const struct FormChange sLucarioFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_LUCARIO_MEGA, ITEM_LUCARIONITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_RIOLU #if P_FAMILY_SNOVER static const struct FormChange sAbomasnowFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_ABOMASNOW_MEGA, ITEM_ABOMASITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_SNOVER @@ -559,7 +675,9 @@ static const struct FormChange sArceusFormChangeTable[] = { #if P_FAMILY_AUDINO static const struct FormChange sAudinoFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_AUDINO_MEGA, ITEM_AUDINITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_AUDINO @@ -587,7 +705,9 @@ static const struct FormChange sDarmanitanGalarianFormChangeTable[] = { #if P_FAMILY_TRUBBISH static const struct FormChange sGarbodorFormChangeTable[] = { +#if P_GIGANTAMAX_FORMS {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_GARBODOR_GIGANTAMAX}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_TRUBBISH @@ -712,7 +832,9 @@ static const struct FormChange sZygardeCompleteFormChangeTable[] = { #if P_FAMILY_DIANCIE static const struct FormChange sDiancieFormChangeTable[] = { +#if P_MEGA_EVOLUTIONS {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_DIANCIE_MEGA, ITEM_DIANCITE}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_DIANCIE @@ -851,11 +973,15 @@ static const struct Fusion sNecrozmaFusionTable[] = { }; static const struct FormChange sNecrozmaDuskManeFormChangeTable[] = { +#if P_ULTRA_BURST_FORMS {FORM_CHANGE_BATTLE_ULTRA_BURST, SPECIES_NECROZMA_ULTRA, ITEM_ULTRANECROZIUM_Z}, +#endif {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sNecrozmaDawnWingsFormChangeTable[] = { +#if P_ULTRA_BURST_FORMS {FORM_CHANGE_BATTLE_ULTRA_BURST, SPECIES_NECROZMA_ULTRA, ITEM_ULTRANECROZIUM_Z}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_NECROZMA @@ -863,7 +989,9 @@ static const struct FormChange sNecrozmaDawnWingsFormChangeTable[] = { #if P_FAMILY_MELTAN static const struct FormChange sMelmetalFormChangeTable[] = { +#if P_GIGANTAMAX_FORMS {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_MELMETAL_GIGANTAMAX}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_MELTAN @@ -871,7 +999,9 @@ static const struct FormChange sMelmetalFormChangeTable[] = #if P_FAMILY_GROOKEY static const struct FormChange sRillaboomFormChangeTable[] = { +#if P_GIGANTAMAX_FORMS {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_RILLABOOM_GIGANTAMAX}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_GROOKEY @@ -879,7 +1009,9 @@ static const struct FormChange sRillaboomFormChangeTable[] = #if P_FAMILY_SCORBUNNY static const struct FormChange sCinderaceFormChangeTable[] = { +#if P_GIGANTAMAX_FORMS {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_CINDERACE_GIGANTAMAX}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_SCORBUNNY @@ -887,7 +1019,9 @@ static const struct FormChange sCinderaceFormChangeTable[] = #if P_FAMILY_SOBBLE static const struct FormChange sInteleonFormChangeTable[] = { +#if P_GIGANTAMAX_FORMS {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_INTELEON_GIGANTAMAX}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_SOBBLE @@ -895,7 +1029,9 @@ static const struct FormChange sInteleonFormChangeTable[] = #if P_FAMILY_ROOKIDEE static const struct FormChange sCorviknightFormChangeTable[] = { +#if P_GIGANTAMAX_FORMS {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_CORVIKNIGHT_GIGANTAMAX}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_ROOKIDEE @@ -903,7 +1039,9 @@ static const struct FormChange sCorviknightFormChangeTable[] = #if P_FAMILY_BLIPBUG static const struct FormChange sOrbeetleFormChangeTable[] = { +#if P_GIGANTAMAX_FORMS {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_ORBEETLE_GIGANTAMAX}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_BLIPBUG @@ -911,7 +1049,9 @@ static const struct FormChange sOrbeetleFormChangeTable[] = #if P_FAMILY_CHEWTLE static const struct FormChange sDrednawFormChangeTable[] = { +#if P_GIGANTAMAX_FORMS {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_DREDNAW_GIGANTAMAX}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_CHEWTLE @@ -919,7 +1059,9 @@ static const struct FormChange sDrednawFormChangeTable[] = #if P_FAMILY_ROLYCOLY static const struct FormChange sCoalossalFormChangeTable[] = { +#if P_GIGANTAMAX_FORMS {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_COALOSSAL_GIGANTAMAX}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_ROLYCOLY @@ -927,13 +1069,17 @@ static const struct FormChange sCoalossalFormChangeTable[] = #if P_FAMILY_APPLIN static const struct FormChange sFlappleFormChangeTable[] = { +#if P_GIGANTAMAX_FORMS {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_FLAPPLE_GIGANTAMAX}, +#endif {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sAppletunFormChangeTable[] = { +#if P_GIGANTAMAX_FORMS {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_APPLETUN_GIGANTAMAX}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_APPLIN @@ -941,7 +1087,9 @@ static const struct FormChange sAppletunFormChangeTable[] = #if P_FAMILY_SILICOBRA static const struct FormChange sSandacondaFormChangeTable[] = { +#if P_GIGANTAMAX_FORMS {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_SANDACONDA_GIGANTAMAX}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_SILICOBRA @@ -960,13 +1108,17 @@ static const struct FormChange sCramorantFormChangeTable[] = { #if P_FAMILY_TOXEL static const struct FormChange sToxtricityAmpedFormChangeTable[] = { +#if P_GIGANTAMAX_FORMS {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_TOXTRICITY_AMPED_GIGANTAMAX}, +#endif {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sToxtricityLowKeyFormChangeTable[] = { +#if P_GIGANTAMAX_FORMS {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_TOXEL @@ -974,7 +1126,9 @@ static const struct FormChange sToxtricityLowKeyFormChangeTable[] = #if P_FAMILY_SIZZLIPEDE static const struct FormChange sCentiskorchFormChangeTable[] = { +#if P_GIGANTAMAX_FORMS {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_CENTISKORCH_GIGANTAMAX}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_SIZZLIPEDE @@ -982,7 +1136,9 @@ static const struct FormChange sCentiskorchFormChangeTable[] = #if P_FAMILY_HATENNA static const struct FormChange sHattereneFormChangeTable[] = { +#if P_GIGANTAMAX_FORMS {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_HATTERENE_GIGANTAMAX}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_HATENNA @@ -990,7 +1146,9 @@ static const struct FormChange sHattereneFormChangeTable[] = #if P_FAMILY_IMPIDIMP static const struct FormChange sGrimmsnarlFormChangeTable[] = { +#if P_GIGANTAMAX_FORMS {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_GRIMMSNARL_GIGANTAMAX}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_IMPIDIMP @@ -998,7 +1156,9 @@ static const struct FormChange sGrimmsnarlFormChangeTable[] = #if P_FAMILY_MILCERY static const struct FormChange sAlcremieFormChangeTable[] = { +#if P_GIGANTAMAX_FORMS {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_ALCREMIE_GIGANTAMAX}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_MILCERY @@ -1024,14 +1184,18 @@ static const struct FormChange sMorpekoFormChangeTable[] = { #if P_FAMILY_CUFANT static const struct FormChange sCopperajahFormChangeTable[] = { +#if P_GIGANTAMAX_FORMS {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_COPPERAJAH_GIGANTAMAX}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_CUFANT #if P_FAMILY_DURALUDON static const struct FormChange sDuraludonFormChangeTable[] = { +#if P_GIGANTAMAX_FORMS {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_DURALUDON_GIGANTAMAX}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_DURALUDON @@ -1054,12 +1218,16 @@ static const struct FormChange sZamazentaFormChangeTable[] = { #if P_FAMILY_KUBFU static const struct FormChange sUrshifuSingleStrikeFormChangeTable[] = { +#if P_GIGANTAMAX_FORMS {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX}, +#endif {FORM_CHANGE_TERMINATOR}, }; static const struct FormChange sUrshifuRapidStrikeFormChangeTable[] = { +#if P_GIGANTAMAX_FORMS {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_KUBFU @@ -1101,7 +1269,9 @@ static const struct FormChange sOgerponFormChangeTable[] = { #if P_FAMILY_TERAPAGOS static const struct FormChange sTerapagosFormChangeTable[] = { {FORM_CHANGE_BEGIN_BATTLE, SPECIES_TERAPAGOS_TERASTAL}, //needs to be tied to the ability +#if P_TERA_FORMS //{FORM_CHANGE_TERASTALLIZATION, SPECIES_TERAPAGOS_STELLAR}, +#endif {FORM_CHANGE_END_BATTLE, SPECIES_TERAPAGOS_NORMAL}, {FORM_CHANGE_TERMINATOR}, }; diff --git a/src/data/pokemon/form_species_tables.h b/src/data/pokemon/form_species_tables.h index 736a7abe70..9ae2c3ebdb 100644 --- a/src/data/pokemon/form_species_tables.h +++ b/src/data/pokemon/form_species_tables.h @@ -1,8 +1,12 @@ #if P_FAMILY_BULBASAUR static const u16 sVenusaurFormSpeciesIdTable[] = { SPECIES_VENUSAUR, +#if P_MEGA_EVOLUTIONS SPECIES_VENUSAUR_MEGA, +#endif +#if P_GIGANTAMAX_FORMS SPECIES_VENUSAUR_GIGANTAMAX, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_BULBASAUR @@ -10,9 +14,13 @@ static const u16 sVenusaurFormSpeciesIdTable[] = { #if P_FAMILY_CHARMANDER static const u16 sCharizardFormSpeciesIdTable[] = { SPECIES_CHARIZARD, +#if P_MEGA_EVOLUTIONS SPECIES_CHARIZARD_MEGA_X, SPECIES_CHARIZARD_MEGA_Y, +#endif +#if P_GIGANTAMAX_FORMS SPECIES_CHARIZARD_GIGANTAMAX, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_CHARMANDER @@ -20,8 +28,12 @@ static const u16 sCharizardFormSpeciesIdTable[] = { #if P_FAMILY_SQUIRTLE static const u16 sBlastoiseFormSpeciesIdTable[] = { SPECIES_BLASTOISE, +#if P_MEGA_EVOLUTIONS SPECIES_BLASTOISE_MEGA, +#endif +#if P_GIGANTAMAX_FORMS SPECIES_BLASTOISE_GIGANTAMAX, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_SQUIRTLE @@ -29,7 +41,9 @@ static const u16 sBlastoiseFormSpeciesIdTable[] = { #if P_FAMILY_CATERPIE static const u16 sButterfreeFormSpeciesIdTable[] = { SPECIES_BUTTERFREE, +#if P_GIGANTAMAX_FORMS SPECIES_BUTTERFREE_GIGANTAMAX, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_CATERPIE @@ -37,7 +51,9 @@ static const u16 sButterfreeFormSpeciesIdTable[] = { #if P_FAMILY_WEEDLE static const u16 sBeedrillFormSpeciesIdTable[] = { SPECIES_BEEDRILL, +#if P_MEGA_EVOLUTIONS SPECIES_BEEDRILL_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_WEEDLE @@ -45,7 +61,9 @@ static const u16 sBeedrillFormSpeciesIdTable[] = { #if P_FAMILY_PIDGEY static const u16 sPidgeotFormSpeciesIdTable[] = { SPECIES_PIDGEOT, +#if P_MEGA_EVOLUTIONS SPECIES_PIDGEOT_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_PIDGEY @@ -53,14 +71,18 @@ static const u16 sPidgeotFormSpeciesIdTable[] = { #if P_FAMILY_RATTATA static const u16 sRattataFormSpeciesIdTable[] = { SPECIES_RATTATA, +#if P_ALOLAN_FORMS SPECIES_RATTATA_ALOLAN, +#endif FORM_SPECIES_END, }; static const u16 sRaticateFormSpeciesIdTable[] = { SPECIES_RATICATE, +#if P_ALOLAN_FORMS SPECIES_RATICATE_ALOLAN, SPECIES_RATICATE_ALOLAN_TOTEM, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_RATTATA @@ -76,12 +98,15 @@ static const u16 sPichuFormSpeciesIdTable[] = { static const u16 sPikachuFormSpeciesIdTable[] = { SPECIES_PIKACHU, +#if P_COSPLAY_PIKACHU_FORMS SPECIES_PIKACHU_COSPLAY, SPECIES_PIKACHU_ROCK_STAR, SPECIES_PIKACHU_BELLE, SPECIES_PIKACHU_POP_STAR, SPECIES_PIKACHU_PH_D, SPECIES_PIKACHU_LIBRE, +#endif +#if P_CAP_PIKACHU_FORMS SPECIES_PIKACHU_ORIGINAL_CAP, SPECIES_PIKACHU_HOENN_CAP, SPECIES_PIKACHU_SINNOH_CAP, @@ -90,14 +115,19 @@ static const u16 sPikachuFormSpeciesIdTable[] = { SPECIES_PIKACHU_ALOLA_CAP, SPECIES_PIKACHU_PARTNER_CAP, SPECIES_PIKACHU_WORLD_CAP, +#endif +#if P_GIGANTAMAX_FORMS SPECIES_PIKACHU_GIGANTAMAX, +#endif SPECIES_PIKACHU_PARTNER, FORM_SPECIES_END, }; static const u16 sRaichuFormSpeciesIdTable[] = { SPECIES_RAICHU, +#if P_ALOLAN_FORMS SPECIES_RAICHU_ALOLAN, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_PIKACHU @@ -105,13 +135,17 @@ static const u16 sRaichuFormSpeciesIdTable[] = { #if P_FAMILY_SANDSHREW static const u16 sSandshrewFormSpeciesIdTable[] = { SPECIES_SANDSHREW, +#if P_ALOLAN_FORMS SPECIES_SANDSHREW_ALOLAN, +#endif FORM_SPECIES_END, }; static const u16 sSandslashFormSpeciesIdTable[] = { SPECIES_SANDSLASH, +#if P_ALOLAN_FORMS SPECIES_SANDSLASH_ALOLAN, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_SANDSHREW @@ -119,13 +153,17 @@ static const u16 sSandslashFormSpeciesIdTable[] = { #if P_FAMILY_VULPIX static const u16 sVulpixFormSpeciesIdTable[] = { SPECIES_VULPIX, +#if P_ALOLAN_FORMS SPECIES_VULPIX_ALOLAN, +#endif FORM_SPECIES_END, }; static const u16 sNinetalesFormSpeciesIdTable[] = { SPECIES_NINETALES, +#if P_ALOLAN_FORMS SPECIES_NINETALES_ALOLAN, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_VULPIX @@ -133,13 +171,17 @@ static const u16 sNinetalesFormSpeciesIdTable[] = { #if P_FAMILY_DIGLETT static const u16 sDiglettFormSpeciesIdTable[] = { SPECIES_DIGLETT, +#if P_ALOLAN_FORMS SPECIES_DIGLETT_ALOLAN, +#endif FORM_SPECIES_END, }; static const u16 sDugtrioFormSpeciesIdTable[] = { SPECIES_DUGTRIO, +#if P_ALOLAN_FORMS SPECIES_DUGTRIO_ALOLAN, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_DIGLETT @@ -147,15 +189,23 @@ static const u16 sDugtrioFormSpeciesIdTable[] = { #if P_FAMILY_MEOWTH static const u16 sMeowthFormSpeciesIdTable[] = { SPECIES_MEOWTH, +#if P_ALOLAN_FORMS SPECIES_MEOWTH_ALOLAN, +#endif +#if P_GALARIAN_FORMS SPECIES_MEOWTH_GALARIAN, +#endif +#if P_GIGANTAMAX_FORMS SPECIES_MEOWTH_GIGANTAMAX, +#endif FORM_SPECIES_END, }; static const u16 sPersianFormSpeciesIdTable[] = { SPECIES_PERSIAN, +#if P_ALOLAN_FORMS SPECIES_PERSIAN_ALOLAN, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_MEOWTH @@ -163,13 +213,17 @@ static const u16 sPersianFormSpeciesIdTable[] = { #if P_FAMILY_GROWLITHE static const u16 sGrowlitheFormSpeciesIdTable[] = { SPECIES_GROWLITHE, +#if P_HISUIAN_FORMS SPECIES_GROWLITHE_HISUIAN, +#endif FORM_SPECIES_END, }; static const u16 sArcanineFormSpeciesIdTable[] = { SPECIES_ARCANINE, +#if P_HISUIAN_FORMS SPECIES_ARCANINE_HISUIAN, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_GROWLITHE @@ -177,7 +231,9 @@ static const u16 sArcanineFormSpeciesIdTable[] = { #if P_FAMILY_ABRA static const u16 sAlakazamFormSpeciesIdTable[] = { SPECIES_ALAKAZAM, +#if P_MEGA_EVOLUTIONS SPECIES_ALAKAZAM_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_ABRA @@ -185,7 +241,9 @@ static const u16 sAlakazamFormSpeciesIdTable[] = { #if P_FAMILY_MACHOP static const u16 sMachampFormSpeciesIdTable[] = { SPECIES_MACHAMP, +#if P_GIGANTAMAX_FORMS SPECIES_MACHAMP_GIGANTAMAX, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_MACHOP @@ -193,19 +251,25 @@ static const u16 sMachampFormSpeciesIdTable[] = { #if P_FAMILY_GEODUDE static const u16 sGeodudeFormSpeciesIdTable[] = { SPECIES_GEODUDE, +#if P_ALOLAN_FORMS SPECIES_GEODUDE_ALOLAN, +#endif FORM_SPECIES_END, }; static const u16 sGravelerFormSpeciesIdTable[] = { SPECIES_GRAVELER, +#if P_ALOLAN_FORMS SPECIES_GRAVELER_ALOLAN, +#endif FORM_SPECIES_END, }; static const u16 sGolemFormSpeciesIdTable[] = { SPECIES_GOLEM, +#if P_ALOLAN_FORMS SPECIES_GOLEM_ALOLAN, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_GEODUDE @@ -213,13 +277,17 @@ static const u16 sGolemFormSpeciesIdTable[] = { #if P_FAMILY_PONYTA static const u16 sPonytaFormSpeciesIdTable[] = { SPECIES_PONYTA, +#if P_GALARIAN_FORMS SPECIES_PONYTA_GALARIAN, +#endif FORM_SPECIES_END, }; static const u16 sRapidashFormSpeciesIdTable[] = { SPECIES_RAPIDASH, +#if P_GALARIAN_FORMS SPECIES_RAPIDASH_GALARIAN, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_PONYTA @@ -227,21 +295,29 @@ static const u16 sRapidashFormSpeciesIdTable[] = { #if P_FAMILY_SLOWPOKE static const u16 sSlowpokeFormSpeciesIdTable[] = { SPECIES_SLOWPOKE, +#if P_GALARIAN_FORMS SPECIES_SLOWPOKE_GALARIAN, +#endif FORM_SPECIES_END, }; static const u16 sSlowbroFormSpeciesIdTable[] = { SPECIES_SLOWBRO, +#if P_MEGA_EVOLUTIONS SPECIES_SLOWBRO_MEGA, +#endif +#if P_GALARIAN_FORMS SPECIES_SLOWBRO_GALARIAN, +#endif FORM_SPECIES_END, }; #if P_GEN_2_CROSS_EVOS static const u16 sSlowkingFormSpeciesIdTable[] = { SPECIES_SLOWKING, +#if P_GALARIAN_FORMS SPECIES_SLOWKING_GALARIAN, +#endif FORM_SPECIES_END, }; #endif //P_GEN_2_CROSS_EVOS @@ -250,7 +326,9 @@ static const u16 sSlowkingFormSpeciesIdTable[] = { #if P_FAMILY_FARFETCHD static const u16 sFarfetchdFormSpeciesIdTable[] = { SPECIES_FARFETCHD, +#if P_GALARIAN_FORMS SPECIES_FARFETCHD_GALARIAN, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_FARFETCHD @@ -258,13 +336,17 @@ static const u16 sFarfetchdFormSpeciesIdTable[] = { #if P_FAMILY_GRIMER static const u16 sGrimerFormSpeciesIdTable[] = { SPECIES_GRIMER, +#if P_ALOLAN_FORMS SPECIES_GRIMER_ALOLAN, +#endif FORM_SPECIES_END, }; static const u16 sMukFormSpeciesIdTable[] = { SPECIES_MUK, +#if P_ALOLAN_FORMS SPECIES_MUK_ALOLAN, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_GRIMER @@ -272,8 +354,12 @@ static const u16 sMukFormSpeciesIdTable[] = { #if P_FAMILY_GASTLY static const u16 sGengarFormSpeciesIdTable[] = { SPECIES_GENGAR, +#if P_MEGA_EVOLUTIONS SPECIES_GENGAR_MEGA, +#endif +#if P_GIGANTAMAX_FORMS SPECIES_GENGAR_GIGANTAMAX, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_GASTLY @@ -282,7 +368,9 @@ static const u16 sGengarFormSpeciesIdTable[] = { #if P_GEN_2_CROSS_EVOS static const u16 sSteelixFormSpeciesIdTable[] = { SPECIES_STEELIX, +#if P_MEGA_EVOLUTIONS SPECIES_STEELIX_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_GEN_2_CROSS_EVOS @@ -291,7 +379,9 @@ static const u16 sSteelixFormSpeciesIdTable[] = { #if P_FAMILY_KRABBY static const u16 sKinglerFormSpeciesIdTable[] = { SPECIES_KINGLER, +#if P_GIGANTAMAX_FORMS SPECIES_KINGLER_GIGANTAMAX, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_KRABBY @@ -299,13 +389,17 @@ static const u16 sKinglerFormSpeciesIdTable[] = { #if P_FAMILY_VOLTORB static const u16 sVoltorbFormSpeciesIdTable[] = { SPECIES_VOLTORB, +#if P_HISUIAN_FORMS SPECIES_VOLTORB_HISUIAN, +#endif FORM_SPECIES_END, }; static const u16 sElectrodeFormSpeciesIdTable[] = { SPECIES_ELECTRODE, +#if P_HISUIAN_FORMS SPECIES_ELECTRODE_HISUIAN, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_VOLTORB @@ -313,7 +407,9 @@ static const u16 sElectrodeFormSpeciesIdTable[] = { #if P_FAMILY_EXEGGCUTE static const u16 sExeggutorFormSpeciesIdTable[] = { SPECIES_EXEGGUTOR, +#if P_ALOLAN_FORMS SPECIES_EXEGGUTOR_ALOLAN, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_EXEGGCUTE @@ -321,8 +417,10 @@ static const u16 sExeggutorFormSpeciesIdTable[] = { #if P_FAMILY_CUBONE static const u16 sMarowakFormSpeciesIdTable[] = { SPECIES_MAROWAK, +#if P_ALOLAN_FORMS SPECIES_MAROWAK_ALOLAN, SPECIES_MAROWAK_ALOLAN_TOTEM, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_CUBONE @@ -330,7 +428,9 @@ static const u16 sMarowakFormSpeciesIdTable[] = { #if P_FAMILY_KOFFING static const u16 sWeezingFormSpeciesIdTable[] = { SPECIES_WEEZING, +#if P_GALARIAN_FORMS SPECIES_WEEZING_GALARIAN, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_KOFFING @@ -338,7 +438,9 @@ static const u16 sWeezingFormSpeciesIdTable[] = { #if P_FAMILY_KANGASKHAN static const u16 sKangaskhanFormSpeciesIdTable[] = { SPECIES_KANGASKHAN, +#if P_MEGA_EVOLUTIONS SPECIES_KANGASKHAN_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_KANGASKHAN @@ -346,7 +448,9 @@ static const u16 sKangaskhanFormSpeciesIdTable[] = { #if P_FAMILY_MR_MIME static const u16 sMrMimeFormSpeciesIdTable[] = { SPECIES_MR_MIME, +#if P_GALARIAN_FORMS SPECIES_MR_MIME_GALARIAN, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_MR_MIME @@ -355,7 +459,9 @@ static const u16 sMrMimeFormSpeciesIdTable[] = { #if P_GEN_2_CROSS_EVOS static const u16 sScizorFormSpeciesIdTable[] = { SPECIES_SCIZOR, +#if P_MEGA_EVOLUTIONS SPECIES_SCIZOR_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_GEN_2_CROSS_EVOS @@ -364,7 +470,9 @@ static const u16 sScizorFormSpeciesIdTable[] = { #if P_FAMILY_PINSIR static const u16 sPinsirFormSpeciesIdTable[] = { SPECIES_PINSIR, +#if P_MEGA_EVOLUTIONS SPECIES_PINSIR_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_PINSIR @@ -372,9 +480,11 @@ static const u16 sPinsirFormSpeciesIdTable[] = { #if P_FAMILY_TAUROS static const u16 sTaurosFormSpeciesIdTable[] = { SPECIES_TAUROS, +#if P_PALDEAN_FORMS SPECIES_TAUROS_PALDEAN_COMBAT_BREED, SPECIES_TAUROS_PALDEAN_BLAZE_BREED, SPECIES_TAUROS_PALDEAN_AQUA_BREED, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_TAUROS @@ -382,7 +492,9 @@ static const u16 sTaurosFormSpeciesIdTable[] = { #if P_FAMILY_MAGIKARP static const u16 sGyaradosFormSpeciesIdTable[] = { SPECIES_GYARADOS, +#if P_MEGA_EVOLUTIONS SPECIES_GYARADOS_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_MAGIKARP @@ -390,7 +502,9 @@ static const u16 sGyaradosFormSpeciesIdTable[] = { #if P_FAMILY_LAPRAS static const u16 sLaprasFormSpeciesIdTable[] = { SPECIES_LAPRAS, +#if P_GIGANTAMAX_FORMS SPECIES_LAPRAS_GIGANTAMAX, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_LAPRAS @@ -398,7 +512,9 @@ static const u16 sLaprasFormSpeciesIdTable[] = { #if P_FAMILY_EEVEE static const u16 sEeveeFormSpeciesIdTable[] = { SPECIES_EEVEE, +#if P_GIGANTAMAX_FORMS SPECIES_EEVEE_GIGANTAMAX, +#endif SPECIES_EEVEE_PARTNER, FORM_SPECIES_END, }; @@ -407,7 +523,9 @@ static const u16 sEeveeFormSpeciesIdTable[] = { #if P_FAMILY_AERODACTYL static const u16 sAerodactylFormSpeciesIdTable[] = { SPECIES_AERODACTYL, +#if P_MEGA_EVOLUTIONS SPECIES_AERODACTYL_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_AERODACTYL @@ -415,7 +533,9 @@ static const u16 sAerodactylFormSpeciesIdTable[] = { #if P_FAMILY_SNORLAX static const u16 sSnorlaxFormSpeciesIdTable[] = { SPECIES_SNORLAX, +#if P_GIGANTAMAX_FORMS SPECIES_SNORLAX_GIGANTAMAX, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_SNORLAX @@ -423,7 +543,9 @@ static const u16 sSnorlaxFormSpeciesIdTable[] = { #if P_FAMILY_ARTICUNO static const u16 sArticunoFormSpeciesIdTable[] = { SPECIES_ARTICUNO, +#if P_GALARIAN_FORMS SPECIES_ARTICUNO_GALARIAN, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_ARTICUNO @@ -431,7 +553,9 @@ static const u16 sArticunoFormSpeciesIdTable[] = { #if P_FAMILY_ZAPDOS static const u16 sZapdosFormSpeciesIdTable[] = { SPECIES_ZAPDOS, +#if P_GALARIAN_FORMS SPECIES_ZAPDOS_GALARIAN, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_ZAPDOS @@ -439,7 +563,9 @@ static const u16 sZapdosFormSpeciesIdTable[] = { #if P_FAMILY_MOLTRES static const u16 sMoltresFormSpeciesIdTable[] = { SPECIES_MOLTRES, +#if P_GALARIAN_FORMS SPECIES_MOLTRES_GALARIAN, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_MOLTRES @@ -447,8 +573,10 @@ static const u16 sMoltresFormSpeciesIdTable[] = { #if P_FAMILY_MEWTWO static const u16 sMewtwoFormSpeciesIdTable[] = { SPECIES_MEWTWO, +#if P_MEGA_EVOLUTIONS SPECIES_MEWTWO_MEGA_X, SPECIES_MEWTWO_MEGA_Y, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_MEWTWO @@ -456,7 +584,9 @@ static const u16 sMewtwoFormSpeciesIdTable[] = { #if P_FAMILY_CYNDAQUIL static const u16 sTyphlosionFormSpeciesIdTable[] = { SPECIES_TYPHLOSION, +#if P_HISUIAN_FORMS SPECIES_TYPHLOSION_HISUIAN, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_CYNDAQUIL @@ -464,7 +594,9 @@ static const u16 sTyphlosionFormSpeciesIdTable[] = { #if P_FAMILY_MAREEP static const u16 sAmpharosFormSpeciesIdTable[] = { SPECIES_AMPHAROS, +#if P_MEGA_EVOLUTIONS SPECIES_AMPHAROS_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_MAREEP @@ -472,7 +604,9 @@ static const u16 sAmpharosFormSpeciesIdTable[] = { #if P_FAMILY_WOOPER static const u16 sWooperFormSpeciesIdTable[] = { SPECIES_WOOPER, +#if P_PALDEAN_FORMS SPECIES_WOOPER_PALDEAN, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_WOOPER @@ -522,7 +656,9 @@ static const u16 sDudunsparceFormSpeciesIdTable[] = { #if P_FAMILY_QWILFISH static const u16 sQwilfishFormSpeciesIdTable[] = { SPECIES_QWILFISH, +#if P_HISUIAN_FORMS SPECIES_QWILFISH_HISUIAN, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_QWILFISH @@ -530,7 +666,9 @@ static const u16 sQwilfishFormSpeciesIdTable[] = { #if P_FAMILY_HERACROSS static const u16 sHeracrossFormSpeciesIdTable[] = { SPECIES_HERACROSS, +#if P_MEGA_EVOLUTIONS SPECIES_HERACROSS_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_HERACROSS @@ -538,7 +676,9 @@ static const u16 sHeracrossFormSpeciesIdTable[] = { #if P_FAMILY_SNEASEL static const u16 sSneaselFormSpeciesIdTable[] = { SPECIES_SNEASEL, +#if P_HISUIAN_FORMS SPECIES_SNEASEL_HISUIAN, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_SNEASEL @@ -554,7 +694,9 @@ static const u16 sUrsalunaFormSpeciesIdTable[] = { #if P_FAMILY_CORSOLA static const u16 sCorsolaFormSpeciesIdTable[] = { SPECIES_CORSOLA, +#if P_GALARIAN_FORMS SPECIES_CORSOLA_GALARIAN, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_CORSOLA @@ -562,7 +704,9 @@ static const u16 sCorsolaFormSpeciesIdTable[] = { #if P_FAMILY_HOUNDOUR static const u16 sHoundoomFormSpeciesIdTable[] = { SPECIES_HOUNDOOM, +#if P_MEGA_EVOLUTIONS SPECIES_HOUNDOOM_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_HOUNDOUR @@ -570,7 +714,9 @@ static const u16 sHoundoomFormSpeciesIdTable[] = { #if P_FAMILY_LARVITAR static const u16 sTyranitarFormSpeciesIdTable[] = { SPECIES_TYRANITAR, +#if P_MEGA_EVOLUTIONS SPECIES_TYRANITAR_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_LARVITAR @@ -578,7 +724,9 @@ static const u16 sTyranitarFormSpeciesIdTable[] = { #if P_FAMILY_TREECKO static const u16 sSceptileFormSpeciesIdTable[] = { SPECIES_SCEPTILE, +#if P_MEGA_EVOLUTIONS SPECIES_SCEPTILE_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_TREECKO @@ -586,7 +734,9 @@ static const u16 sSceptileFormSpeciesIdTable[] = { #if P_FAMILY_TORCHIC static const u16 sBlazikenFormSpeciesIdTable[] = { SPECIES_BLAZIKEN, +#if P_MEGA_EVOLUTIONS SPECIES_BLAZIKEN_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_TORCHIC @@ -594,7 +744,9 @@ static const u16 sBlazikenFormSpeciesIdTable[] = { #if P_FAMILY_MUDKIP static const u16 sSwampertFormSpeciesIdTable[] = { SPECIES_SWAMPERT, +#if P_MEGA_EVOLUTIONS SPECIES_SWAMPERT_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_MUDKIP @@ -602,13 +754,17 @@ static const u16 sSwampertFormSpeciesIdTable[] = { #if P_FAMILY_ZIGZAGOON static const u16 sZigzagoonFormSpeciesIdTable[] = { SPECIES_ZIGZAGOON, +#if P_GALARIAN_FORMS SPECIES_ZIGZAGOON_GALARIAN, +#endif FORM_SPECIES_END, }; static const u16 sLinooneFormSpeciesIdTable[] = { SPECIES_LINOONE, +#if P_GALARIAN_FORMS SPECIES_LINOONE_GALARIAN, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_ZIGZAGOON @@ -616,14 +772,18 @@ static const u16 sLinooneFormSpeciesIdTable[] = { #if P_FAMILY_RALTS static const u16 sGardevoirFormSpeciesIdTable[] = { SPECIES_GARDEVOIR, +#if P_MEGA_EVOLUTIONS SPECIES_GARDEVOIR_MEGA, +#endif FORM_SPECIES_END, }; #if P_GEN_4_CROSS_EVOS static const u16 sGalladeFormSpeciesIdTable[] = { SPECIES_GALLADE, +#if P_MEGA_EVOLUTIONS SPECIES_GALLADE_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_GEN_4_CROSS_EVOS @@ -632,7 +792,9 @@ static const u16 sGalladeFormSpeciesIdTable[] = { #if P_FAMILY_SABLEYE static const u16 sSableyeFormSpeciesIdTable[] = { SPECIES_SABLEYE, +#if P_MEGA_EVOLUTIONS SPECIES_SABLEYE_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_SABLEYE @@ -640,7 +802,9 @@ static const u16 sSableyeFormSpeciesIdTable[] = { #if P_FAMILY_MAWILE static const u16 sMawileFormSpeciesIdTable[] = { SPECIES_MAWILE, +#if P_MEGA_EVOLUTIONS SPECIES_MAWILE_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_MAWILE @@ -648,7 +812,9 @@ static const u16 sMawileFormSpeciesIdTable[] = { #if P_FAMILY_ARON static const u16 sAggronFormSpeciesIdTable[] = { SPECIES_AGGRON, +#if P_MEGA_EVOLUTIONS SPECIES_AGGRON_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_ARON @@ -656,7 +822,9 @@ static const u16 sAggronFormSpeciesIdTable[] = { #if P_FAMILY_MEDITITE static const u16 sMedichamFormSpeciesIdTable[] = { SPECIES_MEDICHAM, +#if P_MEGA_EVOLUTIONS SPECIES_MEDICHAM_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_MEDITITE @@ -664,7 +832,9 @@ static const u16 sMedichamFormSpeciesIdTable[] = { #if P_FAMILY_ELECTRIKE static const u16 sManectricFormSpeciesIdTable[] = { SPECIES_MANECTRIC, +#if P_MEGA_EVOLUTIONS SPECIES_MANECTRIC_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_ELECTRIKE @@ -672,7 +842,9 @@ static const u16 sManectricFormSpeciesIdTable[] = { #if P_FAMILY_CARVANHA static const u16 sSharpedoFormSpeciesIdTable[] = { SPECIES_SHARPEDO, +#if P_MEGA_EVOLUTIONS SPECIES_SHARPEDO_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_CARVANHA @@ -680,7 +852,9 @@ static const u16 sSharpedoFormSpeciesIdTable[] = { #if P_FAMILY_NUMEL static const u16 sCameruptFormSpeciesIdTable[] = { SPECIES_CAMERUPT, +#if P_MEGA_EVOLUTIONS SPECIES_CAMERUPT_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_NUMEL @@ -688,7 +862,9 @@ static const u16 sCameruptFormSpeciesIdTable[] = { #if P_FAMILY_SWABLU static const u16 sAltariaFormSpeciesIdTable[] = { SPECIES_ALTARIA, +#if P_MEGA_EVOLUTIONS SPECIES_ALTARIA_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_SWABLU @@ -706,7 +882,9 @@ static const u16 sCastformFormSpeciesIdTable[] = { #if P_FAMILY_SHUPPET static const u16 sBanetteFormSpeciesIdTable[] = { SPECIES_BANETTE, +#if P_MEGA_EVOLUTIONS SPECIES_BANETTE_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_SHUPPET @@ -714,7 +892,9 @@ static const u16 sBanetteFormSpeciesIdTable[] = { #if P_FAMILY_ABSOL static const u16 sAbsolFormSpeciesIdTable[] = { SPECIES_ABSOL, +#if P_MEGA_EVOLUTIONS SPECIES_ABSOL_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_ABSOL @@ -722,7 +902,9 @@ static const u16 sAbsolFormSpeciesIdTable[] = { #if P_FAMILY_SNORUNT static const u16 sGlalieFormSpeciesIdTable[] = { SPECIES_GLALIE, +#if P_MEGA_EVOLUTIONS SPECIES_GLALIE_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_SNORUNT @@ -730,7 +912,9 @@ static const u16 sGlalieFormSpeciesIdTable[] = { #if P_FAMILY_BAGON static const u16 sSalamenceFormSpeciesIdTable[] = { SPECIES_SALAMENCE, +#if P_MEGA_EVOLUTIONS SPECIES_SALAMENCE_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_BAGON @@ -738,7 +922,9 @@ static const u16 sSalamenceFormSpeciesIdTable[] = { #if P_FAMILY_BELDUM static const u16 sMetagrossFormSpeciesIdTable[] = { SPECIES_METAGROSS, +#if P_MEGA_EVOLUTIONS SPECIES_METAGROSS_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_BELDUM @@ -746,7 +932,9 @@ static const u16 sMetagrossFormSpeciesIdTable[] = { #if P_FAMILY_LATIAS static const u16 sLatiasFormSpeciesIdTable[] = { SPECIES_LATIAS, +#if P_MEGA_EVOLUTIONS SPECIES_LATIAS_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_LATIAS @@ -754,7 +942,9 @@ static const u16 sLatiasFormSpeciesIdTable[] = { #if P_FAMILY_LATIOS static const u16 sLatiosFormSpeciesIdTable[] = { SPECIES_LATIOS, +#if P_MEGA_EVOLUTIONS SPECIES_LATIOS_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_LATIOS @@ -762,7 +952,9 @@ static const u16 sLatiosFormSpeciesIdTable[] = { #if P_FAMILY_KYOGRE static const u16 sKyogreFormSpeciesIdTable[] = { SPECIES_KYOGRE, +#if P_PRIMAL_REVERSIONS SPECIES_KYOGRE_PRIMAL, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_KYOGRE @@ -770,7 +962,9 @@ static const u16 sKyogreFormSpeciesIdTable[] = { #if P_FAMILY_GROUDON static const u16 sGroudonFormSpeciesIdTable[] = { SPECIES_GROUDON, +#if P_PRIMAL_REVERSIONS SPECIES_GROUDON_PRIMAL, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_GROUDON @@ -778,7 +972,9 @@ static const u16 sGroudonFormSpeciesIdTable[] = { #if P_FAMILY_RAYQUAZA static const u16 sRayquazaFormSpeciesIdTable[] = { SPECIES_RAYQUAZA, +#if P_MEGA_EVOLUTIONS SPECIES_RAYQUAZA_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_RAYQUAZA @@ -841,7 +1037,9 @@ static const u16 sGastrodonFormSpeciesIdTable[] = { #if P_FAMILY_BUNEARY static const u16 sLopunnyFormSpeciesIdTable[] = { SPECIES_LOPUNNY, +#if P_MEGA_EVOLUTIONS SPECIES_LOPUNNY_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_BUNEARY @@ -849,7 +1047,9 @@ static const u16 sLopunnyFormSpeciesIdTable[] = { #if P_FAMILY_GIBLE static const u16 sGarchompFormSpeciesIdTable[] = { SPECIES_GARCHOMP, +#if P_MEGA_EVOLUTIONS SPECIES_GARCHOMP_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_GIBLE @@ -857,7 +1057,9 @@ static const u16 sGarchompFormSpeciesIdTable[] = { #if P_FAMILY_RIOLU static const u16 sLucarioFormSpeciesIdTable[] = { SPECIES_LUCARIO, +#if P_MEGA_EVOLUTIONS SPECIES_LUCARIO_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_RIOLU @@ -865,7 +1067,9 @@ static const u16 sLucarioFormSpeciesIdTable[] = { #if P_FAMILY_SNOVER static const u16 sAbomasnowFormSpeciesIdTable[] = { SPECIES_ABOMASNOW, +#if P_MEGA_EVOLUTIONS SPECIES_ABOMASNOW_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_SNOVER @@ -941,7 +1145,9 @@ static const u16 sArceusFormSpeciesIdTable[] = { #if P_FAMILY_OSHAWOTT static const u16 sSamurottFormSpeciesIdTable[] = { SPECIES_SAMUROTT, +#if P_HISUIAN_FORMS SPECIES_SAMUROTT_HISUIAN, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_OSHAWOTT @@ -949,7 +1155,9 @@ static const u16 sSamurottFormSpeciesIdTable[] = { #if P_FAMILY_AUDINO static const u16 sAudinoFormSpeciesIdTable[] = { SPECIES_AUDINO, +#if P_MEGA_EVOLUTIONS SPECIES_AUDINO_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_AUDINO @@ -957,7 +1165,9 @@ static const u16 sAudinoFormSpeciesIdTable[] = { #if P_FAMILY_PETILIL static const u16 sLilligantFormSpeciesIdTable[] = { SPECIES_LILLIGANT, +#if P_HISUIAN_FORMS SPECIES_LILLIGANT_HISUIAN, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_PETILIL @@ -980,15 +1190,19 @@ static const u16 sBasculegionFormSpeciesIdTable[] = { #if P_FAMILY_DARUMAKA static const u16 sDarumakaFormSpeciesIdTable[] = { SPECIES_DARUMAKA, +#if P_GALARIAN_FORMS SPECIES_DARUMAKA_GALARIAN, +#endif FORM_SPECIES_END, }; static const u16 sDarmanitanFormSpeciesIdTable[] = { SPECIES_DARMANITAN_STANDARD_MODE, SPECIES_DARMANITAN_ZEN_MODE, +#if P_GALARIAN_FORMS SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE, SPECIES_DARMANITAN_GALARIAN_ZEN_MODE, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_DARUMAKA @@ -996,7 +1210,9 @@ static const u16 sDarmanitanFormSpeciesIdTable[] = { #if P_FAMILY_YAMASK static const u16 sYamaskFormSpeciesIdTable[] = { SPECIES_YAMASK, +#if P_GALARIAN_FORMS SPECIES_YAMASK_GALARIAN, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_YAMASK @@ -1004,7 +1220,9 @@ static const u16 sYamaskFormSpeciesIdTable[] = { #if P_FAMILY_TRUBBISH static const u16 sGarbodorFormSpeciesIdTable[] = { SPECIES_GARBODOR, +#if P_GIGANTAMAX_FORMS SPECIES_GARBODOR_GIGANTAMAX, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_TRUBBISH @@ -1012,13 +1230,17 @@ static const u16 sGarbodorFormSpeciesIdTable[] = { #if P_FAMILY_ZORUA static const u16 sZoruaFormSpeciesIdTable[] = { SPECIES_ZORUA, +#if P_HISUIAN_FORMS SPECIES_ZORUA_HISUIAN, +#endif FORM_SPECIES_END, }; static const u16 sZoroarkFormSpeciesIdTable[] = { SPECIES_ZOROARK, +#if P_HISUIAN_FORMS SPECIES_ZOROARK_HISUIAN, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_ZORUA @@ -1044,7 +1266,9 @@ static const u16 sSawsbuckFormSpeciesIdTable[] = { #if P_FAMILY_STUNFISK static const u16 sStunfiskFormSpeciesIdTable[] = { SPECIES_STUNFISK, +#if P_GALARIAN_FORMS SPECIES_STUNFISK_GALARIAN, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_STUNFISK @@ -1052,7 +1276,9 @@ static const u16 sStunfiskFormSpeciesIdTable[] = { #if P_FAMILY_RUFFLET static const u16 sBraviaryFormSpeciesIdTable[] = { SPECIES_BRAVIARY, +#if P_HISUIAN_FORMS SPECIES_BRAVIARY_HISUIAN, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_RUFFLET @@ -1265,13 +1491,17 @@ static const u16 sAegislashFormSpeciesIdTable[] = { #if P_FAMILY_GOOMY static const u16 sSliggooFormSpeciesIdTable[] = { SPECIES_SLIGGOO, +#if P_HISUIAN_FORMS SPECIES_SLIGGOO_HISUIAN, +#endif FORM_SPECIES_END, }; static const u16 sGoodraFormSpeciesIdTable[] = { SPECIES_GOODRA, +#if P_HISUIAN_FORMS SPECIES_GOODRA_HISUIAN, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_GOOMY @@ -1297,7 +1527,9 @@ static const u16 sGourgeistFormSpeciesIdTable[] = { #if P_FAMILY_BERGMITE static const u16 sAvaluggFormSpeciesIdTable[] = { SPECIES_AVALUGG, +#if P_HISUIAN_FORMS SPECIES_AVALUGG_HISUIAN, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_BERGMITE @@ -1324,7 +1556,9 @@ static const u16 sZygardeFormSpeciesIdTable[] = { #if P_FAMILY_DIANCIE static const u16 sDiancieFormSpeciesIdTable[] = { SPECIES_DIANCIE, +#if P_MEGA_EVOLUTIONS SPECIES_DIANCIE_MEGA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_DIANCIE @@ -1340,7 +1574,9 @@ static const u16 sHoopaFormSpeciesIdTable[] = { #if P_FAMILY_ROWLET static const u16 sDecidueyeFormSpeciesIdTable[] = { SPECIES_DECIDUEYE, +#if P_HISUIAN_FORMS SPECIES_DECIDUEYE_HISUIAN, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_ROWLET @@ -1501,7 +1737,9 @@ static const u16 sNecrozmaFormSpeciesIdTable[] = { SPECIES_NECROZMA, SPECIES_NECROZMA_DUSK_MANE, SPECIES_NECROZMA_DAWN_WINGS, +#if P_ULTRA_BURST_FORMS SPECIES_NECROZMA_ULTRA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_NECROZMA @@ -1517,7 +1755,9 @@ static const u16 sMagearnaFormSpeciesIdTable[] = { #if P_FAMILY_MELTAN static const u16 sMelmetalFormSpeciesIdTable[] = { SPECIES_MELMETAL, +#if P_GIGANTAMAX_FORMS SPECIES_MELMETAL_GIGANTAMAX, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_MELTAN @@ -1525,7 +1765,9 @@ static const u16 sMelmetalFormSpeciesIdTable[] = { #if P_FAMILY_GROOKEY static const u16 sRillaboomFormSpeciesIdTable[] = { SPECIES_RILLABOOM, +#if P_GIGANTAMAX_FORMS SPECIES_RILLABOOM_GIGANTAMAX, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_GROOKEY @@ -1533,7 +1775,9 @@ static const u16 sRillaboomFormSpeciesIdTable[] = { #if P_FAMILY_SCORBUNNY static const u16 sCinderaceFormSpeciesIdTable[] = { SPECIES_CINDERACE, +#if P_GIGANTAMAX_FORMS SPECIES_CINDERACE_GIGANTAMAX, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_SCORBUNNY @@ -1541,7 +1785,9 @@ static const u16 sCinderaceFormSpeciesIdTable[] = { #if P_FAMILY_SOBBLE static const u16 sInteleonFormSpeciesIdTable[] = { SPECIES_INTELEON, +#if P_GIGANTAMAX_FORMS SPECIES_INTELEON_GIGANTAMAX, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_SOBBLE @@ -1549,7 +1795,9 @@ static const u16 sInteleonFormSpeciesIdTable[] = { #if P_FAMILY_ROOKIDEE static const u16 sCorviknightFormSpeciesIdTable[] = { SPECIES_CORVIKNIGHT, +#if P_GIGANTAMAX_FORMS SPECIES_CORVIKNIGHT_GIGANTAMAX, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_ROOKIDEE @@ -1557,7 +1805,9 @@ static const u16 sCorviknightFormSpeciesIdTable[] = { #if P_FAMILY_BLIPBUG static const u16 sOrbeetleFormSpeciesIdTable[] = { SPECIES_ORBEETLE, +#if P_GIGANTAMAX_FORMS SPECIES_ORBEETLE_GIGANTAMAX, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_BLIPBUG @@ -1565,7 +1815,9 @@ static const u16 sOrbeetleFormSpeciesIdTable[] = { #if P_FAMILY_CHEWTLE static const u16 sDrednawFormSpeciesIdTable[] = { SPECIES_DREDNAW, +#if P_GIGANTAMAX_FORMS SPECIES_DREDNAW_GIGANTAMAX, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_CHEWTLE @@ -1573,7 +1825,9 @@ static const u16 sDrednawFormSpeciesIdTable[] = { #if P_FAMILY_ROLYCOLY static const u16 sCoalossalFormSpeciesIdTable[] = { SPECIES_COALOSSAL, +#if P_GIGANTAMAX_FORMS SPECIES_COALOSSAL_GIGANTAMAX, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_ROLYCOLY @@ -1581,13 +1835,17 @@ static const u16 sCoalossalFormSpeciesIdTable[] = { #if P_FAMILY_APPLIN static const u16 sFlappleFormSpeciesIdTable[] = { SPECIES_FLAPPLE, +#if P_GIGANTAMAX_FORMS SPECIES_FLAPPLE_GIGANTAMAX, +#endif FORM_SPECIES_END, }; static const u16 sAppletunFormSpeciesIdTable[] = { SPECIES_APPLETUN, +#if P_GIGANTAMAX_FORMS SPECIES_APPLETUN_GIGANTAMAX, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_APPLIN @@ -1595,7 +1853,9 @@ static const u16 sAppletunFormSpeciesIdTable[] = { #if P_FAMILY_SILICOBRA static const u16 sSandacondaFormSpeciesIdTable[] = { SPECIES_SANDACONDA, +#if P_GIGANTAMAX_FORMS SPECIES_SANDACONDA_GIGANTAMAX, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_SILICOBRA @@ -1613,8 +1873,12 @@ static const u16 sCramorantFormSpeciesIdTable[] = { static const u16 sToxtricityFormSpeciesIdTable[] = { SPECIES_TOXTRICITY_AMPED, SPECIES_TOXTRICITY_LOW_KEY, +#if P_GIGANTAMAX_FORMS SPECIES_TOXTRICITY_AMPED_GIGANTAMAX, +#endif +#if P_GIGANTAMAX_FORMS SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_TOXEL @@ -1622,7 +1886,9 @@ static const u16 sToxtricityFormSpeciesIdTable[] = { #if P_FAMILY_SIZZLIPEDE static const u16 sCentiskorchFormSpeciesIdTable[] = { SPECIES_CENTISKORCH, +#if P_GIGANTAMAX_FORMS SPECIES_CENTISKORCH_GIGANTAMAX, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_SIZZLIPEDE @@ -1644,7 +1910,9 @@ static const u16 sPolteageistFormSpeciesIdTable[] = { #if P_FAMILY_HATENNA static const u16 sHattereneFormSpeciesIdTable[] = { SPECIES_HATTERENE, +#if P_GIGANTAMAX_FORMS SPECIES_HATTERENE_GIGANTAMAX, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_HATENNA @@ -1652,7 +1920,9 @@ static const u16 sHattereneFormSpeciesIdTable[] = { #if P_FAMILY_IMPIDIMP static const u16 sGrimmsnarlFormSpeciesIdTable[] = { SPECIES_GRIMMSNARL, +#if P_GIGANTAMAX_FORMS SPECIES_GRIMMSNARL_GIGANTAMAX, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_IMPIDIMP @@ -1722,7 +1992,9 @@ static const u16 sAlcremieFormSpeciesIdTable[] = { SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL, SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL, SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL, +#if P_GIGANTAMAX_FORMS SPECIES_ALCREMIE_GIGANTAMAX, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_MILCERY @@ -1754,7 +2026,9 @@ static const u16 sMorpekoFormSpeciesIdTable[] = { #if P_FAMILY_CUFANT static const u16 sCopperajahFormSpeciesIdTable[] = { SPECIES_COPPERAJAH, +#if P_GIGANTAMAX_FORMS SPECIES_COPPERAJAH_GIGANTAMAX, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_CUFANT @@ -1762,7 +2036,9 @@ static const u16 sCopperajahFormSpeciesIdTable[] = { #if P_FAMILY_DURALUDON static const u16 sDuraludonFormSpeciesIdTable[] = { SPECIES_DURALUDON, +#if P_GIGANTAMAX_FORMS SPECIES_DURALUDON_GIGANTAMAX, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_DURALUDON @@ -1795,8 +2071,10 @@ static const u16 sEternatusFormSpeciesIdTable[] = { static const u16 sUrshifuFormSpeciesIdTable[] = { SPECIES_URSHIFU_SINGLE_STRIKE_STYLE, SPECIES_URSHIFU_RAPID_STRIKE_STYLE, +#if P_GIGANTAMAX_FORMS SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX, SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_KUBFU @@ -1891,7 +2169,9 @@ static const u16 sOgerponFormSpeciesIdTable[] = { static const u16 sTerapagosFormSpeciesIdTable[] = { SPECIES_TERAPAGOS_NORMAL, SPECIES_TERAPAGOS_TERASTAL, +#if P_TERA_FORMS SPECIES_TERAPAGOS_STELLAR, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_TERAPAGOS diff --git a/src/data/pokemon/species_info/gen_1_families.h b/src/data/pokemon/species_info/gen_1_families.h index d7fafae241..04fcc9c377 100644 --- a/src/data/pokemon/species_info/gen_1_families.h +++ b/src/data/pokemon/species_info/gen_1_families.h @@ -3178,10 +3178,10 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, .palette = gMonPalette_Pikachu, .shinyPalette = gMonShinyPalette_Pikachu, - .iconSprite = gMonIcon_Pikachu, + .iconSprite = gMonIcon_PikachuPartner, .iconPalIndex = 2, #if P_CUSTOM_GENDER_DIFF_ICONS == TRUE - .iconSpriteFemale = gMonIcon_PikachuF, + .iconSpriteFemale = gMonIcon_PikachuPartnerF, .iconPalIndexFemale = 2, #endif FOOTPRINT(Pikachu) @@ -9388,6 +9388,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .abilities = GENGAR_ABILITIES, .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Gengar"), + .cryId = CRY_GENGAR, .natDexNum = NATIONAL_DEX_GENGAR, .categoryName = _("Shadow"), .height = 15, @@ -9443,6 +9444,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .abilities = { ABILITY_SHADOW_TAG, ABILITY_SHADOW_TAG, ABILITY_SHADOW_TAG }, .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Gengar"), + .cryId = CRY_GENGAR_MEGA, .natDexNum = NATIONAL_DEX_GENGAR, .categoryName = _("Shadow"), .height = 14, @@ -9499,6 +9501,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .abilities = GENGAR_ABILITIES, .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Gengar"), + .cryId = CRY_GENGAR, .natDexNum = NATIONAL_DEX_GENGAR, .categoryName = _("Shadow"), .height = 200, @@ -13931,8 +13934,12 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, .palette = gMonPalette_Eevee, .shinyPalette = gMonShinyPalette_Eevee, - .iconSprite = gMonIcon_Eevee, + .iconSprite = gMonIcon_EeveePartner, .iconPalIndex = 2, + #if P_CUSTOM_GENDER_DIFF_ICONS == TRUE + .iconSpriteFemale = gMonIcon_EeveePartnerF, + .iconPalIndexFemale = 2, + #endif FOOTPRINT(Eevee) .cannotBeTraded = TRUE, .allPerfectIVs = TRUE, diff --git a/src/data/pokemon/species_info/gen_2_families.h b/src/data/pokemon/species_info/gen_2_families.h index 3f1600ec5e..d3d01d751d 100644 --- a/src/data/pokemon/species_info/gen_2_families.h +++ b/src/data/pokemon/species_info/gen_2_families.h @@ -2710,7 +2710,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .palette = gMonPalette_Clodsire, .shinyPalette = gMonShinyPalette_Clodsire, .iconSprite = gMonIcon_Clodsire, - .iconPalIndex = 2, + .iconPalIndex = 0, //FOOTPRINT(Clodsire) .levelUpLearnset = sClodsireLevelUpLearnset, .teachableLearnset = sClodsireTeachableLearnset, @@ -3901,7 +3901,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .palette = gMonPalette_QwilfishHisuian, .shinyPalette = gMonShinyPalette_QwilfishHisuian, .iconSprite = gMonIcon_QwilfishHisuian, - .iconPalIndex = 0, + .iconPalIndex = 1, FOOTPRINT(Qwilfish) FOLLOWER(QwilfishHisuian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) .isHisuianForm = TRUE, @@ -4319,7 +4319,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .palette = gMonPalette_SneaselHisuian, .shinyPalette = gMonShinyPalette_SneaselHisuian, .iconSprite = gMonIcon_SneaselHisuian, - .iconPalIndex = 2, + .iconPalIndex = 0, FOOTPRINT(Sneasel) FOLLOWER(SneaselHisuian, SIZE_32x32, SHADOW_SIZE_M, TRACKS_FOOT) .isHisuianForm = TRUE, @@ -4599,8 +4599,8 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = //.backAnimId = BACK_ANIM_NONE, .palette = gMonPalette_UrsalunaBloodmoon, .shinyPalette = gMonShinyPalette_UrsalunaBloodmoon, - //.iconSprite = gMonIcon_UrsalunaBloodmoon, - //.iconPalIndex = 0, + .iconSprite = gMonIcon_UrsalunaBloodmoon, + .iconPalIndex = 2, //FOOTPRINT(UrsalunaBloodmoon) .levelUpLearnset = sUrsalunaBloodmoonLevelUpLearnset, .teachableLearnset = sUrsalunaBloodmoonTeachableLearnset, diff --git a/src/data/pokemon/species_info/gen_4_families.h b/src/data/pokemon/species_info/gen_4_families.h index 985ca7e403..2308709e92 100644 --- a/src/data/pokemon/species_info/gen_4_families.h +++ b/src/data/pokemon/species_info/gen_4_families.h @@ -5686,8 +5686,17 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = #else #define ARCEUS_EXP_YIELD 255 #endif +#if P_ARCEUS_UNIQUE_FORM_ICONS >= GEN_9 + #define ARCEUS_ICON(typeName, iconPal) \ + .iconSprite = gMonIcon_Arceus ##typeName, \ + .iconPalIndex = iconPal, +#else + #define ARCEUS_ICON(typeName, iconPal) \ + .iconSprite = gMonIcon_ArceusNormal, \ + .iconPalIndex = 1, +#endif -#define ARCEUS_SPECIES_INFO(type, typeName) \ +#define ARCEUS_SPECIES_INFO(type, typeName, iconPal) \ { \ .baseHP = 120, \ .baseAttack = 120, \ @@ -5728,8 +5737,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_GROW_STUTTER, \ .palette = gMonPalette_Arceus ##typeName, \ .shinyPalette = gMonShinyPalette_Arceus ##typeName, \ - .iconSprite = gMonIcon_Arceus, \ - .iconPalIndex = 1, \ + ARCEUS_ICON(typeName, iconPal) \ FOOTPRINT(Arceus) \ FOLLOWER(Arceus ##typeName, SIZE_64x64, SHADOW_SIZE_M, TRACKS_FOOT) \ .levelUpLearnset = sArceusLevelUpLearnset, \ @@ -5739,24 +5747,24 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .isMythical = TRUE, \ } - [SPECIES_ARCEUS_NORMAL] = ARCEUS_SPECIES_INFO(TYPE_NORMAL, Normal), - [SPECIES_ARCEUS_FIGHTING] = ARCEUS_SPECIES_INFO(TYPE_FIGHTING, Fighting), - [SPECIES_ARCEUS_FLYING] = ARCEUS_SPECIES_INFO(TYPE_FLYING, Flying), - [SPECIES_ARCEUS_POISON] = ARCEUS_SPECIES_INFO(TYPE_POISON, Poison), - [SPECIES_ARCEUS_GROUND] = ARCEUS_SPECIES_INFO(TYPE_GROUND, Ground), - [SPECIES_ARCEUS_ROCK] = ARCEUS_SPECIES_INFO(TYPE_ROCK, Rock), - [SPECIES_ARCEUS_BUG] = ARCEUS_SPECIES_INFO(TYPE_BUG, Bug), - [SPECIES_ARCEUS_GHOST] = ARCEUS_SPECIES_INFO(TYPE_GHOST, Ghost), - [SPECIES_ARCEUS_STEEL] = ARCEUS_SPECIES_INFO(TYPE_STEEL, Steel), - [SPECIES_ARCEUS_FIRE] = ARCEUS_SPECIES_INFO(TYPE_FIRE, Fire), - [SPECIES_ARCEUS_WATER] = ARCEUS_SPECIES_INFO(TYPE_WATER, Water), - [SPECIES_ARCEUS_GRASS] = ARCEUS_SPECIES_INFO(TYPE_GRASS, Grass), - [SPECIES_ARCEUS_ELECTRIC] = ARCEUS_SPECIES_INFO(TYPE_ELECTRIC, Electric), - [SPECIES_ARCEUS_PSYCHIC] = ARCEUS_SPECIES_INFO(TYPE_PSYCHIC, Psychic), - [SPECIES_ARCEUS_ICE] = ARCEUS_SPECIES_INFO(TYPE_ICE, Ice), - [SPECIES_ARCEUS_DRAGON] = ARCEUS_SPECIES_INFO(TYPE_DRAGON, Dragon), - [SPECIES_ARCEUS_DARK] = ARCEUS_SPECIES_INFO(TYPE_DARK, Dark), - [SPECIES_ARCEUS_FAIRY] = ARCEUS_SPECIES_INFO(TYPE_FAIRY, Fairy), + [SPECIES_ARCEUS_NORMAL] = ARCEUS_SPECIES_INFO(TYPE_NORMAL, Normal, 1), + [SPECIES_ARCEUS_FIGHTING] = ARCEUS_SPECIES_INFO(TYPE_FIGHTING, Fighting, 1), + [SPECIES_ARCEUS_FLYING] = ARCEUS_SPECIES_INFO(TYPE_FLYING, Flying, 2), + [SPECIES_ARCEUS_POISON] = ARCEUS_SPECIES_INFO(TYPE_POISON, Poison, 2), + [SPECIES_ARCEUS_GROUND] = ARCEUS_SPECIES_INFO(TYPE_GROUND, Ground, 1), + [SPECIES_ARCEUS_ROCK] = ARCEUS_SPECIES_INFO(TYPE_ROCK, Rock, 2), + [SPECIES_ARCEUS_BUG] = ARCEUS_SPECIES_INFO(TYPE_BUG, Bug, 1), + [SPECIES_ARCEUS_GHOST] = ARCEUS_SPECIES_INFO(TYPE_GHOST, Ghost, 2), + [SPECIES_ARCEUS_STEEL] = ARCEUS_SPECIES_INFO(TYPE_STEEL, Steel, 0), + [SPECIES_ARCEUS_FIRE] = ARCEUS_SPECIES_INFO(TYPE_FIRE, Fire, 0), + [SPECIES_ARCEUS_WATER] = ARCEUS_SPECIES_INFO(TYPE_WATER, Water, 0), + [SPECIES_ARCEUS_GRASS] = ARCEUS_SPECIES_INFO(TYPE_GRASS, Grass, 1), + [SPECIES_ARCEUS_ELECTRIC] = ARCEUS_SPECIES_INFO(TYPE_ELECTRIC, Electric, 3), + [SPECIES_ARCEUS_PSYCHIC] = ARCEUS_SPECIES_INFO(TYPE_PSYCHIC, Psychic, 1), + [SPECIES_ARCEUS_ICE] = ARCEUS_SPECIES_INFO(TYPE_ICE, Ice, 0), + [SPECIES_ARCEUS_DRAGON] = ARCEUS_SPECIES_INFO(TYPE_DRAGON, Dragon, 0), + [SPECIES_ARCEUS_DARK] = ARCEUS_SPECIES_INFO(TYPE_DARK, Dark, 0), + [SPECIES_ARCEUS_FAIRY] = ARCEUS_SPECIES_INFO(TYPE_FAIRY, Fairy, 0), #endif //P_FAMILY_ARCEUS #ifdef __INTELLISENSE__ diff --git a/src/data/pokemon/species_info/gen_5_families.h b/src/data/pokemon/species_info/gen_5_families.h index ff88cc2d6d..59f6db9242 100644 --- a/src/data/pokemon/species_info/gen_5_families.h +++ b/src/data/pokemon/species_info/gen_5_families.h @@ -8742,7 +8742,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .palette = gMonPalette_Kingambit, .shinyPalette = gMonShinyPalette_Kingambit, .iconSprite = gMonIcon_Kingambit, - .iconPalIndex = 3, + .iconPalIndex = 0, //FOOTPRINT(Kingambit) .levelUpLearnset = sKingambitLevelUpLearnset, .teachableLearnset = sKingambitTeachableLearnset, diff --git a/src/data/pokemon/species_info/gen_8_families.h b/src/data/pokemon/species_info/gen_8_families.h index 1cdbf15b10..119b5b9da2 100644 --- a/src/data/pokemon/species_info/gen_8_families.h +++ b/src/data/pokemon/species_info/gen_8_families.h @@ -2427,7 +2427,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .palette = gMonPalette_Hydrapple, .shinyPalette = gMonShinyPalette_Hydrapple, .iconSprite = gMonIcon_Hydrapple, - .iconPalIndex = 1, + .iconPalIndex = 5, //FOOTPRINT(Hydrapple) .levelUpLearnset = sHydrappleLevelUpLearnset, .teachableLearnset = sHydrappleTeachableLearnset, @@ -5462,8 +5462,8 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .backAnimId = BACK_ANIM_NONE, .palette = gMonPalette_Archaludon, .shinyPalette = gMonShinyPalette_Archaludon, - //.iconSprite = gMonIcon_Archaludon, - //.iconPalIndex = 0, + .iconSprite = gMonIcon_Archaludon, + .iconPalIndex = 0, //FOOTPRINT(Archaludon) .levelUpLearnset = sArchaludonLevelUpLearnset, .teachableLearnset = sArchaludonTeachableLearnset, diff --git a/src/data/pokemon/species_info/gen_9_families.h b/src/data/pokemon/species_info/gen_9_families.h index 06653c20de..304f0560a2 100644 --- a/src/data/pokemon/species_info/gen_9_families.h +++ b/src/data/pokemon/species_info/gen_9_families.h @@ -50,7 +50,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_Sprigatito, .shinyPalette = gMonShinyPalette_Sprigatito, .iconSprite = gMonIcon_Sprigatito, - .iconPalIndex = 4, + .iconPalIndex = 1, //FOOTPRINT(Sprigatito) .levelUpLearnset = sSprigatitoLevelUpLearnset, .teachableLearnset = sSprigatitoTeachableLearnset, @@ -210,7 +210,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_Fuecoco, .shinyPalette = gMonShinyPalette_Fuecoco, .iconSprite = gMonIcon_Fuecoco, - .iconPalIndex = 0, + .iconPalIndex = 2, //FOOTPRINT(Fuecoco) .levelUpLearnset = sFuecocoLevelUpLearnset, .teachableLearnset = sFuecocoTeachableLearnset, @@ -370,7 +370,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_Quaxly, .shinyPalette = gMonShinyPalette_Quaxly, .iconSprite = gMonIcon_Quaxly, - .iconPalIndex = 2, + .iconPalIndex = 0, //FOOTPRINT(Quaxly) .levelUpLearnset = sQuaxlyLevelUpLearnset, .teachableLearnset = sQuaxlyTeachableLearnset, @@ -636,7 +636,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_OinkologneFemale, .shinyPalette = gMonShinyPalette_OinkologneFemale, .iconSprite = gMonIcon_OinkologneFemale, - .iconPalIndex = 2, + .iconPalIndex = 0, //FOOTPRINT(Oinkologne) .levelUpLearnset = sOinkologneFemaleLevelUpLearnset, .teachableLearnset = sOinkologneTeachableLearnset, @@ -905,7 +905,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_Pawmi, .shinyPalette = gMonShinyPalette_Pawmi, .iconSprite = gMonIcon_Pawmi, - .iconPalIndex = 3, + .iconPalIndex = 0, //FOOTPRINT(Pawmi) .levelUpLearnset = sPawmiLevelUpLearnset, .teachableLearnset = sPawmiTeachableLearnset, @@ -958,7 +958,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_Pawmo, .shinyPalette = gMonShinyPalette_Pawmo, .iconSprite = gMonIcon_Pawmo, - .iconPalIndex = 3, + .iconPalIndex = 0, //FOOTPRINT(Pawmo) .levelUpLearnset = sPawmoLevelUpLearnset, .teachableLearnset = sPawmoTeachableLearnset, @@ -1011,7 +1011,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_Pawmot, .shinyPalette = gMonShinyPalette_Pawmot, .iconSprite = gMonIcon_Pawmot, - .iconPalIndex = 3, + .iconPalIndex = 0, //FOOTPRINT(Pawmot) .levelUpLearnset = sPawmotLevelUpLearnset, .teachableLearnset = sPawmotTeachableLearnset, @@ -1065,7 +1065,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_Tandemaus, .shinyPalette = gMonShinyPalette_Tandemaus, .iconSprite = gMonIcon_Tandemaus, - .iconPalIndex = 0, + .iconPalIndex = 1, //FOOTPRINT(Tandemaus) .levelUpLearnset = sTandemausLevelUpLearnset, .teachableLearnset = sTandemausTeachableLearnset, @@ -1119,7 +1119,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_Maushold, .shinyPalette = gMonShinyPalette_Maushold, .iconSprite = gMonIcon_MausholdFamilyOfThree, - .iconPalIndex = 0, + .iconPalIndex = 1, /*FOOTPRINT(Maushold)*/ .levelUpLearnset = sMausholdLevelUpLearnset, .teachableLearnset = sMausholdTeachableLearnset, @@ -1171,7 +1171,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_Maushold, .shinyPalette = gMonShinyPalette_Maushold, .iconSprite = gMonIcon_MausholdFamilyOfFour, - .iconPalIndex = 0, + .iconPalIndex = 1, /*FOOTPRINT(Maushold)*/ .levelUpLearnset = sMausholdLevelUpLearnset, .teachableLearnset = sMausholdTeachableLearnset, @@ -1279,7 +1279,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_Dachsbun, .shinyPalette = gMonShinyPalette_Dachsbun, .iconSprite = gMonIcon_Dachsbun, - .iconPalIndex = 0, // TODO + .iconPalIndex = 0, //FOOTPRINT(Dachsbun) .levelUpLearnset = sDachsbunLevelUpLearnset, .teachableLearnset = sDachsbunTeachableLearnset, @@ -1328,7 +1328,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .backPic = gMonBackPic_Smoliv, .backPicSize = MON_COORDS_SIZE(64, 64), - .backPicYOffset = 16, + .backPicYOffset = 13, //.backAnimId = BACK_ANIM_NONE, .palette = gMonPalette_Smoliv, .shinyPalette = gMonShinyPalette_Smoliv, @@ -1381,7 +1381,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .backPic = gMonBackPic_Dolliv, .backPicSize = MON_COORDS_SIZE(64, 64), - .backPicYOffset = 2, + .backPicYOffset = 3, //.backAnimId = BACK_ANIM_NONE, .palette = gMonPalette_Dolliv, .shinyPalette = gMonShinyPalette_Dolliv, @@ -1434,12 +1434,12 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .backPic = gMonBackPic_Arboliva, .backPicSize = MON_COORDS_SIZE(64, 64), - .backPicYOffset = 0, + .backPicYOffset = 2, //.backAnimId = BACK_ANIM_NONE, .palette = gMonPalette_Arboliva, .shinyPalette = gMonShinyPalette_Arboliva, .iconSprite = gMonIcon_Arboliva, - .iconPalIndex = 5, + .iconPalIndex = 1, //FOOTPRINT(Arboliva) .levelUpLearnset = sArbolivaLevelUpLearnset, .teachableLearnset = sArbolivaTeachableLearnset, @@ -1546,7 +1546,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_SquawkabillyBluePlumage, .shinyPalette = gMonShinyPalette_SquawkabillyBluePlumage, .iconSprite = gMonIcon_SquawkabillyBluePlumage, - .iconPalIndex = 2, + .iconPalIndex = 0, /*FOOTPRINT(Squawkabilly)*/ .levelUpLearnset = sSquawkabillyLevelUpLearnset, .teachableLearnset = sSquawkabillyTeachableLearnset, @@ -1652,7 +1652,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_SquawkabillyWhitePlumage, .shinyPalette = gMonShinyPalette_SquawkabillyWhitePlumage, .iconSprite = gMonIcon_SquawkabillyWhitePlumage, - .iconPalIndex = 1, + .iconPalIndex = 0, /*FOOTPRINT(Squawkabilly)*/ .levelUpLearnset = sSquawkabillyLevelUpLearnset, .teachableLearnset = sSquawkabillyTeachableLearnset, @@ -1760,7 +1760,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_Naclstack, .shinyPalette = gMonShinyPalette_Naclstack, .iconSprite = gMonIcon_Naclstack, - .iconPalIndex = 2, // TODO: recolor + .iconPalIndex = 2, //FOOTPRINT(Naclstack) .levelUpLearnset = sNaclstackLevelUpLearnset, .teachableLearnset = sNaclstackTeachableLearnset, @@ -1857,17 +1857,17 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .trainerOffset = 0, .frontPic = gMonFrontPic_Charcadet, .frontPicSize = MON_COORDS_SIZE(64, 64), - .frontPicYOffset = 5, + .frontPicYOffset = 9, .frontAnimFrames = sAnims_Charcadet, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .backPic = gMonBackPic_Charcadet, .backPicSize = MON_COORDS_SIZE(64, 64), - .backPicYOffset = 3, + .backPicYOffset = 6, //.backAnimId = BACK_ANIM_NONE, .palette = gMonPalette_Charcadet, .shinyPalette = gMonShinyPalette_Charcadet, .iconSprite = gMonIcon_Charcadet, - .iconPalIndex = 1, + .iconPalIndex = 0, //FOOTPRINT(Charcadet) .levelUpLearnset = sCharcadetLevelUpLearnset, .teachableLearnset = sCharcadetTeachableLearnset, @@ -2028,7 +2028,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_Tadbulb, .shinyPalette = gMonShinyPalette_Tadbulb, .iconSprite = gMonIcon_Tadbulb, - .iconPalIndex = 5, // TODO: Redo to 0 + .iconPalIndex = 0, //FOOTPRINT(Tadbulb) .levelUpLearnset = sTadbulbLevelUpLearnset, .teachableLearnset = sTadbulbTeachableLearnset, @@ -2135,7 +2135,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_Wattrel, .shinyPalette = gMonShinyPalette_Wattrel, .iconSprite = gMonIcon_Wattrel, - .iconPalIndex = 3, + .iconPalIndex = 0, //FOOTPRINT(Wattrel) .levelUpLearnset = sWattrelLevelUpLearnset, .teachableLearnset = sWattrelTeachableLearnset, @@ -2188,7 +2188,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_Kilowattrel, .shinyPalette = gMonShinyPalette_Kilowattrel, .iconSprite = gMonIcon_Kilowattrel, - .iconPalIndex = 3, + .iconPalIndex = 0, //FOOTPRINT(Kilowattrel) .levelUpLearnset = sKilowattrelLevelUpLearnset, .teachableLearnset = sKilowattrelTeachableLearnset, @@ -2242,7 +2242,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_Maschiff, .shinyPalette = gMonShinyPalette_Maschiff, .iconSprite = gMonIcon_Maschiff, - .iconPalIndex = 3, + .iconPalIndex = 0, //FOOTPRINT(Maschiff) .levelUpLearnset = sMaschiffLevelUpLearnset, .teachableLearnset = sMaschiffTeachableLearnset, @@ -2285,17 +2285,17 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .trainerOffset = 0, .frontPic = gMonFrontPic_Mabosstiff, .frontPicSize = MON_COORDS_SIZE(64, 64), - .frontPicYOffset = 1, + .frontPicYOffset = 5, .frontAnimFrames = sAnims_Mabosstiff, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .backPic = gMonBackPic_Mabosstiff, .backPicSize = MON_COORDS_SIZE(64, 64), - .backPicYOffset = 14, + .backPicYOffset = 13, //.backAnimId = BACK_ANIM_NONE, .palette = gMonPalette_Mabosstiff, .shinyPalette = gMonShinyPalette_Mabosstiff, .iconSprite = gMonIcon_Mabosstiff, - .iconPalIndex = 5, + .iconPalIndex = 0, //FOOTPRINT(Mabosstiff) .levelUpLearnset = sMabosstiffLevelUpLearnset, .teachableLearnset = sMabosstiffTeachableLearnset, @@ -2456,7 +2456,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_Bramblin, .shinyPalette = gMonShinyPalette_Bramblin, .iconSprite = gMonIcon_Bramblin, - .iconPalIndex = 3, + .iconPalIndex = 1, //FOOTPRINT(Bramblin) .levelUpLearnset = sBramblinLevelUpLearnset, .teachableLearnset = sBramblinTeachableLearnset, @@ -2509,7 +2509,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_Brambleghast, .shinyPalette = gMonShinyPalette_Brambleghast, .iconSprite = gMonIcon_Brambleghast, - .iconPalIndex = 5, + .iconPalIndex = 2, //FOOTPRINT(Brambleghast) .levelUpLearnset = sBrambleghastLevelUpLearnset, .teachableLearnset = sBrambleghastTeachableLearnset, @@ -2831,7 +2831,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_Rellor, .shinyPalette = gMonShinyPalette_Rellor, .iconSprite = gMonIcon_Rellor, - .iconPalIndex = 5, + .iconPalIndex = 0, //FOOTPRINT(Rellor) .levelUpLearnset = sRellorLevelUpLearnset, .teachableLearnset = sRellorTeachableLearnset, @@ -2938,7 +2938,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_Flittle, .shinyPalette = gMonShinyPalette_Flittle, .iconSprite = gMonIcon_Flittle, - .iconPalIndex = 3, + .iconPalIndex = 1, //FOOTPRINT(Flittle) .levelUpLearnset = sFlittleLevelUpLearnset, .teachableLearnset = sFlittleTeachableLearnset, @@ -2991,7 +2991,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_Espathra, .shinyPalette = gMonShinyPalette_Espathra, .iconSprite = gMonIcon_Espathra, - .iconPalIndex = 5, + .iconPalIndex = 0, //FOOTPRINT(Espathra) .levelUpLearnset = sEspathraLevelUpLearnset, .teachableLearnset = sEspathraTeachableLearnset, @@ -3035,12 +3035,12 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .trainerOffset = 0, .frontPic = gMonFrontPic_Tinkatink, .frontPicSize = MON_COORDS_SIZE(64, 64), - .frontPicYOffset = 10, + .frontPicYOffset = 13, .frontAnimFrames = sAnims_Tinkatink, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .backPic = gMonBackPic_Tinkatink, .backPicSize = MON_COORDS_SIZE(64, 64), - .backPicYOffset = 12, + .backPicYOffset = 9, //.backAnimId = BACK_ANIM_NONE, .palette = gMonPalette_Tinkatink, .shinyPalette = gMonShinyPalette_Tinkatink, @@ -3088,17 +3088,17 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .trainerOffset = 0, .frontPic = gMonFrontPic_Tinkatuff, .frontPicSize = MON_COORDS_SIZE(64, 64), - .frontPicYOffset = 4, + .frontPicYOffset = 9, .frontAnimFrames = sAnims_Tinkatuff, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .backPic = gMonBackPic_Tinkatuff, .backPicSize = MON_COORDS_SIZE(64, 64), - .backPicYOffset = 2, + .backPicYOffset = 9, //.backAnimId = BACK_ANIM_NONE, .palette = gMonPalette_Tinkatuff, .shinyPalette = gMonShinyPalette_Tinkatuff, .iconSprite = gMonIcon_Tinkatuff, - .iconPalIndex = 4, + .iconPalIndex = 1, //FOOTPRINT(Tinkatuff) .levelUpLearnset = sTinkatuffLevelUpLearnset, .teachableLearnset = sTinkatuffTeachableLearnset, @@ -3141,17 +3141,17 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .trainerOffset = 0, .frontPic = gMonFrontPic_Tinkaton, .frontPicSize = MON_COORDS_SIZE(64, 64), - .frontPicYOffset = 1, + .frontPicYOffset = 0, .frontAnimFrames = sAnims_Tinkaton, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .backPic = gMonBackPic_Tinkaton, .backPicSize = MON_COORDS_SIZE(64, 64), - .backPicYOffset = 15, + .backPicYOffset = 3, //.backAnimId = BACK_ANIM_NONE, .palette = gMonPalette_Tinkaton, .shinyPalette = gMonShinyPalette_Tinkaton, .iconSprite = gMonIcon_Tinkaton, - .iconPalIndex = 4, + .iconPalIndex = 1, //FOOTPRINT(Tinkaton) .levelUpLearnset = sTinkatonLevelUpLearnset, .teachableLearnset = sTinkatonTeachableLearnset, @@ -3527,7 +3527,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_Varoom, .shinyPalette = gMonShinyPalette_Varoom, .iconSprite = gMonIcon_Varoom, - .iconPalIndex = 5, + .iconPalIndex = 2, //FOOTPRINT(Varoom) .levelUpLearnset = sVaroomLevelUpLearnset, .teachableLearnset = sVaroomTeachableLearnset, @@ -3580,7 +3580,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_Revavroom, .shinyPalette = gMonShinyPalette_Revavroom, .iconSprite = gMonIcon_Revavroom, - .iconPalIndex = 5, + .iconPalIndex = 0, //FOOTPRINT(Revavroom) .levelUpLearnset = sRevavroomLevelUpLearnset, .teachableLearnset = sRevavroomTeachableLearnset, @@ -3688,7 +3688,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_Orthworm, .shinyPalette = gMonShinyPalette_Orthworm, .iconSprite = gMonIcon_Orthworm, - .iconPalIndex = 4, + .iconPalIndex = 0, //FOOTPRINT(Orthworm) .levelUpLearnset = sOrthwormLevelUpLearnset, .teachableLearnset = sOrthwormTeachableLearnset, @@ -3851,7 +3851,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_Greavard, .shinyPalette = gMonShinyPalette_Greavard, .iconSprite = gMonIcon_Greavard, - .iconPalIndex = 2, + .iconPalIndex = 0, //FOOTPRINT(Greavard) .levelUpLearnset = sGreavardLevelUpLearnset, .teachableLearnset = sGreavardTeachableLearnset, @@ -3904,7 +3904,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_Houndstone, .shinyPalette = gMonShinyPalette_Houndstone, .iconSprite = gMonIcon_Houndstone, - .iconPalIndex = 5, + .iconPalIndex = 2, //FOOTPRINT(Houndstone) .levelUpLearnset = sHoundstoneLevelUpLearnset, .teachableLearnset = sHoundstoneTeachableLearnset, @@ -3958,7 +3958,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_Flamigo, .shinyPalette = gMonShinyPalette_Flamigo, .iconSprite = gMonIcon_Flamigo, - .iconPalIndex = 4, + .iconPalIndex = 1, //FOOTPRINT(Flamigo) .levelUpLearnset = sFlamigoLevelUpLearnset, .teachableLearnset = sFlamigoTeachableLearnset, @@ -4120,7 +4120,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_Veluza, .shinyPalette = gMonShinyPalette_Veluza, .iconSprite = gMonIcon_Veluza, - .iconPalIndex = 4, + .iconPalIndex = 1, //FOOTPRINT(Veluza) .levelUpLearnset = sVeluzaLevelUpLearnset, .teachableLearnset = sVeluzaTeachableLearnset, @@ -4556,7 +4556,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_FlutterMane, .shinyPalette = gMonShinyPalette_FlutterMane, .iconSprite = gMonIcon_FlutterMane, - .iconPalIndex = 4, + .iconPalIndex = 2, //FOOTPRINT(FlutterMane) .isParadoxForm = TRUE, .levelUpLearnset = sFlutterManeLevelUpLearnset, @@ -4610,7 +4610,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_SlitherWing, .shinyPalette = gMonShinyPalette_SlitherWing, .iconSprite = gMonIcon_SlitherWing, - .iconPalIndex = 3, + .iconPalIndex = 1, //FOOTPRINT(SlitherWing) .isParadoxForm = TRUE, .levelUpLearnset = sSlitherWingLevelUpLearnset, @@ -4720,7 +4720,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_IronTreads, .shinyPalette = gMonShinyPalette_IronTreads, .iconSprite = gMonIcon_IronTreads, - .iconPalIndex = 0, + .iconPalIndex = 1, //FOOTPRINT(IronTreads) .isParadoxForm = TRUE, .levelUpLearnset = sIronTreadsLevelUpLearnset, @@ -4886,7 +4886,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_IronJugulis, .shinyPalette = gMonShinyPalette_IronJugulis, .iconSprite = gMonIcon_IronJugulis, - .iconPalIndex = 2, + .iconPalIndex = 0, //FOOTPRINT(IronJugulis) .isParadoxForm = TRUE, .levelUpLearnset = sIronJugulisLevelUpLearnset, @@ -5052,7 +5052,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_Frigibax, .shinyPalette = gMonShinyPalette_Frigibax, .iconSprite = gMonIcon_Frigibax, - .iconPalIndex = 3, + .iconPalIndex = 0, //FOOTPRINT(Frigibax) .levelUpLearnset = sFrigibaxLevelUpLearnset, .teachableLearnset = sFrigibaxTeachableLearnset, @@ -5374,7 +5374,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_WoChien, .shinyPalette = gMonShinyPalette_WoChien, .iconSprite = gMonIcon_WoChien, - .iconPalIndex = 5, + .iconPalIndex = 1, //FOOTPRINT(WoChien) .isLegendary = TRUE, .levelUpLearnset = sWoChienLevelUpLearnset, @@ -5419,7 +5419,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .trainerOffset = 0, .frontPic = gMonFrontPic_ChienPao, .frontPicSize = MON_COORDS_SIZE(64, 64), - .frontPicYOffset = 2, + .frontPicYOffset = 5, .frontAnimFrames = sAnims_ChienPao, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .backPic = gMonBackPic_ChienPao, @@ -5596,7 +5596,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_RoaringMoon, .shinyPalette = gMonShinyPalette_RoaringMoon, .iconSprite = gMonIcon_RoaringMoon, - .iconPalIndex = 3, + .iconPalIndex = 0, //FOOTPRINT(RoaringMoon) .isParadoxForm = TRUE, .levelUpLearnset = sRoaringMoonLevelUpLearnset, @@ -5650,7 +5650,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_IronValiant, .shinyPalette = gMonShinyPalette_IronValiant, .iconSprite = gMonIcon_IronValiant, - .iconPalIndex = 4, + .iconPalIndex = 1, //FOOTPRINT(IronValiant) .isParadoxForm = TRUE, .levelUpLearnset = sIronValiantLevelUpLearnset, @@ -5708,7 +5708,6 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconPalIndex = 0, //FOOTPRINT(Koraidon) .isLegendary = TRUE, - .isParadoxForm = TRUE, .levelUpLearnset = sKoraidonLevelUpLearnset, .teachableLearnset = sKoraidonTeachableLearnset, }, @@ -5764,7 +5763,6 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconPalIndex = 2, //FOOTPRINT(Miraidon) .isLegendary = TRUE, - .isParadoxForm = TRUE, .levelUpLearnset = sMiraidonLevelUpLearnset, .teachableLearnset = sMiraidonTeachableLearnset, }, @@ -5926,7 +5924,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_Poltchageist, .shinyPalette = gMonShinyPalette_Poltchageist, .iconSprite = gMonIcon_Poltchageist, - .iconPalIndex = 4, + .iconPalIndex = 1, //FOOTPRINT(Poltchageist) .levelUpLearnset = sPoltchageistLevelUpLearnset, .teachableLearnset = sPoltchageistTeachableLearnset, @@ -5979,7 +5977,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .palette = gMonPalette_Poltchageist, .shinyPalette = gMonShinyPalette_Poltchageist, .iconSprite = gMonIcon_Poltchageist, - .iconPalIndex = 4, + .iconPalIndex = 1, //FOOTPRINT(Poltchageist) .levelUpLearnset = sPoltchageistLevelUpLearnset, .teachableLearnset = sPoltchageistTeachableLearnset, @@ -6258,7 +6256,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = #endif //P_FAMILY_FEZANDIPITI #if P_FAMILY_OGERPON -#define OGERPON_SPECIES_INFO(Form, type, ability, color) \ +#define OGERPON_SPECIES_INFO(Form, type, ability, color, iconpalette) \ { \ .baseHP = 80, \ .baseAttack = 120, \ @@ -6299,8 +6297,8 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = /*.backAnimId = BACK_ANIM_NONE,*/ \ .palette = gMonPalette_Ogerpon##Form, \ .shinyPalette = gMonShinyPalette_Ogerpon##Form, \ - .iconSprite = gMonIcon_OgerponTealMask,/* Each form should have its own icon */ \ - .iconPalIndex = 1, \ + .iconSprite = gMonIcon_Ogerpon##Form, \ + .iconPalIndex = iconpalette, \ /*FOOTPRINT(Ogerpon)*/ \ .levelUpLearnset = sOgerponLevelUpLearnset, \ .teachableLearnset = sOgerponTeachableLearnset, \ @@ -6309,15 +6307,15 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .isLegendary = TRUE, \ } - [SPECIES_OGERPON_TEAL_MASK] = OGERPON_SPECIES_INFO(TealMask, TYPE_GRASS, ABILITY_DEFIANT, BODY_COLOR_GREEN), - [SPECIES_OGERPON_WELLSPRING_MASK] = OGERPON_SPECIES_INFO(WellspringMask, TYPE_WATER, ABILITY_WATER_ABSORB, BODY_COLOR_BLUE), - [SPECIES_OGERPON_HEARTHFLAME_MASK] = OGERPON_SPECIES_INFO(HearthflameMask, TYPE_FIRE, ABILITY_MOLD_BREAKER, BODY_COLOR_RED), - [SPECIES_OGERPON_CORNERSTONE_MASK] = OGERPON_SPECIES_INFO(CornerstoneMask, TYPE_ROCK, ABILITY_STURDY, BODY_COLOR_GRAY), + [SPECIES_OGERPON_TEAL_MASK] = OGERPON_SPECIES_INFO(TealMask, TYPE_GRASS, ABILITY_DEFIANT, BODY_COLOR_GREEN, 1), + [SPECIES_OGERPON_WELLSPRING_MASK] = OGERPON_SPECIES_INFO(WellspringMask, TYPE_WATER, ABILITY_WATER_ABSORB, BODY_COLOR_BLUE, 0), + [SPECIES_OGERPON_HEARTHFLAME_MASK] = OGERPON_SPECIES_INFO(HearthflameMask, TYPE_FIRE, ABILITY_MOLD_BREAKER, BODY_COLOR_RED, 0), + [SPECIES_OGERPON_CORNERSTONE_MASK] = OGERPON_SPECIES_INFO(CornerstoneMask, TYPE_ROCK, ABILITY_STURDY, BODY_COLOR_GRAY, 0), #if P_TERA_FORMS - [SPECIES_OGERPON_TEAL_MASK_TERA] = OGERPON_SPECIES_INFO(TealMask, TYPE_GRASS, ABILITY_EMBODY_ASPECT_TEAL, BODY_COLOR_GREEN), - [SPECIES_OGERPON_WELLSPRING_MASK_TERA] = OGERPON_SPECIES_INFO(WellspringMask, TYPE_WATER, ABILITY_EMBODY_ASPECT_WELLSPRING, BODY_COLOR_BLUE), - [SPECIES_OGERPON_HEARTHFLAME_MASK_TERA] = OGERPON_SPECIES_INFO(HearthflameMask, TYPE_FIRE, ABILITY_EMBODY_ASPECT_HEARTHFLAME, BODY_COLOR_RED), - [SPECIES_OGERPON_CORNERSTONE_MASK_TERA] = OGERPON_SPECIES_INFO(CornerstoneMask, TYPE_ROCK, ABILITY_EMBODY_ASPECT_CORNERSTONE, BODY_COLOR_GRAY), + [SPECIES_OGERPON_TEAL_MASK_TERA] = OGERPON_SPECIES_INFO(TealMask, TYPE_GRASS, ABILITY_EMBODY_ASPECT_TEAL, BODY_COLOR_GREEN, 1), + [SPECIES_OGERPON_WELLSPRING_MASK_TERA] = OGERPON_SPECIES_INFO(WellspringMask, TYPE_WATER, ABILITY_EMBODY_ASPECT_WELLSPRING, BODY_COLOR_BLUE, 0), + [SPECIES_OGERPON_HEARTHFLAME_MASK_TERA] = OGERPON_SPECIES_INFO(HearthflameMask, TYPE_FIRE, ABILITY_EMBODY_ASPECT_HEARTHFLAME, BODY_COLOR_RED, 0), + [SPECIES_OGERPON_CORNERSTONE_MASK_TERA] = OGERPON_SPECIES_INFO(CornerstoneMask, TYPE_ROCK, ABILITY_EMBODY_ASPECT_CORNERSTONE, BODY_COLOR_GRAY, 0), #endif //P_TERA_FORMS #endif //P_FAMILY_OGERPON @@ -6368,8 +6366,8 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .backAnimId = BACK_ANIM_NONE, .palette = gMonPalette_GougingFire, .shinyPalette = gMonShinyPalette_GougingFire, - //.iconSprite = gMonIcon_GougingFire, - //.iconPalIndex = 0, + .iconSprite = gMonIcon_GougingFire, + .iconPalIndex = 5, //FOOTPRINT(GougingFire) .isParadoxForm = TRUE, .levelUpLearnset = sGougingFireLevelUpLearnset, @@ -6423,8 +6421,8 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .backAnimId = BACK_ANIM_NONE, .palette = gMonPalette_RagingBolt, .shinyPalette = gMonShinyPalette_RagingBolt, - //.iconSprite = gMonIcon_RagingBolt, - //.iconPalIndex = 0, + .iconSprite = gMonIcon_RagingBolt, + .iconPalIndex = 2, //FOOTPRINT(RagingBolt) .isParadoxForm = TRUE, .levelUpLearnset = sRagingBoltLevelUpLearnset, @@ -6477,8 +6475,8 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .backAnimId = BACK_ANIM_NONE, .palette = gMonPalette_IronBoulder, .shinyPalette = gMonShinyPalette_IronBoulder, - //.iconSprite = gMonIcon_IronBoulder, - //.iconPalIndex = 0, + .iconSprite = gMonIcon_IronBoulder, + .iconPalIndex = 5, //FOOTPRINT(IronBoulder) .isParadoxForm = TRUE, .levelUpLearnset = sIronBoulderLevelUpLearnset, @@ -6532,8 +6530,8 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .backAnimId = BACK_ANIM_NONE, .palette = gMonPalette_IronCrown, .shinyPalette = gMonShinyPalette_IronCrown, - //.iconSprite = gMonIcon_IronCrown, - //.iconPalIndex = 0, + .iconSprite = gMonIcon_IronCrown, + .iconPalIndex = 3, //FOOTPRINT(IronCrown) .isParadoxForm = TRUE, .levelUpLearnset = sIronCrownLevelUpLearnset, @@ -6587,8 +6585,8 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, //.palette = gMonPalette_TerapagosNormal, //.shinyPalette = gMonShinyPalette_TerapagosNormal, - //.iconSprite = gMonIcon_TerapagosNormal, - //.iconPalIndex = 0, + .iconSprite = gMonIcon_TerapagosNormal, + .iconPalIndex = 0, //FOOTPRINT(Terapagos) .isLegendary = TRUE, .levelUpLearnset = sTerapagosLevelUpLearnset, @@ -6643,8 +6641,8 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, //.palette = gMonPalette_TerapagosTerastal, //.shinyPalette = gMonShinyPalette_TerapagosTerastal, - //.iconSprite = gMonIcon_TerapagosTerastal, - //.iconPalIndex = 0, + .iconSprite = gMonIcon_TerapagosTerastal, + .iconPalIndex = 0, //FOOTPRINT(Terapagos) .isLegendary = TRUE, .levelUpLearnset = sTerapagosLevelUpLearnset, @@ -6698,8 +6696,8 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, //.palette = gMonPalette_TerapagosStellar, //.shinyPalette = gMonShinyPalette_TerapagosStellar, - //.iconSprite = gMonIcon_TerapagosStellar, - //.iconPalIndex = 0, + .iconSprite = gMonIcon_TerapagosStellar, + .iconPalIndex = 0, //FOOTPRINT(Terapagos) .isLegendary = TRUE, .levelUpLearnset = sTerapagosLevelUpLearnset, @@ -6744,19 +6742,19 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .pokemonOffset = 0, .trainerScale = 365, .trainerOffset = 7, - //.frontPic = gMonFrontPic_Pecharunt, - //.frontPicSize = MON_COORDS_SIZE(64, 64), - .frontPicYOffset = 0, + .frontPic = gMonFrontPic_Pecharunt, + .frontPicSize = MON_COORDS_SIZE(64, 64), + .frontPicYOffset = 13, .frontAnimFrames = sAnims_Pecharunt, - //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - //.backPic = gMonBackPic_Pecharunt, - //.backPicSize = MON_COORDS_SIZE(64, 64), - .backPicYOffset = 0, - //.backAnimId = BACK_ANIM_NONE, - //.palette = gMonPalette_Pecharunt, - //.shinyPalette = gMonShinyPalette_Pecharunt, - //.iconSprite = gMonIcon_Pecharunt, - //.iconPalIndex = 0, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .backPic = gMonBackPic_Pecharunt, + .backPicSize = MON_COORDS_SIZE(64, 64), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_NONE, + .palette = gMonPalette_Pecharunt, + .shinyPalette = gMonShinyPalette_Pecharunt, + .iconSprite = gMonIcon_Pecharunt, + .iconPalIndex = 0, //FOOTPRINT(Pecharunt) .isMythical = TRUE, .levelUpLearnset = sPecharuntLevelUpLearnset, diff --git a/src/data/trainer_parties.h b/src/data/trainer_parties.h index b3128781c4..8b13789179 100644 --- a/src/data/trainer_parties.h +++ b/src/data/trainer_parties.h @@ -1,11806 +1 @@ -static const struct TrainerMon sParty_Sawyer1[] = { - { - .lvl = 21, - .species = SPECIES_GEODUDE, - } -}; -static const struct TrainerMon sParty_GruntAquaHideout1[] = { - { - .lvl = 32, - .species = SPECIES_POOCHYENA, - } -}; - -static const struct TrainerMon sParty_GruntAquaHideout2[] = { - { - .lvl = 31, - .species = SPECIES_ZUBAT, - }, - { - .lvl = 31, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_GruntAquaHideout3[] = { - { - .lvl = 32, - .species = SPECIES_ZUBAT, - } -}; - -static const struct TrainerMon sParty_GruntAquaHideout4[] = { - { - .lvl = 32, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_GruntSeafloorCavern1[] = { - { - .lvl = 36, - .species = SPECIES_POOCHYENA, - } -}; - -static const struct TrainerMon sParty_GruntSeafloorCavern2[] = { - { - .lvl = 36, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_GruntSeafloorCavern3[] = { - { - .lvl = 36, - .species = SPECIES_ZUBAT, - } -}; - -static const struct TrainerMon sParty_Gabrielle1[] = { - { - .lvl = 26, - .species = SPECIES_SKITTY, - }, - { - .lvl = 26, - .species = SPECIES_POOCHYENA, - }, - { - .lvl = 26, - .species = SPECIES_ZIGZAGOON, - }, - { - .lvl = 26, - .species = SPECIES_LOTAD, - }, - { - .lvl = 26, - .species = SPECIES_SEEDOT, - }, - { - .lvl = 26, - .species = SPECIES_TAILLOW, - } -}; - -static const struct TrainerMon sParty_GruntPetalburgWoods[] = { - { - .lvl = 9, - .species = SPECIES_POOCHYENA, - } -}; - -static const struct TrainerMon sParty_Marcel[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_MANECTRIC, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_SHIFTRY, - } -}; - -static const struct TrainerMon sParty_Alberto[] = { - { - .lvl = 30, - .species = SPECIES_PELIPPER, - }, - { - .lvl = 30, - .species = SPECIES_XATU, - } -}; - -static const struct TrainerMon sParty_Ed[] = { - { - .lvl = 30, - .species = SPECIES_ZANGOOSE, - }, - { - .lvl = 30, - .species = SPECIES_SEVIPER, - } -}; - -static const struct TrainerMon sParty_GruntSeafloorCavern4[] = { - { - .lvl = 36, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_Declan[] = { - { - .lvl = 34, - .species = SPECIES_GYARADOS, - } -}; - -static const struct TrainerMon sParty_GruntRusturfTunnel[] = { - { - .lvl = 11, - .species = SPECIES_POOCHYENA, - } -}; - -static const struct TrainerMon sParty_GruntWeatherInst1[] = { - { - .lvl = 27, - .species = SPECIES_ZUBAT, - }, - { - .lvl = 27, - .species = SPECIES_POOCHYENA, - } -}; - -static const struct TrainerMon sParty_GruntWeatherInst2[] = { - { - .lvl = 27, - .species = SPECIES_POOCHYENA, - }, - { - .lvl = 27, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_GruntWeatherInst3[] = { - { - .lvl = 26, - .species = SPECIES_POOCHYENA, - }, - { - .lvl = 26, - .species = SPECIES_ZUBAT, - }, - { - .lvl = 26, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_GruntMuseum1[] = { - { - .lvl = 15, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_GruntMuseum2[] = { - { - .lvl = 14, - .species = SPECIES_ZUBAT, - }, - { - .lvl = 14, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_GruntSpaceCenter1[] = { - { - .lvl = 32, - .species = SPECIES_NUMEL, - } -}; - -static const struct TrainerMon sParty_GruntMtPyre1[] = { - { - .lvl = 32, - .species = SPECIES_ZUBAT, - } -}; - -static const struct TrainerMon sParty_GruntMtPyre2[] = { - { - .lvl = 32, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_GruntMtPyre3[] = { - { - .lvl = 30, - .species = SPECIES_POOCHYENA, - }, - { - .lvl = 30, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_GruntWeatherInst4[] = { - { - .lvl = 28, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_GruntAquaHideout5[] = { - { - .lvl = 32, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_GruntAquaHideout6[] = { - { - .lvl = 32, - .species = SPECIES_ZUBAT, - } -}; - -static const struct TrainerMon sParty_Fredrick[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 30, - .species = SPECIES_MAKUHITA, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 30, - .species = SPECIES_MACHOKE, - } -}; - -static const struct TrainerMon sParty_Matt[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 34, - .species = SPECIES_MIGHTYENA, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 34, - .species = SPECIES_GOLBAT, - } -}; - -static const struct TrainerMon sParty_Zander[] = { - { - .lvl = 31, - .species = SPECIES_HARIYAMA, - } -}; - -static const struct TrainerMon sParty_ShellyWeatherInstitute[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 28, - .species = SPECIES_CARVANHA, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 28, - .species = SPECIES_MIGHTYENA, - } -}; - -static const struct TrainerMon sParty_ShellySeafloorCavern[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 37, - .species = SPECIES_SHARPEDO, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 37, - .species = SPECIES_MIGHTYENA, - } -}; - -static const struct TrainerMon sParty_Archie[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 41, - .species = SPECIES_MIGHTYENA, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 41, - .species = SPECIES_CROBAT, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 43, - .species = SPECIES_SHARPEDO, - } -}; - -static const struct TrainerMon sParty_Leah[] = { - { - .lvl = 31, - .species = SPECIES_SPOINK, - } -}; - -static const struct TrainerMon sParty_Daisy[] = { - { - .lvl = 14, - .species = SPECIES_SHROOMISH, - }, - { - .lvl = 14, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Rose1[] = { - { - .lvl = 14, - .species = SPECIES_ROSELIA, - }, - { - .lvl = 14, - .species = SPECIES_SHROOMISH, - }, - { - .lvl = 14, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Felix[] = { - { - .lvl = 43, - .species = SPECIES_MEDICHAM, - .moves = {MOVE_PSYCHIC, MOVE_NONE, MOVE_NONE, MOVE_NONE} - }, - { - .lvl = 43, - .species = SPECIES_CLAYDOL, - .moves = {MOVE_SKILL_SWAP, MOVE_EARTHQUAKE, MOVE_NONE, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Violet[] = { - { - .lvl = 26, - .species = SPECIES_ROSELIA, - }, - { - .lvl = 26, - .species = SPECIES_GLOOM, - } -}; - -static const struct TrainerMon sParty_Rose2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 26, - .species = SPECIES_SHROOMISH, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 26, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Rose3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 28, - .species = SPECIES_SHROOMISH, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 28, - .species = SPECIES_GLOOM, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 28, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Rose4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 31, - .species = SPECIES_SHROOMISH, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 31, - .species = SPECIES_GLOOM, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 31, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Rose5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 34, - .species = SPECIES_BRELOOM, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 34, - .species = SPECIES_GLOOM, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 34, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Dusty1[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 23, - .species = SPECIES_SANDSLASH, - .moves = {MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING} - } -}; - -static const struct TrainerMon sParty_Chip[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 27, - .species = SPECIES_BALTOY, - .moves = {MOVE_PSYBEAM, MOVE_SELF_DESTRUCT, MOVE_SANDSTORM, MOVE_ANCIENT_POWER} - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 27, - .species = SPECIES_SANDSHREW, - .moves = {MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING} - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 27, - .species = SPECIES_SANDSLASH, - .moves = {MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING} - } -}; - -static const struct TrainerMon sParty_Foster[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 25, - .species = SPECIES_SANDSHREW, - .moves = {MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 25, - .species = SPECIES_SANDSLASH, - .moves = {MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING} - } -}; - -static const struct TrainerMon sParty_Dusty2[] = { - { - .iv = TRAINER_PARTY_IVS(7, 7, 7, 7, 7, 7), - .lvl = 27, - .species = SPECIES_SANDSLASH, - .moves = {MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING} - } -}; - -static const struct TrainerMon sParty_Dusty3[] = { - { - .iv = TRAINER_PARTY_IVS(8, 8, 8, 8, 8, 8), - .lvl = 30, - .species = SPECIES_SANDSLASH, - .moves = {MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING} - } -}; - -static const struct TrainerMon sParty_Dusty4[] = { - { - .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), - .lvl = 33, - .species = SPECIES_SANDSLASH, - .moves = {MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING} - } -}; - -static const struct TrainerMon sParty_Dusty5[] = { - { - .iv = TRAINER_PARTY_IVS(10, 10, 10, 10, 10, 10), - .lvl = 36, - .species = SPECIES_SANDSLASH, - .moves = {MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING} - } -}; - -static const struct TrainerMon sParty_GabbyAndTy1[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 17, - .species = SPECIES_MAGNEMITE, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 17, - .species = SPECIES_WHISMUR, - } -}; - -static const struct TrainerMon sParty_GabbyAndTy2[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 27, - .species = SPECIES_MAGNEMITE, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 27, - .species = SPECIES_LOUDRED, - } -}; - -static const struct TrainerMon sParty_GabbyAndTy3[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 30, - .species = SPECIES_MAGNETON, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 30, - .species = SPECIES_LOUDRED, - } -}; - -static const struct TrainerMon sParty_GabbyAndTy4[] = { - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 33, - .species = SPECIES_MAGNETON, - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 33, - .species = SPECIES_LOUDRED, - } -}; - -static const struct TrainerMon sParty_GabbyAndTy5[] = { - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 36, - .species = SPECIES_MAGNETON, - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 36, - .species = SPECIES_LOUDRED, - } -}; - -static const struct TrainerMon sParty_GabbyAndTy6[] = { - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 39, - .species = SPECIES_MAGNETON, - .moves = {MOVE_SONIC_BOOM, MOVE_THUNDER_WAVE, MOVE_METAL_SOUND, MOVE_THUNDERBOLT} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 39, - .species = SPECIES_EXPLOUD, - .moves = {MOVE_ASTONISH, MOVE_STOMP, MOVE_SUPERSONIC, MOVE_HYPER_VOICE} - } -}; - -static const struct TrainerMon sParty_Lola1[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 12, - .species = SPECIES_AZURILL, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 12, - .species = SPECIES_AZURILL, - } -}; - -static const struct TrainerMon sParty_Austina[] = { - { - .lvl = 26, - .species = SPECIES_MARILL, - } -}; - -static const struct TrainerMon sParty_Gwen[] = { - { - .lvl = 26, - .species = SPECIES_MARILL, - } -}; - -static const struct TrainerMon sParty_Lola2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 26, - .species = SPECIES_MARILL, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 26, - .species = SPECIES_MARILL, - } -}; - -static const struct TrainerMon sParty_Lola3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 29, - .species = SPECIES_MARILL, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 29, - .species = SPECIES_MARILL, - } -}; - -static const struct TrainerMon sParty_Lola4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 32, - .species = SPECIES_MARILL, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 32, - .species = SPECIES_MARILL, - } -}; - -static const struct TrainerMon sParty_Lola5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 35, - .species = SPECIES_AZUMARILL, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 35, - .species = SPECIES_AZUMARILL, - } -}; - -static const struct TrainerMon sParty_Ricky1[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 13, - .species = SPECIES_ZIGZAGOON, - .moves = {MOVE_SAND_ATTACK, MOVE_HEADBUTT, MOVE_TAIL_WHIP, MOVE_SURF} - } -}; - -static const struct TrainerMon sParty_Simon[] = { - { - .lvl = 12, - .species = SPECIES_AZURILL, - }, - { - .lvl = 12, - .species = SPECIES_MARILL, - } -}; - -static const struct TrainerMon sParty_Charlie[] = { - { - .lvl = 26, - .species = SPECIES_MARILL, - } -}; - -static const struct TrainerMon sParty_Ricky2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 27, - .species = SPECIES_LINOONE, - .moves = {MOVE_SAND_ATTACK, MOVE_PIN_MISSILE, MOVE_TAIL_WHIP, MOVE_SURF} - } -}; - -static const struct TrainerMon sParty_Ricky3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 30, - .species = SPECIES_LINOONE, - .moves = {MOVE_SAND_ATTACK, MOVE_PIN_MISSILE, MOVE_TAIL_WHIP, MOVE_SURF} - } -}; - -static const struct TrainerMon sParty_Ricky4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 33, - .species = SPECIES_LINOONE, - .moves = {MOVE_SAND_ATTACK, MOVE_PIN_MISSILE, MOVE_TAIL_WHIP, MOVE_SURF} - } -}; - -static const struct TrainerMon sParty_Ricky5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 36, - .species = SPECIES_LINOONE, - .moves = {MOVE_SAND_ATTACK, MOVE_PIN_MISSILE, MOVE_TAIL_WHIP, MOVE_SURF} - } -}; - -static const struct TrainerMon sParty_Randall[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 26, - .species = SPECIES_SWELLOW, - .heldItem = ITEM_NONE, - .moves = {MOVE_QUICK_ATTACK, MOVE_AGILITY, MOVE_WING_ATTACK, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Parker[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 26, - .species = SPECIES_SPINDA, - .heldItem = ITEM_NONE, - .moves = {MOVE_TEETER_DANCE, MOVE_DIZZY_PUNCH, MOVE_FOCUS_PUNCH, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_George[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 26, - .species = SPECIES_SLAKOTH, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_SLACK_OFF, MOVE_COUNTER, MOVE_SHADOW_BALL, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Berke[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 26, - .species = SPECIES_VIGOROTH, - .heldItem = ITEM_NONE, - .moves = {MOVE_FOCUS_ENERGY, MOVE_SLASH, MOVE_NONE, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Braxton[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 28, - .species = SPECIES_SWELLOW, - .moves = {MOVE_FOCUS_ENERGY, MOVE_QUICK_ATTACK, MOVE_WING_ATTACK, MOVE_ENDEAVOR} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 28, - .species = SPECIES_TRAPINCH, - .moves = {MOVE_BITE, MOVE_DIG, MOVE_FEINT_ATTACK, MOVE_SAND_TOMB} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 28, - .species = SPECIES_WAILMER, - .moves = {MOVE_ROLLOUT, MOVE_WHIRLPOOL, MOVE_ASTONISH, MOVE_WATER_PULSE} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 28, - .species = SPECIES_MAGNETON, - .moves = {MOVE_THUNDERBOLT, MOVE_SUPERSONIC, MOVE_THUNDER_WAVE, MOVE_SONIC_BOOM} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 28, - .species = SPECIES_SHIFTRY, - .moves = {MOVE_GIGA_DRAIN, MOVE_FEINT_ATTACK, MOVE_DOUBLE_TEAM, MOVE_SWAGGER} - } -}; - -static const struct TrainerMon sParty_Vincent[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 44, - .species = SPECIES_SABLEYE, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 44, - .species = SPECIES_MEDICHAM, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 44, - .species = SPECIES_SHARPEDO, - } -}; - -static const struct TrainerMon sParty_Leroy[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 46, - .species = SPECIES_MAWILE, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 46, - .species = SPECIES_STARMIE, - } -}; - -static const struct TrainerMon sParty_Wilton1[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 17, - .species = SPECIES_ELECTRIKE, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 17, - .species = SPECIES_WAILMER, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 17, - .species = SPECIES_MAKUHITA, - } -}; - -static const struct TrainerMon sParty_Edgar[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 43, - .species = SPECIES_CACTURNE, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 43, - .species = SPECIES_PELIPPER, - } -}; - -static const struct TrainerMon sParty_Albert[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 43, - .species = SPECIES_MAGNETON, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 43, - .species = SPECIES_MUK, - } -}; - -static const struct TrainerMon sParty_Samuel[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 42, - .species = SPECIES_SWELLOW, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 42, - .species = SPECIES_MAWILE, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 42, - .species = SPECIES_KADABRA, - } -}; - -static const struct TrainerMon sParty_Vito[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 42, - .species = SPECIES_DODRIO, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 42, - .species = SPECIES_KADABRA, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 42, - .species = SPECIES_ELECTRODE, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 42, - .species = SPECIES_SHIFTRY, - } -}; - -static const struct TrainerMon sParty_Owen[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 42, - .species = SPECIES_KECLEON, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 42, - .species = SPECIES_GRAVELER, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 42, - .species = SPECIES_WAILORD, - } -}; - -static const struct TrainerMon sParty_Wilton2[] = { - { - .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), - .lvl = 26, - .species = SPECIES_ELECTRIKE, - }, - { - .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), - .lvl = 26, - .species = SPECIES_WAILMER, - }, - { - .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), - .lvl = 26, - .species = SPECIES_MAKUHITA, - } -}; - -static const struct TrainerMon sParty_Wilton3[] = { - { - .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), - .lvl = 29, - .species = SPECIES_MANECTRIC, - }, - { - .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), - .lvl = 29, - .species = SPECIES_WAILMER, - }, - { - .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), - .lvl = 29, - .species = SPECIES_MAKUHITA, - } -}; - -static const struct TrainerMon sParty_Wilton4[] = { - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 32, - .species = SPECIES_MANECTRIC, - }, - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 32, - .species = SPECIES_WAILMER, - }, - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 32, - .species = SPECIES_MAKUHITA, - } -}; - -static const struct TrainerMon sParty_Wilton5[] = { - { - .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), - .lvl = 35, - .species = SPECIES_MANECTRIC, - }, - { - .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), - .lvl = 35, - .species = SPECIES_WAILMER, - }, - { - .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), - .lvl = 35, - .species = SPECIES_HARIYAMA, - } -}; - -static const struct TrainerMon sParty_Warren[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 33, - .species = SPECIES_GRAVELER, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 33, - .species = SPECIES_LUDICOLO, - } -}; - -static const struct TrainerMon sParty_Mary[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 26, - .species = SPECIES_DELCATTY, - .heldItem = ITEM_NONE, - .moves = {MOVE_FEINT_ATTACK, MOVE_SHOCK_WAVE, MOVE_NONE, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Alexia[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 26, - .species = SPECIES_WIGGLYTUFF, - .heldItem = ITEM_NONE, - .moves = {MOVE_DEFENSE_CURL, MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Jody[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 26, - .species = SPECIES_ZANGOOSE, - .heldItem = ITEM_NONE, - .moves = {MOVE_SWORDS_DANCE, MOVE_SLASH, MOVE_NONE, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Wendy[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_MAWILE, - .moves = {MOVE_BATON_PASS, MOVE_FEINT_ATTACK, MOVE_FAKE_TEARS, MOVE_BITE} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_ROSELIA, - .moves = {MOVE_MEGA_DRAIN, MOVE_MAGICAL_LEAF, MOVE_GRASS_WHISTLE, MOVE_LEECH_SEED} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_PELIPPER, - .moves = {MOVE_FLY, MOVE_WATER_GUN, MOVE_MIST, MOVE_PROTECT} - } -}; - -static const struct TrainerMon sParty_Keira[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 45, - .species = SPECIES_LAIRON, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 45, - .species = SPECIES_MANECTRIC, - } -}; - -static const struct TrainerMon sParty_Brooke1[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 17, - .species = SPECIES_WINGULL, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 17, - .species = SPECIES_NUMEL, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 17, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Jennifer[] = { - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 30, - .species = SPECIES_SABLEYE, - } -}; - -static const struct TrainerMon sParty_Hope[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 45, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Shannon[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 45, - .species = SPECIES_CLAYDOL, - } -}; - -static const struct TrainerMon sParty_Michelle[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 42, - .species = SPECIES_TORKOAL, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 42, - .species = SPECIES_MEDICHAM, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 42, - .species = SPECIES_LUDICOLO, - } -}; - -static const struct TrainerMon sParty_Caroline[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 43, - .species = SPECIES_SKARMORY, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 43, - .species = SPECIES_SABLEYE, - } -}; - -static const struct TrainerMon sParty_Julie[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 42, - .species = SPECIES_SANDSLASH, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 42, - .species = SPECIES_NINETALES, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 42, - .species = SPECIES_TROPIUS, - } -}; - -static const struct TrainerMon sParty_Brooke2[] = { - { - .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), - .lvl = 26, - .species = SPECIES_WINGULL, - }, - { - .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), - .lvl = 26, - .species = SPECIES_NUMEL, - }, - { - .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), - .lvl = 26, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Brooke3[] = { - { - .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), - .lvl = 29, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), - .lvl = 29, - .species = SPECIES_NUMEL, - }, - { - .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), - .lvl = 29, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Brooke4[] = { - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 32, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 32, - .species = SPECIES_NUMEL, - }, - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 32, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Brooke5[] = { - { - .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), - .lvl = 34, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), - .lvl = 34, - .species = SPECIES_CAMERUPT, - }, - { - .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), - .lvl = 34, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Patricia[] = { - { - .lvl = 41, - .species = SPECIES_BANETTE, - }, - { - .lvl = 41, - .species = SPECIES_LUNATONE, - } -}; - -static const struct TrainerMon sParty_Kindra[] = { - { - .lvl = 30, - .species = SPECIES_DUSKULL, - }, - { - .lvl = 30, - .species = SPECIES_SHUPPET, - } -}; - -static const struct TrainerMon sParty_Tammy[] = { - { - .lvl = 29, - .species = SPECIES_DUSKULL, - }, - { - .lvl = 29, - .species = SPECIES_SHUPPET, - } -}; - -static const struct TrainerMon sParty_Valerie1[] = { - { - .lvl = 32, - .species = SPECIES_SABLEYE, - } -}; - -static const struct TrainerMon sParty_Tasha[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 32, - .species = SPECIES_SHUPPET, - } -}; - -static const struct TrainerMon sParty_Valerie2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 31, - .species = SPECIES_SABLEYE, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 31, - .species = SPECIES_SPOINK, - } -}; - -static const struct TrainerMon sParty_Valerie3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 35, - .species = SPECIES_SPOINK, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 35, - .species = SPECIES_SABLEYE, - } -}; - -static const struct TrainerMon sParty_Valerie4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 40, - .species = SPECIES_SPOINK, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 40, - .species = SPECIES_SABLEYE, - } -}; - -static const struct TrainerMon sParty_Valerie5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 42, - .species = SPECIES_DUSKULL, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 42, - .species = SPECIES_SABLEYE, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 42, - .species = SPECIES_GRUMPIG, - } -}; - -static const struct TrainerMon sParty_Cindy1[] = { - { - .lvl = 7, - .species = SPECIES_ZIGZAGOON, - .heldItem = ITEM_NUGGET - } -}; - -static const struct TrainerMon sParty_Daphne[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 39, - .species = SPECIES_LUVDISC, - .heldItem = ITEM_NUGGET, - .moves = {MOVE_ATTRACT, MOVE_SWEET_KISS, MOVE_FLAIL, MOVE_WATER_PULSE} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 39, - .species = SPECIES_LUVDISC, - .heldItem = ITEM_NUGGET, - .moves = {MOVE_ATTRACT, MOVE_SAFEGUARD, MOVE_TAKE_DOWN, MOVE_WATER_PULSE} - } -}; - -static const struct TrainerMon sParty_GruntSpaceCenter2[] = { - { - .lvl = 26, - .species = SPECIES_MIGHTYENA, - }, - { - .lvl = 28, - .species = SPECIES_MIGHTYENA, - }, - { - .lvl = 30, - .species = SPECIES_NUMEL, - } -}; - -static const struct TrainerMon sParty_Cindy2[] = { - { - .lvl = 11, - .species = SPECIES_ZIGZAGOON, - .heldItem = ITEM_NUGGET, - .moves = {MOVE_TACKLE, MOVE_TAIL_WHIP, MOVE_NONE, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Brianna[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 40, - .species = SPECIES_SEAKING, - .heldItem = ITEM_NUGGET - } -}; - -static const struct TrainerMon sParty_Naomi[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 45, - .species = SPECIES_ROSELIA, - .heldItem = ITEM_NUGGET - } -}; - -static const struct TrainerMon sParty_Cindy3[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 27, - .species = SPECIES_LINOONE, - .heldItem = ITEM_NUGGET - } -}; - -static const struct TrainerMon sParty_Cindy4[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 30, - .species = SPECIES_LINOONE, - .heldItem = ITEM_NUGGET - } -}; - -static const struct TrainerMon sParty_Cindy5[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 33, - .species = SPECIES_LINOONE, - .heldItem = ITEM_NUGGET - } -}; - -static const struct TrainerMon sParty_Cindy6[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 36, - .species = SPECIES_LINOONE, - .heldItem = ITEM_NUGGET, - .moves = {MOVE_FURY_SWIPES, MOVE_MUD_SPORT, MOVE_ODOR_SLEUTH, MOVE_SAND_ATTACK} - } -}; - -static const struct TrainerMon sParty_Melissa[] = { - { - .lvl = 21, - .species = SPECIES_MARILL, - } -}; - -static const struct TrainerMon sParty_Sheila[] = { - { - .lvl = 21, - .species = SPECIES_SHROOMISH, - } -}; - -static const struct TrainerMon sParty_Shirley[] = { - { - .lvl = 21, - .species = SPECIES_NUMEL, - } -}; - -static const struct TrainerMon sParty_Jessica1[] = { - { - .lvl = 29, - .species = SPECIES_KECLEON, - .moves = {MOVE_BIND, MOVE_LICK, MOVE_FURY_SWIPES, MOVE_FEINT_ATTACK} - }, - { - .lvl = 29, - .species = SPECIES_SEVIPER, - .moves = {MOVE_POISON_TAIL, MOVE_SCREECH, MOVE_GLARE, MOVE_CRUNCH} - } -}; - -static const struct TrainerMon sParty_Connie[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 40, - .species = SPECIES_GOLDEEN, - } -}; - -static const struct TrainerMon sParty_Bridget[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 40, - .species = SPECIES_AZUMARILL, - } -}; - -static const struct TrainerMon sParty_Olivia[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 35, - .species = SPECIES_CLAMPERL, - .moves = {MOVE_IRON_DEFENSE, MOVE_WHIRLPOOL, MOVE_RAIN_DANCE, MOVE_WATER_PULSE} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 37, - .species = SPECIES_CORPHISH, - .moves = {MOVE_TAUNT, MOVE_CRABHAMMER, MOVE_WATER_PULSE, MOVE_NONE} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 39, - .species = SPECIES_LOMBRE, - .moves = {MOVE_UPROAR, MOVE_FURY_SWIPES, MOVE_FAKE_OUT, MOVE_WATER_PULSE} - } -}; - -static const struct TrainerMon sParty_Tiffany[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 39, - .species = SPECIES_CARVANHA, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 39, - .species = SPECIES_SHARPEDO, - } -}; - -static const struct TrainerMon sParty_Jessica2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 35, - .species = SPECIES_KECLEON, - .moves = {MOVE_BIND, MOVE_LICK, MOVE_FURY_SWIPES, MOVE_FEINT_ATTACK} - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 35, - .species = SPECIES_SEVIPER, - .moves = {MOVE_POISON_TAIL, MOVE_SCREECH, MOVE_GLARE, MOVE_CRUNCH} - } -}; - -static const struct TrainerMon sParty_Jessica3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 38, - .species = SPECIES_KECLEON, - .moves = {MOVE_BIND, MOVE_LICK, MOVE_FURY_SWIPES, MOVE_FEINT_ATTACK} - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 38, - .species = SPECIES_SEVIPER, - .moves = {MOVE_POISON_TAIL, MOVE_SCREECH, MOVE_GLARE, MOVE_CRUNCH} - } -}; - -static const struct TrainerMon sParty_Jessica4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 41, - .species = SPECIES_KECLEON, - .moves = {MOVE_BIND, MOVE_LICK, MOVE_FURY_SWIPES, MOVE_FEINT_ATTACK} - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 41, - .species = SPECIES_SEVIPER, - .moves = {MOVE_POISON_TAIL, MOVE_SCREECH, MOVE_GLARE, MOVE_CRUNCH} - } -}; - -static const struct TrainerMon sParty_Jessica5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 44, - .species = SPECIES_KECLEON, - .moves = {MOVE_BIND, MOVE_LICK, MOVE_FURY_SWIPES, MOVE_FEINT_ATTACK} - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 44, - .species = SPECIES_SEVIPER, - .moves = {MOVE_POISON_TAIL, MOVE_SCREECH, MOVE_GLARE, MOVE_CRUNCH} - } -}; - -static const struct TrainerMon sParty_Winston1[] = { - { - .lvl = 7, - .species = SPECIES_ZIGZAGOON, - .heldItem = ITEM_NUGGET - } -}; - -static const struct TrainerMon sParty_Mollie[] = { - { - .lvl = 33, - .species = SPECIES_WHISCASH, - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 33, - .species = SPECIES_MEDITITE, - } -}; - -static const struct TrainerMon sParty_Garret[] = { - { - .lvl = 45, - .species = SPECIES_AZUMARILL, - .heldItem = ITEM_NUGGET - } -}; - -static const struct TrainerMon sParty_Winston2[] = { - { - .lvl = 27, - .species = SPECIES_LINOONE, - .heldItem = ITEM_NUGGET - } -}; - -static const struct TrainerMon sParty_Winston3[] = { - { - .lvl = 30, - .species = SPECIES_LINOONE, - .heldItem = ITEM_NUGGET - } -}; - -static const struct TrainerMon sParty_Winston4[] = { - { - .lvl = 33, - .species = SPECIES_LINOONE, - .heldItem = ITEM_NUGGET - } -}; - -static const struct TrainerMon sParty_Winston5[] = { - { - .lvl = 36, - .species = SPECIES_LINOONE, - .heldItem = ITEM_NUGGET, - .moves = {MOVE_FURY_SWIPES, MOVE_MUD_SPORT, MOVE_ODOR_SLEUTH, MOVE_SAND_ATTACK} - } -}; - -static const struct TrainerMon sParty_Steve1[] = { - { - .lvl = 19, - .species = SPECIES_ARON, - } -}; - -static const struct TrainerMon sParty_Thalia1[] = { - { - .lvl = 25, - .species = SPECIES_WAILMER, - }, - { - .lvl = 25, - .species = SPECIES_HORSEA, - } -}; - -static const struct TrainerMon sParty_Mark[] = { - { - .lvl = 31, - .species = SPECIES_RHYHORN, - } -}; - -static const struct TrainerMon sParty_GruntMtChimney1[] = { - { - .lvl = 20, - .species = SPECIES_NUMEL, - } -}; - -static const struct TrainerMon sParty_Steve2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 27, - .species = SPECIES_LAIRON, - } -}; - -static const struct TrainerMon sParty_Steve3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 29, - .species = SPECIES_LAIRON, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 29, - .species = SPECIES_RHYHORN, - } -}; - -static const struct TrainerMon sParty_Steve4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 32, - .species = SPECIES_LAIRON, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 32, - .species = SPECIES_RHYHORN, - } -}; - -static const struct TrainerMon sParty_Steve5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 35, - .species = SPECIES_AGGRON, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 35, - .species = SPECIES_RHYDON, - } -}; - -static const struct TrainerMon sParty_Luis[] = { - { - .lvl = 26, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_Dominik[] = { - { - .lvl = 26, - .species = SPECIES_TENTACOOL, - } -}; - -static const struct TrainerMon sParty_Douglas[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 24, - .species = SPECIES_TENTACOOL, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 24, - .species = SPECIES_TENTACOOL, - } -}; - -static const struct TrainerMon sParty_Darrin[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 24, - .species = SPECIES_TENTACOOL, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 24, - .species = SPECIES_WINGULL, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 24, - .species = SPECIES_TENTACOOL, - } -}; - -static const struct TrainerMon sParty_Tony1[] = { - { - .lvl = 26, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_Jerome[] = { - { - .lvl = 26, - .species = SPECIES_TENTACRUEL, - } -}; - -static const struct TrainerMon sParty_Matthew[] = { - { - .lvl = 26, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_David[] = { - { - .lvl = 25, - .species = SPECIES_TENTACOOL, - }, - { - .lvl = 25, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_Spencer[] = { - { - .lvl = 33, - .species = SPECIES_TENTACOOL, - }, - { - .lvl = 33, - .species = SPECIES_WINGULL, - } -}; - -static const struct TrainerMon sParty_Roland[] = { - { - .lvl = 34, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_Nolen[] = { - { - .lvl = 34, - .species = SPECIES_TENTACRUEL, - } -}; - -static const struct TrainerMon sParty_Stan[] = { - { - .lvl = 34, - .species = SPECIES_HORSEA, - } -}; - -static const struct TrainerMon sParty_Barry[] = { - { - .lvl = 34, - .species = SPECIES_GYARADOS, - } -}; - -static const struct TrainerMon sParty_Dean[] = { - { - .lvl = 31, - .species = SPECIES_CARVANHA, - }, - { - .lvl = 31, - .species = SPECIES_WINGULL, - }, - { - .lvl = 31, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_Rodney[] = { - { - .lvl = 34, - .species = SPECIES_GYARADOS, - } -}; - -static const struct TrainerMon sParty_Richard[] = { - { - .lvl = 34, - .species = SPECIES_PELIPPER, - } -}; - -static const struct TrainerMon sParty_Herman[] = { - { - .lvl = 33, - .species = SPECIES_WINGULL, - }, - { - .lvl = 33, - .species = SPECIES_TENTACRUEL, - } -}; - -static const struct TrainerMon sParty_Santiago[] = { - { - .lvl = 33, - .species = SPECIES_TENTACRUEL, - }, - { - .lvl = 33, - .species = SPECIES_WAILMER, - } -}; - -static const struct TrainerMon sParty_Gilbert[] = { - { - .lvl = 34, - .species = SPECIES_SHARPEDO, - } -}; - -static const struct TrainerMon sParty_Franklin[] = { - { - .lvl = 34, - .species = SPECIES_SEALEO, - } -}; - -static const struct TrainerMon sParty_Kevin[] = { - { - .lvl = 34, - .species = SPECIES_SPHEAL, - } -}; - -static const struct TrainerMon sParty_Jack[] = { - { - .lvl = 34, - .species = SPECIES_GYARADOS, - } -}; - -static const struct TrainerMon sParty_Dudley[] = { - { - .lvl = 33, - .species = SPECIES_TENTACOOL, - }, - { - .lvl = 33, - .species = SPECIES_WINGULL, - }, - { - .lvl = 33, - .species = SPECIES_TENTACRUEL, - } -}; - -static const struct TrainerMon sParty_Chad[] = { - { - .lvl = 33, - .species = SPECIES_TENTACOOL, - }, - { - .lvl = 33, - .species = SPECIES_WAILMER, - } -}; - -static const struct TrainerMon sParty_Tony2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 30, - .species = SPECIES_SHARPEDO, - } -}; - -static const struct TrainerMon sParty_Tony3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 33, - .species = SPECIES_SHARPEDO, - } -}; - -static const struct TrainerMon sParty_Tony4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 34, - .species = SPECIES_STARYU, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 36, - .species = SPECIES_SHARPEDO, - } -}; - -static const struct TrainerMon sParty_Tony5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 37, - .species = SPECIES_STARMIE, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 39, - .species = SPECIES_SHARPEDO, - } -}; - -static const struct TrainerMon sParty_Takao[] = { - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 13, - .species = SPECIES_MACHOP, - } -}; - -static const struct TrainerMon sParty_Hitoshi[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 32, - .species = SPECIES_MACHOP, - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 32, - .species = SPECIES_MACHOKE, - } -}; - -static const struct TrainerMon sParty_Kiyo[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 34, - .species = SPECIES_HARIYAMA, - } -}; - -static const struct TrainerMon sParty_Koichi[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 24, - .species = SPECIES_MACHOP, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 28, - .species = SPECIES_MACHOKE, - } -}; - -static const struct TrainerMon sParty_Nob1[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 19, - .species = SPECIES_MACHOP, - } -}; - -static const struct TrainerMon sParty_Nob2[] = { - { - .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), - .lvl = 27, - .species = SPECIES_MACHOKE, - } -}; - -static const struct TrainerMon sParty_Nob3[] = { - { - .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), - .lvl = 29, - .species = SPECIES_MACHOP, - }, - { - .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), - .lvl = 29, - .species = SPECIES_MACHOKE, - } -}; - -static const struct TrainerMon sParty_Nob4[] = { - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 31, - .species = SPECIES_MACHOP, - }, - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 31, - .species = SPECIES_MACHOKE, - }, - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 31, - .species = SPECIES_MACHOKE, - } -}; - -static const struct TrainerMon sParty_Nob5[] = { - { - .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), - .lvl = 33, - .species = SPECIES_MACHOP, - .heldItem = ITEM_NONE - }, - { - .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), - .lvl = 33, - .species = SPECIES_MACHOKE, - .heldItem = ITEM_NONE - }, - { - .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), - .lvl = 33, - .species = SPECIES_MACHOKE, - .heldItem = ITEM_NONE - }, - { - .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), - .lvl = 33, - .species = SPECIES_MACHAMP, - .heldItem = ITEM_BLACK_BELT - } -}; - -static const struct TrainerMon sParty_Yuji[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 26, - .species = SPECIES_MAKUHITA, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 26, - .species = SPECIES_MACHOKE, - } -}; - -static const struct TrainerMon sParty_Daisuke[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 19, - .species = SPECIES_MACHOP, - } -}; - -static const struct TrainerMon sParty_Atsushi[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 32, - .species = SPECIES_HARIYAMA, - } -}; - -static const struct TrainerMon sParty_Kirk[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 17, - .species = SPECIES_ELECTRIKE, - .moves = {MOVE_QUICK_ATTACK, MOVE_THUNDER_WAVE, MOVE_SPARK, MOVE_LEER} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 17, - .species = SPECIES_VOLTORB, - .moves = {MOVE_CHARGE, MOVE_SHOCK_WAVE, MOVE_SCREECH, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_GruntAquaHideout7[] = { - { - .lvl = 31, - .species = SPECIES_POOCHYENA, - }, - { - .lvl = 31, - .species = SPECIES_ZUBAT, - } -}; - -static const struct TrainerMon sParty_GruntAquaHideout8[] = { - { - .lvl = 32, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_Shawn[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 17, - .species = SPECIES_VOLTORB, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 17, - .species = SPECIES_MAGNEMITE, - } -}; - -static const struct TrainerMon sParty_Fernando1[] = { - { - .lvl = 30, - .species = SPECIES_ELECTRIKE, - }, - { - .lvl = 30, - .species = SPECIES_LOUDRED, - } -}; - -static const struct TrainerMon sParty_Dalton1[] = { - { - .lvl = 15, - .species = SPECIES_MAGNEMITE, - }, - { - .lvl = 15, - .species = SPECIES_WHISMUR, - } -}; - -static const struct TrainerMon sParty_Dalton2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_MAGNEMITE, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_WHISMUR, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_MAGNEMITE, - } -}; - -static const struct TrainerMon sParty_Dalton3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 28, - .species = SPECIES_MAGNEMITE, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 28, - .species = SPECIES_LOUDRED, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 28, - .species = SPECIES_MAGNEMITE, - } -}; - -static const struct TrainerMon sParty_Dalton4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 31, - .species = SPECIES_MAGNETON, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 31, - .species = SPECIES_LOUDRED, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 31, - .species = SPECIES_MAGNETON, - } -}; - -static const struct TrainerMon sParty_Dalton5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 34, - .species = SPECIES_MAGNETON, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 34, - .species = SPECIES_EXPLOUD, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 34, - .species = SPECIES_MAGNETON, - } -}; - -static const struct TrainerMon sParty_Cole[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 23, - .species = SPECIES_NUMEL, - } -}; - -static const struct TrainerMon sParty_Jeff[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 22, - .species = SPECIES_SLUGMA, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 22, - .species = SPECIES_SLUGMA, - } -}; - -static const struct TrainerMon sParty_Axle[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 23, - .species = SPECIES_NUMEL, - } -}; - -static const struct TrainerMon sParty_Jace[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 23, - .species = SPECIES_SLUGMA, - } -}; - -static const struct TrainerMon sParty_Keegan[] = { - { - .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), - .lvl = 23, - .species = SPECIES_SLUGMA, - } -}; - -static const struct TrainerMon sParty_Bernie1[] = { - { - .lvl = 18, - .species = SPECIES_SLUGMA, - }, - { - .lvl = 18, - .species = SPECIES_WINGULL, - } -}; - -static const struct TrainerMon sParty_Bernie2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 26, - .species = SPECIES_SLUGMA, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 26, - .species = SPECIES_WINGULL, - } -}; - -static const struct TrainerMon sParty_Bernie3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 29, - .species = SPECIES_SLUGMA, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 29, - .species = SPECIES_PELIPPER, - } -}; - -static const struct TrainerMon sParty_Bernie4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 32, - .species = SPECIES_SLUGMA, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 32, - .species = SPECIES_PELIPPER, - } -}; - -static const struct TrainerMon sParty_Bernie5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 35, - .species = SPECIES_MAGCARGO, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 35, - .species = SPECIES_PELIPPER, - } -}; - -static const struct TrainerMon sParty_Drew[] = { - { - .lvl = 23, - .species = SPECIES_SANDSHREW, - .moves = {MOVE_DIG, MOVE_SAND_ATTACK, MOVE_POISON_STING, MOVE_SLASH} - } -}; - -static const struct TrainerMon sParty_Beau[] = { - { - .lvl = 21, - .species = SPECIES_BALTOY, - .moves = {MOVE_RAPID_SPIN, MOVE_MUD_SLAP, MOVE_PSYBEAM, MOVE_ROCK_TOMB} - }, - { - .lvl = 21, - .species = SPECIES_SANDSHREW, - .moves = {MOVE_POISON_STING, MOVE_SAND_ATTACK, MOVE_SCRATCH, MOVE_DIG} - }, - { - .lvl = 21, - .species = SPECIES_BALTOY, - .moves = {MOVE_RAPID_SPIN, MOVE_MUD_SLAP, MOVE_PSYBEAM, MOVE_ROCK_TOMB} - } -}; - -static const struct TrainerMon sParty_Larry[] = { - { - .lvl = 18, - .species = SPECIES_NUZLEAF, - } -}; - -static const struct TrainerMon sParty_Shane[] = { - { - .lvl = 18, - .species = SPECIES_SANDSHREW, - }, - { - .lvl = 18, - .species = SPECIES_NUZLEAF, - } -}; - -static const struct TrainerMon sParty_Justin[] = { - { - .lvl = 24, - .species = SPECIES_KECLEON, - } -}; - -static const struct TrainerMon sParty_Ethan1[] = { - { - .lvl = 20, - .species = SPECIES_ZIGZAGOON, - }, - { - .lvl = 20, - .species = SPECIES_TAILLOW, - } -}; - -static const struct TrainerMon sParty_Autumn[] = { - { - .lvl = 21, - .species = SPECIES_SHROOMISH, - } -}; - -static const struct TrainerMon sParty_Travis[] = { - { - .lvl = 18, - .species = SPECIES_SANDSHREW, - } -}; - -static const struct TrainerMon sParty_Ethan2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 26, - .species = SPECIES_ZIGZAGOON, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 26, - .species = SPECIES_TAILLOW, - } -}; - -static const struct TrainerMon sParty_Ethan3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 29, - .species = SPECIES_LINOONE, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 29, - .species = SPECIES_SWELLOW, - } -}; - -static const struct TrainerMon sParty_Ethan4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 31, - .species = SPECIES_SANDSHREW, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 31, - .species = SPECIES_SWELLOW, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 31, - .species = SPECIES_LINOONE, - } -}; - -static const struct TrainerMon sParty_Ethan5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 34, - .species = SPECIES_SWELLOW, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 34, - .species = SPECIES_SANDSLASH, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 34, - .species = SPECIES_LINOONE, - } -}; - -static const struct TrainerMon sParty_Brent[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 26, - .species = SPECIES_SURSKIT, - } -}; - -static const struct TrainerMon sParty_Donald[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 24, - .species = SPECIES_WURMPLE, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 24, - .species = SPECIES_SILCOON, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 24, - .species = SPECIES_BEAUTIFLY, - } -}; - -static const struct TrainerMon sParty_Taylor[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 27, - .species = SPECIES_WURMPLE, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 27, - .species = SPECIES_CASCOON, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 27, - .species = SPECIES_DUSTOX, - } -}; - -static const struct TrainerMon sParty_Jeffrey1[] = { - { - .lvl = 27, - .species = SPECIES_SURSKIT, - }, - { - .lvl = 27, - .species = SPECIES_SURSKIT, - }, - { - .lvl = 27, - .species = SPECIES_SURSKIT, - } -}; - -static const struct TrainerMon sParty_Derek[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 16, - .species = SPECIES_DUSTOX, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 16, - .species = SPECIES_BEAUTIFLY, - } -}; - -static const struct TrainerMon sParty_Jeffrey2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 31, - .species = SPECIES_SURSKIT, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 31, - .species = SPECIES_SURSKIT, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 31, - .species = SPECIES_SURSKIT, - } -}; - -static const struct TrainerMon sParty_Jeffrey3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 34, - .species = SPECIES_SURSKIT, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 34, - .species = SPECIES_SURSKIT, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 34, - .species = SPECIES_MASQUERAIN, - } -}; - -static const struct TrainerMon sParty_Jeffrey4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 36, - .species = SPECIES_SURSKIT, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 36, - .species = SPECIES_WURMPLE, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 36, - .species = SPECIES_SURSKIT, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 36, - .species = SPECIES_MASQUERAIN, - } -}; - -static const struct TrainerMon sParty_Jeffrey5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 38, - .species = SPECIES_SURSKIT, - .heldItem = ITEM_NONE - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 38, - .species = SPECIES_DUSTOX, - .heldItem = ITEM_NONE - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 38, - .species = SPECIES_SURSKIT, - .heldItem = ITEM_NONE - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 38, - .species = SPECIES_MASQUERAIN, - .heldItem = ITEM_SILVER_POWDER - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 38, - .species = SPECIES_BEAUTIFLY, - .heldItem = ITEM_NONE - } -}; - -static const struct TrainerMon sParty_Edward[] = { - { - .lvl = 15, - .species = SPECIES_ABRA, - .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Preston[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 36, - .species = SPECIES_KIRLIA, - } -}; - -static const struct TrainerMon sParty_Virgil[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 36, - .species = SPECIES_RALTS, - } -}; - -static const struct TrainerMon sParty_Blake[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 36, - .species = SPECIES_GIRAFARIG, - } -}; - -static const struct TrainerMon sParty_William[] = { - { - .lvl = 26, - .species = SPECIES_RALTS, - }, - { - .lvl = 26, - .species = SPECIES_RALTS, - }, - { - .lvl = 26, - .species = SPECIES_KIRLIA, - } -}; - -static const struct TrainerMon sParty_Joshua[] = { - { - .lvl = 41, - .species = SPECIES_KADABRA, - }, - { - .lvl = 41, - .species = SPECIES_SOLROCK, - } -}; - -static const struct TrainerMon sParty_Cameron1[] = { - { - .lvl = 31, - .species = SPECIES_SOLROCK, - } -}; - -static const struct TrainerMon sParty_Cameron2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 33, - .species = SPECIES_KADABRA, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 33, - .species = SPECIES_SOLROCK, - } -}; - -static const struct TrainerMon sParty_Cameron3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 38, - .species = SPECIES_KADABRA, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 38, - .species = SPECIES_SOLROCK, - } -}; - -static const struct TrainerMon sParty_Cameron4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 41, - .species = SPECIES_KADABRA, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 41, - .species = SPECIES_SOLROCK, - } -}; - -static const struct TrainerMon sParty_Cameron5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 45, - .species = SPECIES_SOLROCK, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 45, - .species = SPECIES_ALAKAZAM, - } -}; - -static const struct TrainerMon sParty_Jaclyn[] = { - { - .lvl = 16, - .species = SPECIES_ABRA, - .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Hannah[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 36, - .species = SPECIES_KIRLIA, - } -}; - -static const struct TrainerMon sParty_Samantha[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 36, - .species = SPECIES_XATU, - } -}; - -static const struct TrainerMon sParty_Maura[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 36, - .species = SPECIES_KADABRA, - } -}; - -static const struct TrainerMon sParty_Kayla[] = { - { - .lvl = 26, - .species = SPECIES_WOBBUFFET, - }, - { - .lvl = 26, - .species = SPECIES_NATU, - }, - { - .lvl = 26, - .species = SPECIES_KADABRA, - } -}; - -static const struct TrainerMon sParty_Alexis[] = { - { - .lvl = 41, - .species = SPECIES_KIRLIA, - }, - { - .lvl = 41, - .species = SPECIES_XATU, - } -}; - -static const struct TrainerMon sParty_Jacki1[] = { - { - .lvl = 30, - .species = SPECIES_KADABRA, - }, - { - .lvl = 30, - .species = SPECIES_LUNATONE, - } -}; - -static const struct TrainerMon sParty_Jacki2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 34, - .species = SPECIES_KADABRA, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 34, - .species = SPECIES_LUNATONE, - } -}; - -static const struct TrainerMon sParty_Jacki3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 37, - .species = SPECIES_KADABRA, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 37, - .species = SPECIES_LUNATONE, - } -}; - -static const struct TrainerMon sParty_Jacki4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 40, - .species = SPECIES_KADABRA, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 40, - .species = SPECIES_LUNATONE, - } -}; - -static const struct TrainerMon sParty_Jacki5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 43, - .species = SPECIES_LUNATONE, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 43, - .species = SPECIES_ALAKAZAM, - } -}; - -static const struct TrainerMon sParty_Walter1[] = { - { - .lvl = 29, - .species = SPECIES_MANECTRIC, - } -}; - -static const struct TrainerMon sParty_Micah[] = { - { - .lvl = 44, - .species = SPECIES_MANECTRIC, - }, - { - .lvl = 44, - .species = SPECIES_MANECTRIC, - } -}; - -static const struct TrainerMon sParty_Thomas[] = { - { - .lvl = 45, - .species = SPECIES_ZANGOOSE, - } -}; - -static const struct TrainerMon sParty_Walter2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 34, - .species = SPECIES_MANECTRIC, - } -}; - -static const struct TrainerMon sParty_Walter3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 36, - .species = SPECIES_LINOONE, - .moves = {MOVE_HEADBUTT, MOVE_SAND_ATTACK, MOVE_ODOR_SLEUTH, MOVE_FURY_SWIPES} - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 36, - .species = SPECIES_MANECTRIC, - .moves = {MOVE_QUICK_ATTACK, MOVE_SPARK, MOVE_ODOR_SLEUTH, MOVE_ROAR} - } -}; - -static const struct TrainerMon sParty_Walter4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 39, - .species = SPECIES_LINOONE, - .moves = {MOVE_HEADBUTT, MOVE_SAND_ATTACK, MOVE_ODOR_SLEUTH, MOVE_FURY_SWIPES} - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 39, - .species = SPECIES_MANECTRIC, - .moves = {MOVE_QUICK_ATTACK, MOVE_SPARK, MOVE_ODOR_SLEUTH, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Walter5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 41, - .species = SPECIES_LINOONE, - .moves = {MOVE_HEADBUTT, MOVE_SAND_ATTACK, MOVE_ODOR_SLEUTH, MOVE_FURY_SWIPES} - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 41, - .species = SPECIES_GOLDUCK, - .moves = {MOVE_FURY_SWIPES, MOVE_DISABLE, MOVE_CONFUSION, MOVE_PSYCH_UP} - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 41, - .species = SPECIES_MANECTRIC, - .moves = {MOVE_QUICK_ATTACK, MOVE_SPARK, MOVE_ODOR_SLEUTH, MOVE_ROAR} - } -}; - -static const struct TrainerMon sParty_Sidney[] = { - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 46, - .species = SPECIES_MIGHTYENA, - .heldItem = ITEM_NONE, - .moves = {MOVE_ROAR, MOVE_DOUBLE_EDGE, MOVE_SAND_ATTACK, MOVE_CRUNCH} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 48, - .species = SPECIES_SHIFTRY, - .heldItem = ITEM_NONE, - .moves = {MOVE_TORMENT, MOVE_DOUBLE_TEAM, MOVE_SWAGGER, MOVE_EXTRASENSORY} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 46, - .species = SPECIES_CACTURNE, - .heldItem = ITEM_NONE, - .moves = {MOVE_LEECH_SEED, MOVE_FEINT_ATTACK, MOVE_NEEDLE_ARM, MOVE_COTTON_SPORE} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 48, - .species = SPECIES_CRAWDAUNT, - .heldItem = ITEM_NONE, - .moves = {MOVE_SURF, MOVE_SWORDS_DANCE, MOVE_STRENGTH, MOVE_FACADE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 49, - .species = SPECIES_ABSOL, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE, MOVE_SWORDS_DANCE, MOVE_SLASH} - } -}; - -static const struct TrainerMon sParty_Phoebe[] = { - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 48, - .species = SPECIES_DUSCLOPS, - .heldItem = ITEM_NONE, - .moves = {MOVE_SHADOW_PUNCH, MOVE_CONFUSE_RAY, MOVE_CURSE, MOVE_PROTECT} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 49, - .species = SPECIES_BANETTE, - .heldItem = ITEM_NONE, - .moves = {MOVE_SHADOW_BALL, MOVE_GRUDGE, MOVE_WILL_O_WISP, MOVE_FEINT_ATTACK} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 50, - .species = SPECIES_SABLEYE, - .heldItem = ITEM_NONE, - .moves = {MOVE_SHADOW_BALL, MOVE_DOUBLE_TEAM, MOVE_NIGHT_SHADE, MOVE_FEINT_ATTACK} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 49, - .species = SPECIES_BANETTE, - .heldItem = ITEM_NONE, - .moves = {MOVE_SHADOW_BALL, MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_FACADE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 51, - .species = SPECIES_DUSCLOPS, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_SHADOW_BALL, MOVE_ICE_BEAM, MOVE_ROCK_SLIDE, MOVE_EARTHQUAKE} - } -}; - -static const struct TrainerMon sParty_Glacia[] = { - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 50, - .species = SPECIES_SEALEO, - .heldItem = ITEM_NONE, - .moves = {MOVE_ENCORE, MOVE_BODY_SLAM, MOVE_HAIL, MOVE_ICE_BALL} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 50, - .species = SPECIES_GLALIE, - .heldItem = ITEM_NONE, - .moves = {MOVE_LIGHT_SCREEN, MOVE_CRUNCH, MOVE_ICY_WIND, MOVE_ICE_BEAM} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 52, - .species = SPECIES_SEALEO, - .heldItem = ITEM_NONE, - .moves = {MOVE_ATTRACT, MOVE_DOUBLE_EDGE, MOVE_HAIL, MOVE_BLIZZARD} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 52, - .species = SPECIES_GLALIE, - .heldItem = ITEM_NONE, - .moves = {MOVE_SHADOW_BALL, MOVE_EXPLOSION, MOVE_HAIL, MOVE_ICE_BEAM} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 53, - .species = SPECIES_WALREIN, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_SURF, MOVE_BODY_SLAM, MOVE_ICE_BEAM, MOVE_SHEER_COLD} - } -}; - -static const struct TrainerMon sParty_Drake[] = { - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 52, - .species = SPECIES_SHELGON, - .heldItem = ITEM_NONE, - .moves = {MOVE_ROCK_TOMB, MOVE_DRAGON_CLAW, MOVE_PROTECT, MOVE_DOUBLE_EDGE} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 54, - .species = SPECIES_ALTARIA, - .heldItem = ITEM_NONE, - .moves = {MOVE_DOUBLE_EDGE, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE, MOVE_AERIAL_ACE} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 53, - .species = SPECIES_KINGDRA, - .heldItem = ITEM_NONE, - .moves = {MOVE_SMOKESCREEN, MOVE_DRAGON_DANCE, MOVE_SURF, MOVE_BODY_SLAM} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 53, - .species = SPECIES_FLYGON, - .heldItem = ITEM_NONE, - .moves = {MOVE_FLAMETHROWER, MOVE_CRUNCH, MOVE_DRAGON_BREATH, MOVE_EARTHQUAKE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 55, - .species = SPECIES_SALAMENCE, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_FLAMETHROWER, MOVE_DRAGON_CLAW, MOVE_ROCK_SLIDE, MOVE_CRUNCH} - } -}; - -static const struct TrainerMon sParty_Roxanne1[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 12, - .species = SPECIES_GEODUDE, - .heldItem = ITEM_NONE, - .moves = {MOVE_TACKLE, MOVE_DEFENSE_CURL, MOVE_ROCK_THROW, MOVE_ROCK_TOMB} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 12, - .species = SPECIES_GEODUDE, - .heldItem = ITEM_NONE, - .moves = {MOVE_TACKLE, MOVE_DEFENSE_CURL, MOVE_ROCK_THROW, MOVE_ROCK_TOMB} - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 15, - .species = SPECIES_NOSEPASS, - .heldItem = ITEM_ORAN_BERRY, - .moves = {MOVE_BLOCK, MOVE_HARDEN, MOVE_TACKLE, MOVE_ROCK_TOMB} - } -}; - -static const struct TrainerMon sParty_Brawly1[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 16, - .species = SPECIES_MACHOP, - .heldItem = ITEM_NONE, - .moves = {MOVE_KARATE_CHOP, MOVE_LOW_KICK, MOVE_SEISMIC_TOSS, MOVE_BULK_UP} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 16, - .species = SPECIES_MEDITITE, - .heldItem = ITEM_NONE, - .moves = {MOVE_FOCUS_PUNCH, MOVE_LIGHT_SCREEN, MOVE_REFLECT, MOVE_BULK_UP} - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 19, - .species = SPECIES_MAKUHITA, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_ARM_THRUST, MOVE_VITAL_THROW, MOVE_REVERSAL, MOVE_BULK_UP} - } -}; - -static const struct TrainerMon sParty_Wattson1[] = { - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 20, - .species = SPECIES_VOLTORB, - .heldItem = ITEM_NONE, - .moves = {MOVE_ROLLOUT, MOVE_SPARK, MOVE_SELF_DESTRUCT, MOVE_SHOCK_WAVE} - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 20, - .species = SPECIES_ELECTRIKE, - .heldItem = ITEM_NONE, - .moves = {MOVE_SHOCK_WAVE, MOVE_LEER, MOVE_QUICK_ATTACK, MOVE_HOWL} - }, - { - .iv = TRAINER_PARTY_IVS(26, 26, 26, 26, 26, 26), - .lvl = 22, - .species = SPECIES_MAGNETON, - .heldItem = ITEM_NONE, - .moves = {MOVE_SUPERSONIC, MOVE_SHOCK_WAVE, MOVE_THUNDER_WAVE, MOVE_SONIC_BOOM} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 24, - .species = SPECIES_MANECTRIC, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_QUICK_ATTACK, MOVE_THUNDER_WAVE, MOVE_SHOCK_WAVE, MOVE_HOWL} - } -}; - -static const struct TrainerMon sParty_Flannery1[] = { - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 24, - .species = SPECIES_NUMEL, - .heldItem = ITEM_NONE, - .moves = {MOVE_OVERHEAT, MOVE_TAKE_DOWN, MOVE_MAGNITUDE, MOVE_SUNNY_DAY} - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 24, - .species = SPECIES_SLUGMA, - .heldItem = ITEM_NONE, - .moves = {MOVE_OVERHEAT, MOVE_SMOG, MOVE_LIGHT_SCREEN, MOVE_SUNNY_DAY} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 26, - .species = SPECIES_CAMERUPT, - .heldItem = ITEM_NONE, - .moves = {MOVE_OVERHEAT, MOVE_TACKLE, MOVE_SUNNY_DAY, MOVE_ATTRACT} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 29, - .species = SPECIES_TORKOAL, - .heldItem = ITEM_WHITE_HERB, - .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_BODY_SLAM, MOVE_ATTRACT} - } -}; - -static const struct TrainerMon sParty_Norman1[] = { - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 27, - .species = SPECIES_SPINDA, - .heldItem = ITEM_NONE, - .moves = {MOVE_TEETER_DANCE, MOVE_PSYBEAM, MOVE_FACADE, MOVE_ENCORE} - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 27, - .species = SPECIES_VIGOROTH, - .heldItem = ITEM_NONE, - .moves = {MOVE_SLASH, MOVE_FACADE, MOVE_ENCORE, MOVE_FEINT_ATTACK} - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 29, - .species = SPECIES_LINOONE, - .heldItem = ITEM_NONE, - .moves = {MOVE_SLASH, MOVE_BELLY_DRUM, MOVE_FACADE, MOVE_HEADBUTT} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 31, - .species = SPECIES_SLAKING, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_COUNTER, MOVE_YAWN, MOVE_FACADE, MOVE_FEINT_ATTACK} - } -}; - -static const struct TrainerMon sParty_Winona1[] = { - { - .iv = TRAINER_PARTY_IVS(25, 25, 25, 25, 25, 25), - .lvl = 29, - .species = SPECIES_SWABLU, - .heldItem = ITEM_NONE, - .moves = {MOVE_PERISH_SONG, MOVE_MIRROR_MOVE, MOVE_SAFEGUARD, MOVE_AERIAL_ACE} - }, - { - .iv = TRAINER_PARTY_IVS(25, 25, 25, 25, 25, 25), - .lvl = 29, - .species = SPECIES_TROPIUS, - .heldItem = ITEM_NONE, - .moves = {MOVE_SUNNY_DAY, MOVE_AERIAL_ACE, MOVE_SOLAR_BEAM, MOVE_SYNTHESIS} - }, - { - .iv = TRAINER_PARTY_IVS(25, 25, 25, 25, 25, 25), - .lvl = 30, - .species = SPECIES_PELIPPER, - .heldItem = ITEM_NONE, - .moves = {MOVE_WATER_GUN, MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_AERIAL_ACE} - }, - { - .iv = TRAINER_PARTY_IVS(26, 26, 26, 26, 26, 26), - .lvl = 31, - .species = SPECIES_SKARMORY, - .heldItem = ITEM_NONE, - .moves = {MOVE_SAND_ATTACK, MOVE_FURY_ATTACK, MOVE_STEEL_WING, MOVE_AERIAL_ACE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 33, - .species = SPECIES_ALTARIA, - .heldItem = ITEM_ORAN_BERRY, - .moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE, MOVE_AERIAL_ACE} - } -}; - -static const struct TrainerMon sParty_TateAndLiza1[] = { - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 41, - .species = SPECIES_CLAYDOL, - .heldItem = ITEM_NONE, - .moves = {MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_PSYCHIC, MOVE_LIGHT_SCREEN} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 41, - .species = SPECIES_XATU, - .heldItem = ITEM_NONE, - .moves = {MOVE_PSYCHIC, MOVE_SUNNY_DAY, MOVE_CONFUSE_RAY, MOVE_CALM_MIND} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 42, - .species = SPECIES_LUNATONE, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_LIGHT_SCREEN, MOVE_PSYCHIC, MOVE_HYPNOSIS, MOVE_CALM_MIND} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 42, - .species = SPECIES_SOLROCK, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_PSYCHIC, MOVE_FLAMETHROWER} - } -}; - -static const struct TrainerMon sParty_Juan1[] = { - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 41, - .species = SPECIES_LUVDISC, - .heldItem = ITEM_NONE, - .moves = {MOVE_WATER_PULSE, MOVE_ATTRACT, MOVE_SWEET_KISS, MOVE_FLAIL} - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 41, - .species = SPECIES_WHISCASH, - .heldItem = ITEM_NONE, - .moves = {MOVE_RAIN_DANCE, MOVE_WATER_PULSE, MOVE_AMNESIA, MOVE_EARTHQUAKE} - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 43, - .species = SPECIES_SEALEO, - .heldItem = ITEM_NONE, - .moves = {MOVE_ENCORE, MOVE_BODY_SLAM, MOVE_AURORA_BEAM, MOVE_WATER_PULSE} - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 43, - .species = SPECIES_CRAWDAUNT, - .heldItem = ITEM_NONE, - .moves = {MOVE_WATER_PULSE, MOVE_CRABHAMMER, MOVE_TAUNT, MOVE_LEER} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 46, - .species = SPECIES_KINGDRA, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_ICE_BEAM, MOVE_REST} - } -}; - -static const struct TrainerMon sParty_Jerry1[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 9, - .species = SPECIES_RALTS, - } -}; - -static const struct TrainerMon sParty_Ted[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 17, - .species = SPECIES_RALTS, - } -}; - -static const struct TrainerMon sParty_Paul[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 15, - .species = SPECIES_NUMEL, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 15, - .species = SPECIES_ODDISH, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 15, - .species = SPECIES_WINGULL, - } -}; - -static const struct TrainerMon sParty_Jerry2[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 26, - .species = SPECIES_RALTS, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 26, - .species = SPECIES_MEDITITE, - } -}; - -static const struct TrainerMon sParty_Jerry3[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 29, - .species = SPECIES_KIRLIA, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 29, - .species = SPECIES_MEDITITE, - } -}; - -static const struct TrainerMon sParty_Jerry4[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 32, - .species = SPECIES_KIRLIA, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 32, - .species = SPECIES_MEDICHAM, - } -}; - -static const struct TrainerMon sParty_Jerry5[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 34, - .species = SPECIES_KIRLIA, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 34, - .species = SPECIES_BANETTE, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 34, - .species = SPECIES_MEDICHAM, - } -}; - -static const struct TrainerMon sParty_Karen1[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 9, - .species = SPECIES_SHROOMISH, - } -}; - -static const struct TrainerMon sParty_Georgia[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 16, - .species = SPECIES_SHROOMISH, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 16, - .species = SPECIES_BEAUTIFLY, - } -}; - -static const struct TrainerMon sParty_Karen2[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 26, - .species = SPECIES_SHROOMISH, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 26, - .species = SPECIES_WHISMUR, - } -}; - -static const struct TrainerMon sParty_Karen3[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 29, - .species = SPECIES_SHROOMISH, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 29, - .species = SPECIES_LOUDRED, - } -}; - -static const struct TrainerMon sParty_Karen4[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 32, - .species = SPECIES_BRELOOM, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 32, - .species = SPECIES_LOUDRED, - } -}; - -static const struct TrainerMon sParty_Karen5[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 35, - .species = SPECIES_BRELOOM, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 35, - .species = SPECIES_EXPLOUD, - } -}; - -static const struct TrainerMon sParty_KateAndJoy[] = { - { - .lvl = 30, - .species = SPECIES_SPINDA, - .moves = {MOVE_HYPNOSIS, MOVE_PSYBEAM, MOVE_DIZZY_PUNCH, MOVE_TEETER_DANCE} - }, - { - .lvl = 32, - .species = SPECIES_SLAKING, - .moves = {MOVE_FOCUS_PUNCH, MOVE_YAWN, MOVE_SLACK_OFF, MOVE_FEINT_ATTACK} - } -}; - -static const struct TrainerMon sParty_AnnaAndMeg1[] = { - { - .lvl = 15, - .species = SPECIES_ZIGZAGOON, - .moves = {MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HEADBUTT, MOVE_ODOR_SLEUTH} - }, - { - .lvl = 17, - .species = SPECIES_MAKUHITA, - .moves = {MOVE_TACKLE, MOVE_FOCUS_ENERGY, MOVE_ARM_THRUST, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_AnnaAndMeg2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 28, - .species = SPECIES_ZIGZAGOON, - .moves = {MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HEADBUTT, MOVE_ODOR_SLEUTH} - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 30, - .species = SPECIES_MAKUHITA, - .moves = {MOVE_TACKLE, MOVE_FOCUS_ENERGY, MOVE_ARM_THRUST, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_AnnaAndMeg3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 31, - .species = SPECIES_ZIGZAGOON, - .moves = {MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HEADBUTT, MOVE_ODOR_SLEUTH} - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 33, - .species = SPECIES_MAKUHITA, - .moves = {MOVE_TACKLE, MOVE_FOCUS_ENERGY, MOVE_ARM_THRUST, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_AnnaAndMeg4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 34, - .species = SPECIES_LINOONE, - .moves = {MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HEADBUTT, MOVE_ODOR_SLEUTH} - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 36, - .species = SPECIES_MAKUHITA, - .moves = {MOVE_TACKLE, MOVE_FOCUS_ENERGY, MOVE_ARM_THRUST, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_AnnaAndMeg5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 36, - .species = SPECIES_LINOONE, - .moves = {MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HEADBUTT, MOVE_ODOR_SLEUTH} - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 38, - .species = SPECIES_HARIYAMA, - .moves = {MOVE_TACKLE, MOVE_FOCUS_ENERGY, MOVE_ARM_THRUST, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Victor[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 16, - .species = SPECIES_TAILLOW, - .heldItem = ITEM_ORAN_BERRY - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 16, - .species = SPECIES_ZIGZAGOON, - .heldItem = ITEM_ORAN_BERRY - } -}; - -static const struct TrainerMon sParty_Miguel1[] = { - { - .lvl = 15, - .species = SPECIES_SKITTY, - .heldItem = ITEM_ORAN_BERRY - } -}; - -static const struct TrainerMon sParty_Colton[] = { - { - .lvl = 22, - .species = SPECIES_SKITTY, - .heldItem = ITEM_ORAN_BERRY, - .moves = {MOVE_ASSIST, MOVE_CHARM, MOVE_FEINT_ATTACK, MOVE_HEAL_BELL} - }, - { - .lvl = 36, - .species = SPECIES_SKITTY, - .heldItem = ITEM_ORAN_BERRY, - .moves = {MOVE_ASSIST, MOVE_CHARM, MOVE_FEINT_ATTACK, MOVE_HEAL_BELL} - }, - { - .lvl = 40, - .species = SPECIES_SKITTY, - .heldItem = ITEM_ORAN_BERRY, - .moves = {MOVE_ASSIST, MOVE_CHARM, MOVE_FEINT_ATTACK, MOVE_HEAL_BELL} - }, - { - .lvl = 12, - .species = SPECIES_SKITTY, - .heldItem = ITEM_ORAN_BERRY, - .moves = {MOVE_ASSIST, MOVE_CHARM, MOVE_FEINT_ATTACK, MOVE_HEAL_BELL} - }, - { - .lvl = 30, - .species = SPECIES_SKITTY, - .heldItem = ITEM_ORAN_BERRY, - .moves = {MOVE_ASSIST, MOVE_CHARM, MOVE_FEINT_ATTACK, MOVE_HEAL_BELL} - }, - { - .lvl = 42, - .species = SPECIES_DELCATTY, - .heldItem = ITEM_ORAN_BERRY, - .moves = {MOVE_ASSIST, MOVE_CHARM, MOVE_FEINT_ATTACK, MOVE_HEAL_BELL} - } -}; - -static const struct TrainerMon sParty_Miguel2[] = { - { - .lvl = 29, - .species = SPECIES_SKITTY, - .heldItem = ITEM_ORAN_BERRY - } -}; - -static const struct TrainerMon sParty_Miguel3[] = { - { - .lvl = 32, - .species = SPECIES_SKITTY, - .heldItem = ITEM_ORAN_BERRY - } -}; - -static const struct TrainerMon sParty_Miguel4[] = { - { - .lvl = 35, - .species = SPECIES_DELCATTY, - .heldItem = ITEM_ORAN_BERRY - } -}; - -static const struct TrainerMon sParty_Miguel5[] = { - { - .lvl = 38, - .species = SPECIES_DELCATTY, - .heldItem = ITEM_SITRUS_BERRY - } -}; - -static const struct TrainerMon sParty_Victoria[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 17, - .species = SPECIES_ROSELIA, - .heldItem = ITEM_ORAN_BERRY - } -}; - -static const struct TrainerMon sParty_Vanessa[] = { - { - .lvl = 30, - .species = SPECIES_PIKACHU, - .heldItem = ITEM_ORAN_BERRY - } -}; - -static const struct TrainerMon sParty_Bethany[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 35, - .species = SPECIES_AZURILL, - .heldItem = ITEM_ORAN_BERRY - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 37, - .species = SPECIES_MARILL, - .heldItem = ITEM_ORAN_BERRY - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 39, - .species = SPECIES_AZUMARILL, - .heldItem = ITEM_ORAN_BERRY - } -}; - -static const struct TrainerMon sParty_Isabel1[] = { - { - .lvl = 14, - .species = SPECIES_PLUSLE, - .heldItem = ITEM_ORAN_BERRY - }, - { - .lvl = 14, - .species = SPECIES_MINUN, - .heldItem = ITEM_ORAN_BERRY - } -}; - -static const struct TrainerMon sParty_Isabel2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 26, - .species = SPECIES_PLUSLE, - .heldItem = ITEM_ORAN_BERRY - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 26, - .species = SPECIES_MINUN, - .heldItem = ITEM_ORAN_BERRY - } -}; - -static const struct TrainerMon sParty_Isabel3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 29, - .species = SPECIES_PLUSLE, - .heldItem = ITEM_ORAN_BERRY - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 29, - .species = SPECIES_MINUN, - .heldItem = ITEM_ORAN_BERRY - } -}; - -static const struct TrainerMon sParty_Isabel4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 32, - .species = SPECIES_PLUSLE, - .heldItem = ITEM_ORAN_BERRY - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 32, - .species = SPECIES_MINUN, - .heldItem = ITEM_ORAN_BERRY - } -}; - -static const struct TrainerMon sParty_Isabel5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 35, - .species = SPECIES_PLUSLE, - .heldItem = ITEM_SITRUS_BERRY - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 35, - .species = SPECIES_MINUN, - .heldItem = ITEM_SITRUS_BERRY - } -}; - -static const struct TrainerMon sParty_Timothy1[] = { - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 27, - .species = SPECIES_HARIYAMA, - } -}; - -static const struct TrainerMon sParty_Timothy2[] = { - { - .iv = TRAINER_PARTY_IVS(25, 25, 25, 25, 25, 25), - .lvl = 33, - .species = SPECIES_HARIYAMA, - .moves = {MOVE_ARM_THRUST, MOVE_KNOCK_OFF, MOVE_SAND_ATTACK, MOVE_DIG} - } -}; - -static const struct TrainerMon sParty_Timothy3[] = { - { - .iv = TRAINER_PARTY_IVS(26, 26, 26, 26, 26, 26), - .lvl = 36, - .species = SPECIES_HARIYAMA, - .moves = {MOVE_ARM_THRUST, MOVE_KNOCK_OFF, MOVE_SAND_ATTACK, MOVE_DIG} - } -}; - -static const struct TrainerMon sParty_Timothy4[] = { - { - .iv = TRAINER_PARTY_IVS(27, 27, 27, 27, 27, 27), - .lvl = 39, - .species = SPECIES_HARIYAMA, - .moves = {MOVE_ARM_THRUST, MOVE_BELLY_DRUM, MOVE_SAND_ATTACK, MOVE_DIG} - } -}; - -static const struct TrainerMon sParty_Timothy5[] = { - { - .iv = TRAINER_PARTY_IVS(29, 29, 29, 29, 29, 29), - .lvl = 42, - .species = SPECIES_HARIYAMA, - .moves = {MOVE_ARM_THRUST, MOVE_BELLY_DRUM, MOVE_SAND_ATTACK, MOVE_DIG} - } -}; - -static const struct TrainerMon sParty_Vicky[] = { - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 18, - .species = SPECIES_MEDITITE, - .moves = {MOVE_HIGH_JUMP_KICK, MOVE_MEDITATE, MOVE_CONFUSION, MOVE_DETECT} - } -}; - -static const struct TrainerMon sParty_Shelby1[] = { - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 21, - .species = SPECIES_MEDITITE, - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 21, - .species = SPECIES_MAKUHITA, - } -}; - -static const struct TrainerMon sParty_Shelby2[] = { - { - .iv = TRAINER_PARTY_IVS(25, 25, 25, 25, 25, 25), - .lvl = 30, - .species = SPECIES_MEDITITE, - }, - { - .iv = TRAINER_PARTY_IVS(25, 25, 25, 25, 25, 25), - .lvl = 30, - .species = SPECIES_MAKUHITA, - } -}; - -static const struct TrainerMon sParty_Shelby3[] = { - { - .iv = TRAINER_PARTY_IVS(26, 26, 26, 26, 26, 26), - .lvl = 33, - .species = SPECIES_MEDICHAM, - }, - { - .iv = TRAINER_PARTY_IVS(26, 26, 26, 26, 26, 26), - .lvl = 33, - .species = SPECIES_HARIYAMA, - } -}; - -static const struct TrainerMon sParty_Shelby4[] = { - { - .iv = TRAINER_PARTY_IVS(27, 27, 27, 27, 27, 27), - .lvl = 36, - .species = SPECIES_MEDICHAM, - }, - { - .iv = TRAINER_PARTY_IVS(27, 27, 27, 27, 27, 27), - .lvl = 36, - .species = SPECIES_HARIYAMA, - } -}; - -static const struct TrainerMon sParty_Shelby5[] = { - { - .iv = TRAINER_PARTY_IVS(29, 29, 29, 29, 29, 29), - .lvl = 39, - .species = SPECIES_MEDICHAM, - }, - { - .iv = TRAINER_PARTY_IVS(29, 29, 29, 29, 29, 29), - .lvl = 39, - .species = SPECIES_HARIYAMA, - } -}; - -static const struct TrainerMon sParty_Calvin1[] = { - { - .lvl = 5, - .species = SPECIES_POOCHYENA, - } -}; - -static const struct TrainerMon sParty_Billy[] = { - { - .lvl = 5, - .species = SPECIES_ZIGZAGOON, - }, - { - .lvl = 7, - .species = SPECIES_SEEDOT, - } -}; - -static const struct TrainerMon sParty_Josh[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 10, - .species = SPECIES_GEODUDE, - .moves = {MOVE_TACKLE, MOVE_NONE, MOVE_NONE, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Tommy[] = { - { - .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), - .lvl = 8, - .species = SPECIES_GEODUDE, - }, - { - .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), - .lvl = 8, - .species = SPECIES_GEODUDE, - } -}; - -static const struct TrainerMon sParty_Joey[] = { - { - .lvl = 9, - .species = SPECIES_MACHOP, - } -}; - -static const struct TrainerMon sParty_Ben[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 17, - .species = SPECIES_ZIGZAGOON, - .moves = {MOVE_HEADBUTT, MOVE_SAND_ATTACK, MOVE_GROWL, MOVE_THUNDERBOLT} - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 17, - .species = SPECIES_GULPIN, - .moves = {MOVE_AMNESIA, MOVE_SLUDGE, MOVE_YAWN, MOVE_POUND} - } -}; - -static const struct TrainerMon sParty_Quincy[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 43, - .species = SPECIES_SLAKING, - .moves = {MOVE_ATTRACT, MOVE_ICE_BEAM, MOVE_THUNDERBOLT, MOVE_FLAMETHROWER} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 43, - .species = SPECIES_DUSCLOPS, - .moves = {MOVE_SKILL_SWAP, MOVE_PROTECT, MOVE_WILL_O_WISP, MOVE_TOXIC} - } -}; - -static const struct TrainerMon sParty_Katelynn[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 43, - .species = SPECIES_GARDEVOIR, - .moves = {MOVE_SKILL_SWAP, MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_CALM_MIND} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 43, - .species = SPECIES_SLAKING, - .moves = {MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_AERIAL_ACE, MOVE_BRICK_BREAK} - } -}; - -static const struct TrainerMon sParty_Jaylen[] = { - { - .lvl = 19, - .species = SPECIES_TRAPINCH, - } -}; - -static const struct TrainerMon sParty_Dillon[] = { - { - .lvl = 19, - .species = SPECIES_ARON, - } -}; - -static const struct TrainerMon sParty_Calvin2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 27, - .species = SPECIES_MIGHTYENA, - } -}; - -static const struct TrainerMon sParty_Calvin3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 28, - .species = SPECIES_SWELLOW, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 30, - .species = SPECIES_MIGHTYENA, - } -}; - -static const struct TrainerMon sParty_Calvin4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 31, - .species = SPECIES_SWELLOW, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 29, - .species = SPECIES_LINOONE, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 33, - .species = SPECIES_MIGHTYENA, - } -}; - -static const struct TrainerMon sParty_Calvin5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 34, - .species = SPECIES_SWELLOW, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 32, - .species = SPECIES_LINOONE, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 36, - .species = SPECIES_MIGHTYENA, - } -}; - -static const struct TrainerMon sParty_Eddie[] = { - { - .lvl = 14, - .species = SPECIES_ZIGZAGOON, - }, - { - .lvl = 16, - .species = SPECIES_ZIGZAGOON, - } -}; - -static const struct TrainerMon sParty_Allen[] = { - { - .lvl = 4, - .species = SPECIES_ZIGZAGOON, - }, - { - .lvl = 3, - .species = SPECIES_TAILLOW, - } -}; - -static const struct TrainerMon sParty_Timmy[] = { - { - .lvl = 15, - .species = SPECIES_ARON, - }, - { - .lvl = 13, - .species = SPECIES_ELECTRIKE, - } -}; - -static const struct TrainerMon sParty_Wallace[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 57, - .species = SPECIES_WAILORD, - .heldItem = ITEM_NONE, - .moves = {MOVE_RAIN_DANCE, MOVE_WATER_SPOUT, MOVE_DOUBLE_EDGE, MOVE_BLIZZARD} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 55, - .species = SPECIES_TENTACRUEL, - .heldItem = ITEM_NONE, - .moves = {MOVE_TOXIC, MOVE_HYDRO_PUMP, MOVE_SLUDGE_BOMB, MOVE_ICE_BEAM} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 56, - .species = SPECIES_LUDICOLO, - .heldItem = ITEM_NONE, - .moves = {MOVE_GIGA_DRAIN, MOVE_SURF, MOVE_LEECH_SEED, MOVE_DOUBLE_TEAM} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 56, - .species = SPECIES_WHISCASH, - .heldItem = ITEM_NONE, - .moves = {MOVE_EARTHQUAKE, MOVE_SURF, MOVE_AMNESIA, MOVE_HYPER_BEAM} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 56, - .species = SPECIES_GYARADOS, - .heldItem = ITEM_NONE, - .moves = {MOVE_DRAGON_DANCE, MOVE_EARTHQUAKE, MOVE_HYPER_BEAM, MOVE_SURF} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 58, - .species = SPECIES_MILOTIC, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_RECOVER, MOVE_SURF, MOVE_ICE_BEAM, MOVE_TOXIC} - } -}; - -static const struct TrainerMon sParty_Andrew[] = { - { - .lvl = 5, - .species = SPECIES_MAGIKARP, - }, - { - .lvl = 10, - .species = SPECIES_TENTACOOL, - }, - { - .lvl = 15, - .species = SPECIES_MAGIKARP, - } -}; - -static const struct TrainerMon sParty_Ivan[] = { - { - .lvl = 5, - .species = SPECIES_MAGIKARP, - }, - { - .lvl = 6, - .species = SPECIES_MAGIKARP, - }, - { - .lvl = 7, - .species = SPECIES_MAGIKARP, - } -}; - -static const struct TrainerMon sParty_Claude[] = { - { - .lvl = 16, - .species = SPECIES_MAGIKARP, - }, - { - .lvl = 17, - .species = SPECIES_GOLDEEN, - }, - { - .lvl = 18, - .species = SPECIES_BARBOACH, - } -}; - -static const struct TrainerMon sParty_Elliot1[] = { - { - .lvl = 10, - .species = SPECIES_MAGIKARP, - }, - { - .lvl = 7, - .species = SPECIES_TENTACOOL, - }, - { - .lvl = 10, - .species = SPECIES_MAGIKARP, - } -}; - -static const struct TrainerMon sParty_Ned[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 11, - .species = SPECIES_TENTACOOL, - } -}; - -static const struct TrainerMon sParty_Dale[] = { - { - .lvl = 11, - .species = SPECIES_TENTACOOL, - }, - { - .lvl = 14, - .species = SPECIES_WAILMER, - }, - { - .lvl = 11, - .species = SPECIES_TENTACOOL, - }, - { - .lvl = 14, - .species = SPECIES_WAILMER, - } -}; - -static const struct TrainerMon sParty_Nolan[] = { - { - .lvl = 19, - .species = SPECIES_BARBOACH, - } -}; - -static const struct TrainerMon sParty_Barny[] = { - { - .lvl = 25, - .species = SPECIES_TENTACOOL, - }, - { - .lvl = 25, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_Wade[] = { - { - .lvl = 16, - .species = SPECIES_TENTACOOL, - } -}; - -static const struct TrainerMon sParty_Carter[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_WAILMER, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_TENTACRUEL, - } -}; - -static const struct TrainerMon sParty_Elliot2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 24, - .species = SPECIES_TENTACOOL, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 27, - .species = SPECIES_GYARADOS, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 27, - .species = SPECIES_GYARADOS, - } -}; - -static const struct TrainerMon sParty_Elliot3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 29, - .species = SPECIES_GYARADOS, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 26, - .species = SPECIES_CARVANHA, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 26, - .species = SPECIES_TENTACOOL, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 29, - .species = SPECIES_GYARADOS, - } -}; - -static const struct TrainerMon sParty_Elliot4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 31, - .species = SPECIES_GYARADOS, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 30, - .species = SPECIES_CARVANHA, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 30, - .species = SPECIES_TENTACRUEL, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 31, - .species = SPECIES_GYARADOS, - } -}; - -static const struct TrainerMon sParty_Elliot5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 33, - .species = SPECIES_GYARADOS, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 33, - .species = SPECIES_SHARPEDO, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 33, - .species = SPECIES_GYARADOS, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 35, - .species = SPECIES_TENTACRUEL, - } -}; - -static const struct TrainerMon sParty_Ronald[] = { - { - .lvl = 19, - .species = SPECIES_MAGIKARP, - }, - { - .lvl = 21, - .species = SPECIES_GYARADOS, - }, - { - .lvl = 23, - .species = SPECIES_GYARADOS, - }, - { - .lvl = 26, - .species = SPECIES_GYARADOS, - }, - { - .lvl = 30, - .species = SPECIES_GYARADOS, - }, - { - .lvl = 35, - .species = SPECIES_GYARADOS, - } -}; - -static const struct TrainerMon sParty_Jacob[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 6, - .species = SPECIES_VOLTORB, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 6, - .species = SPECIES_VOLTORB, - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 14, - .species = SPECIES_MAGNEMITE, - } -}; - -static const struct TrainerMon sParty_Anthony[] = { - { - .lvl = 14, - .species = SPECIES_MAGNEMITE, - }, - { - .lvl = 14, - .species = SPECIES_MAGNEMITE, - } -}; - -static const struct TrainerMon sParty_Benjamin1[] = { - { - .lvl = 16, - .species = SPECIES_MAGNEMITE, - } -}; - -static const struct TrainerMon sParty_Benjamin2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 30, - .species = SPECIES_MAGNEMITE, - } -}; - -static const struct TrainerMon sParty_Benjamin3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 33, - .species = SPECIES_MAGNEMITE, - } -}; - -static const struct TrainerMon sParty_Benjamin4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 36, - .species = SPECIES_MAGNETON, - } -}; - -static const struct TrainerMon sParty_Benjamin5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 39, - .species = SPECIES_MAGNETON, - } -}; - -static const struct TrainerMon sParty_Abigail1[] = { - { - .lvl = 16, - .species = SPECIES_MAGNEMITE, - } -}; - -static const struct TrainerMon sParty_Jasmine[] = { - { - .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), - .lvl = 14, - .species = SPECIES_MAGNEMITE, - }, - { - .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), - .lvl = 14, - .species = SPECIES_MAGNEMITE, - }, - { - .lvl = 6, - .species = SPECIES_VOLTORB, - } -}; - -static const struct TrainerMon sParty_Abigail2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 28, - .species = SPECIES_MAGNEMITE, - } -}; - -static const struct TrainerMon sParty_Abigail3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 31, - .species = SPECIES_MAGNEMITE, - } -}; - -static const struct TrainerMon sParty_Abigail4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 34, - .species = SPECIES_MAGNETON, - } -}; - -static const struct TrainerMon sParty_Abigail5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 37, - .species = SPECIES_MAGNETON, - } -}; - -static const struct TrainerMon sParty_Dylan1[] = { - { - .lvl = 17, - .species = SPECIES_DODUO, - } -}; - -static const struct TrainerMon sParty_Dylan2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 28, - .species = SPECIES_DODUO, - } -}; - -static const struct TrainerMon sParty_Dylan3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 31, - .species = SPECIES_DODUO, - } -}; - -static const struct TrainerMon sParty_Dylan4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 34, - .species = SPECIES_DODRIO, - } -}; - -static const struct TrainerMon sParty_Dylan5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 37, - .species = SPECIES_DODRIO, - } -}; - -static const struct TrainerMon sParty_Maria1[] = { - { - .lvl = 17, - .species = SPECIES_DODUO, - } -}; - -static const struct TrainerMon sParty_Maria2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 28, - .species = SPECIES_DODUO, - } -}; - -static const struct TrainerMon sParty_Maria3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 31, - .species = SPECIES_DODUO, - } -}; - -static const struct TrainerMon sParty_Maria4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 34, - .species = SPECIES_DODRIO, - } -}; - -static const struct TrainerMon sParty_Maria5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 37, - .species = SPECIES_DODRIO, - } -}; - -static const struct TrainerMon sParty_Camden[] = { - { - .lvl = 33, - .species = SPECIES_STARYU, - }, - { - .lvl = 33, - .species = SPECIES_STARYU, - } -}; - -static const struct TrainerMon sParty_Demetrius[] = { - { - .lvl = 25, - .species = SPECIES_ZIGZAGOON, - }, - { - .lvl = 25, - .species = SPECIES_ELECTRIKE, - } -}; - -static const struct TrainerMon sParty_Isaiah1[] = { - { - .lvl = 35, - .species = SPECIES_STARYU, - } -}; - -static const struct TrainerMon sParty_Pablo1[] = { - { - .lvl = 33, - .species = SPECIES_STARYU, - }, - { - .lvl = 33, - .species = SPECIES_STARYU, - } -}; - -static const struct TrainerMon sParty_Chase[] = { - { - .lvl = 26, - .species = SPECIES_WINGULL, - }, - { - .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), - .lvl = 34, - .species = SPECIES_STARYU, - } -}; - -static const struct TrainerMon sParty_Isaiah2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 39, - .species = SPECIES_STARYU, - } -}; - -static const struct TrainerMon sParty_Isaiah3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 42, - .species = SPECIES_STARYU, - } -}; - -static const struct TrainerMon sParty_Isaiah4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 45, - .species = SPECIES_STARMIE, - } -}; - -static const struct TrainerMon sParty_Isaiah5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 48, - .species = SPECIES_STARMIE, - } -}; - -static const struct TrainerMon sParty_Isobel[] = { - { - .lvl = 34, - .species = SPECIES_STARYU, - } -}; - -static const struct TrainerMon sParty_Donny[] = { - { - .lvl = 26, - .species = SPECIES_WINGULL, - }, - { - .iv = TRAINER_PARTY_IVS(19, 19, 19, 19, 19, 19), - .lvl = 34, - .species = SPECIES_STARYU, - } -}; - -static const struct TrainerMon sParty_Talia[] = { - { - .lvl = 34, - .species = SPECIES_STARYU, - } -}; - -static const struct TrainerMon sParty_Katelyn1[] = { - { - .lvl = 35, - .species = SPECIES_STARYU, - } -}; - -static const struct TrainerMon sParty_Allison[] = { - { - .lvl = 27, - .species = SPECIES_WINGULL, - }, - { - .iv = TRAINER_PARTY_IVS(29, 29, 29, 29, 29, 29), - .lvl = 33, - .species = SPECIES_STARYU, - } -}; - -static const struct TrainerMon sParty_Katelyn2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 39, - .species = SPECIES_STARYU, - } -}; - -static const struct TrainerMon sParty_Katelyn3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 42, - .species = SPECIES_STARYU, - } -}; - -static const struct TrainerMon sParty_Katelyn4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 45, - .species = SPECIES_STARMIE, - } -}; - -static const struct TrainerMon sParty_Katelyn5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 48, - .species = SPECIES_STARMIE, - } -}; - -static const struct TrainerMon sParty_Nicolas1[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 37, - .species = SPECIES_ALTARIA, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 37, - .species = SPECIES_ALTARIA, - } -}; - -static const struct TrainerMon sParty_Nicolas2[] = { - { - .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), - .lvl = 41, - .species = SPECIES_ALTARIA, - }, - { - .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), - .lvl = 41, - .species = SPECIES_ALTARIA, - } -}; - -static const struct TrainerMon sParty_Nicolas3[] = { - { - .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), - .lvl = 44, - .species = SPECIES_ALTARIA, - }, - { - .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), - .lvl = 44, - .species = SPECIES_ALTARIA, - } -}; - -static const struct TrainerMon sParty_Nicolas4[] = { - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 46, - .species = SPECIES_BAGON, - }, - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 46, - .species = SPECIES_ALTARIA, - }, - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 46, - .species = SPECIES_ALTARIA, - } -}; - -static const struct TrainerMon sParty_Nicolas5[] = { - { - .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), - .lvl = 49, - .species = SPECIES_ALTARIA, - .heldItem = ITEM_NONE - }, - { - .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), - .lvl = 49, - .species = SPECIES_ALTARIA, - .heldItem = ITEM_NONE - }, - { - .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), - .lvl = 49, - .species = SPECIES_SHELGON, - .heldItem = ITEM_DRAGON_FANG - } -}; - -static const struct TrainerMon sParty_Aaron[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 34, - .species = SPECIES_BAGON, - .moves = {MOVE_DRAGON_BREATH, MOVE_HEADBUTT, MOVE_FOCUS_ENERGY, MOVE_EMBER} - } -}; - -static const struct TrainerMon sParty_Perry[] = { - { - .lvl = 26, - .species = SPECIES_WINGULL, - } -}; - -static const struct TrainerMon sParty_Hugh[] = { - { - .lvl = 25, - .species = SPECIES_WINGULL, - }, - { - .lvl = 25, - .species = SPECIES_TROPIUS, - } -}; - -static const struct TrainerMon sParty_Phil[] = { - { - .lvl = 26, - .species = SPECIES_SWELLOW, - } -}; - -static const struct TrainerMon sParty_Jared[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 27, - .species = SPECIES_DODUO, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 27, - .species = SPECIES_SKARMORY, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 27, - .species = SPECIES_TROPIUS, - } -}; - -static const struct TrainerMon sParty_Humberto[] = { - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 30, - .species = SPECIES_SKARMORY, - } -}; - -static const struct TrainerMon sParty_Presley[] = { - { - .lvl = 33, - .species = SPECIES_TROPIUS, - }, - { - .lvl = 33, - .species = SPECIES_XATU, - } -}; - -static const struct TrainerMon sParty_Edwardo[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 29, - .species = SPECIES_DODUO, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 29, - .species = SPECIES_PELIPPER, - } -}; - -static const struct TrainerMon sParty_Colin[] = { - { - .lvl = 28, - .species = SPECIES_WINGULL, - }, - { - .lvl = 28, - .species = SPECIES_NATU, - } -}; - -static const struct TrainerMon sParty_Robert1[] = { - { - .lvl = 29, - .species = SPECIES_SWABLU, - } -}; - -static const struct TrainerMon sParty_Benny[] = { - { - .lvl = 36, - .species = SPECIES_SWELLOW, - }, - { - .lvl = 36, - .species = SPECIES_PELIPPER, - }, - { - .lvl = 36, - .species = SPECIES_XATU, - } -}; - -static const struct TrainerMon sParty_Chester[] = { - { - .lvl = 25, - .species = SPECIES_TAILLOW, - }, - { - .lvl = 25, - .species = SPECIES_SWELLOW, - } -}; - -static const struct TrainerMon sParty_Robert2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 32, - .species = SPECIES_NATU, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 32, - .species = SPECIES_SWABLU, - } -}; - -static const struct TrainerMon sParty_Robert3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 35, - .species = SPECIES_NATU, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 35, - .species = SPECIES_ALTARIA, - } -}; - -static const struct TrainerMon sParty_Robert4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 38, - .species = SPECIES_NATU, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 38, - .species = SPECIES_ALTARIA, - } -}; - -static const struct TrainerMon sParty_Robert5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 41, - .species = SPECIES_ALTARIA, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 41, - .species = SPECIES_XATU, - } -}; - -static const struct TrainerMon sParty_Alex[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 33, - .species = SPECIES_NATU, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 33, - .species = SPECIES_SWELLOW, - } -}; - -static const struct TrainerMon sParty_Beck[] = { - { - .lvl = 34, - .species = SPECIES_TROPIUS, - } -}; - -static const struct TrainerMon sParty_Yasu[] = { - { - .lvl = 26, - .species = SPECIES_NINJASK, - } -}; - -static const struct TrainerMon sParty_Takashi[] = { - { - .lvl = 25, - .species = SPECIES_NINJASK, - }, - { - .lvl = 25, - .species = SPECIES_KOFFING, - } -}; - -static const struct TrainerMon sParty_Dianne[] = { - { - .lvl = 43, - .species = SPECIES_CLAYDOL, - .heldItem = ITEM_NONE, - .moves = {MOVE_SKILL_SWAP, MOVE_EARTHQUAKE, MOVE_NONE, MOVE_NONE} - }, - { - .lvl = 43, - .species = SPECIES_LANTURN, - .heldItem = ITEM_NONE, - .moves = {MOVE_THUNDERBOLT, MOVE_EARTHQUAKE, MOVE_NONE, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Jani[] = { - { - .lvl = 26, - .species = SPECIES_MARILL, - } -}; - -static const struct TrainerMon sParty_Lao1[] = { - { - .lvl = 17, - .species = SPECIES_KOFFING, - .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SMOG, MOVE_SELF_DESTRUCT} - }, - { - .lvl = 17, - .species = SPECIES_KOFFING, - .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SMOG, MOVE_SELF_DESTRUCT} - }, - { - .lvl = 17, - .species = SPECIES_KOFFING, - .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_SELF_DESTRUCT} - } -}; - -static const struct TrainerMon sParty_Lung[] = { - { - .lvl = 18, - .species = SPECIES_KOFFING, - }, - { - .lvl = 18, - .species = SPECIES_NINJASK, - } -}; - -static const struct TrainerMon sParty_Lao2[] = { - { - .lvl = 24, - .species = SPECIES_KOFFING, - .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_SELF_DESTRUCT} - }, - { - .lvl = 24, - .species = SPECIES_KOFFING, - .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE} - }, - { - .lvl = 24, - .species = SPECIES_KOFFING, - .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_SELF_DESTRUCT} - }, - { - .lvl = 26, - .species = SPECIES_KOFFING, - .moves = {MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Lao3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 27, - .species = SPECIES_KOFFING, - .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_SELF_DESTRUCT} - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 27, - .species = SPECIES_KOFFING, - .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_SELF_DESTRUCT} - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 27, - .species = SPECIES_KOFFING, - .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE} - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 29, - .species = SPECIES_KOFFING, - .moves = {MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Lao4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 30, - .species = SPECIES_KOFFING, - .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE} - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 30, - .species = SPECIES_KOFFING, - .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE} - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 30, - .species = SPECIES_KOFFING, - .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE} - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 32, - .species = SPECIES_KOFFING, - .moves = {MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Lao5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 33, - .species = SPECIES_KOFFING, - .heldItem = ITEM_NONE, - .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE} - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 33, - .species = SPECIES_KOFFING, - .heldItem = ITEM_NONE, - .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_SELF_DESTRUCT} - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 33, - .species = SPECIES_KOFFING, - .heldItem = ITEM_NONE, - .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_SELF_DESTRUCT} - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 35, - .species = SPECIES_WEEZING, - .heldItem = ITEM_SMOKE_BALL, - .moves = {MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Jocelyn[] = { - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 13, - .species = SPECIES_MEDITITE, - } -}; - -static const struct TrainerMon sParty_Laura[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 13, - .species = SPECIES_MEDITITE, - } -}; - -static const struct TrainerMon sParty_Cyndy1[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 18, - .species = SPECIES_MEDITITE, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 18, - .species = SPECIES_MAKUHITA, - } -}; - -static const struct TrainerMon sParty_Cora[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 27, - .species = SPECIES_MEDITITE, - } -}; - -static const struct TrainerMon sParty_Paula[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 27, - .species = SPECIES_BRELOOM, - } -}; - -static const struct TrainerMon sParty_Cyndy2[] = { - { - .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), - .lvl = 26, - .species = SPECIES_MEDITITE, - }, - { - .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), - .lvl = 26, - .species = SPECIES_MAKUHITA, - } -}; - -static const struct TrainerMon sParty_Cyndy3[] = { - { - .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), - .lvl = 29, - .species = SPECIES_MEDITITE, - }, - { - .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), - .lvl = 29, - .species = SPECIES_MAKUHITA, - } -}; - -static const struct TrainerMon sParty_Cyndy4[] = { - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 32, - .species = SPECIES_MEDICHAM, - }, - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 32, - .species = SPECIES_HARIYAMA, - } -}; - -static const struct TrainerMon sParty_Cyndy5[] = { - { - .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), - .lvl = 35, - .species = SPECIES_MEDICHAM, - }, - { - .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), - .lvl = 35, - .species = SPECIES_HARIYAMA, - } -}; - -static const struct TrainerMon sParty_Madeline1[] = { - { - .lvl = 19, - .species = SPECIES_NUMEL, - .moves = {MOVE_EMBER, MOVE_TACKLE, MOVE_MAGNITUDE, MOVE_SUNNY_DAY} - } -}; - -static const struct TrainerMon sParty_Clarissa[] = { - { - .lvl = 28, - .species = SPECIES_ROSELIA, - }, - { - .lvl = 28, - .species = SPECIES_WAILMER, - } -}; - -static const struct TrainerMon sParty_Angelica[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 30, - .species = SPECIES_CASTFORM_NORMAL, - .moves = {MOVE_RAIN_DANCE, MOVE_WEATHER_BALL, MOVE_THUNDER, MOVE_WATER_PULSE} - } -}; - -static const struct TrainerMon sParty_Madeline2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 29, - .species = SPECIES_NUMEL, - .moves = {MOVE_EMBER, MOVE_TACKLE, MOVE_MAGNITUDE, MOVE_SUNNY_DAY} - } -}; - -static const struct TrainerMon sParty_Madeline3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 32, - .species = SPECIES_NUMEL, - .moves = {MOVE_EMBER, MOVE_TAKE_DOWN, MOVE_MAGNITUDE, MOVE_SUNNY_DAY} - } -}; - -static const struct TrainerMon sParty_Madeline4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 34, - .species = SPECIES_ROSELIA, - .moves = {MOVE_LEECH_SEED, MOVE_MEGA_DRAIN, MOVE_GRASS_WHISTLE, MOVE_SUNNY_DAY} - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 34, - .species = SPECIES_NUMEL, - .moves = {MOVE_FLAMETHROWER, MOVE_TAKE_DOWN, MOVE_MAGNITUDE, MOVE_SUNNY_DAY} - } -}; - -static const struct TrainerMon sParty_Madeline5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 37, - .species = SPECIES_ROSELIA, - .moves = {MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY} - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 37, - .species = SPECIES_CAMERUPT, - .moves = {MOVE_FLAMETHROWER, MOVE_TAKE_DOWN, MOVE_EARTHQUAKE, MOVE_SUNNY_DAY} - } -}; - -static const struct TrainerMon sParty_Beverly[] = { - { - .lvl = 25, - .species = SPECIES_WINGULL, - }, - { - .lvl = 25, - .species = SPECIES_WAILMER, - } -}; - -static const struct TrainerMon sParty_Imani[] = { - { - .lvl = 26, - .species = SPECIES_MARILL, - } -}; - -static const struct TrainerMon sParty_Kyla[] = { - { - .lvl = 26, - .species = SPECIES_WAILMER, - } -}; - -static const struct TrainerMon sParty_Denise[] = { - { - .lvl = 25, - .species = SPECIES_WINGULL, - }, - { - .lvl = 25, - .species = SPECIES_GOLDEEN, - } -}; - -static const struct TrainerMon sParty_Beth[] = { - { - .lvl = 26, - .species = SPECIES_GOLDEEN, - } -}; - -static const struct TrainerMon sParty_Tara[] = { - { - .lvl = 25, - .species = SPECIES_HORSEA, - }, - { - .lvl = 25, - .species = SPECIES_MARILL, - } -}; - -static const struct TrainerMon sParty_Missy[] = { - { - .lvl = 26, - .species = SPECIES_GOLDEEN, - } -}; - -static const struct TrainerMon sParty_Alice[] = { - { - .lvl = 24, - .species = SPECIES_GOLDEEN, - }, - { - .lvl = 24, - .species = SPECIES_WINGULL, - }, - { - .lvl = 24, - .species = SPECIES_GOLDEEN, - } -}; - -static const struct TrainerMon sParty_Jenny1[] = { - { - .lvl = 34, - .species = SPECIES_WAILMER, - } -}; - -static const struct TrainerMon sParty_Grace[] = { - { - .lvl = 34, - .species = SPECIES_MARILL, - } -}; - -static const struct TrainerMon sParty_Tanya[] = { - { - .lvl = 34, - .species = SPECIES_LUVDISC, - } -}; - -static const struct TrainerMon sParty_Sharon[] = { - { - .lvl = 34, - .species = SPECIES_SEAKING, - } -}; - -static const struct TrainerMon sParty_Nikki[] = { - { - .lvl = 33, - .species = SPECIES_MARILL, - }, - { - .lvl = 33, - .species = SPECIES_SPHEAL, - } -}; - -static const struct TrainerMon sParty_Brenda[] = { - { - .lvl = 34, - .species = SPECIES_GOLDEEN, - } -}; - -static const struct TrainerMon sParty_Katie[] = { - { - .lvl = 33, - .species = SPECIES_GOLDEEN, - }, - { - .lvl = 33, - .species = SPECIES_SPHEAL, - } -}; - -static const struct TrainerMon sParty_Susie[] = { - { - .lvl = 34, - .species = SPECIES_LUVDISC, - } -}; - -static const struct TrainerMon sParty_Kara[] = { - { - .lvl = 34, - .species = SPECIES_SEAKING, - } -}; - -static const struct TrainerMon sParty_Dana[] = { - { - .lvl = 34, - .species = SPECIES_AZUMARILL, - } -}; - -static const struct TrainerMon sParty_Sienna[] = { - { - .lvl = 33, - .species = SPECIES_LUVDISC, - }, - { - .lvl = 33, - .species = SPECIES_LUVDISC, - } -}; - -static const struct TrainerMon sParty_Debra[] = { - { - .lvl = 34, - .species = SPECIES_SEAKING, - } -}; - -static const struct TrainerMon sParty_Linda[] = { - { - .lvl = 33, - .species = SPECIES_HORSEA, - }, - { - .lvl = 33, - .species = SPECIES_SEADRA, - } -}; - -static const struct TrainerMon sParty_Kaylee[] = { - { - .lvl = 34, - .species = SPECIES_LANTURN, - }, - { - .lvl = 34, - .species = SPECIES_PELIPPER, - } -}; - -static const struct TrainerMon sParty_Laurel[] = { - { - .lvl = 33, - .species = SPECIES_LUVDISC, - }, - { - .lvl = 33, - .species = SPECIES_LUVDISC, - } -}; - -static const struct TrainerMon sParty_Carlee[] = { - { - .lvl = 35, - .species = SPECIES_SEAKING, - } -}; - -static const struct TrainerMon sParty_Jenny2[] = { - { - .lvl = 38, - .species = SPECIES_WAILMER, - } -}; - -static const struct TrainerMon sParty_Jenny3[] = { - { - .lvl = 41, - .species = SPECIES_WAILMER, - } -}; - -static const struct TrainerMon sParty_Jenny4[] = { - { - .lvl = 43, - .species = SPECIES_STARYU, - }, - { - .lvl = 43, - .species = SPECIES_WAILMER, - } -}; - -static const struct TrainerMon sParty_Jenny5[] = { - { - .lvl = 45, - .species = SPECIES_LUVDISC, - }, - { - .lvl = 45, - .species = SPECIES_WAILMER, - }, - { - .lvl = 45, - .species = SPECIES_STARMIE, - } -}; - -static const struct TrainerMon sParty_Heidi[] = { - { - .lvl = 22, - .species = SPECIES_SANDSHREW, - .moves = {MOVE_DIG, MOVE_SAND_ATTACK, MOVE_POISON_STING, MOVE_SLASH} - }, - { - .lvl = 22, - .species = SPECIES_BALTOY, - .moves = {MOVE_RAPID_SPIN, MOVE_MUD_SLAP, MOVE_PSYBEAM, MOVE_ROCK_TOMB} - } -}; - -static const struct TrainerMon sParty_Becky[] = { - { - .lvl = 22, - .species = SPECIES_SANDSHREW, - .moves = {MOVE_SAND_ATTACK, MOVE_POISON_STING, MOVE_SLASH, MOVE_DIG} - }, - { - .lvl = 22, - .species = SPECIES_MARILL, - .moves = {MOVE_ROLLOUT, MOVE_BUBBLE_BEAM, MOVE_TAIL_WHIP, MOVE_DEFENSE_CURL} - } -}; - -static const struct TrainerMon sParty_Carol[] = { - { - .lvl = 17, - .species = SPECIES_TAILLOW, - }, - { - .lvl = 17, - .species = SPECIES_LOMBRE, - } -}; - -static const struct TrainerMon sParty_Nancy[] = { - { - .lvl = 18, - .species = SPECIES_MARILL, - }, - { - .lvl = 18, - .species = SPECIES_LOMBRE, - } -}; - -static const struct TrainerMon sParty_Martha[] = { - { - .lvl = 23, - .species = SPECIES_SKITTY, - }, - { - .lvl = 23, - .species = SPECIES_SWABLU, - } -}; - -static const struct TrainerMon sParty_Diana1[] = { - { - .lvl = 19, - .species = SPECIES_SHROOMISH, - }, - { - .lvl = 19, - .species = SPECIES_ODDISH, - }, - { - .lvl = 19, - .species = SPECIES_SWABLU, - } -}; - -static const struct TrainerMon sParty_Cedric[] = { - { - .lvl = 32, - .species = SPECIES_WOBBUFFET, - .moves = {MOVE_DESTINY_BOND, MOVE_SAFEGUARD, MOVE_COUNTER, MOVE_MIRROR_COAT} - } -}; - -static const struct TrainerMon sParty_Irene[] = { - { - .lvl = 17, - .species = SPECIES_SHROOMISH, - }, - { - .lvl = 17, - .species = SPECIES_MARILL, - } -}; - -static const struct TrainerMon sParty_Diana2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_SHROOMISH, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_GLOOM, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_SWABLU, - } -}; - -static const struct TrainerMon sParty_Diana3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 28, - .species = SPECIES_BRELOOM, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 28, - .species = SPECIES_GLOOM, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 28, - .species = SPECIES_SWABLU, - } -}; - -static const struct TrainerMon sParty_Diana4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 31, - .species = SPECIES_BRELOOM, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 31, - .species = SPECIES_GLOOM, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 31, - .species = SPECIES_SWABLU, - } -}; - -static const struct TrainerMon sParty_Diana5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 40, - .species = SPECIES_BRELOOM, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 40, - .species = SPECIES_VILEPLUME, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 40, - .species = SPECIES_ALTARIA, - } -}; - -static const struct TrainerMon sParty_AmyAndLiv1[] = { - { - .lvl = 15, - .species = SPECIES_PLUSLE, - }, - { - .lvl = 15, - .species = SPECIES_MINUN, - } -}; - -static const struct TrainerMon sParty_AmyAndLiv2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 27, - .species = SPECIES_PLUSLE, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 27, - .species = SPECIES_MINUN, - } -}; - -static const struct TrainerMon sParty_GinaAndMia1[] = { - { - .lvl = 6, - .species = SPECIES_SEEDOT, - }, - { - .lvl = 6, - .species = SPECIES_LOTAD, - } -}; - -static const struct TrainerMon sParty_MiuAndYuki[] = { - { - .lvl = 26, - .species = SPECIES_BEAUTIFLY, - }, - { - .lvl = 26, - .species = SPECIES_DUSTOX, - } -}; - -static const struct TrainerMon sParty_AmyAndLiv3[] = { - { - .lvl = 9, - .species = SPECIES_PLUSLE, - }, - { - .lvl = 9, - .species = SPECIES_MINUN, - } -}; - -static const struct TrainerMon sParty_GinaAndMia2[] = { - { - .lvl = 10, - .species = SPECIES_DUSKULL, - .moves = {MOVE_NIGHT_SHADE, MOVE_DISABLE, MOVE_NONE, MOVE_NONE} - }, - { - .lvl = 10, - .species = SPECIES_SHROOMISH, - .moves = {MOVE_ABSORB, MOVE_LEECH_SEED, MOVE_NONE, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_AmyAndLiv4[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 30, - .species = SPECIES_PLUSLE, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 30, - .species = SPECIES_MINUN, - } -}; - -static const struct TrainerMon sParty_AmyAndLiv5[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 33, - .species = SPECIES_PLUSLE, - .moves = {MOVE_SPARK, MOVE_CHARGE, MOVE_FAKE_TEARS, MOVE_HELPING_HAND} - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 33, - .species = SPECIES_MINUN, - .moves = {MOVE_SPARK, MOVE_CHARGE, MOVE_CHARM, MOVE_HELPING_HAND} - } -}; - -static const struct TrainerMon sParty_AmyAndLiv6[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 36, - .species = SPECIES_PLUSLE, - .moves = {MOVE_THUNDER, MOVE_CHARGE, MOVE_FAKE_TEARS, MOVE_HELPING_HAND} - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 36, - .species = SPECIES_MINUN, - .moves = {MOVE_THUNDER, MOVE_CHARGE, MOVE_CHARM, MOVE_HELPING_HAND} - } -}; - -static const struct TrainerMon sParty_Huey[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 12, - .species = SPECIES_WINGULL, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 12, - .species = SPECIES_MACHOP, - } -}; - -static const struct TrainerMon sParty_Edmond[] = { - { - .lvl = 13, - .species = SPECIES_WINGULL, - } -}; - -static const struct TrainerMon sParty_Ernest1[] = { - { - .lvl = 33, - .species = SPECIES_WINGULL, - }, - { - .lvl = 33, - .species = SPECIES_MACHOKE, - } -}; - -static const struct TrainerMon sParty_Dwayne[] = { - { - .lvl = 11, - .species = SPECIES_WINGULL, - }, - { - .lvl = 11, - .species = SPECIES_MACHOP, - }, - { - .lvl = 11, - .species = SPECIES_TENTACOOL, - } -}; - -static const struct TrainerMon sParty_Phillip[] = { - { - .lvl = 44, - .species = SPECIES_TENTACRUEL, - }, - { - .lvl = 44, - .species = SPECIES_MACHOKE, - } -}; - -static const struct TrainerMon sParty_Leonard[] = { - { - .lvl = 43, - .species = SPECIES_MACHOP, - }, - { - .lvl = 43, - .species = SPECIES_PELIPPER, - }, - { - .lvl = 43, - .species = SPECIES_MACHOKE, - } -}; - -static const struct TrainerMon sParty_Duncan[] = { - { - .lvl = 25, - .species = SPECIES_SPHEAL, - }, - { - .lvl = 25, - .species = SPECIES_MACHOKE, - } -}; - -static const struct TrainerMon sParty_Ernest2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 36, - .species = SPECIES_WINGULL, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 36, - .species = SPECIES_TENTACOOL, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 36, - .species = SPECIES_MACHOKE, - } -}; - -static const struct TrainerMon sParty_Ernest3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 39, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 39, - .species = SPECIES_TENTACOOL, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 39, - .species = SPECIES_MACHOKE, - } -}; - -static const struct TrainerMon sParty_Ernest4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 42, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 42, - .species = SPECIES_TENTACOOL, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 42, - .species = SPECIES_MACHOKE, - } -}; - -static const struct TrainerMon sParty_Ernest5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 45, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 45, - .species = SPECIES_MACHOKE, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 45, - .species = SPECIES_TENTACRUEL, - } -}; - -static const struct TrainerMon sParty_Eli[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 23, - .species = SPECIES_NUMEL, - } -}; - -static const struct TrainerMon sParty_Annika[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 39, - .species = SPECIES_FEEBAS, - .heldItem = ITEM_ORAN_BERRY, - .moves = {MOVE_FLAIL, MOVE_WATER_PULSE, MOVE_RETURN, MOVE_ATTRACT} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 39, - .species = SPECIES_FEEBAS, - .heldItem = ITEM_ORAN_BERRY, - .moves = {MOVE_FLAIL, MOVE_WATER_PULSE, MOVE_RETURN, MOVE_ATTRACT} - } -}; - -static const struct TrainerMon sParty_Jazmyn[] = { - { - .lvl = 27, - .species = SPECIES_ABSOL, - } -}; - -static const struct TrainerMon sParty_Jonas[] = { - { - .lvl = 31, - .species = SPECIES_KOFFING, - .moves = {MOVE_TOXIC, MOVE_THUNDER, MOVE_SELF_DESTRUCT, MOVE_SLUDGE_BOMB} - } -}; - -static const struct TrainerMon sParty_Kayley[] = { - { - .lvl = 31, - .species = SPECIES_CASTFORM_NORMAL, - .moves = {MOVE_SUNNY_DAY, MOVE_WEATHER_BALL, MOVE_FLAMETHROWER, MOVE_SOLAR_BEAM} - } -}; - -static const struct TrainerMon sParty_Auron[] = { - { - .lvl = 33, - .species = SPECIES_MANECTRIC, - }, - { - .lvl = 33, - .species = SPECIES_MACHAMP, - } -}; - -static const struct TrainerMon sParty_Kelvin[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 33, - .species = SPECIES_MACHOKE, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 33, - .species = SPECIES_SPHEAL, - } -}; - -static const struct TrainerMon sParty_Marley[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 34, - .species = SPECIES_MANECTRIC, - .heldItem = ITEM_NONE, - .moves = {MOVE_BITE, MOVE_ROAR, MOVE_THUNDER_WAVE, MOVE_THUNDERBOLT} - } -}; - -static const struct TrainerMon sParty_Reyna[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 33, - .species = SPECIES_MEDITITE, - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 33, - .species = SPECIES_HARIYAMA, - } -}; - -static const struct TrainerMon sParty_Hudson[] = { - { - .lvl = 34, - .species = SPECIES_WAILMER, - } -}; - -static const struct TrainerMon sParty_Conor[] = { - { - .lvl = 33, - .species = SPECIES_CHINCHOU, - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 33, - .species = SPECIES_HARIYAMA, - } -}; - -static const struct TrainerMon sParty_Edwin1[] = { - { - .lvl = 14, - .species = SPECIES_LOMBRE, - }, - { - .lvl = 14, - .species = SPECIES_NUZLEAF, - } -}; - -static const struct TrainerMon sParty_Hector[] = { - { - .lvl = 18, - .species = SPECIES_ZANGOOSE, - }, - { - .lvl = 18, - .species = SPECIES_SEVIPER, - } -}; - -static const struct TrainerMon sParty_TabithaMossdeep[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 36, - .species = SPECIES_CAMERUPT, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 38, - .species = SPECIES_MIGHTYENA, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 40, - .species = SPECIES_GOLBAT, - } -}; - -static const struct TrainerMon sParty_Edwin2[] = { - { - .lvl = 26, - .species = SPECIES_LOMBRE, - }, - { - .lvl = 26, - .species = SPECIES_NUZLEAF, - } -}; - -static const struct TrainerMon sParty_Edwin3[] = { - { - .lvl = 29, - .species = SPECIES_LOMBRE, - }, - { - .lvl = 29, - .species = SPECIES_NUZLEAF, - } -}; - -static const struct TrainerMon sParty_Edwin4[] = { - { - .lvl = 32, - .species = SPECIES_LOMBRE, - }, - { - .lvl = 32, - .species = SPECIES_NUZLEAF, - } -}; - -static const struct TrainerMon sParty_Edwin5[] = { - { - .lvl = 35, - .species = SPECIES_LUDICOLO, - }, - { - .lvl = 35, - .species = SPECIES_SHIFTRY, - } -}; - -static const struct TrainerMon sParty_WallyVR1[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 44, - .species = SPECIES_ALTARIA, - .moves = {MOVE_AERIAL_ACE, MOVE_SAFEGUARD, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE} - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 43, - .species = SPECIES_DELCATTY, - .moves = {MOVE_SING, MOVE_ASSIST, MOVE_CHARM, MOVE_FEINT_ATTACK} - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 44, - .species = SPECIES_ROSELIA, - .moves = {MOVE_MAGICAL_LEAF, MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_TOXIC} - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 41, - .species = SPECIES_MAGNETON, - .moves = {MOVE_SUPERSONIC, MOVE_THUNDERBOLT, MOVE_TRI_ATTACK, MOVE_SCREECH} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 45, - .species = SPECIES_GARDEVOIR, - .moves = {MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_PSYCHIC, MOVE_FUTURE_SIGHT} - } -}; - -static const struct TrainerMon sParty_BrendanRoute103Mudkip[] = { - { - .lvl = 5, - .species = SPECIES_TREECKO, - } -}; - -static const struct TrainerMon sParty_BrendanRoute110Mudkip[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 18, - .species = SPECIES_SLUGMA, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 18, - .species = SPECIES_WINGULL, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 20, - .species = SPECIES_GROVYLE, - } -}; - -static const struct TrainerMon sParty_BrendanRoute119Mudkip[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_SLUGMA, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 31, - .species = SPECIES_GROVYLE, - } -}; - -static const struct TrainerMon sParty_BrendanRoute103Treecko[] = { - { - .lvl = 5, - .species = SPECIES_TORCHIC, - } -}; - -static const struct TrainerMon sParty_BrendanRoute110Treecko[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 18, - .species = SPECIES_WINGULL, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 18, - .species = SPECIES_LOMBRE, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 20, - .species = SPECIES_COMBUSKEN, - } -}; - -static const struct TrainerMon sParty_BrendanRoute119Treecko[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_LOMBRE, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 31, - .species = SPECIES_COMBUSKEN, - } -}; - -static const struct TrainerMon sParty_BrendanRoute103Torchic[] = { - { - .lvl = 5, - .species = SPECIES_MUDKIP, - } -}; - -static const struct TrainerMon sParty_BrendanRoute110Torchic[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 18, - .species = SPECIES_LOMBRE, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 18, - .species = SPECIES_SLUGMA, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 20, - .species = SPECIES_MARSHTOMP, - } -}; - -static const struct TrainerMon sParty_BrendanRoute119Torchic[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_LOMBRE, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_SLUGMA, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 31, - .species = SPECIES_MARSHTOMP, - } -}; - -static const struct TrainerMon sParty_MayRoute103Mudkip[] = { - { - .lvl = 5, - .species = SPECIES_TREECKO, - } -}; - -static const struct TrainerMon sParty_MayRoute110Mudkip[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 18, - .species = SPECIES_WINGULL, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 18, - .species = SPECIES_SLUGMA, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 20, - .species = SPECIES_GROVYLE, - } -}; - -static const struct TrainerMon sParty_MayRoute119Mudkip[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_SLUGMA, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_LOMBRE, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 31, - .species = SPECIES_GROVYLE, - } -}; - -static const struct TrainerMon sParty_MayRoute103Treecko[] = { - { - .lvl = 5, - .species = SPECIES_TORCHIC, - } -}; - -static const struct TrainerMon sParty_MayRoute110Treecko[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 18, - .species = SPECIES_WINGULL, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 18, - .species = SPECIES_LOMBRE, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 20, - .species = SPECIES_COMBUSKEN, - } -}; - -static const struct TrainerMon sParty_MayRoute119Treecko[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_LOMBRE, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 31, - .species = SPECIES_COMBUSKEN, - } -}; - -static const struct TrainerMon sParty_MayRoute103Torchic[] = { - { - .lvl = 5, - .species = SPECIES_MUDKIP, - } -}; - -static const struct TrainerMon sParty_MayRoute110Torchic[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 18, - .species = SPECIES_LOMBRE, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 18, - .species = SPECIES_SLUGMA, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 20, - .species = SPECIES_MARSHTOMP, - } -}; - -static const struct TrainerMon sParty_MayRoute119Torchic[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_LOMBRE, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_SLUGMA, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 31, - .species = SPECIES_MARSHTOMP, - } -}; - -static const struct TrainerMon sParty_Isaac1[] = { - { - .lvl = 11, - .species = SPECIES_WHISMUR, - }, - { - .lvl = 11, - .species = SPECIES_ZIGZAGOON, - }, - { - .lvl = 11, - .species = SPECIES_ARON, - }, - { - .lvl = 11, - .species = SPECIES_POOCHYENA, - }, - { - .lvl = 11, - .species = SPECIES_TAILLOW, - }, - { - .lvl = 11, - .species = SPECIES_MAKUHITA, - } -}; - -static const struct TrainerMon sParty_Davis[] = { - { - .lvl = 27, - .species = SPECIES_PINSIR, - } -}; - -static const struct TrainerMon sParty_Mitchell[] = { - { - .lvl = 43, - .species = SPECIES_LUNATONE, - .moves = {MOVE_EXPLOSION, MOVE_REFLECT, MOVE_LIGHT_SCREEN, MOVE_PSYCHIC} - }, - { - .lvl = 43, - .species = SPECIES_SOLROCK, - .moves = {MOVE_EXPLOSION, MOVE_REFLECT, MOVE_LIGHT_SCREEN, MOVE_SHADOW_BALL} - } -}; - -static const struct TrainerMon sParty_Isaac2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 22, - .species = SPECIES_LOUDRED, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 22, - .species = SPECIES_LINOONE, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 22, - .species = SPECIES_ARON, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 22, - .species = SPECIES_MIGHTYENA, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 22, - .species = SPECIES_SWELLOW, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 22, - .species = SPECIES_MAKUHITA, - } -}; - -static const struct TrainerMon sParty_Isaac3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 25, - .species = SPECIES_LOUDRED, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 25, - .species = SPECIES_LINOONE, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 25, - .species = SPECIES_ARON, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 25, - .species = SPECIES_MIGHTYENA, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 25, - .species = SPECIES_SWELLOW, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 25, - .species = SPECIES_HARIYAMA, - } -}; - -static const struct TrainerMon sParty_Isaac4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 28, - .species = SPECIES_LOUDRED, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 28, - .species = SPECIES_LINOONE, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 28, - .species = SPECIES_ARON, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 28, - .species = SPECIES_MIGHTYENA, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 28, - .species = SPECIES_SWELLOW, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 28, - .species = SPECIES_HARIYAMA, - } -}; - -static const struct TrainerMon sParty_Isaac5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 31, - .species = SPECIES_LOUDRED, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 31, - .species = SPECIES_LINOONE, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 31, - .species = SPECIES_LAIRON, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 31, - .species = SPECIES_MIGHTYENA, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 31, - .species = SPECIES_SWELLOW, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 31, - .species = SPECIES_HARIYAMA, - } -}; - -static const struct TrainerMon sParty_Lydia1[] = { - { - .lvl = 11, - .species = SPECIES_WINGULL, - }, - { - .lvl = 11, - .species = SPECIES_SHROOMISH, - }, - { - .lvl = 11, - .species = SPECIES_MARILL, - }, - { - .lvl = 11, - .species = SPECIES_ROSELIA, - }, - { - .lvl = 11, - .species = SPECIES_SKITTY, - }, - { - .lvl = 11, - .species = SPECIES_GOLDEEN, - } -}; - -static const struct TrainerMon sParty_Halle[] = { - { - .lvl = 43, - .species = SPECIES_SABLEYE, - }, - { - .lvl = 43, - .species = SPECIES_ABSOL, - } -}; - -static const struct TrainerMon sParty_Garrison[] = { - { - .lvl = 26, - .species = SPECIES_SANDSLASH, - } -}; - -static const struct TrainerMon sParty_Lydia2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 22, - .species = SPECIES_WINGULL, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 22, - .species = SPECIES_SHROOMISH, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 22, - .species = SPECIES_MARILL, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 22, - .species = SPECIES_ROSELIA, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 22, - .species = SPECIES_SKITTY, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 22, - .species = SPECIES_GOLDEEN, - } -}; - -static const struct TrainerMon sParty_Lydia3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 25, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 25, - .species = SPECIES_BRELOOM, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 25, - .species = SPECIES_MARILL, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 25, - .species = SPECIES_ROSELIA, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 25, - .species = SPECIES_DELCATTY, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 25, - .species = SPECIES_GOLDEEN, - } -}; - -static const struct TrainerMon sParty_Lydia4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 28, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 28, - .species = SPECIES_BRELOOM, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 28, - .species = SPECIES_MARILL, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 28, - .species = SPECIES_ROSELIA, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 28, - .species = SPECIES_DELCATTY, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 28, - .species = SPECIES_GOLDEEN, - } -}; - -static const struct TrainerMon sParty_Lydia5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 31, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 31, - .species = SPECIES_BRELOOM, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 31, - .species = SPECIES_AZUMARILL, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 31, - .species = SPECIES_ROSELIA, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 31, - .species = SPECIES_DELCATTY, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 31, - .species = SPECIES_SEAKING, - } -}; - -static const struct TrainerMon sParty_Jackson1[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 27, - .species = SPECIES_BRELOOM, - } -}; - -static const struct TrainerMon sParty_Lorenzo[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 28, - .species = SPECIES_SEEDOT, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 28, - .species = SPECIES_NUZLEAF, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 28, - .species = SPECIES_LOMBRE, - } -}; - -static const struct TrainerMon sParty_Sebastian[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 39, - .species = SPECIES_CACTURNE, - } -}; - -static const struct TrainerMon sParty_Jackson2[] = { - { - .iv = TRAINER_PARTY_IVS(7, 7, 7, 7, 7, 7), - .lvl = 31, - .species = SPECIES_BRELOOM, - } -}; - -static const struct TrainerMon sParty_Jackson3[] = { - { - .iv = TRAINER_PARTY_IVS(8, 8, 8, 8, 8, 8), - .lvl = 34, - .species = SPECIES_BRELOOM, - } -}; - -static const struct TrainerMon sParty_Jackson4[] = { - { - .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), - .lvl = 37, - .species = SPECIES_BRELOOM, - } -}; - -static const struct TrainerMon sParty_Jackson5[] = { - { - .iv = TRAINER_PARTY_IVS(10, 10, 10, 10, 10, 10), - .lvl = 39, - .species = SPECIES_KECLEON, - }, - { - .iv = TRAINER_PARTY_IVS(10, 10, 10, 10, 10, 10), - .lvl = 39, - .species = SPECIES_BRELOOM, - } -}; - -static const struct TrainerMon sParty_Catherine1[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 26, - .species = SPECIES_GLOOM, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 26, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Jenna[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 28, - .species = SPECIES_LOTAD, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 28, - .species = SPECIES_LOMBRE, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 28, - .species = SPECIES_NUZLEAF, - } -}; - -static const struct TrainerMon sParty_Sophia[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 38, - .species = SPECIES_SWABLU, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 38, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Catherine2[] = { - { - .iv = TRAINER_PARTY_IVS(7, 7, 7, 7, 7, 7), - .lvl = 30, - .species = SPECIES_GLOOM, - }, - { - .iv = TRAINER_PARTY_IVS(7, 7, 7, 7, 7, 7), - .lvl = 30, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Catherine3[] = { - { - .iv = TRAINER_PARTY_IVS(8, 8, 8, 8, 8, 8), - .lvl = 33, - .species = SPECIES_GLOOM, - }, - { - .iv = TRAINER_PARTY_IVS(8, 8, 8, 8, 8, 8), - .lvl = 33, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Catherine4[] = { - { - .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), - .lvl = 36, - .species = SPECIES_GLOOM, - }, - { - .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), - .lvl = 36, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Catherine5[] = { - { - .iv = TRAINER_PARTY_IVS(10, 10, 10, 10, 10, 10), - .lvl = 39, - .species = SPECIES_BELLOSSOM, - }, - { - .iv = TRAINER_PARTY_IVS(10, 10, 10, 10, 10, 10), - .lvl = 39, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Julio[] = { - { - .lvl = 21, - .species = SPECIES_MAGNEMITE, - } -}; - -static const struct TrainerMon sParty_GruntSeafloorCavern5[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 35, - .species = SPECIES_MIGHTYENA, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 35, - .species = SPECIES_GOLBAT, - } -}; - -static const struct TrainerMon sParty_GruntUnused[] = { - { - .lvl = 31, - .species = SPECIES_WAILMER, - }, - { - .lvl = 31, - .species = SPECIES_ZUBAT, - } -}; - -static const struct TrainerMon sParty_GruntMtPyre4[] = { - { - .lvl = 30, - .species = SPECIES_WAILMER, - }, - { - .lvl = 30, - .species = SPECIES_ZUBAT, - } -}; - -static const struct TrainerMon sParty_GruntJaggedPass[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 22, - .species = SPECIES_POOCHYENA, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 22, - .species = SPECIES_NUMEL, - } -}; - -static const struct TrainerMon sParty_Marc[] = { - { - .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), - .lvl = 8, - .species = SPECIES_GEODUDE, - }, - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 8, - .species = SPECIES_GEODUDE, - } -}; - -static const struct TrainerMon sParty_Brenden[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 13, - .species = SPECIES_MACHOP, - } -}; - -static const struct TrainerMon sParty_Lilith[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 13, - .species = SPECIES_MEDITITE, - } -}; - -static const struct TrainerMon sParty_Cristian[] = { - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 13, - .species = SPECIES_MAKUHITA, - } -}; - -static const struct TrainerMon sParty_Sylvia[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 36, - .species = SPECIES_MEDITITE, - } -}; - -static const struct TrainerMon sParty_Leonardo[] = { - { - .lvl = 34, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_Athena[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 32, - .species = SPECIES_MANECTRIC, - .heldItem = ITEM_NONE, - .moves = {MOVE_THUNDER, MOVE_THUNDER_WAVE, MOVE_QUICK_ATTACK, MOVE_NONE} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 32, - .species = SPECIES_LINOONE, - .heldItem = ITEM_NONE, - .moves = {MOVE_SURF, MOVE_THIEF, MOVE_NONE, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Harrison[] = { - { - .lvl = 35, - .species = SPECIES_TENTACRUEL, - } -}; - -static const struct TrainerMon sParty_GruntMtChimney2[] = { - { - .lvl = 20, - .species = SPECIES_ZUBAT, - } -}; - -static const struct TrainerMon sParty_Clarence[] = { - { - .lvl = 34, - .species = SPECIES_SHARPEDO, - } -}; - -static const struct TrainerMon sParty_Terry[] = { - { - .lvl = 37, - .species = SPECIES_GIRAFARIG, - } -}; - -static const struct TrainerMon sParty_Nate[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 36, - .species = SPECIES_SPOINK, - } -}; - -static const struct TrainerMon sParty_Kathleen[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 36, - .species = SPECIES_KADABRA, - } -}; - -static const struct TrainerMon sParty_Clifford[] = { - { - .lvl = 36, - .species = SPECIES_GIRAFARIG, - } -}; - -static const struct TrainerMon sParty_Nicholas[] = { - { - .lvl = 36, - .species = SPECIES_WOBBUFFET, - } -}; - -static const struct TrainerMon sParty_GruntSpaceCenter3[] = { - { - .lvl = 31, - .species = SPECIES_ZUBAT, - }, - { - .lvl = 31, - .species = SPECIES_POOCHYENA, - } -}; - -static const struct TrainerMon sParty_GruntSpaceCenter4[] = { - { - .lvl = 32, - .species = SPECIES_BALTOY, - } -}; - -static const struct TrainerMon sParty_GruntSpaceCenter5[] = { - { - .lvl = 32, - .species = SPECIES_ZUBAT, - } -}; - -static const struct TrainerMon sParty_GruntSpaceCenter6[] = { - { - .lvl = 32, - .species = SPECIES_MIGHTYENA, - } -}; - -static const struct TrainerMon sParty_GruntSpaceCenter7[] = { - { - .lvl = 32, - .species = SPECIES_BALTOY, - } -}; - -static const struct TrainerMon sParty_Macey[] = { - { - .lvl = 36, - .species = SPECIES_NATU, - } -}; - -static const struct TrainerMon sParty_BrendanRustboroTreecko[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 13, - .species = SPECIES_LOTAD, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 15, - .species = SPECIES_TORCHIC, - } -}; - -static const struct TrainerMon sParty_BrendanRustboroMudkip[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 13, - .species = SPECIES_WINGULL, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 15, - .species = SPECIES_TREECKO, - } -}; - -static const struct TrainerMon sParty_Paxton[] = { - { - .lvl = 33, - .species = SPECIES_SWELLOW, - }, - { - .lvl = 33, - .species = SPECIES_BRELOOM, - } -}; - -static const struct TrainerMon sParty_Isabella[] = { - { - .lvl = 34, - .species = SPECIES_STARYU, - } -}; - -static const struct TrainerMon sParty_GruntWeatherInst5[] = { - { - .lvl = 27, - .species = SPECIES_ZUBAT, - }, - { - .lvl = 27, - .species = SPECIES_POOCHYENA, - } -}; - -static const struct TrainerMon sParty_TabithaMtChimney[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 18, - .species = SPECIES_NUMEL, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 20, - .species = SPECIES_POOCHYENA, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 22, - .species = SPECIES_NUMEL, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 22, - .species = SPECIES_ZUBAT, - } -}; - -static const struct TrainerMon sParty_Jonathan[] = { - { - .lvl = 33, - .species = SPECIES_KECLEON, - }, - { - .lvl = 33, - .species = SPECIES_LOUDRED, - } -}; - -static const struct TrainerMon sParty_BrendanRustboroTorchic[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 13, - .species = SPECIES_SLUGMA, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 15, - .species = SPECIES_MUDKIP, - } -}; - -static const struct TrainerMon sParty_MayRustboroMudkip[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 13, - .species = SPECIES_WINGULL, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 15, - .species = SPECIES_TREECKO, - } -}; - -static const struct TrainerMon sParty_MaxieMagmaHideout[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 37, - .species = SPECIES_MIGHTYENA, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 38, - .species = SPECIES_CROBAT, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 39, - .species = SPECIES_CAMERUPT, - } -}; - -static const struct TrainerMon sParty_MaxieMtChimney[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 24, - .species = SPECIES_MIGHTYENA, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 24, - .species = SPECIES_ZUBAT, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 25, - .species = SPECIES_CAMERUPT, - } -}; - -static const struct TrainerMon sParty_Tiana[] = { - { - .lvl = 4, - .species = SPECIES_ZIGZAGOON, - }, - { - .lvl = 4, - .species = SPECIES_SHROOMISH, - } -}; - -static const struct TrainerMon sParty_Haley1[] = { - { - .lvl = 6, - .species = SPECIES_LOTAD, - }, - { - .lvl = 6, - .species = SPECIES_SHROOMISH, - } -}; - -static const struct TrainerMon sParty_Janice[] = { - { - .lvl = 9, - .species = SPECIES_MARILL, - } -}; - -static const struct TrainerMon sParty_Vivi[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 15, - .species = SPECIES_MARILL, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 15, - .species = SPECIES_SHROOMISH, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 15, - .species = SPECIES_NUMEL, - } -}; - -static const struct TrainerMon sParty_Haley2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 26, - .species = SPECIES_LOMBRE, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 26, - .species = SPECIES_SHROOMISH, - } -}; - -static const struct TrainerMon sParty_Haley3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 29, - .species = SPECIES_LOMBRE, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 29, - .species = SPECIES_BRELOOM, - } -}; - -static const struct TrainerMon sParty_Haley4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 32, - .species = SPECIES_LOMBRE, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 32, - .species = SPECIES_BRELOOM, - } -}; - -static const struct TrainerMon sParty_Haley5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 34, - .species = SPECIES_SWELLOW, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 34, - .species = SPECIES_LOMBRE, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 34, - .species = SPECIES_BRELOOM, - } -}; - -static const struct TrainerMon sParty_Sally[] = { - { - .lvl = 16, - .species = SPECIES_ODDISH, - } -}; - -static const struct TrainerMon sParty_Robin[] = { - { - .lvl = 14, - .species = SPECIES_SKITTY, - }, - { - .lvl = 14, - .species = SPECIES_SHROOMISH, - }, - { - .lvl = 14, - .species = SPECIES_MARILL, - } -}; - -static const struct TrainerMon sParty_Andrea[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 40, - .species = SPECIES_LUVDISC, - } -}; - -static const struct TrainerMon sParty_Crissy[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 39, - .species = SPECIES_GOLDEEN, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 39, - .species = SPECIES_WAILMER, - } -}; - -static const struct TrainerMon sParty_Rick[] = { - { - .lvl = 4, - .species = SPECIES_WURMPLE, - }, - { - .lvl = 4, - .species = SPECIES_WURMPLE, - } -}; - -static const struct TrainerMon sParty_Lyle[] = { - { - .lvl = 3, - .species = SPECIES_WURMPLE, - }, - { - .lvl = 3, - .species = SPECIES_WURMPLE, - }, - { - .lvl = 3, - .species = SPECIES_WURMPLE, - }, - { - .lvl = 3, - .species = SPECIES_WURMPLE, - } -}; - -static const struct TrainerMon sParty_Jose[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 8, - .species = SPECIES_WURMPLE, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 8, - .species = SPECIES_NINCADA, - } -}; - -static const struct TrainerMon sParty_Doug[] = { - { - .lvl = 28, - .species = SPECIES_NINCADA, - }, - { - .lvl = 28, - .species = SPECIES_NINJASK, - } -}; - -static const struct TrainerMon sParty_Greg[] = { - { - .lvl = 25, - .species = SPECIES_VOLBEAT, - }, - { - .lvl = 25, - .species = SPECIES_ILLUMISE, - } -}; - -static const struct TrainerMon sParty_Kent[] = { - { - .lvl = 25, - .species = SPECIES_NINJASK, - } -}; - -static const struct TrainerMon sParty_James1[] = { - { - .lvl = 6, - .species = SPECIES_NINCADA, - }, - { - .lvl = 6, - .species = SPECIES_NINCADA, - } -}; - -static const struct TrainerMon sParty_James2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 27, - .species = SPECIES_NINJASK, - } -}; - -static const struct TrainerMon sParty_James3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 29, - .species = SPECIES_DUSTOX, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 29, - .species = SPECIES_NINJASK, - } -}; - -static const struct TrainerMon sParty_James4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 31, - .species = SPECIES_SURSKIT, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 31, - .species = SPECIES_DUSTOX, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 31, - .species = SPECIES_NINJASK, - } -}; - -static const struct TrainerMon sParty_James5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 33, - .species = SPECIES_SURSKIT, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 33, - .species = SPECIES_NINJASK, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 33, - .species = SPECIES_DUSTOX, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 33, - .species = SPECIES_NINJASK, - } -}; - -static const struct TrainerMon sParty_Brice[] = { - { - .lvl = 17, - .species = SPECIES_NUMEL, - }, - { - .lvl = 17, - .species = SPECIES_MACHOP, - } -}; - -static const struct TrainerMon sParty_Trent1[] = { - { - .lvl = 16, - .species = SPECIES_GEODUDE, - }, - { - .lvl = 17, - .species = SPECIES_GEODUDE, - }, - { - .lvl = 16, - .species = SPECIES_GEODUDE, - } -}; - -static const struct TrainerMon sParty_Lenny[] = { - { - .lvl = 18, - .species = SPECIES_GEODUDE, - }, - { - .lvl = 18, - .species = SPECIES_MACHOP, - } -}; - -static const struct TrainerMon sParty_Lucas1[] = { - { - .lvl = 18, - .species = SPECIES_GEODUDE, - }, - { - .lvl = 18, - .species = SPECIES_NUMEL, - } -}; - -static const struct TrainerMon sParty_Alan[] = { - { - .lvl = 22, - .species = SPECIES_GEODUDE, - }, - { - .lvl = 22, - .species = SPECIES_NOSEPASS, - }, - { - .lvl = 22, - .species = SPECIES_GRAVELER, - } -}; - -static const struct TrainerMon sParty_Clark[] = { - { - .lvl = 8, - .species = SPECIES_GEODUDE, - } -}; - -static const struct TrainerMon sParty_Eric[] = { - { - .lvl = 20, - .species = SPECIES_GEODUDE, - }, - { - .lvl = 20, - .species = SPECIES_BALTOY, - } -}; - -static const struct TrainerMon sParty_Lucas2[] = { - { - .lvl = 9, - .species = SPECIES_WAILMER, - .moves = {MOVE_SPLASH, MOVE_WATER_GUN, MOVE_NONE, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Mike1[] = { - { - .lvl = 10, - .species = SPECIES_PELIPPER, - .moves = {MOVE_GUST, MOVE_GROWL, MOVE_NONE, MOVE_NONE} - }, - { - .lvl = 10, - .species = SPECIES_POOCHYENA, - .moves = {MOVE_BITE, MOVE_SCARY_FACE, MOVE_NONE, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Mike2[] = { - { - .lvl = 16, - .species = SPECIES_GEODUDE, - }, - { - .lvl = 16, - .species = SPECIES_GEODUDE, - }, - { - .lvl = 16, - .species = SPECIES_MACHOP, - } -}; - -static const struct TrainerMon sParty_Trent2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 24, - .species = SPECIES_GEODUDE, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 24, - .species = SPECIES_GEODUDE, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 24, - .species = SPECIES_GEODUDE, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 24, - .species = SPECIES_GRAVELER, - } -}; - -static const struct TrainerMon sParty_Trent3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 27, - .species = SPECIES_GEODUDE, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 27, - .species = SPECIES_GEODUDE, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 27, - .species = SPECIES_GRAVELER, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 27, - .species = SPECIES_GRAVELER, - } -}; - -static const struct TrainerMon sParty_Trent4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 30, - .species = SPECIES_GEODUDE, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 30, - .species = SPECIES_GRAVELER, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 30, - .species = SPECIES_GRAVELER, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 30, - .species = SPECIES_GRAVELER, - } -}; - -static const struct TrainerMon sParty_Trent5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 33, - .species = SPECIES_GRAVELER, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 33, - .species = SPECIES_GRAVELER, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 33, - .species = SPECIES_GRAVELER, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 33, - .species = SPECIES_GOLEM, - } -}; - -static const struct TrainerMon sParty_DezAndLuke[] = { - { - .lvl = 31, - .species = SPECIES_DELCATTY, - }, - { - .lvl = 31, - .species = SPECIES_MANECTRIC, - } -}; - -static const struct TrainerMon sParty_LeaAndJed[] = { - { - .lvl = 45, - .species = SPECIES_LUVDISC, - }, - { - .lvl = 45, - .species = SPECIES_LUVDISC, - } -}; - -static const struct TrainerMon sParty_KiraAndDan1[] = { - { - .lvl = 25, - .species = SPECIES_VOLBEAT, - }, - { - .lvl = 25, - .species = SPECIES_ILLUMISE, - } -}; - -static const struct TrainerMon sParty_KiraAndDan2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 30, - .species = SPECIES_VOLBEAT, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 30, - .species = SPECIES_ILLUMISE, - } -}; - -static const struct TrainerMon sParty_KiraAndDan3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 33, - .species = SPECIES_VOLBEAT, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 33, - .species = SPECIES_ILLUMISE, - } -}; - -static const struct TrainerMon sParty_KiraAndDan4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 36, - .species = SPECIES_VOLBEAT, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 36, - .species = SPECIES_ILLUMISE, - } -}; - -static const struct TrainerMon sParty_KiraAndDan5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 39, - .species = SPECIES_VOLBEAT, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 39, - .species = SPECIES_ILLUMISE, - } -}; - -static const struct TrainerMon sParty_Johanna[] = { - { - .lvl = 13, - .species = SPECIES_GOLDEEN, - } -}; - -static const struct TrainerMon sParty_Gerald[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 23, - .species = SPECIES_KECLEON, - .moves = {MOVE_FLAMETHROWER, MOVE_FURY_SWIPES, MOVE_FEINT_ATTACK, MOVE_BIND} - } -}; - -static const struct TrainerMon sParty_Vivian[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 17, - .species = SPECIES_MEDITITE, - .moves = {MOVE_BIDE, MOVE_DETECT, MOVE_CONFUSION, MOVE_THUNDER_PUNCH} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 17, - .species = SPECIES_MEDITITE, - .moves = {MOVE_THUNDER_PUNCH, MOVE_DETECT, MOVE_CONFUSION, MOVE_MEDITATE} - } -}; - -static const struct TrainerMon sParty_Danielle[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 23, - .species = SPECIES_MEDITITE, - .moves = {MOVE_BIDE, MOVE_DETECT, MOVE_CONFUSION, MOVE_FIRE_PUNCH} - } -}; - -static const struct TrainerMon sParty_Hideo[] = { - { - .lvl = 25, - .species = SPECIES_KOFFING, - .moves = {MOVE_TACKLE, MOVE_SELF_DESTRUCT, MOVE_SLUDGE, MOVE_SMOKESCREEN} - }, - { - .lvl = 25, - .species = SPECIES_KOFFING, - .moves = {MOVE_TACKLE, MOVE_POISON_GAS, MOVE_SLUDGE, MOVE_SMOKESCREEN} - } -}; - -static const struct TrainerMon sParty_Keigo[] = { - { - .lvl = 28, - .species = SPECIES_KOFFING, - .moves = {MOVE_POISON_GAS, MOVE_SELF_DESTRUCT, MOVE_SLUDGE, MOVE_SMOKESCREEN} - }, - { - .lvl = 28, - .species = SPECIES_NINJASK, - .moves = {MOVE_SAND_ATTACK, MOVE_DOUBLE_TEAM, MOVE_FURY_CUTTER, MOVE_SWORDS_DANCE} - } -}; - -static const struct TrainerMon sParty_Riley[] = { - { - .lvl = 28, - .species = SPECIES_NINCADA, - .moves = {MOVE_LEECH_LIFE, MOVE_FURY_SWIPES, MOVE_MIND_READER, MOVE_DIG} - }, - { - .lvl = 28, - .species = SPECIES_KOFFING, - .moves = {MOVE_TACKLE, MOVE_SELF_DESTRUCT, MOVE_SLUDGE, MOVE_SMOKESCREEN} - } -}; - -static const struct TrainerMon sParty_Flint[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 29, - .species = SPECIES_SWELLOW, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 29, - .species = SPECIES_XATU, - } -}; - -static const struct TrainerMon sParty_Ashley[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 27, - .species = SPECIES_SWABLU, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 27, - .species = SPECIES_SWABLU, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 27, - .species = SPECIES_SWABLU, - } -}; - -static const struct TrainerMon sParty_WallyMauville[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 16, - .species = SPECIES_RALTS, - } -}; - -static const struct TrainerMon sParty_WallyVR2[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 47, - .species = SPECIES_ALTARIA, - .moves = {MOVE_AERIAL_ACE, MOVE_SAFEGUARD, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE} - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 46, - .species = SPECIES_DELCATTY, - .moves = {MOVE_SING, MOVE_ASSIST, MOVE_CHARM, MOVE_FEINT_ATTACK} - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 47, - .species = SPECIES_ROSELIA, - .moves = {MOVE_MAGICAL_LEAF, MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_TOXIC} - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 44, - .species = SPECIES_MAGNETON, - .moves = {MOVE_SUPERSONIC, MOVE_THUNDERBOLT, MOVE_TRI_ATTACK, MOVE_SCREECH} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 48, - .species = SPECIES_GARDEVOIR, - .moves = {MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_PSYCHIC, MOVE_FUTURE_SIGHT} - } -}; - -static const struct TrainerMon sParty_WallyVR3[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 50, - .species = SPECIES_ALTARIA, - .moves = {MOVE_AERIAL_ACE, MOVE_SAFEGUARD, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE} - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 49, - .species = SPECIES_DELCATTY, - .moves = {MOVE_SING, MOVE_ASSIST, MOVE_CHARM, MOVE_FEINT_ATTACK} - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 50, - .species = SPECIES_ROSELIA, - .moves = {MOVE_MAGICAL_LEAF, MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_TOXIC} - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 47, - .species = SPECIES_MAGNETON, - .moves = {MOVE_SUPERSONIC, MOVE_THUNDERBOLT, MOVE_TRI_ATTACK, MOVE_SCREECH} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 51, - .species = SPECIES_GARDEVOIR, - .moves = {MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_PSYCHIC, MOVE_FUTURE_SIGHT} - } -}; - -static const struct TrainerMon sParty_WallyVR4[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 53, - .species = SPECIES_ALTARIA, - .moves = {MOVE_AERIAL_ACE, MOVE_SAFEGUARD, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE} - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 52, - .species = SPECIES_DELCATTY, - .moves = {MOVE_SING, MOVE_ASSIST, MOVE_CHARM, MOVE_FEINT_ATTACK} - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 53, - .species = SPECIES_ROSELIA, - .moves = {MOVE_MAGICAL_LEAF, MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_TOXIC} - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 50, - .species = SPECIES_MAGNETON, - .moves = {MOVE_SUPERSONIC, MOVE_THUNDERBOLT, MOVE_TRI_ATTACK, MOVE_SCREECH} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 54, - .species = SPECIES_GARDEVOIR, - .moves = {MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_PSYCHIC, MOVE_FUTURE_SIGHT} - } -}; - -static const struct TrainerMon sParty_WallyVR5[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 56, - .species = SPECIES_ALTARIA, - .moves = {MOVE_AERIAL_ACE, MOVE_SAFEGUARD, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE} - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 55, - .species = SPECIES_DELCATTY, - .moves = {MOVE_SING, MOVE_ASSIST, MOVE_CHARM, MOVE_FEINT_ATTACK} - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 56, - .species = SPECIES_ROSELIA, - .moves = {MOVE_MAGICAL_LEAF, MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_TOXIC} - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 53, - .species = SPECIES_MAGNETON, - .moves = {MOVE_SUPERSONIC, MOVE_THUNDERBOLT, MOVE_TRI_ATTACK, MOVE_SCREECH} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 57, - .species = SPECIES_GARDEVOIR, - .moves = {MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_PSYCHIC, MOVE_FUTURE_SIGHT} - } -}; - -static const struct TrainerMon sParty_BrendanLilycoveMudkip[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 31, - .species = SPECIES_TROPIUS, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 32, - .species = SPECIES_SLUGMA, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 32, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 34, - .species = SPECIES_GROVYLE, - } -}; - -static const struct TrainerMon sParty_BrendanLilycoveTreecko[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 31, - .species = SPECIES_TROPIUS, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 32, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 32, - .species = SPECIES_LUDICOLO, - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 34, - .species = SPECIES_COMBUSKEN, - } -}; - -static const struct TrainerMon sParty_BrendanLilycoveTorchic[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 31, - .species = SPECIES_TROPIUS, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 32, - .species = SPECIES_LUDICOLO, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 32, - .species = SPECIES_SLUGMA, - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 34, - .species = SPECIES_MARSHTOMP, - } -}; - -static const struct TrainerMon sParty_MayLilycoveMudkip[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 31, - .species = SPECIES_TROPIUS, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 32, - .species = SPECIES_SLUGMA, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 32, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 34, - .species = SPECIES_GROVYLE, - } -}; - -static const struct TrainerMon sParty_MayLilycoveTreecko[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 31, - .species = SPECIES_TROPIUS, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 32, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 32, - .species = SPECIES_LUDICOLO, - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 34, - .species = SPECIES_COMBUSKEN, - } -}; - -static const struct TrainerMon sParty_MayLilycoveTorchic[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 31, - .species = SPECIES_TROPIUS, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 32, - .species = SPECIES_LUDICOLO, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 32, - .species = SPECIES_SLUGMA, - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 34, - .species = SPECIES_MARSHTOMP, - } -}; - -static const struct TrainerMon sParty_Jonah[] = { - { - .lvl = 30, - .species = SPECIES_WAILMER, - }, - { - .lvl = 31, - .species = SPECIES_TENTACOOL, - }, - { - .lvl = 32, - .species = SPECIES_SHARPEDO, - } -}; - -static const struct TrainerMon sParty_Henry[] = { - { - .lvl = 31, - .species = SPECIES_CARVANHA, - }, - { - .lvl = 34, - .species = SPECIES_TENTACRUEL, - } -}; - -static const struct TrainerMon sParty_Roger[] = { - { - .lvl = 15, - .species = SPECIES_MAGIKARP, - }, - { - .lvl = 25, - .species = SPECIES_MAGIKARP, - }, - { - .lvl = 35, - .species = SPECIES_GYARADOS, - } -}; - -static const struct TrainerMon sParty_Alexa[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 34, - .species = SPECIES_GLOOM, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 34, - .species = SPECIES_AZUMARILL, - } -}; - -static const struct TrainerMon sParty_Ruben[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 34, - .species = SPECIES_SHIFTRY, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 34, - .species = SPECIES_NOSEPASS, - } -}; - -static const struct TrainerMon sParty_Koji1[] = { - { - .lvl = 34, - .species = SPECIES_MACHOKE, - } -}; - -static const struct TrainerMon sParty_Wayne[] = { - { - .lvl = 31, - .species = SPECIES_TENTACOOL, - }, - { - .lvl = 31, - .species = SPECIES_TENTACOOL, - }, - { - .lvl = 36, - .species = SPECIES_WAILMER, - } -}; - -static const struct TrainerMon sParty_Aidan[] = { - { - .lvl = 32, - .species = SPECIES_SWELLOW, - }, - { - .lvl = 32, - .species = SPECIES_SKARMORY, - } -}; - -static const struct TrainerMon sParty_Reed[] = { - { - .lvl = 33, - .species = SPECIES_SPHEAL, - }, - { - .lvl = 33, - .species = SPECIES_SHARPEDO, - } -}; - -static const struct TrainerMon sParty_Tisha[] = { - { - .lvl = 34, - .species = SPECIES_CHINCHOU, - } -}; - -static const struct TrainerMon sParty_ToriAndTia[] = { - { - .lvl = 19, - .species = SPECIES_SPINDA, - }, - { - .lvl = 19, - .species = SPECIES_SPINDA, - } -}; - -static const struct TrainerMon sParty_KimAndIris[] = { - { - .lvl = 32, - .species = SPECIES_SWABLU, - .moves = {MOVE_SING, MOVE_FURY_ATTACK, MOVE_SAFEGUARD, MOVE_AERIAL_ACE} - }, - { - .lvl = 35, - .species = SPECIES_NUMEL, - .moves = {MOVE_FLAMETHROWER, MOVE_TAKE_DOWN, MOVE_REST, MOVE_EARTHQUAKE} - } -}; - -static const struct TrainerMon sParty_TyraAndIvy[] = { - { - .lvl = 18, - .species = SPECIES_ROSELIA, - .moves = {MOVE_GROWTH, MOVE_STUN_SPORE, MOVE_MEGA_DRAIN, MOVE_LEECH_SEED} - }, - { - .lvl = 20, - .species = SPECIES_GRAVELER, - .moves = {MOVE_DEFENSE_CURL, MOVE_ROLLOUT, MOVE_MUD_SPORT, MOVE_ROCK_THROW} - } -}; - -static const struct TrainerMon sParty_MelAndPaul[] = { - { - .lvl = 27, - .species = SPECIES_DUSTOX, - .moves = {MOVE_GUST, MOVE_PSYBEAM, MOVE_TOXIC, MOVE_PROTECT} - }, - { - .lvl = 27, - .species = SPECIES_BEAUTIFLY, - .moves = {MOVE_GUST, MOVE_MEGA_DRAIN, MOVE_ATTRACT, MOVE_STUN_SPORE} - } -}; - -static const struct TrainerMon sParty_JohnAndJay1[] = { - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 39, - .species = SPECIES_MEDICHAM, - .moves = {MOVE_PSYCHIC, MOVE_FIRE_PUNCH, MOVE_PSYCH_UP, MOVE_PROTECT} - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 39, - .species = SPECIES_HARIYAMA, - .moves = {MOVE_FOCUS_PUNCH, MOVE_ROCK_TOMB, MOVE_REST, MOVE_BELLY_DRUM} - } -}; - -static const struct TrainerMon sParty_JohnAndJay2[] = { - { - .iv = TRAINER_PARTY_IVS(25, 25, 25, 25, 25, 25), - .lvl = 43, - .species = SPECIES_MEDICHAM, - .moves = {MOVE_PSYCHIC, MOVE_FIRE_PUNCH, MOVE_PSYCH_UP, MOVE_PROTECT} - }, - { - .iv = TRAINER_PARTY_IVS(25, 25, 25, 25, 25, 25), - .lvl = 43, - .species = SPECIES_HARIYAMA, - .moves = {MOVE_FOCUS_PUNCH, MOVE_ROCK_TOMB, MOVE_REST, MOVE_BELLY_DRUM} - } -}; - -static const struct TrainerMon sParty_JohnAndJay3[] = { - { - .iv = TRAINER_PARTY_IVS(26, 26, 26, 26, 26, 26), - .lvl = 46, - .species = SPECIES_MEDICHAM, - .moves = {MOVE_PSYCHIC, MOVE_FIRE_PUNCH, MOVE_PSYCH_UP, MOVE_PROTECT} - }, - { - .iv = TRAINER_PARTY_IVS(26, 26, 26, 26, 26, 26), - .lvl = 46, - .species = SPECIES_HARIYAMA, - .moves = {MOVE_FOCUS_PUNCH, MOVE_ROCK_TOMB, MOVE_REST, MOVE_BELLY_DRUM} - } -}; - -static const struct TrainerMon sParty_JohnAndJay4[] = { - { - .iv = TRAINER_PARTY_IVS(27, 27, 27, 27, 27, 27), - .lvl = 49, - .species = SPECIES_MEDICHAM, - .moves = {MOVE_PSYCHIC, MOVE_FIRE_PUNCH, MOVE_PSYCH_UP, MOVE_PROTECT} - }, - { - .iv = TRAINER_PARTY_IVS(27, 27, 27, 27, 27, 27), - .lvl = 49, - .species = SPECIES_HARIYAMA, - .moves = {MOVE_FOCUS_PUNCH, MOVE_ROCK_TOMB, MOVE_REST, MOVE_BELLY_DRUM} - } -}; - -static const struct TrainerMon sParty_JohnAndJay5[] = { - { - .iv = TRAINER_PARTY_IVS(29, 29, 29, 29, 29, 29), - .lvl = 52, - .species = SPECIES_MEDICHAM, - .moves = {MOVE_PSYCHIC, MOVE_FIRE_PUNCH, MOVE_PSYCH_UP, MOVE_PROTECT} - }, - { - .iv = TRAINER_PARTY_IVS(29, 29, 29, 29, 29, 29), - .lvl = 52, - .species = SPECIES_HARIYAMA, - .moves = {MOVE_FOCUS_PUNCH, MOVE_ROCK_TOMB, MOVE_REST, MOVE_BELLY_DRUM} - } -}; - -static const struct TrainerMon sParty_ReliAndIan[] = { - { - .lvl = 35, - .species = SPECIES_AZUMARILL, - }, - { - .lvl = 33, - .species = SPECIES_WINGULL, - } -}; - -static const struct TrainerMon sParty_LilaAndRoy1[] = { - { - .lvl = 34, - .species = SPECIES_CHINCHOU, - }, - { - .lvl = 33, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_LilaAndRoy2[] = { - { - .lvl = 42, - .species = SPECIES_CHINCHOU, - }, - { - .lvl = 40, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_LilaAndRoy3[] = { - { - .lvl = 45, - .species = SPECIES_LANTURN, - }, - { - .lvl = 43, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_LilaAndRoy4[] = { - { - .lvl = 48, - .species = SPECIES_LANTURN, - }, - { - .lvl = 46, - .species = SPECIES_SHARPEDO, - } -}; - -static const struct TrainerMon sParty_LilaAndRoy5[] = { - { - .lvl = 51, - .species = SPECIES_LANTURN, - }, - { - .lvl = 49, - .species = SPECIES_SHARPEDO, - } -}; - -static const struct TrainerMon sParty_LisaAndRay[] = { - { - .lvl = 27, - .species = SPECIES_GOLDEEN, - }, - { - .lvl = 25, - .species = SPECIES_TENTACOOL, - } -}; - -static const struct TrainerMon sParty_Chris[] = { - { - .lvl = 29, - .species = SPECIES_MAGIKARP, - }, - { - .lvl = 20, - .species = SPECIES_TENTACOOL, - }, - { - .lvl = 26, - .species = SPECIES_FEEBAS, - }, - { - .lvl = 23, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_Dawson[] = { - { - .lvl = 8, - .species = SPECIES_ZIGZAGOON, - .heldItem = ITEM_NUGGET - }, - { - .lvl = 8, - .species = SPECIES_POOCHYENA, - .heldItem = ITEM_NONE - } -}; - -static const struct TrainerMon sParty_Sarah[] = { - { - .lvl = 8, - .species = SPECIES_LOTAD, - .heldItem = ITEM_NONE - }, - { - .lvl = 8, - .species = SPECIES_ZIGZAGOON, - .heldItem = ITEM_NUGGET - } -}; - -static const struct TrainerMon sParty_Darian[] = { - { - .lvl = 9, - .species = SPECIES_MAGIKARP, - } -}; - -static const struct TrainerMon sParty_Hailey[] = { - { - .lvl = 13, - .species = SPECIES_MARILL, - } -}; - -static const struct TrainerMon sParty_Chandler[] = { - { - .lvl = 12, - .species = SPECIES_TENTACOOL, - }, - { - .lvl = 12, - .species = SPECIES_TENTACOOL, - } -}; - -static const struct TrainerMon sParty_Kaleb[] = { - { - .lvl = 14, - .species = SPECIES_MINUN, - .heldItem = ITEM_ORAN_BERRY - }, - { - .lvl = 14, - .species = SPECIES_PLUSLE, - .heldItem = ITEM_ORAN_BERRY - } -}; - -static const struct TrainerMon sParty_Joseph[] = { - { - .lvl = 14, - .species = SPECIES_ELECTRIKE, - }, - { - .lvl = 14, - .species = SPECIES_VOLTORB, - } -}; - -static const struct TrainerMon sParty_Alyssa[] = { - { - .lvl = 15, - .species = SPECIES_MAGNEMITE, - } -}; - -static const struct TrainerMon sParty_Marcos[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 15, - .species = SPECIES_VOLTORB, - } -}; - -static const struct TrainerMon sParty_Rhett[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 15, - .species = SPECIES_MAKUHITA, - } -}; - -static const struct TrainerMon sParty_Tyron[] = { - { - .lvl = 19, - .species = SPECIES_SANDSHREW, - } -}; - -static const struct TrainerMon sParty_Celina[] = { - { - .lvl = 18, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Bianca[] = { - { - .lvl = 18, - .species = SPECIES_SHROOMISH, - } -}; - -static const struct TrainerMon sParty_Hayden[] = { - { - .lvl = 18, - .species = SPECIES_NUMEL, - } -}; - -static const struct TrainerMon sParty_Sophie[] = { - { - .lvl = 17, - .species = SPECIES_MARILL, - }, - { - .lvl = 19, - .species = SPECIES_LOMBRE, - } -}; - -static const struct TrainerMon sParty_Coby[] = { - { - .lvl = 17, - .species = SPECIES_SKARMORY, - }, - { - .lvl = 19, - .species = SPECIES_SWELLOW, - } -}; - -static const struct TrainerMon sParty_Lawrence[] = { - { - .lvl = 18, - .species = SPECIES_BALTOY, - }, - { - .lvl = 18, - .species = SPECIES_SANDSHREW, - } -}; - -static const struct TrainerMon sParty_Wyatt[] = { - { - .lvl = 18, - .species = SPECIES_ARON, - }, - { - .lvl = 18, - .species = SPECIES_ARON, - } -}; - -static const struct TrainerMon sParty_Angelina[] = { - { - .lvl = 18, - .species = SPECIES_LOMBRE, - }, - { - .lvl = 18, - .species = SPECIES_MARILL, - } -}; - -static const struct TrainerMon sParty_Kai[] = { - { - .lvl = 19, - .species = SPECIES_BARBOACH, - } -}; - -static const struct TrainerMon sParty_Charlotte[] = { - { - .lvl = 19, - .species = SPECIES_NUZLEAF, - } -}; - -static const struct TrainerMon sParty_Deandre[] = { - { - .lvl = 14, - .species = SPECIES_ZIGZAGOON, - }, - { - .lvl = 14, - .species = SPECIES_ARON, - }, - { - .lvl = 14, - .species = SPECIES_ELECTRIKE, - } -}; - -static const struct TrainerMon sParty_GruntMagmaHideout1[] = { - { - .lvl = 29, - .species = SPECIES_ZUBAT, - } -}; - -static const struct TrainerMon sParty_GruntMagmaHideout2[] = { - { - .lvl = 29, - .species = SPECIES_POOCHYENA, - } -}; - -static const struct TrainerMon sParty_GruntMagmaHideout3[] = { - { - .lvl = 29, - .species = SPECIES_NUMEL, - } -}; - -static const struct TrainerMon sParty_GruntMagmaHideout4[] = { - { - .lvl = 28, - .species = SPECIES_BALTOY, - }, - { - .lvl = 28, - .species = SPECIES_ZUBAT, - } -}; - -static const struct TrainerMon sParty_GruntMagmaHideout5[] = { - { - .lvl = 28, - .species = SPECIES_BALTOY, - }, - { - .lvl = 28, - .species = SPECIES_NUMEL, - } -}; - -static const struct TrainerMon sParty_GruntMagmaHideout6[] = { - { - .lvl = 29, - .species = SPECIES_MIGHTYENA, - } -}; - -static const struct TrainerMon sParty_GruntMagmaHideout7[] = { - { - .lvl = 29, - .species = SPECIES_ZUBAT, - } -}; - -static const struct TrainerMon sParty_GruntMagmaHideout8[] = { - { - .lvl = 29, - .species = SPECIES_POOCHYENA, - } -}; - -static const struct TrainerMon sParty_GruntMagmaHideout9[] = { - { - .lvl = 29, - .species = SPECIES_ZUBAT, - } -}; - -static const struct TrainerMon sParty_GruntMagmaHideout10[] = { - { - .lvl = 29, - .species = SPECIES_MIGHTYENA, - } -}; - -static const struct TrainerMon sParty_GruntMagmaHideout11[] = { - { - .lvl = 29, - .species = SPECIES_BALTOY, - } -}; - -static const struct TrainerMon sParty_GruntMagmaHideout12[] = { - { - .lvl = 29, - .species = SPECIES_NUMEL, - } -}; - -static const struct TrainerMon sParty_GruntMagmaHideout13[] = { - { - .lvl = 29, - .species = SPECIES_ZUBAT, - } -}; - -static const struct TrainerMon sParty_GruntMagmaHideout14[] = { - { - .lvl = 29, - .species = SPECIES_MIGHTYENA, - } -}; - -static const struct TrainerMon sParty_GruntMagmaHideout15[] = { - { - .lvl = 29, - .species = SPECIES_NUMEL, - } -}; - -static const struct TrainerMon sParty_GruntMagmaHideout16[] = { - { - .lvl = 29, - .species = SPECIES_BALTOY, - } -}; - -static const struct TrainerMon sParty_TabithaMagmaHideout[] = { - { - .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), - .lvl = 26, - .species = SPECIES_NUMEL, - }, - { - .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), - .lvl = 28, - .species = SPECIES_MIGHTYENA, - }, - { - .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), - .lvl = 30, - .species = SPECIES_ZUBAT, - }, - { - .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), - .lvl = 33, - .species = SPECIES_CAMERUPT, - } -}; - -static const struct TrainerMon sParty_Darcy[] = { - { - .lvl = 33, - .species = SPECIES_PELIPPER, - }, - { - .lvl = 33, - .species = SPECIES_CAMERUPT, - } -}; - -static const struct TrainerMon sParty_MaxieMossdeep[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 42, - .species = SPECIES_MIGHTYENA, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 43, - .species = SPECIES_CROBAT, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 44, - .species = SPECIES_CAMERUPT, - } -}; - -static const struct TrainerMon sParty_Pete[] = { - { - .lvl = 15, - .species = SPECIES_TENTACOOL, - } -}; - -static const struct TrainerMon sParty_Isabelle[] = { - { - .lvl = 15, - .species = SPECIES_MARILL, - } -}; - -static const struct TrainerMon sParty_Andres1[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 25, - .species = SPECIES_SANDSHREW, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 25, - .species = SPECIES_SANDSHREW, - } -}; - -static const struct TrainerMon sParty_Josue[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 25, - .species = SPECIES_TAILLOW, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 25, - .species = SPECIES_WINGULL, - } -}; - -static const struct TrainerMon sParty_Camron[] = { - { - .lvl = 26, - .species = SPECIES_STARYU, - } -}; - -static const struct TrainerMon sParty_Cory1[] = { - { - .lvl = 24, - .species = SPECIES_WINGULL, - }, - { - .lvl = 24, - .species = SPECIES_MACHOP, - }, - { - .lvl = 24, - .species = SPECIES_TENTACOOL, - } -}; - -static const struct TrainerMon sParty_Carolina[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 24, - .species = SPECIES_MANECTRIC, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 24, - .species = SPECIES_SWELLOW, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 24, - .species = SPECIES_MANECTRIC, - } -}; - -static const struct TrainerMon sParty_Elijah[] = { - { - .lvl = 25, - .species = SPECIES_SKARMORY, - }, - { - .lvl = 25, - .species = SPECIES_SKARMORY, - } -}; - -static const struct TrainerMon sParty_Celia[] = { - { - .lvl = 22, - .species = SPECIES_MARILL, - }, - { - .lvl = 22, - .species = SPECIES_LOMBRE, - } -}; - -static const struct TrainerMon sParty_Bryan[] = { - { - .lvl = 22, - .species = SPECIES_SANDSHREW, - }, - { - .lvl = 22, - .species = SPECIES_SANDSLASH, - } -}; - -static const struct TrainerMon sParty_Branden[] = { - { - .lvl = 22, - .species = SPECIES_TAILLOW, - }, - { - .lvl = 22, - .species = SPECIES_NUZLEAF, - } -}; - -static const struct TrainerMon sParty_Bryant[] = { - { - .lvl = 18, - .species = SPECIES_NUMEL, - }, - { - .lvl = 18, - .species = SPECIES_SLUGMA, - } -}; - -static const struct TrainerMon sParty_Shayla[] = { - { - .lvl = 18, - .species = SPECIES_SHROOMISH, - }, - { - .lvl = 18, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Kyra[] = { - { - .lvl = 26, - .species = SPECIES_DODUO, - }, - { - .lvl = 26, - .species = SPECIES_DODRIO, - } -}; - -static const struct TrainerMon sParty_Jaiden[] = { - { - .lvl = 26, - .species = SPECIES_NINJASK, - }, - { - .lvl = 26, - .species = SPECIES_GULPIN, - } -}; - -static const struct TrainerMon sParty_Alix[] = { - { - .lvl = 26, - .species = SPECIES_KADABRA, - }, - { - .lvl = 26, - .species = SPECIES_KIRLIA, - } -}; - -static const struct TrainerMon sParty_Helene[] = { - { - .lvl = 26, - .species = SPECIES_MEDITITE, - }, - { - .lvl = 26, - .species = SPECIES_MAKUHITA, - } -}; - -static const struct TrainerMon sParty_Marlene[] = { - { - .lvl = 18, - .species = SPECIES_MEDITITE, - }, - { - .lvl = 18, - .species = SPECIES_SPOINK, - } -}; - -static const struct TrainerMon sParty_Devan[] = { - { - .lvl = 8, - .species = SPECIES_GEODUDE, - }, - { - .lvl = 8, - .species = SPECIES_GEODUDE, - } -}; - -static const struct TrainerMon sParty_Johnson[] = { - { - .lvl = 8, - .species = SPECIES_SHROOMISH, - }, - { - .lvl = 8, - .species = SPECIES_LOTAD, - } -}; - -static const struct TrainerMon sParty_Melina[] = { - { - .lvl = 17, - .species = SPECIES_DODUO, - } -}; - -static const struct TrainerMon sParty_Brandi[] = { - { - .lvl = 17, - .species = SPECIES_RALTS, - } -}; - -static const struct TrainerMon sParty_Aisha[] = { - { - .lvl = 17, - .species = SPECIES_MEDITITE, - } -}; - -static const struct TrainerMon sParty_Makayla[] = { - { - .lvl = 33, - .species = SPECIES_ROSELIA, - }, - { - .lvl = 33, - .species = SPECIES_MEDICHAM, - } -}; - -static const struct TrainerMon sParty_Fabian[] = { - { - .lvl = 26, - .species = SPECIES_MANECTRIC, - } -}; - -static const struct TrainerMon sParty_Dayton[] = { - { - .lvl = 25, - .species = SPECIES_SLUGMA, - }, - { - .lvl = 25, - .species = SPECIES_NUMEL, - } -}; - -static const struct TrainerMon sParty_Rachel[] = { - { - .lvl = 26, - .species = SPECIES_GOLDEEN, - } -}; - -static const struct TrainerMon sParty_Leonel[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 30, - .species = SPECIES_MANECTRIC, - .moves = {MOVE_THUNDER, MOVE_QUICK_ATTACK, MOVE_THUNDER_WAVE, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Callie[] = { - { - .lvl = 28, - .species = SPECIES_MEDITITE, - }, - { - .lvl = 28, - .species = SPECIES_MAKUHITA, - } -}; - -static const struct TrainerMon sParty_Cale[] = { - { - .lvl = 29, - .species = SPECIES_DUSTOX, - }, - { - .lvl = 29, - .species = SPECIES_BEAUTIFLY, - } -}; - -static const struct TrainerMon sParty_Myles[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_MAKUHITA, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_WINGULL, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_TROPIUS, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_ZIGZAGOON, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_ELECTRIKE, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_NUMEL, - } -}; - -static const struct TrainerMon sParty_Pat[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_POOCHYENA, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_SHROOMISH, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_ELECTRIKE, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_MARILL, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_SANDSHREW, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_GULPIN, - } -}; - -static const struct TrainerMon sParty_Cristin1[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_LOUDRED, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_VIGOROTH, - } -}; - -static const struct TrainerMon sParty_MayRustboroTreecko[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 13, - .species = SPECIES_LOTAD, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 15, - .species = SPECIES_TORCHIC, - } -}; - -static const struct TrainerMon sParty_MayRustboroTorchic[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 13, - .species = SPECIES_TORKOAL, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 15, - .species = SPECIES_MUDKIP, - } -}; - -static const struct TrainerMon sParty_Roxanne2[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 32, - .species = SPECIES_GOLEM, - .heldItem = ITEM_NONE, - .moves = {MOVE_PROTECT, MOVE_ROLLOUT, MOVE_MAGNITUDE, MOVE_EXPLOSION} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 35, - .species = SPECIES_KABUTO, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_SWORDS_DANCE, MOVE_ICE_BEAM, MOVE_SURF, MOVE_ROCK_SLIDE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 35, - .species = SPECIES_ONIX, - .heldItem = ITEM_NONE, - .moves = {MOVE_IRON_TAIL, MOVE_EXPLOSION, MOVE_ROAR, MOVE_ROCK_SLIDE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 37, - .species = SPECIES_NOSEPASS, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_DOUBLE_TEAM, MOVE_EXPLOSION, MOVE_PROTECT, MOVE_ROCK_SLIDE} - } -}; - -static const struct TrainerMon sParty_Roxanne3[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 37, - .species = SPECIES_OMANYTE, - .heldItem = ITEM_NONE, - .moves = {MOVE_PROTECT, MOVE_ICE_BEAM, MOVE_ROCK_SLIDE, MOVE_SURF} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 37, - .species = SPECIES_GOLEM, - .heldItem = ITEM_NONE, - .moves = {MOVE_PROTECT, MOVE_ROLLOUT, MOVE_MAGNITUDE, MOVE_EXPLOSION} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 40, - .species = SPECIES_KABUTOPS, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_SWORDS_DANCE, MOVE_ICE_BEAM, MOVE_SURF, MOVE_ROCK_SLIDE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 40, - .species = SPECIES_ONIX, - .heldItem = ITEM_NONE, - .moves = {MOVE_IRON_TAIL, MOVE_EXPLOSION, MOVE_ROAR, MOVE_ROCK_SLIDE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 42, - .species = SPECIES_NOSEPASS, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_DOUBLE_TEAM, MOVE_EXPLOSION, MOVE_PROTECT, MOVE_ROCK_SLIDE} - } -}; - -static const struct TrainerMon sParty_Roxanne4[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 42, - .species = SPECIES_OMASTAR, - .heldItem = ITEM_NONE, - .moves = {MOVE_PROTECT, MOVE_ICE_BEAM, MOVE_ROCK_SLIDE, MOVE_SURF} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 42, - .species = SPECIES_GOLEM, - .heldItem = ITEM_NONE, - .moves = {MOVE_PROTECT, MOVE_ROLLOUT, MOVE_EARTHQUAKE, MOVE_EXPLOSION} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 45, - .species = SPECIES_KABUTOPS, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_SWORDS_DANCE, MOVE_ICE_BEAM, MOVE_SURF, MOVE_ROCK_SLIDE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 45, - .species = SPECIES_ONIX, - .heldItem = ITEM_NONE, - .moves = {MOVE_IRON_TAIL, MOVE_EXPLOSION, MOVE_ROAR, MOVE_ROCK_SLIDE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 47, - .species = SPECIES_NOSEPASS, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_DOUBLE_TEAM, MOVE_EXPLOSION, MOVE_PROTECT, MOVE_ROCK_SLIDE} - } -}; - -static const struct TrainerMon sParty_Roxanne5[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 47, - .species = SPECIES_AERODACTYL, - .heldItem = ITEM_NONE, - .moves = {MOVE_ROCK_SLIDE, MOVE_HYPER_BEAM, MOVE_SUPERSONIC, MOVE_PROTECT} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 47, - .species = SPECIES_GOLEM, - .heldItem = ITEM_NONE, - .moves = {MOVE_FOCUS_PUNCH, MOVE_ROLLOUT, MOVE_EARTHQUAKE, MOVE_EXPLOSION} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 47, - .species = SPECIES_OMASTAR, - .heldItem = ITEM_NONE, - .moves = {MOVE_PROTECT, MOVE_ICE_BEAM, MOVE_ROCK_SLIDE, MOVE_SURF} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 50, - .species = SPECIES_KABUTOPS, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_SWORDS_DANCE, MOVE_ICE_BEAM, MOVE_SURF, MOVE_ROCK_SLIDE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 50, - .species = SPECIES_STEELIX, - .heldItem = ITEM_NONE, - .moves = {MOVE_IRON_TAIL, MOVE_EXPLOSION, MOVE_ROAR, MOVE_ROCK_SLIDE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 52, - .species = SPECIES_NOSEPASS, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_DOUBLE_TEAM, MOVE_EXPLOSION, MOVE_PROTECT, MOVE_ROCK_SLIDE} - } -}; - -static const struct TrainerMon sParty_Brawly2[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 33, - .species = SPECIES_MACHAMP, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_KARATE_CHOP, MOVE_ROCK_SLIDE, MOVE_FOCUS_PUNCH, MOVE_BULK_UP} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 33, - .species = SPECIES_MEDITITE, - .heldItem = ITEM_NONE, - .moves = {MOVE_PSYCHIC, MOVE_LIGHT_SCREEN, MOVE_REFLECT, MOVE_FOCUS_PUNCH} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 35, - .species = SPECIES_HITMONTOP, - .heldItem = ITEM_NONE, - .moves = {MOVE_PURSUIT, MOVE_COUNTER, MOVE_PROTECT, MOVE_TRIPLE_KICK} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 37, - .species = SPECIES_HARIYAMA, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_FAKE_OUT, MOVE_FOCUS_PUNCH, MOVE_BELLY_DRUM, MOVE_EARTHQUAKE} - } -}; - -static const struct TrainerMon sParty_Brawly3[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 38, - .species = SPECIES_MACHAMP, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_KARATE_CHOP, MOVE_ROCK_SLIDE, MOVE_FOCUS_PUNCH, MOVE_BULK_UP} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 38, - .species = SPECIES_MEDICHAM, - .heldItem = ITEM_NONE, - .moves = {MOVE_PSYCHIC, MOVE_LIGHT_SCREEN, MOVE_REFLECT, MOVE_FOCUS_PUNCH} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 40, - .species = SPECIES_HITMONTOP, - .heldItem = ITEM_NONE, - .moves = {MOVE_PURSUIT, MOVE_COUNTER, MOVE_PROTECT, MOVE_TRIPLE_KICK} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 42, - .species = SPECIES_HARIYAMA, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_FAKE_OUT, MOVE_FOCUS_PUNCH, MOVE_BELLY_DRUM, MOVE_EARTHQUAKE} - } -}; - -static const struct TrainerMon sParty_Brawly4[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 40, - .species = SPECIES_HITMONCHAN, - .heldItem = ITEM_NONE, - .moves = {MOVE_SKY_UPPERCUT, MOVE_PROTECT, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 43, - .species = SPECIES_MACHAMP, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_KARATE_CHOP, MOVE_ROCK_SLIDE, MOVE_FOCUS_PUNCH, MOVE_BULK_UP} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 43, - .species = SPECIES_MEDICHAM, - .heldItem = ITEM_NONE, - .moves = {MOVE_FOCUS_PUNCH, MOVE_LIGHT_SCREEN, MOVE_REFLECT, MOVE_PSYCHIC} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 45, - .species = SPECIES_HITMONTOP, - .heldItem = ITEM_NONE, - .moves = {MOVE_PURSUIT, MOVE_COUNTER, MOVE_PROTECT, MOVE_TRIPLE_KICK} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 47, - .species = SPECIES_HARIYAMA, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_FAKE_OUT, MOVE_FOCUS_PUNCH, MOVE_BELLY_DRUM, MOVE_EARTHQUAKE} - } -}; - -static const struct TrainerMon sParty_Brawly5[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 46, - .species = SPECIES_HITMONLEE, - .heldItem = ITEM_NONE, - .moves = {MOVE_MEGA_KICK, MOVE_FOCUS_PUNCH, MOVE_EARTHQUAKE, MOVE_BULK_UP} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 46, - .species = SPECIES_HITMONCHAN, - .heldItem = ITEM_NONE, - .moves = {MOVE_SKY_UPPERCUT, MOVE_PROTECT, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 48, - .species = SPECIES_MACHAMP, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_CROSS_CHOP, MOVE_ROCK_SLIDE, MOVE_FOCUS_PUNCH, MOVE_BULK_UP} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 48, - .species = SPECIES_MEDICHAM, - .heldItem = ITEM_NONE, - .moves = {MOVE_FOCUS_PUNCH, MOVE_LIGHT_SCREEN, MOVE_REFLECT, MOVE_PSYCHIC} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 50, - .species = SPECIES_HITMONTOP, - .heldItem = ITEM_NONE, - .moves = {MOVE_PURSUIT, MOVE_COUNTER, MOVE_PROTECT, MOVE_TRIPLE_KICK} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 52, - .species = SPECIES_HARIYAMA, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_FAKE_OUT, MOVE_FOCUS_PUNCH, MOVE_BELLY_DRUM, MOVE_EARTHQUAKE} - } -}; - -static const struct TrainerMon sParty_Wattson2[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 36, - .species = SPECIES_MAREEP, - .heldItem = ITEM_NONE, - .moves = {MOVE_THUNDER, MOVE_PROTECT, MOVE_THUNDER_WAVE, MOVE_LIGHT_SCREEN} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 36, - .species = SPECIES_ELECTRODE, - .heldItem = ITEM_NONE, - .moves = {MOVE_ROLLOUT, MOVE_THUNDER, MOVE_EXPLOSION, MOVE_RAIN_DANCE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 38, - .species = SPECIES_MAGNETON, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_THUNDER, MOVE_RAIN_DANCE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 40, - .species = SPECIES_MANECTRIC, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_BITE, MOVE_THUNDER_WAVE, MOVE_THUNDER, MOVE_PROTECT} - } -}; - -static const struct TrainerMon sParty_Wattson3[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 39, - .species = SPECIES_PIKACHU, - .heldItem = ITEM_NONE, - .moves = {MOVE_THUNDER, MOVE_SLAM, MOVE_RAIN_DANCE, MOVE_SHOCK_WAVE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 41, - .species = SPECIES_FLAAFFY, - .heldItem = ITEM_NONE, - .moves = {MOVE_THUNDER, MOVE_PROTECT, MOVE_THUNDER_WAVE, MOVE_LIGHT_SCREEN} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 41, - .species = SPECIES_ELECTRODE, - .heldItem = ITEM_NONE, - .moves = {MOVE_ROLLOUT, MOVE_THUNDER, MOVE_EXPLOSION, MOVE_RAIN_DANCE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 43, - .species = SPECIES_MAGNETON, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_THUNDER, MOVE_RAIN_DANCE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 45, - .species = SPECIES_MANECTRIC, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_BITE, MOVE_THUNDER_WAVE, MOVE_THUNDER, MOVE_PROTECT} - } -}; - -static const struct TrainerMon sParty_Wattson4[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 44, - .species = SPECIES_RAICHU, - .heldItem = ITEM_NONE, - .moves = {MOVE_THUNDER, MOVE_SLAM, MOVE_RAIN_DANCE, MOVE_PROTECT} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 46, - .species = SPECIES_AMPHAROS, - .heldItem = ITEM_NONE, - .moves = {MOVE_THUNDER, MOVE_PROTECT, MOVE_THUNDER_WAVE, MOVE_LIGHT_SCREEN} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 46, - .species = SPECIES_ELECTRODE, - .heldItem = ITEM_NONE, - .moves = {MOVE_ROLLOUT, MOVE_THUNDER, MOVE_EXPLOSION, MOVE_RAIN_DANCE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 48, - .species = SPECIES_MAGNETON, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_THUNDER, MOVE_RAIN_DANCE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 50, - .species = SPECIES_MANECTRIC, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_BITE, MOVE_THUNDER_WAVE, MOVE_THUNDER, MOVE_PROTECT} - } -}; - -static const struct TrainerMon sParty_Wattson5[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 50, - .species = SPECIES_ELECTABUZZ, - .heldItem = ITEM_NONE, - .moves = {MOVE_SWIFT, MOVE_FOCUS_PUNCH, MOVE_THUNDER_PUNCH, MOVE_LIGHT_SCREEN} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 51, - .species = SPECIES_RAICHU, - .heldItem = ITEM_NONE, - .moves = {MOVE_THUNDER, MOVE_SLAM, MOVE_RAIN_DANCE, MOVE_PROTECT} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 51, - .species = SPECIES_AMPHAROS, - .heldItem = ITEM_NONE, - .moves = {MOVE_THUNDER, MOVE_PROTECT, MOVE_THUNDER_WAVE, MOVE_LIGHT_SCREEN} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 53, - .species = SPECIES_ELECTRODE, - .heldItem = ITEM_NONE, - .moves = {MOVE_ROLLOUT, MOVE_THUNDER, MOVE_EXPLOSION, MOVE_RAIN_DANCE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 53, - .species = SPECIES_MAGNETON, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_THUNDER, MOVE_RAIN_DANCE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 55, - .species = SPECIES_MANECTRIC, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_BITE, MOVE_THUNDER_WAVE, MOVE_THUNDER, MOVE_PROTECT} - } -}; - -static const struct TrainerMon sParty_Flannery2[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 38, - .species = SPECIES_MAGCARGO, - .heldItem = ITEM_WHITE_HERB, - .moves = {MOVE_OVERHEAT, MOVE_ATTRACT, MOVE_LIGHT_SCREEN, MOVE_ROCK_SLIDE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 36, - .species = SPECIES_PONYTA, - .heldItem = ITEM_NONE, - .moves = {MOVE_FLAMETHROWER, MOVE_ATTRACT, MOVE_SOLAR_BEAM, MOVE_BOUNCE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 38, - .species = SPECIES_CAMERUPT, - .heldItem = ITEM_WHITE_HERB, - .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_EARTHQUAKE, MOVE_ATTRACT} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 40, - .species = SPECIES_TORKOAL, - .heldItem = ITEM_WHITE_HERB, - .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_EXPLOSION, MOVE_ATTRACT} - } -}; - -static const struct TrainerMon sParty_Flannery3[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 41, - .species = SPECIES_GROWLITHE, - .heldItem = ITEM_NONE, - .moves = {MOVE_HELPING_HAND, MOVE_FLAMETHROWER, MOVE_ROAR, MOVE_SUNNY_DAY} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 43, - .species = SPECIES_MAGCARGO, - .heldItem = ITEM_WHITE_HERB, - .moves = {MOVE_OVERHEAT, MOVE_ATTRACT, MOVE_LIGHT_SCREEN, MOVE_ROCK_SLIDE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 41, - .species = SPECIES_PONYTA, - .heldItem = ITEM_NONE, - .moves = {MOVE_FLAMETHROWER, MOVE_ATTRACT, MOVE_SOLAR_BEAM, MOVE_BOUNCE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 43, - .species = SPECIES_CAMERUPT, - .heldItem = ITEM_WHITE_HERB, - .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_EARTHQUAKE, MOVE_ATTRACT} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 45, - .species = SPECIES_TORKOAL, - .heldItem = ITEM_WHITE_HERB, - .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_EXPLOSION, MOVE_ATTRACT} - } -}; - -static const struct TrainerMon sParty_Flannery4[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 46, - .species = SPECIES_HOUNDOUR, - .heldItem = ITEM_NONE, - .moves = {MOVE_ROAR, MOVE_SOLAR_BEAM, MOVE_TAUNT, MOVE_SUNNY_DAY} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 46, - .species = SPECIES_GROWLITHE, - .heldItem = ITEM_NONE, - .moves = {MOVE_HELPING_HAND, MOVE_FLAMETHROWER, MOVE_SUNNY_DAY, MOVE_ROAR} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 48, - .species = SPECIES_MAGCARGO, - .heldItem = ITEM_WHITE_HERB, - .moves = {MOVE_OVERHEAT, MOVE_ATTRACT, MOVE_LIGHT_SCREEN, MOVE_ROCK_SLIDE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 46, - .species = SPECIES_RAPIDASH, - .heldItem = ITEM_NONE, - .moves = {MOVE_FLAMETHROWER, MOVE_ATTRACT, MOVE_SOLAR_BEAM, MOVE_BOUNCE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 48, - .species = SPECIES_CAMERUPT, - .heldItem = ITEM_WHITE_HERB, - .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_EARTHQUAKE, MOVE_ATTRACT} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 50, - .species = SPECIES_TORKOAL, - .heldItem = ITEM_WHITE_HERB, - .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_EXPLOSION, MOVE_ATTRACT} - } -}; - -static const struct TrainerMon sParty_Flannery5[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 51, - .species = SPECIES_ARCANINE, - .heldItem = ITEM_NONE, - .moves = {MOVE_HELPING_HAND, MOVE_FLAMETHROWER, MOVE_SUNNY_DAY, MOVE_ROAR} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 53, - .species = SPECIES_MAGCARGO, - .heldItem = ITEM_WHITE_HERB, - .moves = {MOVE_OVERHEAT, MOVE_ATTRACT, MOVE_LIGHT_SCREEN, MOVE_ROCK_SLIDE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 51, - .species = SPECIES_HOUNDOOM, - .heldItem = ITEM_NONE, - .moves = {MOVE_ROAR, MOVE_SOLAR_BEAM, MOVE_TAUNT, MOVE_SUNNY_DAY} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 51, - .species = SPECIES_RAPIDASH, - .heldItem = ITEM_NONE, - .moves = {MOVE_FLAMETHROWER, MOVE_ATTRACT, MOVE_SOLAR_BEAM, MOVE_BOUNCE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 53, - .species = SPECIES_CAMERUPT, - .heldItem = ITEM_WHITE_HERB, - .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_EARTHQUAKE, MOVE_ATTRACT} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 55, - .species = SPECIES_TORKOAL, - .heldItem = ITEM_WHITE_HERB, - .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_EXPLOSION, MOVE_ATTRACT} - } -}; - -static const struct TrainerMon sParty_Norman2[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 42, - .species = SPECIES_CHANSEY, - .heldItem = ITEM_NONE, - .moves = {MOVE_LIGHT_SCREEN, MOVE_SING, MOVE_SKILL_SWAP, MOVE_FOCUS_PUNCH} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 42, - .species = SPECIES_SLAKING, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_BLIZZARD, MOVE_SHADOW_BALL, MOVE_DOUBLE_EDGE, MOVE_FIRE_BLAST} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 43, - .species = SPECIES_SPINDA, - .heldItem = ITEM_NONE, - .moves = {MOVE_TEETER_DANCE, MOVE_SKILL_SWAP, MOVE_FACADE, MOVE_HYPNOSIS} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 45, - .species = SPECIES_SLAKING, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_HYPER_BEAM, MOVE_FLAMETHROWER, MOVE_THUNDERBOLT, MOVE_SHADOW_BALL} - } -}; - -static const struct TrainerMon sParty_Norman3[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 47, - .species = SPECIES_SLAKING, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_BLIZZARD, MOVE_SHADOW_BALL, MOVE_DOUBLE_EDGE, MOVE_FIRE_BLAST} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 47, - .species = SPECIES_CHANSEY, - .heldItem = ITEM_NONE, - .moves = {MOVE_LIGHT_SCREEN, MOVE_SING, MOVE_SKILL_SWAP, MOVE_FOCUS_PUNCH} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 45, - .species = SPECIES_KANGASKHAN, - .heldItem = ITEM_NONE, - .moves = {MOVE_FAKE_OUT, MOVE_DIZZY_PUNCH, MOVE_ENDURE, MOVE_REVERSAL} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 48, - .species = SPECIES_SPINDA, - .heldItem = ITEM_NONE, - .moves = {MOVE_TEETER_DANCE, MOVE_SKILL_SWAP, MOVE_FACADE, MOVE_HYPNOSIS} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 50, - .species = SPECIES_SLAKING, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_HYPER_BEAM, MOVE_FLAMETHROWER, MOVE_THUNDERBOLT, MOVE_SHADOW_BALL} - } -}; - -static const struct TrainerMon sParty_Norman4[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 52, - .species = SPECIES_SLAKING, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_BLIZZARD, MOVE_SHADOW_BALL, MOVE_DOUBLE_EDGE, MOVE_FIRE_BLAST} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 52, - .species = SPECIES_BLISSEY, - .heldItem = ITEM_NONE, - .moves = {MOVE_LIGHT_SCREEN, MOVE_SING, MOVE_SKILL_SWAP, MOVE_FOCUS_PUNCH} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 50, - .species = SPECIES_KANGASKHAN, - .heldItem = ITEM_NONE, - .moves = {MOVE_FAKE_OUT, MOVE_DIZZY_PUNCH, MOVE_ENDURE, MOVE_REVERSAL} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 53, - .species = SPECIES_SPINDA, - .heldItem = ITEM_NONE, - .moves = {MOVE_TEETER_DANCE, MOVE_SKILL_SWAP, MOVE_FACADE, MOVE_HYPNOSIS} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 55, - .species = SPECIES_SLAKING, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_HYPER_BEAM, MOVE_FLAMETHROWER, MOVE_THUNDERBOLT, MOVE_SHADOW_BALL} - } -}; - -static const struct TrainerMon sParty_Norman5[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 57, - .species = SPECIES_SLAKING, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_BLIZZARD, MOVE_SHADOW_BALL, MOVE_DOUBLE_EDGE, MOVE_FIRE_BLAST} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 57, - .species = SPECIES_BLISSEY, - .heldItem = ITEM_NONE, - .moves = {MOVE_PROTECT, MOVE_SING, MOVE_SKILL_SWAP, MOVE_FOCUS_PUNCH} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 55, - .species = SPECIES_KANGASKHAN, - .heldItem = ITEM_NONE, - .moves = {MOVE_FAKE_OUT, MOVE_DIZZY_PUNCH, MOVE_ENDURE, MOVE_REVERSAL} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 57, - .species = SPECIES_TAUROS, - .heldItem = ITEM_NONE, - .moves = {MOVE_TAKE_DOWN, MOVE_PROTECT, MOVE_FIRE_BLAST, MOVE_EARTHQUAKE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 58, - .species = SPECIES_SPINDA, - .heldItem = ITEM_NONE, - .moves = {MOVE_TEETER_DANCE, MOVE_SKILL_SWAP, MOVE_FACADE, MOVE_HYPNOSIS} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 60, - .species = SPECIES_SLAKING, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_HYPER_BEAM, MOVE_FLAMETHROWER, MOVE_THUNDERBOLT, MOVE_SHADOW_BALL} - } -}; - -static const struct TrainerMon sParty_Winona2[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 40, - .species = SPECIES_DRATINI, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_THUNDER_WAVE, MOVE_THUNDERBOLT, MOVE_PROTECT, MOVE_ICE_BEAM} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 38, - .species = SPECIES_TROPIUS, - .heldItem = ITEM_NONE, - .moves = {MOVE_SUNNY_DAY, MOVE_AERIAL_ACE, MOVE_SOLAR_BEAM, MOVE_EARTHQUAKE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 41, - .species = SPECIES_PELIPPER, - .heldItem = ITEM_NONE, - .moves = {MOVE_SURF, MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_AERIAL_ACE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 43, - .species = SPECIES_SKARMORY, - .heldItem = ITEM_NONE, - .moves = {MOVE_WHIRLWIND, MOVE_SPIKES, MOVE_STEEL_WING, MOVE_AERIAL_ACE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 45, - .species = SPECIES_ALTARIA, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_AERIAL_ACE, MOVE_REST, MOVE_DRAGON_DANCE, MOVE_EARTHQUAKE} - } -}; - -static const struct TrainerMon sParty_Winona3[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 43, - .species = SPECIES_HOOTHOOT, - .heldItem = ITEM_NONE, - .moves = {MOVE_HYPNOSIS, MOVE_PSYCHIC, MOVE_REFLECT, MOVE_DREAM_EATER} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 43, - .species = SPECIES_TROPIUS, - .heldItem = ITEM_NONE, - .moves = {MOVE_SUNNY_DAY, MOVE_AERIAL_ACE, MOVE_SOLAR_BEAM, MOVE_EARTHQUAKE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 45, - .species = SPECIES_DRAGONAIR, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_THUNDER_WAVE, MOVE_THUNDERBOLT, MOVE_PROTECT, MOVE_ICE_BEAM} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 46, - .species = SPECIES_PELIPPER, - .heldItem = ITEM_NONE, - .moves = {MOVE_SURF, MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_AERIAL_ACE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 48, - .species = SPECIES_SKARMORY, - .heldItem = ITEM_NONE, - .moves = {MOVE_WHIRLWIND, MOVE_SPIKES, MOVE_STEEL_WING, MOVE_AERIAL_ACE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 50, - .species = SPECIES_ALTARIA, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_AERIAL_ACE, MOVE_REST, MOVE_DRAGON_DANCE, MOVE_EARTHQUAKE} - } -}; - -static const struct TrainerMon sParty_Winona4[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 48, - .species = SPECIES_NOCTOWL, - .heldItem = ITEM_NONE, - .moves = {MOVE_HYPNOSIS, MOVE_PSYCHIC, MOVE_REFLECT, MOVE_DREAM_EATER} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 49, - .species = SPECIES_TROPIUS, - .heldItem = ITEM_NONE, - .moves = {MOVE_SUNNY_DAY, MOVE_AERIAL_ACE, MOVE_SOLAR_BEAM, MOVE_EARTHQUAKE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 50, - .species = SPECIES_DRAGONAIR, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_THUNDER_WAVE, MOVE_THUNDERBOLT, MOVE_PROTECT, MOVE_ICE_BEAM} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 51, - .species = SPECIES_PELIPPER, - .heldItem = ITEM_NONE, - .moves = {MOVE_SURF, MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_AERIAL_ACE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 53, - .species = SPECIES_SKARMORY, - .heldItem = ITEM_NONE, - .moves = {MOVE_WHIRLWIND, MOVE_SPIKES, MOVE_STEEL_WING, MOVE_AERIAL_ACE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 55, - .species = SPECIES_ALTARIA, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_AERIAL_ACE, MOVE_REST, MOVE_DRAGON_DANCE, MOVE_EARTHQUAKE} - } -}; - -static const struct TrainerMon sParty_Winona5[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 53, - .species = SPECIES_NOCTOWL, - .heldItem = ITEM_NONE, - .moves = {MOVE_HYPNOSIS, MOVE_PSYCHIC, MOVE_REFLECT, MOVE_DREAM_EATER} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 54, - .species = SPECIES_TROPIUS, - .heldItem = ITEM_NONE, - .moves = {MOVE_SUNNY_DAY, MOVE_AERIAL_ACE, MOVE_SOLAR_BEAM, MOVE_EARTHQUAKE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 55, - .species = SPECIES_PELIPPER, - .heldItem = ITEM_NONE, - .moves = {MOVE_SURF, MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_AERIAL_ACE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 55, - .species = SPECIES_DRAGONITE, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_HYPER_BEAM, MOVE_THUNDERBOLT, MOVE_EARTHQUAKE, MOVE_ICE_BEAM} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 58, - .species = SPECIES_SKARMORY, - .heldItem = ITEM_NONE, - .moves = {MOVE_WHIRLWIND, MOVE_SPIKES, MOVE_STEEL_WING, MOVE_AERIAL_ACE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 60, - .species = SPECIES_ALTARIA, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_SKY_ATTACK, MOVE_REST, MOVE_DRAGON_DANCE, MOVE_EARTHQUAKE} - } -}; - -static const struct TrainerMon sParty_TateAndLiza2[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 48, - .species = SPECIES_SLOWPOKE, - .heldItem = ITEM_NONE, - .moves = {MOVE_YAWN, MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_PROTECT} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 49, - .species = SPECIES_CLAYDOL, - .heldItem = ITEM_NONE, - .moves = {MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_PSYCHIC, MOVE_LIGHT_SCREEN} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 49, - .species = SPECIES_XATU, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_PSYCHIC, MOVE_REST, MOVE_CONFUSE_RAY, MOVE_CALM_MIND} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 50, - .species = SPECIES_LUNATONE, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_EARTHQUAKE, MOVE_PSYCHIC, MOVE_REST, MOVE_CALM_MIND} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 50, - .species = SPECIES_SOLROCK, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_PSYCHIC, MOVE_FLAMETHROWER} - } -}; - -static const struct TrainerMon sParty_TateAndLiza3[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 53, - .species = SPECIES_DROWZEE, - .heldItem = ITEM_NONE, - .moves = {MOVE_HYPNOSIS, MOVE_DREAM_EATER, MOVE_HEADBUTT, MOVE_PROTECT} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 53, - .species = SPECIES_SLOWPOKE, - .heldItem = ITEM_NONE, - .moves = {MOVE_YAWN, MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_PROTECT} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 54, - .species = SPECIES_CLAYDOL, - .heldItem = ITEM_NONE, - .moves = {MOVE_EARTHQUAKE, MOVE_EXPLOSION, MOVE_PSYCHIC, MOVE_LIGHT_SCREEN} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 54, - .species = SPECIES_XATU, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_PSYCHIC, MOVE_REST, MOVE_CONFUSE_RAY, MOVE_CALM_MIND} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 55, - .species = SPECIES_LUNATONE, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_EARTHQUAKE, MOVE_PSYCHIC, MOVE_REST, MOVE_CALM_MIND} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 55, - .species = SPECIES_SOLROCK, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_PSYCHIC, MOVE_FLAMETHROWER} - } -}; - -static const struct TrainerMon sParty_TateAndLiza4[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 58, - .species = SPECIES_HYPNO, - .heldItem = ITEM_NONE, - .moves = {MOVE_HYPNOSIS, MOVE_DREAM_EATER, MOVE_HEADBUTT, MOVE_PROTECT} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 59, - .species = SPECIES_CLAYDOL, - .heldItem = ITEM_NONE, - .moves = {MOVE_EARTHQUAKE, MOVE_EXPLOSION, MOVE_PSYCHIC, MOVE_LIGHT_SCREEN} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 58, - .species = SPECIES_SLOWPOKE, - .heldItem = ITEM_NONE, - .moves = {MOVE_YAWN, MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_PROTECT} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 59, - .species = SPECIES_XATU, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_PSYCHIC, MOVE_REST, MOVE_CONFUSE_RAY, MOVE_CALM_MIND} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 60, - .species = SPECIES_LUNATONE, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_EARTHQUAKE, MOVE_PSYCHIC, MOVE_REST, MOVE_CALM_MIND} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 60, - .species = SPECIES_SOLROCK, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_PSYCHIC, MOVE_FLAMETHROWER} - } -}; - -static const struct TrainerMon sParty_TateAndLiza5[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 63, - .species = SPECIES_HYPNO, - .heldItem = ITEM_NONE, - .moves = {MOVE_HYPNOSIS, MOVE_DREAM_EATER, MOVE_HEADBUTT, MOVE_PROTECT} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 64, - .species = SPECIES_CLAYDOL, - .heldItem = ITEM_NONE, - .moves = {MOVE_EARTHQUAKE, MOVE_EXPLOSION, MOVE_PSYCHIC, MOVE_LIGHT_SCREEN} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 63, - .species = SPECIES_SLOWKING, - .heldItem = ITEM_NONE, - .moves = {MOVE_YAWN, MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_PROTECT} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 64, - .species = SPECIES_XATU, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_PSYCHIC, MOVE_REST, MOVE_CONFUSE_RAY, MOVE_CALM_MIND} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 65, - .species = SPECIES_LUNATONE, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_EARTHQUAKE, MOVE_PSYCHIC, MOVE_REST, MOVE_CALM_MIND} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 65, - .species = SPECIES_SOLROCK, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_PSYCHIC, MOVE_FLAMETHROWER} - } -}; - -static const struct TrainerMon sParty_Juan2[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 46, - .species = SPECIES_POLIWAG, - .heldItem = ITEM_NONE, - .moves = {MOVE_HYPNOSIS, MOVE_RAIN_DANCE, MOVE_PROTECT, MOVE_HYDRO_PUMP} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 46, - .species = SPECIES_WHISCASH, - .heldItem = ITEM_NONE, - .moves = {MOVE_RAIN_DANCE, MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_FISSURE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 48, - .species = SPECIES_WALREIN, - .heldItem = ITEM_NONE, - .moves = {MOVE_WATER_PULSE, MOVE_BODY_SLAM, MOVE_PROTECT, MOVE_ICE_BEAM} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 48, - .species = SPECIES_CRAWDAUNT, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_REST, MOVE_CRABHAMMER, MOVE_TAUNT, MOVE_DOUBLE_TEAM} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 51, - .species = SPECIES_KINGDRA, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_ICE_BEAM, MOVE_REST} - } -}; - -static const struct TrainerMon sParty_Juan3[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 50, - .species = SPECIES_POLIWHIRL, - .heldItem = ITEM_NONE, - .moves = {MOVE_HYPNOSIS, MOVE_RAIN_DANCE, MOVE_PROTECT, MOVE_HYDRO_PUMP} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 51, - .species = SPECIES_WHISCASH, - .heldItem = ITEM_NONE, - .moves = {MOVE_RAIN_DANCE, MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_FISSURE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 53, - .species = SPECIES_WALREIN, - .heldItem = ITEM_NONE, - .moves = {MOVE_WATER_PULSE, MOVE_BODY_SLAM, MOVE_PROTECT, MOVE_ICE_BEAM} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 53, - .species = SPECIES_CRAWDAUNT, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_REST, MOVE_GUILLOTINE, MOVE_TAUNT, MOVE_DOUBLE_TEAM} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 56, - .species = SPECIES_KINGDRA, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_ICE_BEAM, MOVE_REST} - } -}; - -static const struct TrainerMon sParty_Juan4[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 56, - .species = SPECIES_LAPRAS, - .heldItem = ITEM_NONE, - .moves = {MOVE_HYDRO_PUMP, MOVE_PERISH_SONG, MOVE_ICE_BEAM, MOVE_CONFUSE_RAY} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 58, - .species = SPECIES_WHISCASH, - .heldItem = ITEM_NONE, - .moves = {MOVE_RAIN_DANCE, MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_FISSURE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 56, - .species = SPECIES_POLIWHIRL, - .heldItem = ITEM_NONE, - .moves = {MOVE_HYPNOSIS, MOVE_RAIN_DANCE, MOVE_PROTECT, MOVE_HYDRO_PUMP} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 58, - .species = SPECIES_WALREIN, - .heldItem = ITEM_NONE, - .moves = {MOVE_WATER_PULSE, MOVE_BODY_SLAM, MOVE_PROTECT, MOVE_ICE_BEAM} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 58, - .species = SPECIES_CRAWDAUNT, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_REST, MOVE_GUILLOTINE, MOVE_TAUNT, MOVE_DOUBLE_TEAM} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 61, - .species = SPECIES_KINGDRA, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_ICE_BEAM, MOVE_REST} - } -}; - -static const struct TrainerMon sParty_Juan5[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 61, - .species = SPECIES_LAPRAS, - .heldItem = ITEM_NONE, - .moves = {MOVE_HYDRO_PUMP, MOVE_PERISH_SONG, MOVE_ICE_BEAM, MOVE_CONFUSE_RAY} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 63, - .species = SPECIES_WHISCASH, - .heldItem = ITEM_NONE, - .moves = {MOVE_RAIN_DANCE, MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_FISSURE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 61, - .species = SPECIES_POLITOED, - .heldItem = ITEM_NONE, - .moves = {MOVE_HYPNOSIS, MOVE_RAIN_DANCE, MOVE_HYDRO_PUMP, MOVE_PERISH_SONG} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 63, - .species = SPECIES_WALREIN, - .heldItem = ITEM_NONE, - .moves = {MOVE_WATER_PULSE, MOVE_BODY_SLAM, MOVE_PROTECT, MOVE_SHEER_COLD} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 63, - .species = SPECIES_CRAWDAUNT, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_REST, MOVE_GUILLOTINE, MOVE_TAUNT, MOVE_DOUBLE_TEAM} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 66, - .species = SPECIES_KINGDRA, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_ICE_BEAM, MOVE_REST} - } -}; - -static const struct TrainerMon sParty_Angelo[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 17, - .species = SPECIES_ILLUMISE, - .heldItem = ITEM_NONE, - .moves = {MOVE_SHOCK_WAVE, MOVE_QUICK_ATTACK, MOVE_CHARM, MOVE_NONE} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 17, - .species = SPECIES_VOLBEAT, - .heldItem = ITEM_NONE, - .moves = {MOVE_SHOCK_WAVE, MOVE_QUICK_ATTACK, MOVE_CONFUSE_RAY, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Darius[] = { - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 30, - .species = SPECIES_TROPIUS, - } -}; - -static const struct TrainerMon sParty_Steven[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 77, - .species = SPECIES_SKARMORY, - .heldItem = ITEM_NONE, - .moves = {MOVE_TOXIC, MOVE_AERIAL_ACE, MOVE_SPIKES, MOVE_STEEL_WING} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 75, - .species = SPECIES_CLAYDOL, - .heldItem = ITEM_NONE, - .moves = {MOVE_REFLECT, MOVE_LIGHT_SCREEN, MOVE_ANCIENT_POWER, MOVE_EARTHQUAKE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 76, - .species = SPECIES_AGGRON, - .heldItem = ITEM_NONE, - .moves = {MOVE_THUNDER, MOVE_EARTHQUAKE, MOVE_SOLAR_BEAM, MOVE_DRAGON_CLAW} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 76, - .species = SPECIES_CRADILY, - .heldItem = ITEM_NONE, - .moves = {MOVE_GIGA_DRAIN, MOVE_ANCIENT_POWER, MOVE_INGRAIN, MOVE_CONFUSE_RAY} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 76, - .species = SPECIES_ARMALDO, - .heldItem = ITEM_NONE, - .moves = {MOVE_WATER_PULSE, MOVE_ANCIENT_POWER, MOVE_AERIAL_ACE, MOVE_SLASH} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 78, - .species = SPECIES_METAGROSS, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_EARTHQUAKE, MOVE_PSYCHIC, MOVE_METEOR_MASH, MOVE_SHADOW_BALL} - } -}; - -static const struct TrainerMon sParty_Anabel[] = { - { - .lvl = 5, - .species = SPECIES_BELDUM, - } -}; - -static const struct TrainerMon sParty_Tucker[] = { - { - .lvl = 5, - .species = SPECIES_BELDUM, - } -}; - -static const struct TrainerMon sParty_Spenser[] = { - { - .lvl = 5, - .species = SPECIES_BELDUM, - } -}; - -static const struct TrainerMon sParty_Greta[] = { - { - .lvl = 5, - .species = SPECIES_BELDUM, - } -}; - -static const struct TrainerMon sParty_Noland[] = { - { - .lvl = 5, - .species = SPECIES_BELDUM, - } -}; - -static const struct TrainerMon sParty_Lucy[] = { - { - .lvl = 5, - .species = SPECIES_BELDUM, - } -}; - -static const struct TrainerMon sParty_Brandon[] = { - { - .lvl = 5, - .species = SPECIES_BELDUM, - } -}; - -static const struct TrainerMon sParty_Andres2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 31, - .species = SPECIES_SANDSHREW, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 31, - .species = SPECIES_SANDSHREW, - } -}; - -static const struct TrainerMon sParty_Andres3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 33, - .species = SPECIES_NOSEPASS, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 33, - .species = SPECIES_SANDSHREW, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 33, - .species = SPECIES_SANDSHREW, - } -}; - -static const struct TrainerMon sParty_Andres4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 35, - .species = SPECIES_NOSEPASS, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 35, - .species = SPECIES_SANDSHREW, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 35, - .species = SPECIES_SANDSHREW, - } -}; - -static const struct TrainerMon sParty_Andres5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 37, - .species = SPECIES_NOSEPASS, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 37, - .species = SPECIES_SANDSLASH, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 37, - .species = SPECIES_SANDSLASH, - } -}; - -static const struct TrainerMon sParty_Cory2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 30, - .species = SPECIES_WINGULL, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 30, - .species = SPECIES_MACHOP, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 30, - .species = SPECIES_TENTACOOL, - } -}; - -static const struct TrainerMon sParty_Cory3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 32, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 32, - .species = SPECIES_MACHOP, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 32, - .species = SPECIES_TENTACOOL, - } -}; - -static const struct TrainerMon sParty_Cory4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 34, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 34, - .species = SPECIES_MACHOP, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 34, - .species = SPECIES_TENTACRUEL, - } -}; - -static const struct TrainerMon sParty_Cory5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 36, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 36, - .species = SPECIES_MACHOKE, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 36, - .species = SPECIES_TENTACRUEL, - } -}; - -static const struct TrainerMon sParty_Pablo2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 37, - .species = SPECIES_STARYU, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 37, - .species = SPECIES_STARYU, - } -}; - -static const struct TrainerMon sParty_Pablo3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 39, - .species = SPECIES_WINGULL, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 39, - .species = SPECIES_STARYU, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 39, - .species = SPECIES_STARYU, - } -}; - -static const struct TrainerMon sParty_Pablo4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 41, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 41, - .species = SPECIES_STARYU, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 41, - .species = SPECIES_STARYU, - } -}; - -static const struct TrainerMon sParty_Pablo5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 43, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 43, - .species = SPECIES_STARMIE, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 43, - .species = SPECIES_STARMIE, - } -}; - -static const struct TrainerMon sParty_Koji2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 37, - .species = SPECIES_MACHOKE, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 37, - .species = SPECIES_MACHOKE, - } -}; - -static const struct TrainerMon sParty_Koji3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 39, - .species = SPECIES_MAKUHITA, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 39, - .species = SPECIES_MACHOKE, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 39, - .species = SPECIES_MACHOKE, - } -}; - -static const struct TrainerMon sParty_Koji4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 41, - .species = SPECIES_HARIYAMA, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 41, - .species = SPECIES_MACHOKE, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 41, - .species = SPECIES_MACHOKE, - } -}; - -static const struct TrainerMon sParty_Koji5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 43, - .species = SPECIES_HARIYAMA, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 43, - .species = SPECIES_MACHAMP, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 43, - .species = SPECIES_MACHAMP, - } -}; - -static const struct TrainerMon sParty_Cristin2[] = { - { - .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), - .lvl = 35, - .species = SPECIES_LOUDRED, - }, - { - .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), - .lvl = 35, - .species = SPECIES_VIGOROTH, - } -}; - -static const struct TrainerMon sParty_Cristin3[] = { - { - .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), - .lvl = 37, - .species = SPECIES_SPINDA, - }, - { - .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), - .lvl = 37, - .species = SPECIES_LOUDRED, - }, - { - .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), - .lvl = 37, - .species = SPECIES_VIGOROTH, - } -}; - -static const struct TrainerMon sParty_Cristin4[] = { - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 39, - .species = SPECIES_SPINDA, - }, - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 39, - .species = SPECIES_LOUDRED, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 39, - .species = SPECIES_VIGOROTH, - } -}; - -static const struct TrainerMon sParty_Cristin5[] = { - { - .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), - .lvl = 41, - .species = SPECIES_SPINDA, - }, - { - .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), - .lvl = 41, - .species = SPECIES_EXPLOUD, - }, - { - .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), - .lvl = 41, - .species = SPECIES_SLAKING, - } -}; - -static const struct TrainerMon sParty_Fernando2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 35, - .species = SPECIES_ELECTRIKE, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 35, - .species = SPECIES_ELECTRIKE, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 35, - .species = SPECIES_LOUDRED, - } -}; - -static const struct TrainerMon sParty_Fernando3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 37, - .species = SPECIES_ELECTRIKE, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 37, - .species = SPECIES_MANECTRIC, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 37, - .species = SPECIES_LOUDRED, - } -}; - -static const struct TrainerMon sParty_Fernando4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 39, - .species = SPECIES_MANECTRIC, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 39, - .species = SPECIES_MANECTRIC, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 39, - .species = SPECIES_LOUDRED, - } -}; - -static const struct TrainerMon sParty_Fernando5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 41, - .species = SPECIES_MANECTRIC, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 41, - .species = SPECIES_MANECTRIC, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 41, - .species = SPECIES_EXPLOUD, - } -}; - -static const struct TrainerMon sParty_Sawyer2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 26, - .species = SPECIES_GEODUDE, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 26, - .species = SPECIES_NUMEL, - } -}; - -static const struct TrainerMon sParty_Sawyer3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 28, - .species = SPECIES_MACHOP, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 28, - .species = SPECIES_NUMEL, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 28, - .species = SPECIES_GRAVELER, - } -}; - -static const struct TrainerMon sParty_Sawyer4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 30, - .species = SPECIES_MACHOP, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 30, - .species = SPECIES_NUMEL, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 30, - .species = SPECIES_GRAVELER, - } -}; - -static const struct TrainerMon sParty_Sawyer5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 33, - .species = SPECIES_MACHOKE, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 33, - .species = SPECIES_CAMERUPT, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 33, - .species = SPECIES_GOLEM, - } -}; - -static const struct TrainerMon sParty_Gabrielle2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 31, - .species = SPECIES_SKITTY, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 31, - .species = SPECIES_MIGHTYENA, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 31, - .species = SPECIES_ZIGZAGOON, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 31, - .species = SPECIES_LOTAD, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 31, - .species = SPECIES_SEEDOT, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 31, - .species = SPECIES_TAILLOW, - } -}; - -static const struct TrainerMon sParty_Gabrielle3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 33, - .species = SPECIES_SKITTY, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 33, - .species = SPECIES_MIGHTYENA, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 33, - .species = SPECIES_LINOONE, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 33, - .species = SPECIES_LOMBRE, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 33, - .species = SPECIES_NUZLEAF, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 33, - .species = SPECIES_TAILLOW, - } -}; - -static const struct TrainerMon sParty_Gabrielle4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 35, - .species = SPECIES_DELCATTY, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 35, - .species = SPECIES_MIGHTYENA, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 35, - .species = SPECIES_LINOONE, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 35, - .species = SPECIES_LOMBRE, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 35, - .species = SPECIES_NUZLEAF, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 35, - .species = SPECIES_SWELLOW, - } -}; - -static const struct TrainerMon sParty_Gabrielle5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 37, - .species = SPECIES_DELCATTY, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 37, - .species = SPECIES_MIGHTYENA, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 37, - .species = SPECIES_LINOONE, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 37, - .species = SPECIES_LUDICOLO, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 37, - .species = SPECIES_SHIFTRY, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 37, - .species = SPECIES_SWELLOW, - } -}; - -static const struct TrainerMon sParty_Thalia2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 34, - .species = SPECIES_WAILMER, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 34, - .species = SPECIES_HORSEA, - } -}; - -static const struct TrainerMon sParty_Thalia3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 36, - .species = SPECIES_LUVDISC, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 36, - .species = SPECIES_WAILMER, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 36, - .species = SPECIES_SEADRA, - } -}; - -static const struct TrainerMon sParty_Thalia4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 38, - .species = SPECIES_LUVDISC, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 38, - .species = SPECIES_WAILMER, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 38, - .species = SPECIES_SEADRA, - } -}; - -static const struct TrainerMon sParty_Thalia5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 40, - .species = SPECIES_LUVDISC, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 40, - .species = SPECIES_WAILORD, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 40, - .species = SPECIES_KINGDRA, - } -}; - -static const struct TrainerMon sParty_Mariela[] = { - { - .lvl = 41, - .species = SPECIES_CHIMECHO, - } -}; - -static const struct TrainerMon sParty_Alvaro[] = { - { - .lvl = 41, - .species = SPECIES_BANETTE, - }, - { - .lvl = 41, - .species = SPECIES_KADABRA, - } -}; - -static const struct TrainerMon sParty_Everett[] = { - { - .lvl = 41, - .species = SPECIES_WOBBUFFET, - } -}; - -static const struct TrainerMon sParty_Red[] = { - { - .lvl = 5, - .species = SPECIES_CHARMANDER, - } -}; - -static const struct TrainerMon sParty_Leaf[] = { - { - .lvl = 5, - .species = SPECIES_BULBASAUR, - } -}; - -static const struct TrainerMon sParty_BrendanLinkPlaceholder[] = { - { - .lvl = 5, - .species = SPECIES_GROUDON, - } -}; - -static const struct TrainerMon sParty_MayLinkPlaceholder[] = { - { - .lvl = 5, - .species = SPECIES_KYOGRE, - } -}; diff --git a/src/data/trainers.h b/src/data/trainers.h index 433cac517e..128eed5a7f 100644 --- a/src/data/trainers.h +++ b/src/data/trainers.h @@ -1,10272 +1,42185 @@ -const struct Trainer gTrainers[] = { +// +// DO NOT MODIFY THIS FILE! It is auto-generated from src/data/trainers.party +// +// If you want to modify this file set COMPETITIVE_PARTY_SYNTAX to FALSE +// in include/config.h and remove this notice. +// Use sed -i '/^#line/d' 'src/data/trainers.h' to remove #line markers. +// + +#line 1 "src/data/trainers.party" + +#line 1 [TRAINER_NONE] = { +#line 3 .trainerClass = TRAINER_CLASS_PKMN_TRAINER_1, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 4 .trainerPic = TRAINER_PIC_HIKER, - .trainerName = _(""), - .items = {}, + .encounterMusic_gender = +#line 6 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 7 .doubleBattle = FALSE, - .aiFlags = 0, .partySize = 0, - .party = NULL, + .party = (const struct TrainerMon[]) + { + }, }, - +#line 9 [TRAINER_SAWYER_1] = { - .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_HIKER, +#line 10 .trainerName = _("SAWYER"), - .items = {}, +#line 11 + .trainerClass = TRAINER_CLASS_HIKER, +#line 12 + .trainerPic = TRAINER_PIC_HIKER, + .encounterMusic_gender = +#line 14 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 15 .doubleBattle = FALSE, +#line 16 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Sawyer1), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 18 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 20 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 19 + .lvl = 21, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 22 [TRAINER_GRUNT_AQUA_HIDEOUT_1] = { - .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, - .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, +#line 23 .trainerName = _("GRUNT"), - .items = {}, +#line 24 + .trainerClass = TRAINER_CLASS_TEAM_AQUA, +#line 25 + .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, + .encounterMusic_gender = +#line 27 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 28 .doubleBattle = FALSE, +#line 29 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntAquaHideout1), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 31 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 33 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 32 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 35 [TRAINER_GRUNT_AQUA_HIDEOUT_2] = { - .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, - .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, +#line 36 .trainerName = _("GRUNT"), - .items = {}, +#line 37 + .trainerClass = TRAINER_CLASS_TEAM_AQUA, +#line 38 + .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, + .encounterMusic_gender = +#line 40 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 41 .doubleBattle = FALSE, +#line 42 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntAquaHideout2), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 44 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 46 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 45 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 48 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 50 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 49 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 52 [TRAINER_GRUNT_AQUA_HIDEOUT_3] = { - .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, - .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, +#line 53 .trainerName = _("GRUNT"), - .items = {}, +#line 54 + .trainerClass = TRAINER_CLASS_TEAM_AQUA, +#line 55 + .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, + .encounterMusic_gender = +#line 57 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 58 .doubleBattle = FALSE, +#line 59 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntAquaHideout3), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 61 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 63 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 62 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 65 [TRAINER_GRUNT_AQUA_HIDEOUT_4] = { - .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, - .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, +#line 66 .trainerName = _("GRUNT"), - .items = {}, +#line 67 + .trainerClass = TRAINER_CLASS_TEAM_AQUA, +#line 68 + .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, + .encounterMusic_gender = +#line 70 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 71 .doubleBattle = FALSE, +#line 72 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntAquaHideout4), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 74 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 76 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 75 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 78 [TRAINER_GRUNT_SEAFLOOR_CAVERN_1] = { - .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, - .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, +#line 79 .trainerName = _("GRUNT"), - .items = {}, +#line 80 + .trainerClass = TRAINER_CLASS_TEAM_AQUA, +#line 81 + .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, + .encounterMusic_gender = +#line 83 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 84 .doubleBattle = FALSE, +#line 85 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntSeafloorCavern1), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 87 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 89 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 88 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 91 [TRAINER_GRUNT_SEAFLOOR_CAVERN_2] = { - .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, - .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, +#line 92 .trainerName = _("GRUNT"), - .items = {}, +#line 93 + .trainerClass = TRAINER_CLASS_TEAM_AQUA, +#line 94 + .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, + .encounterMusic_gender = +#line 96 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 97 .doubleBattle = FALSE, +#line 98 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntSeafloorCavern2), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 100 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 102 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 101 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 104 [TRAINER_GRUNT_SEAFLOOR_CAVERN_3] = { - .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, - .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, +#line 105 .trainerName = _("GRUNT"), - .items = {}, +#line 106 + .trainerClass = TRAINER_CLASS_TEAM_AQUA, +#line 107 + .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, + .encounterMusic_gender = +#line 109 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 110 .doubleBattle = FALSE, +#line 111 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntSeafloorCavern3), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 113 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 115 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 114 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 117 [TRAINER_GABRIELLE_1] = { - .trainerClass = TRAINER_CLASS_PKMN_BREEDER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, +#line 118 .trainerName = _("GABRIELLE"), - .items = {}, +#line 119 + .trainerClass = TRAINER_CLASS_PKMN_BREEDER, +#line 120 + .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, + .encounterMusic_gender = +#line 121 +F_TRAINER_FEMALE | +#line 122 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 123 .doubleBattle = FALSE, +#line 124 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Gabrielle1), + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 126 + .species = SPECIES_SKITTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 128 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 127 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 130 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 132 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 131 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 134 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 136 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 135 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 138 + .species = SPECIES_LOTAD, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 140 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 139 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 142 + .species = SPECIES_SEEDOT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 144 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 143 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 146 + .species = SPECIES_TAILLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 148 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 147 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 150 [TRAINER_GRUNT_PETALBURG_WOODS] = { - .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, - .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, +#line 151 .trainerName = _("GRUNT"), - .items = {}, +#line 152 + .trainerClass = TRAINER_CLASS_TEAM_AQUA, +#line 153 + .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, + .encounterMusic_gender = +#line 155 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 156 .doubleBattle = FALSE, +#line 157 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntPetalburgWoods), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 159 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 161 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 160 + .lvl = 9, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 163 [TRAINER_MARCEL] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_M, +#line 164 .trainerName = _("MARCEL"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 165 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 166 + .trainerPic = TRAINER_PIC_COOLTRAINER_M, + .encounterMusic_gender = +#line 168 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 169 + .items = { ITEM_HYPER_POTION }, +#line 170 .doubleBattle = FALSE, +#line 171 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Marcel), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 173 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 175 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 174 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 177 + .species = SPECIES_SHIFTRY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 179 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 178 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 181 [TRAINER_ALBERTO] = { - .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_BIRD_KEEPER, +#line 182 .trainerName = _("ALBERTO"), - .items = {}, +#line 183 + .trainerClass = TRAINER_CLASS_BIRD_KEEPER, +#line 184 + .trainerPic = TRAINER_PIC_BIRD_KEEPER, + .encounterMusic_gender = +#line 186 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 187 .doubleBattle = FALSE, +#line 188 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Alberto), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 190 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 192 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 191 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 194 + .species = SPECIES_XATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 196 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 195 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 198 [TRAINER_ED] = { - .trainerClass = TRAINER_CLASS_COLLECTOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_COLLECTOR, +#line 199 .trainerName = _("ED"), - .items = {}, +#line 200 + .trainerClass = TRAINER_CLASS_COLLECTOR, +#line 201 + .trainerPic = TRAINER_PIC_COLLECTOR, + .encounterMusic_gender = +#line 203 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 204 .doubleBattle = FALSE, +#line 205 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ed), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 207 + .species = SPECIES_ZANGOOSE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 209 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 208 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 211 + .species = SPECIES_SEVIPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 213 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 212 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 215 [TRAINER_GRUNT_SEAFLOOR_CAVERN_4] = { - .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA, - .trainerPic = TRAINER_PIC_AQUA_GRUNT_F, +#line 216 .trainerName = _("GRUNT"), - .items = {}, +#line 217 + .trainerClass = TRAINER_CLASS_TEAM_AQUA, +#line 218 + .trainerPic = TRAINER_PIC_AQUA_GRUNT_F, + .encounterMusic_gender = +#line 219 +F_TRAINER_FEMALE | +#line 220 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 221 .doubleBattle = FALSE, +#line 222 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntSeafloorCavern4), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 224 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 226 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 225 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 228 [TRAINER_DECLAN] = { - .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_M, +#line 229 .trainerName = _("DECLAN"), - .items = {}, +#line 230 + .trainerClass = TRAINER_CLASS_SWIMMER_M, +#line 231 + .trainerPic = TRAINER_PIC_SWIMMER_M, + .encounterMusic_gender = +#line 233 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 234 .doubleBattle = FALSE, +#line 235 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Declan), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 237 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 239 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 238 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 241 [TRAINER_GRUNT_RUSTURF_TUNNEL] = { - .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, - .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, +#line 242 .trainerName = _("GRUNT"), - .items = {}, +#line 243 + .trainerClass = TRAINER_CLASS_TEAM_AQUA, +#line 244 + .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, + .encounterMusic_gender = +#line 246 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 247 .doubleBattle = FALSE, +#line 248 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntRusturfTunnel), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 250 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 252 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 251 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 254 [TRAINER_GRUNT_WEATHER_INST_1] = { - .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, - .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, +#line 255 .trainerName = _("GRUNT"), - .items = {}, +#line 256 + .trainerClass = TRAINER_CLASS_TEAM_AQUA, +#line 257 + .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, + .encounterMusic_gender = +#line 259 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 260 .doubleBattle = FALSE, +#line 261 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntWeatherInst1), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 263 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 265 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 264 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 267 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 269 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 268 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 271 [TRAINER_GRUNT_WEATHER_INST_2] = { - .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, - .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, +#line 272 .trainerName = _("GRUNT"), - .items = {}, +#line 273 + .trainerClass = TRAINER_CLASS_TEAM_AQUA, +#line 274 + .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, + .encounterMusic_gender = +#line 276 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 277 .doubleBattle = FALSE, +#line 278 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntWeatherInst2), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 280 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 282 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 281 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 284 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 286 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 285 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 288 [TRAINER_GRUNT_WEATHER_INST_3] = { - .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, - .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, +#line 289 .trainerName = _("GRUNT"), - .items = {}, +#line 290 + .trainerClass = TRAINER_CLASS_TEAM_AQUA, +#line 291 + .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, + .encounterMusic_gender = +#line 293 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 294 .doubleBattle = FALSE, +#line 295 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntWeatherInst3), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 297 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 299 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 298 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 301 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 303 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 302 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 305 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 307 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 306 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 309 [TRAINER_GRUNT_MUSEUM_1] = { - .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, - .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, +#line 310 .trainerName = _("GRUNT"), - .items = {}, +#line 311 + .trainerClass = TRAINER_CLASS_TEAM_AQUA, +#line 312 + .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, + .encounterMusic_gender = +#line 314 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 315 .doubleBattle = FALSE, +#line 316 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMuseum1), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 318 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 320 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 319 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 322 [TRAINER_GRUNT_MUSEUM_2] = { - .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, - .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, +#line 323 .trainerName = _("GRUNT"), - .items = {}, +#line 324 + .trainerClass = TRAINER_CLASS_TEAM_AQUA, +#line 325 + .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, + .encounterMusic_gender = +#line 327 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 328 .doubleBattle = FALSE, +#line 329 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMuseum2), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 331 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 333 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 332 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 335 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 337 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 336 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 339 [TRAINER_GRUNT_SPACE_CENTER_1] = { - .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, - .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, +#line 340 .trainerName = _("GRUNT"), - .items = {}, +#line 341 + .trainerClass = TRAINER_CLASS_TEAM_MAGMA, +#line 342 + .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, + .encounterMusic_gender = +#line 344 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 345 .doubleBattle = FALSE, +#line 346 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntSpaceCenter1), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 348 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 350 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 349 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 352 [TRAINER_GRUNT_MT_PYRE_1] = { - .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, - .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, +#line 353 .trainerName = _("GRUNT"), - .items = {}, +#line 354 + .trainerClass = TRAINER_CLASS_TEAM_AQUA, +#line 355 + .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, + .encounterMusic_gender = +#line 357 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 358 .doubleBattle = FALSE, +#line 359 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMtPyre1), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 361 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 363 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 362 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 365 [TRAINER_GRUNT_MT_PYRE_2] = { - .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, - .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, +#line 366 .trainerName = _("GRUNT"), - .items = {}, +#line 367 + .trainerClass = TRAINER_CLASS_TEAM_AQUA, +#line 368 + .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, + .encounterMusic_gender = +#line 370 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 371 .doubleBattle = FALSE, +#line 372 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMtPyre2), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 374 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 376 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 375 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 378 [TRAINER_GRUNT_MT_PYRE_3] = { - .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, - .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, +#line 379 .trainerName = _("GRUNT"), - .items = {}, +#line 380 + .trainerClass = TRAINER_CLASS_TEAM_AQUA, +#line 381 + .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, + .encounterMusic_gender = +#line 383 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 384 .doubleBattle = FALSE, +#line 385 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMtPyre3), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 387 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 389 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 388 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 391 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 393 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 392 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 395 [TRAINER_GRUNT_WEATHER_INST_4] = { - .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA, - .trainerPic = TRAINER_PIC_AQUA_GRUNT_F, +#line 396 .trainerName = _("GRUNT"), - .items = {}, +#line 397 + .trainerClass = TRAINER_CLASS_TEAM_AQUA, +#line 398 + .trainerPic = TRAINER_PIC_AQUA_GRUNT_F, + .encounterMusic_gender = +#line 399 +F_TRAINER_FEMALE | +#line 400 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 401 .doubleBattle = FALSE, +#line 402 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntWeatherInst4), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 404 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 406 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 405 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 408 [TRAINER_GRUNT_AQUA_HIDEOUT_5] = { - .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA, - .trainerPic = TRAINER_PIC_AQUA_GRUNT_F, +#line 409 .trainerName = _("GRUNT"), - .items = {}, +#line 410 + .trainerClass = TRAINER_CLASS_TEAM_AQUA, +#line 411 + .trainerPic = TRAINER_PIC_AQUA_GRUNT_F, + .encounterMusic_gender = +#line 412 +F_TRAINER_FEMALE | +#line 413 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 414 .doubleBattle = FALSE, +#line 415 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntAquaHideout5), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 417 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 419 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 418 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 421 [TRAINER_GRUNT_AQUA_HIDEOUT_6] = { - .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA, - .trainerPic = TRAINER_PIC_AQUA_GRUNT_F, +#line 422 .trainerName = _("GRUNT"), - .items = {}, +#line 423 + .trainerClass = TRAINER_CLASS_TEAM_AQUA, +#line 424 + .trainerPic = TRAINER_PIC_AQUA_GRUNT_F, + .encounterMusic_gender = +#line 425 +F_TRAINER_FEMALE | +#line 426 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 427 .doubleBattle = FALSE, +#line 428 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntAquaHideout6), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 430 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 432 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 431 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 434 [TRAINER_FREDRICK] = { - .trainerClass = TRAINER_CLASS_EXPERT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_EXPERT_M, +#line 435 .trainerName = _("FREDRICK"), - .items = {}, +#line 436 + .trainerClass = TRAINER_CLASS_EXPERT, +#line 437 + .trainerPic = TRAINER_PIC_EXPERT_M, + .encounterMusic_gender = +#line 439 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 440 .doubleBattle = FALSE, +#line 441 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Fredrick), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 443 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 445 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 444 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 447 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 449 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 448 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 451 [TRAINER_MATT] = { - .trainerClass = TRAINER_CLASS_AQUA_ADMIN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, - .trainerPic = TRAINER_PIC_AQUA_ADMIN_M, +#line 452 .trainerName = _("MATT"), - .items = {ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 453 + .trainerClass = TRAINER_CLASS_AQUA_ADMIN, +#line 454 + .trainerPic = TRAINER_PIC_AQUA_ADMIN_M, + .encounterMusic_gender = +#line 456 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 457 + .items = { ITEM_SUPER_POTION }, +#line 458 .doubleBattle = FALSE, +#line 459 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Matt), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 461 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 463 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 462 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 465 + .species = SPECIES_GOLBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 467 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 466 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 469 [TRAINER_ZANDER] = { - .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_BLACK_BELT, +#line 470 .trainerName = _("ZANDER"), - .items = {}, +#line 471 + .trainerClass = TRAINER_CLASS_BLACK_BELT, +#line 472 + .trainerPic = TRAINER_PIC_BLACK_BELT, + .encounterMusic_gender = +#line 474 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 475 .doubleBattle = FALSE, +#line 476 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Zander), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 478 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 480 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 479 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 482 [TRAINER_SHELLY_WEATHER_INSTITUTE] = { - .trainerClass = TRAINER_CLASS_AQUA_ADMIN, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA, - .trainerPic = TRAINER_PIC_AQUA_ADMIN_F, +#line 483 .trainerName = _("SHELLY"), - .items = {}, +#line 484 + .trainerClass = TRAINER_CLASS_AQUA_ADMIN, +#line 485 + .trainerPic = TRAINER_PIC_AQUA_ADMIN_F, + .encounterMusic_gender = +#line 486 +F_TRAINER_FEMALE | +#line 487 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 488 .doubleBattle = FALSE, +#line 489 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_ShellyWeatherInstitute), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 491 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 493 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 492 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 495 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 497 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 496 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 499 [TRAINER_SHELLY_SEAFLOOR_CAVERN] = { - .trainerClass = TRAINER_CLASS_AQUA_ADMIN, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA, - .trainerPic = TRAINER_PIC_AQUA_ADMIN_F, +#line 500 .trainerName = _("SHELLY"), - .items = {}, +#line 501 + .trainerClass = TRAINER_CLASS_AQUA_ADMIN, +#line 502 + .trainerPic = TRAINER_PIC_AQUA_ADMIN_F, + .encounterMusic_gender = +#line 503 +F_TRAINER_FEMALE | +#line 504 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 505 .doubleBattle = FALSE, +#line 506 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_ShellySeafloorCavern), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 508 + .species = SPECIES_SHARPEDO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 510 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 509 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 512 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 514 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 513 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 516 [TRAINER_ARCHIE] = { - .trainerClass = TRAINER_CLASS_AQUA_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, - .trainerPic = TRAINER_PIC_AQUA_LEADER_ARCHIE, +#line 517 .trainerName = _("ARCHIE"), - .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE}, +#line 518 + .trainerClass = TRAINER_CLASS_AQUA_LEADER, +#line 519 + .trainerPic = TRAINER_PIC_AQUA_LEADER_ARCHIE, + .encounterMusic_gender = +#line 521 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 522 + .items = { ITEM_SUPER_POTION, ITEM_SUPER_POTION }, +#line 523 .doubleBattle = FALSE, +#line 524 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Archie), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 526 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 528 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 527 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 530 + .species = SPECIES_CROBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 532 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 531 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 534 + .species = SPECIES_SHARPEDO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 536 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 535 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 538 [TRAINER_LEAH] = { - .trainerClass = TRAINER_CLASS_HEX_MANIAC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_HEX_MANIAC, +#line 539 .trainerName = _("LEAH"), - .items = {}, +#line 540 + .trainerClass = TRAINER_CLASS_HEX_MANIAC, +#line 541 + .trainerPic = TRAINER_PIC_HEX_MANIAC, + .encounterMusic_gender = +#line 542 +F_TRAINER_FEMALE | +#line 543 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 544 .doubleBattle = FALSE, +#line 545 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Leah), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 547 + .species = SPECIES_SPOINK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 549 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 548 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 551 [TRAINER_DAISY] = { - .trainerClass = TRAINER_CLASS_AROMA_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_AROMA_LADY, +#line 552 .trainerName = _("DAISY"), - .items = {}, +#line 553 + .trainerClass = TRAINER_CLASS_AROMA_LADY, +#line 554 + .trainerPic = TRAINER_PIC_AROMA_LADY, + .encounterMusic_gender = +#line 555 +F_TRAINER_FEMALE | +#line 556 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 557 .doubleBattle = FALSE, +#line 558 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Daisy), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 560 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 562 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 561 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 564 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 566 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 565 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 568 [TRAINER_ROSE_1] = { - .trainerClass = TRAINER_CLASS_AROMA_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_AROMA_LADY, +#line 569 .trainerName = _("ROSE"), - .items = {}, +#line 570 + .trainerClass = TRAINER_CLASS_AROMA_LADY, +#line 571 + .trainerPic = TRAINER_PIC_AROMA_LADY, + .encounterMusic_gender = +#line 572 +F_TRAINER_FEMALE | +#line 573 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 574 .doubleBattle = FALSE, +#line 575 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Rose1), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 577 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 579 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 578 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 581 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 583 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 582 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 585 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 587 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 586 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 589 [TRAINER_FELIX] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_M, +#line 590 .trainerName = _("FELIX"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 591 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 592 + .trainerPic = TRAINER_PIC_COOLTRAINER_M, + .encounterMusic_gender = +#line 594 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 595 + .items = { ITEM_FULL_RESTORE }, +#line 596 .doubleBattle = FALSE, +#line 597 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Felix), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 599 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 601 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 600 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 602 + MOVE_PSYCHIC, + }, + }, + { +#line 604 + .species = SPECIES_CLAYDOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 606 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 605 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 607 + MOVE_SKILL_SWAP, + MOVE_EARTHQUAKE, + }, + }, + }, }, - +#line 610 [TRAINER_VIOLET] = { - .trainerClass = TRAINER_CLASS_AROMA_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_AROMA_LADY, +#line 611 .trainerName = _("VIOLET"), - .items = {}, +#line 612 + .trainerClass = TRAINER_CLASS_AROMA_LADY, +#line 613 + .trainerPic = TRAINER_PIC_AROMA_LADY, + .encounterMusic_gender = +#line 614 +F_TRAINER_FEMALE | +#line 615 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 616 .doubleBattle = FALSE, +#line 617 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Violet), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 619 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 621 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 620 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 623 + .species = SPECIES_GLOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 625 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 624 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 627 [TRAINER_ROSE_2] = { - .trainerClass = TRAINER_CLASS_AROMA_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_AROMA_LADY, +#line 628 .trainerName = _("ROSE"), - .items = {}, +#line 629 + .trainerClass = TRAINER_CLASS_AROMA_LADY, +#line 630 + .trainerPic = TRAINER_PIC_AROMA_LADY, + .encounterMusic_gender = +#line 631 +F_TRAINER_FEMALE | +#line 632 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 633 .doubleBattle = FALSE, +#line 634 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Rose2), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 636 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 638 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 637 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 640 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 642 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 641 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 644 [TRAINER_ROSE_3] = { - .trainerClass = TRAINER_CLASS_AROMA_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_AROMA_LADY, +#line 645 .trainerName = _("ROSE"), - .items = {}, +#line 646 + .trainerClass = TRAINER_CLASS_AROMA_LADY, +#line 647 + .trainerPic = TRAINER_PIC_AROMA_LADY, + .encounterMusic_gender = +#line 648 +F_TRAINER_FEMALE | +#line 649 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 650 .doubleBattle = FALSE, +#line 651 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Rose3), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 653 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 655 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 654 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 657 + .species = SPECIES_GLOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 659 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 658 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 661 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 663 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 662 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 665 [TRAINER_ROSE_4] = { - .trainerClass = TRAINER_CLASS_AROMA_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_AROMA_LADY, +#line 666 .trainerName = _("ROSE"), - .items = {}, +#line 667 + .trainerClass = TRAINER_CLASS_AROMA_LADY, +#line 668 + .trainerPic = TRAINER_PIC_AROMA_LADY, + .encounterMusic_gender = +#line 669 +F_TRAINER_FEMALE | +#line 670 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 671 .doubleBattle = FALSE, +#line 672 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Rose4), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 674 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 676 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 675 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 678 + .species = SPECIES_GLOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 680 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 679 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 682 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 684 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 683 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 686 [TRAINER_ROSE_5] = { - .trainerClass = TRAINER_CLASS_AROMA_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_AROMA_LADY, +#line 687 .trainerName = _("ROSE"), - .items = {}, +#line 688 + .trainerClass = TRAINER_CLASS_AROMA_LADY, +#line 689 + .trainerPic = TRAINER_PIC_AROMA_LADY, + .encounterMusic_gender = +#line 690 +F_TRAINER_FEMALE | +#line 691 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 692 .doubleBattle = FALSE, +#line 693 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Rose5), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 695 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 697 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 696 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 699 + .species = SPECIES_GLOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 701 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 700 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 703 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 705 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 704 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 707 [TRAINER_DUSTY_1] = { - .trainerClass = TRAINER_CLASS_RUIN_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_RUIN_MANIAC, +#line 708 .trainerName = _("DUSTY"), - .items = {}, +#line 709 + .trainerClass = TRAINER_CLASS_RUIN_MANIAC, +#line 710 + .trainerPic = TRAINER_PIC_RUIN_MANIAC, + .encounterMusic_gender = +#line 712 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 713 .doubleBattle = FALSE, +#line 714 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dusty1), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 716 + .species = SPECIES_SANDSLASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 718 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 717 + .lvl = 23, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 719 + MOVE_DIG, + MOVE_SLASH, + MOVE_SAND_ATTACK, + MOVE_POISON_STING, + }, + }, + }, }, - +#line 724 [TRAINER_CHIP] = { - .trainerClass = TRAINER_CLASS_RUIN_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_RUIN_MANIAC, +#line 725 .trainerName = _("CHIP"), - .items = {}, +#line 726 + .trainerClass = TRAINER_CLASS_RUIN_MANIAC, +#line 727 + .trainerPic = TRAINER_PIC_RUIN_MANIAC, + .encounterMusic_gender = +#line 729 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 730 .doubleBattle = FALSE, +#line 731 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Chip), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 733 + .species = SPECIES_BALTOY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 735 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 734 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 736 + MOVE_PSYBEAM, + MOVE_SELF_DESTRUCT, + MOVE_SANDSTORM, + MOVE_ANCIENT_POWER, + }, + }, + { +#line 741 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 743 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 742 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 744 + MOVE_DIG, + MOVE_SLASH, + MOVE_SAND_ATTACK, + MOVE_POISON_STING, + }, + }, + { +#line 749 + .species = SPECIES_SANDSLASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 751 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 750 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 752 + MOVE_DIG, + MOVE_SLASH, + MOVE_SAND_ATTACK, + MOVE_POISON_STING, + }, + }, + }, }, - +#line 757 [TRAINER_FOSTER] = { - .trainerClass = TRAINER_CLASS_RUIN_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_RUIN_MANIAC, +#line 758 .trainerName = _("FOSTER"), - .items = {}, +#line 759 + .trainerClass = TRAINER_CLASS_RUIN_MANIAC, +#line 760 + .trainerPic = TRAINER_PIC_RUIN_MANIAC, + .encounterMusic_gender = +#line 762 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 763 .doubleBattle = FALSE, +#line 764 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Foster), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 766 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 768 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 767 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 769 + MOVE_DIG, + MOVE_SLASH, + MOVE_SAND_ATTACK, + MOVE_POISON_STING, + }, + }, + { +#line 774 + .species = SPECIES_SANDSLASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 776 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 775 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 777 + MOVE_DIG, + MOVE_SLASH, + MOVE_SAND_ATTACK, + MOVE_POISON_STING, + }, + }, + }, }, - +#line 782 [TRAINER_DUSTY_2] = { - .trainerClass = TRAINER_CLASS_RUIN_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_RUIN_MANIAC, +#line 783 .trainerName = _("DUSTY"), - .items = {}, +#line 784 + .trainerClass = TRAINER_CLASS_RUIN_MANIAC, +#line 785 + .trainerPic = TRAINER_PIC_RUIN_MANIAC, + .encounterMusic_gender = +#line 787 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 788 .doubleBattle = FALSE, +#line 789 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dusty2), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 791 + .species = SPECIES_SANDSLASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 793 + .iv = TRAINER_PARTY_IVS(7, 7, 7, 7, 7, 7), +#line 792 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 794 + MOVE_DIG, + MOVE_SLASH, + MOVE_SAND_ATTACK, + MOVE_POISON_STING, + }, + }, + }, }, - +#line 799 [TRAINER_DUSTY_3] = { - .trainerClass = TRAINER_CLASS_RUIN_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_RUIN_MANIAC, +#line 800 .trainerName = _("DUSTY"), - .items = {}, +#line 801 + .trainerClass = TRAINER_CLASS_RUIN_MANIAC, +#line 802 + .trainerPic = TRAINER_PIC_RUIN_MANIAC, + .encounterMusic_gender = +#line 804 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 805 .doubleBattle = FALSE, +#line 806 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dusty3), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 808 + .species = SPECIES_SANDSLASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 810 + .iv = TRAINER_PARTY_IVS(8, 8, 8, 8, 8, 8), +#line 809 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 811 + MOVE_DIG, + MOVE_SLASH, + MOVE_SAND_ATTACK, + MOVE_POISON_STING, + }, + }, + }, }, - +#line 816 [TRAINER_DUSTY_4] = { - .trainerClass = TRAINER_CLASS_RUIN_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_RUIN_MANIAC, +#line 817 .trainerName = _("DUSTY"), - .items = {}, +#line 818 + .trainerClass = TRAINER_CLASS_RUIN_MANIAC, +#line 819 + .trainerPic = TRAINER_PIC_RUIN_MANIAC, + .encounterMusic_gender = +#line 821 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 822 .doubleBattle = FALSE, +#line 823 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dusty4), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 825 + .species = SPECIES_SANDSLASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 827 + .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), +#line 826 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 828 + MOVE_DIG, + MOVE_SLASH, + MOVE_SAND_ATTACK, + MOVE_POISON_STING, + }, + }, + }, }, - +#line 833 [TRAINER_DUSTY_5] = { - .trainerClass = TRAINER_CLASS_RUIN_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_RUIN_MANIAC, +#line 834 .trainerName = _("DUSTY"), - .items = {}, +#line 835 + .trainerClass = TRAINER_CLASS_RUIN_MANIAC, +#line 836 + .trainerPic = TRAINER_PIC_RUIN_MANIAC, + .encounterMusic_gender = +#line 838 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 839 .doubleBattle = FALSE, +#line 840 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dusty5), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 842 + .species = SPECIES_SANDSLASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 844 + .iv = TRAINER_PARTY_IVS(10, 10, 10, 10, 10, 10), +#line 843 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 845 + MOVE_DIG, + MOVE_SLASH, + MOVE_SAND_ATTACK, + MOVE_POISON_STING, + }, + }, + }, }, - +#line 850 [TRAINER_GABBY_AND_TY_1] = { - .trainerClass = TRAINER_CLASS_INTERVIEWER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, - .trainerPic = TRAINER_PIC_INTERVIEWER, +#line 851 .trainerName = _("GABBY & TY"), - .items = {}, +#line 852 + .trainerClass = TRAINER_CLASS_INTERVIEWER, +#line 853 + .trainerPic = TRAINER_PIC_INTERVIEWER, + .encounterMusic_gender = +#line 855 + TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, +#line 856 .doubleBattle = TRUE, +#line 857 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GabbyAndTy1), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 859 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 861 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 860 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 863 + .species = SPECIES_WHISMUR, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 865 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 864 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 867 [TRAINER_GABBY_AND_TY_2] = { - .trainerClass = TRAINER_CLASS_INTERVIEWER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, - .trainerPic = TRAINER_PIC_INTERVIEWER, +#line 868 .trainerName = _("GABBY & TY"), - .items = {}, +#line 869 + .trainerClass = TRAINER_CLASS_INTERVIEWER, +#line 870 + .trainerPic = TRAINER_PIC_INTERVIEWER, + .encounterMusic_gender = +#line 872 + TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, +#line 873 .doubleBattle = TRUE, +#line 874 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GabbyAndTy2), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 876 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 878 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 877 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 880 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 882 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 881 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 884 [TRAINER_GABBY_AND_TY_3] = { - .trainerClass = TRAINER_CLASS_INTERVIEWER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, - .trainerPic = TRAINER_PIC_INTERVIEWER, +#line 885 .trainerName = _("GABBY & TY"), - .items = {}, +#line 886 + .trainerClass = TRAINER_CLASS_INTERVIEWER, +#line 887 + .trainerPic = TRAINER_PIC_INTERVIEWER, + .encounterMusic_gender = +#line 889 + TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, +#line 890 .doubleBattle = TRUE, +#line 891 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GabbyAndTy3), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 893 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 895 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 894 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 897 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 899 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 898 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 901 [TRAINER_GABBY_AND_TY_4] = { - .trainerClass = TRAINER_CLASS_INTERVIEWER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, - .trainerPic = TRAINER_PIC_INTERVIEWER, +#line 902 .trainerName = _("GABBY & TY"), - .items = {}, +#line 903 + .trainerClass = TRAINER_CLASS_INTERVIEWER, +#line 904 + .trainerPic = TRAINER_PIC_INTERVIEWER, + .encounterMusic_gender = +#line 906 + TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, +#line 907 .doubleBattle = TRUE, +#line 908 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GabbyAndTy4), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 910 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 912 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 911 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 914 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 916 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 915 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 918 [TRAINER_GABBY_AND_TY_5] = { - .trainerClass = TRAINER_CLASS_INTERVIEWER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, - .trainerPic = TRAINER_PIC_INTERVIEWER, +#line 919 .trainerName = _("GABBY & TY"), - .items = {}, +#line 920 + .trainerClass = TRAINER_CLASS_INTERVIEWER, +#line 921 + .trainerPic = TRAINER_PIC_INTERVIEWER, + .encounterMusic_gender = +#line 923 + TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, +#line 924 .doubleBattle = TRUE, +#line 925 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GabbyAndTy5), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 927 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 929 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 928 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 931 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 933 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 932 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 935 [TRAINER_GABBY_AND_TY_6] = { - .trainerClass = TRAINER_CLASS_INTERVIEWER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, - .trainerPic = TRAINER_PIC_INTERVIEWER, +#line 936 .trainerName = _("GABBY & TY"), - .items = {}, +#line 937 + .trainerClass = TRAINER_CLASS_INTERVIEWER, +#line 938 + .trainerPic = TRAINER_PIC_INTERVIEWER, + .encounterMusic_gender = +#line 940 + TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, +#line 941 .doubleBattle = TRUE, +#line 942 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GabbyAndTy6), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 944 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 946 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 945 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 947 + MOVE_SONIC_BOOM, + MOVE_THUNDER_WAVE, + MOVE_METAL_SOUND, + MOVE_THUNDERBOLT, + }, + }, + { +#line 952 + .species = SPECIES_EXPLOUD, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 954 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 953 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 955 + MOVE_ASTONISH, + MOVE_STOMP, + MOVE_SUPERSONIC, + MOVE_HYPER_VOICE, + }, + }, + }, }, - +#line 960 [TRAINER_LOLA_1] = { - .trainerClass = TRAINER_CLASS_TUBER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_TUBER_F, +#line 961 .trainerName = _("LOLA"), - .items = {}, +#line 962 + .trainerClass = TRAINER_CLASS_TUBER_F, +#line 963 + .trainerPic = TRAINER_PIC_TUBER_F, + .encounterMusic_gender = +#line 964 +F_TRAINER_FEMALE | +#line 965 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 966 .doubleBattle = FALSE, +#line 967 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Lola1), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 969 + .species = SPECIES_AZURILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 971 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 970 + .lvl = 12, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 973 + .species = SPECIES_AZURILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 975 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 974 + .lvl = 12, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 977 [TRAINER_AUSTINA] = { - .trainerClass = TRAINER_CLASS_TUBER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_TUBER_F, +#line 978 .trainerName = _("AUSTINA"), - .items = {}, +#line 979 + .trainerClass = TRAINER_CLASS_TUBER_F, +#line 980 + .trainerPic = TRAINER_PIC_TUBER_F, + .encounterMusic_gender = +#line 981 +F_TRAINER_FEMALE | +#line 982 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 983 .doubleBattle = FALSE, +#line 984 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Austina), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 986 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 988 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 987 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 990 [TRAINER_GWEN] = { - .trainerClass = TRAINER_CLASS_TUBER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_TUBER_F, +#line 991 .trainerName = _("GWEN"), - .items = {}, +#line 992 + .trainerClass = TRAINER_CLASS_TUBER_F, +#line 993 + .trainerPic = TRAINER_PIC_TUBER_F, + .encounterMusic_gender = +#line 994 +F_TRAINER_FEMALE | +#line 995 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 996 .doubleBattle = FALSE, +#line 997 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Gwen), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 999 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1001 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 1000 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1003 [TRAINER_LOLA_2] = { - .trainerClass = TRAINER_CLASS_TUBER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_TUBER_F, +#line 1004 .trainerName = _("LOLA"), - .items = {}, +#line 1005 + .trainerClass = TRAINER_CLASS_TUBER_F, +#line 1006 + .trainerPic = TRAINER_PIC_TUBER_F, + .encounterMusic_gender = +#line 1007 +F_TRAINER_FEMALE | +#line 1008 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 1009 .doubleBattle = FALSE, +#line 1010 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Lola2), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 1012 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1014 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 1013 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1016 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1018 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 1017 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1020 [TRAINER_LOLA_3] = { - .trainerClass = TRAINER_CLASS_TUBER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_TUBER_F, +#line 1021 .trainerName = _("LOLA"), - .items = {}, +#line 1022 + .trainerClass = TRAINER_CLASS_TUBER_F, +#line 1023 + .trainerPic = TRAINER_PIC_TUBER_F, + .encounterMusic_gender = +#line 1024 +F_TRAINER_FEMALE | +#line 1025 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 1026 .doubleBattle = FALSE, +#line 1027 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Lola3), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 1029 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1031 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 1030 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1033 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1035 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 1034 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1037 [TRAINER_LOLA_4] = { - .trainerClass = TRAINER_CLASS_TUBER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_TUBER_F, +#line 1038 .trainerName = _("LOLA"), - .items = {}, +#line 1039 + .trainerClass = TRAINER_CLASS_TUBER_F, +#line 1040 + .trainerPic = TRAINER_PIC_TUBER_F, + .encounterMusic_gender = +#line 1041 +F_TRAINER_FEMALE | +#line 1042 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 1043 .doubleBattle = FALSE, +#line 1044 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Lola4), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 1046 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1048 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 1047 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1050 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1052 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 1051 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1054 [TRAINER_LOLA_5] = { - .trainerClass = TRAINER_CLASS_TUBER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_TUBER_F, +#line 1055 .trainerName = _("LOLA"), - .items = {}, +#line 1056 + .trainerClass = TRAINER_CLASS_TUBER_F, +#line 1057 + .trainerPic = TRAINER_PIC_TUBER_F, + .encounterMusic_gender = +#line 1058 +F_TRAINER_FEMALE | +#line 1059 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 1060 .doubleBattle = FALSE, +#line 1061 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Lola5), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 1063 + .species = SPECIES_AZUMARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1065 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 1064 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1067 + .species = SPECIES_AZUMARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1069 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 1068 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1071 [TRAINER_RICKY_1] = { - .trainerClass = TRAINER_CLASS_TUBER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_TUBER_M, +#line 1072 .trainerName = _("RICKY"), - .items = {}, +#line 1073 + .trainerClass = TRAINER_CLASS_TUBER_M, +#line 1074 + .trainerPic = TRAINER_PIC_TUBER_M, + .encounterMusic_gender = +#line 1076 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 1077 .doubleBattle = FALSE, +#line 1078 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ricky1), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1080 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1082 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 1081 + .lvl = 13, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1083 + MOVE_SAND_ATTACK, + MOVE_HEADBUTT, + MOVE_TAIL_WHIP, + MOVE_SURF, + }, + }, + }, }, - +#line 1088 [TRAINER_SIMON] = { - .trainerClass = TRAINER_CLASS_TUBER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_TUBER_M, +#line 1089 .trainerName = _("SIMON"), - .items = {}, +#line 1090 + .trainerClass = TRAINER_CLASS_TUBER_M, +#line 1091 + .trainerPic = TRAINER_PIC_TUBER_M, + .encounterMusic_gender = +#line 1093 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 1094 .doubleBattle = FALSE, +#line 1095 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Simon), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 1097 + .species = SPECIES_AZURILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1099 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 1098 + .lvl = 12, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1101 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1103 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 1102 + .lvl = 12, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1105 [TRAINER_CHARLIE] = { - .trainerClass = TRAINER_CLASS_TUBER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_TUBER_M, +#line 1106 .trainerName = _("CHARLIE"), - .items = {}, +#line 1107 + .trainerClass = TRAINER_CLASS_TUBER_M, +#line 1108 + .trainerPic = TRAINER_PIC_TUBER_M, + .encounterMusic_gender = +#line 1110 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 1111 .doubleBattle = FALSE, +#line 1112 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Charlie), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1114 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1116 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 1115 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1118 [TRAINER_RICKY_2] = { - .trainerClass = TRAINER_CLASS_TUBER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_TUBER_M, +#line 1119 .trainerName = _("RICKY"), - .items = {}, +#line 1120 + .trainerClass = TRAINER_CLASS_TUBER_M, +#line 1121 + .trainerPic = TRAINER_PIC_TUBER_M, + .encounterMusic_gender = +#line 1123 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 1124 .doubleBattle = FALSE, +#line 1125 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ricky2), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1127 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1129 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 1128 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1130 + MOVE_SAND_ATTACK, + MOVE_PIN_MISSILE, + MOVE_TAIL_WHIP, + MOVE_SURF, + }, + }, + }, }, - +#line 1135 [TRAINER_RICKY_3] = { - .trainerClass = TRAINER_CLASS_TUBER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_TUBER_M, +#line 1136 .trainerName = _("RICKY"), - .items = {}, +#line 1137 + .trainerClass = TRAINER_CLASS_TUBER_M, +#line 1138 + .trainerPic = TRAINER_PIC_TUBER_M, + .encounterMusic_gender = +#line 1140 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 1141 .doubleBattle = FALSE, +#line 1142 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ricky3), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1144 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1146 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 1145 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1147 + MOVE_SAND_ATTACK, + MOVE_PIN_MISSILE, + MOVE_TAIL_WHIP, + MOVE_SURF, + }, + }, + }, }, - +#line 1152 [TRAINER_RICKY_4] = { - .trainerClass = TRAINER_CLASS_TUBER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_TUBER_M, +#line 1153 .trainerName = _("RICKY"), - .items = {}, +#line 1154 + .trainerClass = TRAINER_CLASS_TUBER_M, +#line 1155 + .trainerPic = TRAINER_PIC_TUBER_M, + .encounterMusic_gender = +#line 1157 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 1158 .doubleBattle = FALSE, +#line 1159 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ricky4), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1161 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1163 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 1162 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1164 + MOVE_SAND_ATTACK, + MOVE_PIN_MISSILE, + MOVE_TAIL_WHIP, + MOVE_SURF, + }, + }, + }, }, - +#line 1169 [TRAINER_RICKY_5] = { - .trainerClass = TRAINER_CLASS_TUBER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_TUBER_M, +#line 1170 .trainerName = _("RICKY"), - .items = {}, +#line 1171 + .trainerClass = TRAINER_CLASS_TUBER_M, +#line 1172 + .trainerPic = TRAINER_PIC_TUBER_M, + .encounterMusic_gender = +#line 1174 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 1175 .doubleBattle = FALSE, +#line 1176 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ricky5), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1178 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1180 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 1179 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1181 + MOVE_SAND_ATTACK, + MOVE_PIN_MISSILE, + MOVE_TAIL_WHIP, + MOVE_SURF, + }, + }, + }, }, - +#line 1186 [TRAINER_RANDALL] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_M, +#line 1187 .trainerName = _("RANDALL"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 1188 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 1189 + .trainerPic = TRAINER_PIC_COOLTRAINER_M, + .encounterMusic_gender = +#line 1191 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1192 + .items = { ITEM_HYPER_POTION }, +#line 1193 .doubleBattle = FALSE, +#line 1194 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Randall), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1196 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1198 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 1197 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1199 + MOVE_QUICK_ATTACK, + MOVE_AGILITY, + MOVE_WING_ATTACK, + }, + }, + }, }, - +#line 1203 [TRAINER_PARKER] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_M, +#line 1204 .trainerName = _("PARKER"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 1205 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 1206 + .trainerPic = TRAINER_PIC_COOLTRAINER_M, + .encounterMusic_gender = +#line 1208 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1209 + .items = { ITEM_HYPER_POTION }, +#line 1210 .doubleBattle = FALSE, +#line 1211 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Parker), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1213 + .species = SPECIES_SPINDA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1215 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 1214 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1216 + MOVE_TEETER_DANCE, + MOVE_DIZZY_PUNCH, + MOVE_FOCUS_PUNCH, + }, + }, + }, }, - +#line 1220 [TRAINER_GEORGE] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_M, +#line 1221 .trainerName = _("GEORGE"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 1222 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 1223 + .trainerPic = TRAINER_PIC_COOLTRAINER_M, + .encounterMusic_gender = +#line 1225 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1226 + .items = { ITEM_HYPER_POTION }, +#line 1227 .doubleBattle = FALSE, +#line 1228 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_George), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1230 + .species = SPECIES_SLAKOTH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1230 + .heldItem = ITEM_SITRUS_BERRY, +#line 1232 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 1231 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1233 + MOVE_SLACK_OFF, + MOVE_COUNTER, + MOVE_SHADOW_BALL, + }, + }, + }, }, - +#line 1237 [TRAINER_BERKE] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_M, +#line 1238 .trainerName = _("BERKE"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 1239 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 1240 + .trainerPic = TRAINER_PIC_COOLTRAINER_M, + .encounterMusic_gender = +#line 1242 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1243 + .items = { ITEM_HYPER_POTION }, +#line 1244 .doubleBattle = FALSE, +#line 1245 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Berke), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1247 + .species = SPECIES_VIGOROTH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1249 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 1248 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1250 + MOVE_FOCUS_ENERGY, + MOVE_SLASH, + }, + }, + }, }, - +#line 1253 [TRAINER_BRAXTON] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_M, +#line 1254 .trainerName = _("BRAXTON"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 1255 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 1256 + .trainerPic = TRAINER_PIC_COOLTRAINER_M, + .encounterMusic_gender = +#line 1258 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1259 + .items = { ITEM_HYPER_POTION }, +#line 1260 .doubleBattle = FALSE, +#line 1261 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Braxton), + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 1263 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1265 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1264 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1266 + MOVE_FOCUS_ENERGY, + MOVE_QUICK_ATTACK, + MOVE_WING_ATTACK, + MOVE_ENDEAVOR, + }, + }, + { +#line 1271 + .species = SPECIES_TRAPINCH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1273 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1272 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1274 + MOVE_BITE, + MOVE_DIG, + MOVE_FEINT_ATTACK, + MOVE_SAND_TOMB, + }, + }, + { +#line 1279 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1281 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1280 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1282 + MOVE_ROLLOUT, + MOVE_WHIRLPOOL, + MOVE_ASTONISH, + MOVE_WATER_PULSE, + }, + }, + { +#line 1287 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1289 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1288 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1290 + MOVE_THUNDERBOLT, + MOVE_SUPERSONIC, + MOVE_THUNDER_WAVE, + MOVE_SONIC_BOOM, + }, + }, + { +#line 1295 + .species = SPECIES_SHIFTRY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1297 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1296 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1298 + MOVE_GIGA_DRAIN, + MOVE_FEINT_ATTACK, + MOVE_DOUBLE_TEAM, + MOVE_SWAGGER, + }, + }, + }, }, - +#line 1303 [TRAINER_VINCENT] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_M, +#line 1304 .trainerName = _("VINCENT"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 1305 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 1306 + .trainerPic = TRAINER_PIC_COOLTRAINER_M, + .encounterMusic_gender = +#line 1308 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1309 + .items = { ITEM_FULL_RESTORE }, +#line 1310 .doubleBattle = FALSE, +#line 1311 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Vincent), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 1313 + .species = SPECIES_SABLEYE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1315 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1314 + .lvl = 44, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1317 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1319 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1318 + .lvl = 44, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1321 + .species = SPECIES_SHARPEDO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1323 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1322 + .lvl = 44, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1325 [TRAINER_LEROY] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_M, +#line 1326 .trainerName = _("LEROY"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 1327 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 1328 + .trainerPic = TRAINER_PIC_COOLTRAINER_M, + .encounterMusic_gender = +#line 1330 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1331 + .items = { ITEM_FULL_RESTORE }, +#line 1332 .doubleBattle = FALSE, +#line 1333 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Leroy), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 1335 + .species = SPECIES_MAWILE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1337 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1336 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1339 + .species = SPECIES_STARMIE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1341 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1340 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1343 [TRAINER_WILTON_1] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_M, +#line 1344 .trainerName = _("WILTON"), - .items = {ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 1345 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 1346 + .trainerPic = TRAINER_PIC_COOLTRAINER_M, + .encounterMusic_gender = +#line 1348 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1349 + .items = { ITEM_SUPER_POTION }, +#line 1350 .doubleBattle = FALSE, +#line 1351 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Wilton1), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 1353 + .species = SPECIES_ELECTRIKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1355 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1354 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1357 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1359 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1358 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1361 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1363 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1362 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1365 [TRAINER_EDGAR] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_M, +#line 1366 .trainerName = _("EDGAR"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 1367 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 1368 + .trainerPic = TRAINER_PIC_COOLTRAINER_M, + .encounterMusic_gender = +#line 1370 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1371 + .items = { ITEM_FULL_RESTORE }, +#line 1372 .doubleBattle = FALSE, +#line 1373 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Edgar), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 1375 + .species = SPECIES_CACTURNE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1377 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1376 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1379 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1381 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1380 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1383 [TRAINER_ALBERT] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_M, +#line 1384 .trainerName = _("ALBERT"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 1385 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 1386 + .trainerPic = TRAINER_PIC_COOLTRAINER_M, + .encounterMusic_gender = +#line 1388 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1389 + .items = { ITEM_FULL_RESTORE }, +#line 1390 .doubleBattle = FALSE, +#line 1391 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Albert), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 1393 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1395 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1394 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1397 + .species = SPECIES_MUK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1399 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1398 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1401 [TRAINER_SAMUEL] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_M, +#line 1402 .trainerName = _("SAMUEL"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 1403 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 1404 + .trainerPic = TRAINER_PIC_COOLTRAINER_M, + .encounterMusic_gender = +#line 1406 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1407 + .items = { ITEM_FULL_RESTORE }, +#line 1408 .doubleBattle = FALSE, +#line 1409 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Samuel), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 1411 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1413 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1412 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1415 + .species = SPECIES_MAWILE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1417 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1416 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1419 + .species = SPECIES_KADABRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1421 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1420 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1423 [TRAINER_VITO] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_M, +#line 1424 .trainerName = _("VITO"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 1425 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 1426 + .trainerPic = TRAINER_PIC_COOLTRAINER_M, + .encounterMusic_gender = +#line 1428 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1429 + .items = { ITEM_FULL_RESTORE }, +#line 1430 .doubleBattle = FALSE, +#line 1431 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Vito), + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 1433 + .species = SPECIES_DODRIO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1435 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1434 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1437 + .species = SPECIES_KADABRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1439 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1438 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1441 + .species = SPECIES_ELECTRODE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1443 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1442 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1445 + .species = SPECIES_SHIFTRY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1447 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1446 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1449 [TRAINER_OWEN] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_M, +#line 1450 .trainerName = _("OWEN"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 1451 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 1452 + .trainerPic = TRAINER_PIC_COOLTRAINER_M, + .encounterMusic_gender = +#line 1454 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1455 + .items = { ITEM_FULL_RESTORE }, +#line 1456 .doubleBattle = FALSE, +#line 1457 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Owen), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 1459 + .species = SPECIES_KECLEON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1461 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1460 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1463 + .species = SPECIES_GRAVELER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1465 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1464 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1467 + .species = SPECIES_WAILORD, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1469 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1468 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1471 [TRAINER_WILTON_2] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_M, +#line 1472 .trainerName = _("WILTON"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 1473 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 1474 + .trainerPic = TRAINER_PIC_COOLTRAINER_M, + .encounterMusic_gender = +#line 1476 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1477 + .items = { ITEM_HYPER_POTION }, +#line 1478 .doubleBattle = FALSE, +#line 1479 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Wilton2), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 1481 + .species = SPECIES_ELECTRIKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1483 + .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), +#line 1482 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1485 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1487 + .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), +#line 1486 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1489 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1491 + .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), +#line 1490 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1493 [TRAINER_WILTON_3] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_M, +#line 1494 .trainerName = _("WILTON"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 1495 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 1496 + .trainerPic = TRAINER_PIC_COOLTRAINER_M, + .encounterMusic_gender = +#line 1498 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1499 + .items = { ITEM_HYPER_POTION }, +#line 1500 .doubleBattle = FALSE, +#line 1501 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Wilton3), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 1503 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1505 + .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), +#line 1504 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1507 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1509 + .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), +#line 1508 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1511 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1513 + .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), +#line 1512 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1515 [TRAINER_WILTON_4] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_M, +#line 1516 .trainerName = _("WILTON"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 1517 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 1518 + .trainerPic = TRAINER_PIC_COOLTRAINER_M, + .encounterMusic_gender = +#line 1520 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1521 + .items = { ITEM_FULL_RESTORE }, +#line 1522 .doubleBattle = FALSE, +#line 1523 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Wilton4), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 1525 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1527 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 1526 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1529 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1531 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 1530 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1533 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1535 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 1534 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1537 [TRAINER_WILTON_5] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_M, +#line 1538 .trainerName = _("WILTON"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 1539 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 1540 + .trainerPic = TRAINER_PIC_COOLTRAINER_M, + .encounterMusic_gender = +#line 1542 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1543 + .items = { ITEM_FULL_RESTORE }, +#line 1544 .doubleBattle = FALSE, +#line 1545 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Wilton5), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 1547 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1549 + .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), +#line 1548 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1551 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1553 + .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), +#line 1552 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1555 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1557 + .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), +#line 1556 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1559 [TRAINER_WARREN] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_M, +#line 1560 .trainerName = _("WARREN"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 1561 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 1562 + .trainerPic = TRAINER_PIC_COOLTRAINER_M, + .encounterMusic_gender = +#line 1564 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1565 + .items = { ITEM_FULL_RESTORE }, +#line 1566 .doubleBattle = FALSE, +#line 1567 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Warren), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 1569 + .species = SPECIES_GRAVELER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1571 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1570 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1573 + .species = SPECIES_LUDICOLO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1575 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1574 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1577 [TRAINER_MARY] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_F, +#line 1578 .trainerName = _("MARY"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 1579 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 1580 + .trainerPic = TRAINER_PIC_COOLTRAINER_F, + .encounterMusic_gender = +#line 1581 +F_TRAINER_FEMALE | +#line 1582 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1583 + .items = { ITEM_HYPER_POTION }, +#line 1584 .doubleBattle = FALSE, +#line 1585 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Mary), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1587 + .species = SPECIES_DELCATTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1589 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 1588 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1590 + MOVE_FEINT_ATTACK, + MOVE_SHOCK_WAVE, + }, + }, + }, }, - +#line 1593 [TRAINER_ALEXIA] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_F, +#line 1594 .trainerName = _("ALEXIA"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 1595 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 1596 + .trainerPic = TRAINER_PIC_COOLTRAINER_F, + .encounterMusic_gender = +#line 1597 +F_TRAINER_FEMALE | +#line 1598 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1599 + .items = { ITEM_HYPER_POTION }, +#line 1600 .doubleBattle = FALSE, +#line 1601 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Alexia), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1603 + .species = SPECIES_WIGGLYTUFF, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1605 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 1604 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1606 + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_SHADOW_BALL, + }, + }, + }, }, - +#line 1610 [TRAINER_JODY] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_F, +#line 1611 .trainerName = _("JODY"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 1612 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 1613 + .trainerPic = TRAINER_PIC_COOLTRAINER_F, + .encounterMusic_gender = +#line 1614 +F_TRAINER_FEMALE | +#line 1615 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1616 + .items = { ITEM_HYPER_POTION }, +#line 1617 .doubleBattle = FALSE, +#line 1618 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SETUP_FIRST_TURN, - .party = TRAINER_PARTY(sParty_Jody), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1620 + .species = SPECIES_ZANGOOSE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1622 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 1621 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1623 + MOVE_SWORDS_DANCE, + MOVE_SLASH, + }, + }, + }, }, - +#line 1626 [TRAINER_WENDY] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_F, +#line 1627 .trainerName = _("WENDY"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 1628 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 1629 + .trainerPic = TRAINER_PIC_COOLTRAINER_F, + .encounterMusic_gender = +#line 1630 +F_TRAINER_FEMALE | +#line 1631 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1632 + .items = { ITEM_FULL_RESTORE }, +#line 1633 .doubleBattle = FALSE, +#line 1634 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SETUP_FIRST_TURN, - .party = TRAINER_PARTY(sParty_Wendy), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 1636 + .species = SPECIES_MAWILE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1638 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1637 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1639 + MOVE_BATON_PASS, + MOVE_FEINT_ATTACK, + MOVE_FAKE_TEARS, + MOVE_BITE, + }, + }, + { +#line 1644 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1646 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1645 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1647 + MOVE_MEGA_DRAIN, + MOVE_MAGICAL_LEAF, + MOVE_GRASS_WHISTLE, + MOVE_LEECH_SEED, + }, + }, + { +#line 1652 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1654 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1653 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1655 + MOVE_FLY, + MOVE_WATER_GUN, + MOVE_MIST, + MOVE_PROTECT, + }, + }, + }, }, - +#line 1660 [TRAINER_KEIRA] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_F, +#line 1661 .trainerName = _("KEIRA"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 1662 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 1663 + .trainerPic = TRAINER_PIC_COOLTRAINER_F, + .encounterMusic_gender = +#line 1664 +F_TRAINER_FEMALE | +#line 1665 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1666 + .items = { ITEM_FULL_RESTORE }, +#line 1667 .doubleBattle = FALSE, +#line 1668 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SETUP_FIRST_TURN, - .party = TRAINER_PARTY(sParty_Keira), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 1670 + .species = SPECIES_LAIRON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1672 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1671 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1674 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1676 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1675 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1678 [TRAINER_BROOKE_1] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_F, +#line 1679 .trainerName = _("BROOKE"), - .items = {ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 1680 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 1681 + .trainerPic = TRAINER_PIC_COOLTRAINER_F, + .encounterMusic_gender = +#line 1682 +F_TRAINER_FEMALE | +#line 1683 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1684 + .items = { ITEM_SUPER_POTION }, +#line 1685 .doubleBattle = FALSE, +#line 1686 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Brooke1), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 1688 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1690 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1689 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1692 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1694 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1693 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1696 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1698 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1697 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1700 [TRAINER_JENNIFER] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_F, +#line 1701 .trainerName = _("JENNIFER"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 1702 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 1703 + .trainerPic = TRAINER_PIC_COOLTRAINER_F, + .encounterMusic_gender = +#line 1704 +F_TRAINER_FEMALE | +#line 1705 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1706 + .items = { ITEM_FULL_RESTORE }, +#line 1707 .doubleBattle = FALSE, +#line 1708 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Jennifer), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1710 + .species = SPECIES_SABLEYE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1712 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 1711 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1714 [TRAINER_HOPE] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_F, +#line 1715 .trainerName = _("HOPE"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 1716 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 1717 + .trainerPic = TRAINER_PIC_COOLTRAINER_F, + .encounterMusic_gender = +#line 1718 +F_TRAINER_FEMALE | +#line 1719 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1720 + .items = { ITEM_FULL_RESTORE }, +#line 1721 .doubleBattle = FALSE, +#line 1722 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Hope), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1724 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1726 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1725 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1728 [TRAINER_SHANNON] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_F, +#line 1729 .trainerName = _("SHANNON"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 1730 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 1731 + .trainerPic = TRAINER_PIC_COOLTRAINER_F, + .encounterMusic_gender = +#line 1732 +F_TRAINER_FEMALE | +#line 1733 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1734 + .items = { ITEM_FULL_RESTORE }, +#line 1735 .doubleBattle = FALSE, +#line 1736 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Shannon), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1738 + .species = SPECIES_CLAYDOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1740 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1739 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1742 [TRAINER_MICHELLE] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_F, +#line 1743 .trainerName = _("MICHELLE"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 1744 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 1745 + .trainerPic = TRAINER_PIC_COOLTRAINER_F, + .encounterMusic_gender = +#line 1746 +F_TRAINER_FEMALE | +#line 1747 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1748 + .items = { ITEM_FULL_RESTORE }, +#line 1749 .doubleBattle = FALSE, +#line 1750 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Michelle), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 1752 + .species = SPECIES_TORKOAL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1754 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1753 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1756 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1758 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1757 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1760 + .species = SPECIES_LUDICOLO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1762 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1761 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1764 [TRAINER_CAROLINE] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_F, +#line 1765 .trainerName = _("CAROLINE"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 1766 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 1767 + .trainerPic = TRAINER_PIC_COOLTRAINER_F, + .encounterMusic_gender = +#line 1768 +F_TRAINER_FEMALE | +#line 1769 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1770 + .items = { ITEM_FULL_RESTORE }, +#line 1771 .doubleBattle = FALSE, +#line 1772 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Caroline), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 1774 + .species = SPECIES_SKARMORY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1776 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1775 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1778 + .species = SPECIES_SABLEYE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1780 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1779 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1782 [TRAINER_JULIE] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_F, +#line 1783 .trainerName = _("JULIE"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 1784 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 1785 + .trainerPic = TRAINER_PIC_COOLTRAINER_F, + .encounterMusic_gender = +#line 1786 +F_TRAINER_FEMALE | +#line 1787 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1788 + .items = { ITEM_FULL_RESTORE }, +#line 1789 .doubleBattle = FALSE, +#line 1790 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Julie), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 1792 + .species = SPECIES_SANDSLASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1794 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1793 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1796 + .species = SPECIES_NINETALES, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1798 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1797 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1800 + .species = SPECIES_TROPIUS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1802 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1801 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1804 [TRAINER_BROOKE_2] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_F, +#line 1805 .trainerName = _("BROOKE"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 1806 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 1807 + .trainerPic = TRAINER_PIC_COOLTRAINER_F, + .encounterMusic_gender = +#line 1808 +F_TRAINER_FEMALE | +#line 1809 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1810 + .items = { ITEM_HYPER_POTION }, +#line 1811 .doubleBattle = FALSE, +#line 1812 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Brooke2), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 1814 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1816 + .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), +#line 1815 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1818 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1820 + .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), +#line 1819 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1822 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1824 + .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), +#line 1823 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1826 [TRAINER_BROOKE_3] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_F, +#line 1827 .trainerName = _("BROOKE"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 1828 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 1829 + .trainerPic = TRAINER_PIC_COOLTRAINER_F, + .encounterMusic_gender = +#line 1830 +F_TRAINER_FEMALE | +#line 1831 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1832 + .items = { ITEM_HYPER_POTION }, +#line 1833 .doubleBattle = FALSE, +#line 1834 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Brooke3), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 1836 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1838 + .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), +#line 1837 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1840 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1842 + .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), +#line 1841 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1844 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1846 + .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), +#line 1845 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1848 [TRAINER_BROOKE_4] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_F, +#line 1849 .trainerName = _("BROOKE"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 1850 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 1851 + .trainerPic = TRAINER_PIC_COOLTRAINER_F, + .encounterMusic_gender = +#line 1852 +F_TRAINER_FEMALE | +#line 1853 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1854 + .items = { ITEM_FULL_RESTORE }, +#line 1855 .doubleBattle = FALSE, +#line 1856 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Brooke4), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 1858 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1860 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 1859 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1862 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1864 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 1863 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1866 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1868 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 1867 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1870 [TRAINER_BROOKE_5] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_F, +#line 1871 .trainerName = _("BROOKE"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 1872 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 1873 + .trainerPic = TRAINER_PIC_COOLTRAINER_F, + .encounterMusic_gender = +#line 1874 +F_TRAINER_FEMALE | +#line 1875 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1876 + .items = { ITEM_FULL_RESTORE }, +#line 1877 .doubleBattle = FALSE, +#line 1878 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Brooke5), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 1880 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1882 + .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), +#line 1881 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1884 + .species = SPECIES_CAMERUPT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1886 + .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), +#line 1885 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1888 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1890 + .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), +#line 1889 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1892 [TRAINER_PATRICIA] = { - .trainerClass = TRAINER_CLASS_HEX_MANIAC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_HEX_MANIAC, +#line 1893 .trainerName = _("PATRICIA"), - .items = {}, +#line 1894 + .trainerClass = TRAINER_CLASS_HEX_MANIAC, +#line 1895 + .trainerPic = TRAINER_PIC_HEX_MANIAC, + .encounterMusic_gender = +#line 1896 +F_TRAINER_FEMALE | +#line 1897 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 1898 .doubleBattle = FALSE, +#line 1899 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Patricia), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 1901 + .species = SPECIES_BANETTE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1903 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 1902 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1905 + .species = SPECIES_LUNATONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1907 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 1906 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1909 [TRAINER_KINDRA] = { - .trainerClass = TRAINER_CLASS_HEX_MANIAC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_HEX_MANIAC, +#line 1910 .trainerName = _("KINDRA"), - .items = {}, +#line 1911 + .trainerClass = TRAINER_CLASS_HEX_MANIAC, +#line 1912 + .trainerPic = TRAINER_PIC_HEX_MANIAC, + .encounterMusic_gender = +#line 1913 +F_TRAINER_FEMALE | +#line 1914 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 1915 .doubleBattle = FALSE, +#line 1916 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Kindra), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 1918 + .species = SPECIES_DUSKULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1920 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 1919 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1922 + .species = SPECIES_SHUPPET, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1924 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 1923 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1926 [TRAINER_TAMMY] = { - .trainerClass = TRAINER_CLASS_HEX_MANIAC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_HEX_MANIAC, +#line 1927 .trainerName = _("TAMMY"), - .items = {}, +#line 1928 + .trainerClass = TRAINER_CLASS_HEX_MANIAC, +#line 1929 + .trainerPic = TRAINER_PIC_HEX_MANIAC, + .encounterMusic_gender = +#line 1930 +F_TRAINER_FEMALE | +#line 1931 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 1932 .doubleBattle = FALSE, +#line 1933 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Tammy), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 1935 + .species = SPECIES_DUSKULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1937 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 1936 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1939 + .species = SPECIES_SHUPPET, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1941 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 1940 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1943 [TRAINER_VALERIE_1] = { - .trainerClass = TRAINER_CLASS_HEX_MANIAC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_HEX_MANIAC, +#line 1944 .trainerName = _("VALERIE"), - .items = {}, +#line 1945 + .trainerClass = TRAINER_CLASS_HEX_MANIAC, +#line 1946 + .trainerPic = TRAINER_PIC_HEX_MANIAC, + .encounterMusic_gender = +#line 1947 +F_TRAINER_FEMALE | +#line 1948 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 1949 .doubleBattle = FALSE, +#line 1950 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Valerie1), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1952 + .species = SPECIES_SABLEYE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1954 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 1953 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1956 [TRAINER_TASHA] = { - .trainerClass = TRAINER_CLASS_HEX_MANIAC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_HEX_MANIAC, +#line 1957 .trainerName = _("TASHA"), - .items = {}, +#line 1958 + .trainerClass = TRAINER_CLASS_HEX_MANIAC, +#line 1959 + .trainerPic = TRAINER_PIC_HEX_MANIAC, + .encounterMusic_gender = +#line 1960 +F_TRAINER_FEMALE | +#line 1961 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 1962 .doubleBattle = FALSE, +#line 1963 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Tasha), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1965 + .species = SPECIES_SHUPPET, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1967 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 1966 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1969 [TRAINER_VALERIE_2] = { - .trainerClass = TRAINER_CLASS_HEX_MANIAC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_HEX_MANIAC, +#line 1970 .trainerName = _("VALERIE"), - .items = {}, +#line 1971 + .trainerClass = TRAINER_CLASS_HEX_MANIAC, +#line 1972 + .trainerPic = TRAINER_PIC_HEX_MANIAC, + .encounterMusic_gender = +#line 1973 +F_TRAINER_FEMALE | +#line 1974 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 1975 .doubleBattle = FALSE, +#line 1976 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Valerie2), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 1978 + .species = SPECIES_SABLEYE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1980 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 1979 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1982 + .species = SPECIES_SPOINK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1984 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 1983 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 1986 [TRAINER_VALERIE_3] = { - .trainerClass = TRAINER_CLASS_HEX_MANIAC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_HEX_MANIAC, +#line 1987 .trainerName = _("VALERIE"), - .items = {}, +#line 1988 + .trainerClass = TRAINER_CLASS_HEX_MANIAC, +#line 1989 + .trainerPic = TRAINER_PIC_HEX_MANIAC, + .encounterMusic_gender = +#line 1990 +F_TRAINER_FEMALE | +#line 1991 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 1992 .doubleBattle = FALSE, +#line 1993 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Valerie3), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 1995 + .species = SPECIES_SPOINK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1997 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 1996 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1999 + .species = SPECIES_SABLEYE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2001 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 2000 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2003 [TRAINER_VALERIE_4] = { - .trainerClass = TRAINER_CLASS_HEX_MANIAC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_HEX_MANIAC, +#line 2004 .trainerName = _("VALERIE"), - .items = {}, +#line 2005 + .trainerClass = TRAINER_CLASS_HEX_MANIAC, +#line 2006 + .trainerPic = TRAINER_PIC_HEX_MANIAC, + .encounterMusic_gender = +#line 2007 +F_TRAINER_FEMALE | +#line 2008 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 2009 .doubleBattle = FALSE, +#line 2010 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Valerie4), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2012 + .species = SPECIES_SPOINK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2014 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 2013 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2016 + .species = SPECIES_SABLEYE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2018 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 2017 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2020 [TRAINER_VALERIE_5] = { - .trainerClass = TRAINER_CLASS_HEX_MANIAC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_HEX_MANIAC, +#line 2021 .trainerName = _("VALERIE"), - .items = {}, +#line 2022 + .trainerClass = TRAINER_CLASS_HEX_MANIAC, +#line 2023 + .trainerPic = TRAINER_PIC_HEX_MANIAC, + .encounterMusic_gender = +#line 2024 +F_TRAINER_FEMALE | +#line 2025 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 2026 .doubleBattle = FALSE, +#line 2027 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Valerie5), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 2029 + .species = SPECIES_DUSKULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2031 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 2030 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2033 + .species = SPECIES_SABLEYE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2035 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 2034 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2037 + .species = SPECIES_GRUMPIG, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2039 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 2038 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2041 [TRAINER_CINDY_1] = { - .trainerClass = TRAINER_CLASS_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LADY, +#line 2042 .trainerName = _("CINDY"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 2043 + .trainerClass = TRAINER_CLASS_LADY, +#line 2044 + .trainerPic = TRAINER_PIC_LADY, + .encounterMusic_gender = +#line 2045 +F_TRAINER_FEMALE | +#line 2046 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2047 + .items = { ITEM_FULL_RESTORE }, +#line 2048 .doubleBattle = FALSE, +#line 2049 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cindy1), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2051 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2051 + .heldItem = ITEM_NUGGET, +#line 2053 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2052 + .lvl = 7, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2055 [TRAINER_DAPHNE] = { - .trainerClass = TRAINER_CLASS_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LADY, +#line 2056 .trainerName = _("DAPHNE"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 2057 + .trainerClass = TRAINER_CLASS_LADY, +#line 2058 + .trainerPic = TRAINER_PIC_LADY, + .encounterMusic_gender = +#line 2059 +F_TRAINER_FEMALE | +#line 2060 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2061 + .items = { ITEM_FULL_RESTORE }, +#line 2062 .doubleBattle = FALSE, +#line 2063 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Daphne), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2065 + .species = SPECIES_LUVDISC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2065 + .heldItem = ITEM_NUGGET, +#line 2067 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 2066 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 2068 + MOVE_ATTRACT, + MOVE_SWEET_KISS, + MOVE_FLAIL, + MOVE_WATER_PULSE, + }, + }, + { +#line 2073 + .species = SPECIES_LUVDISC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2073 + .heldItem = ITEM_NUGGET, +#line 2075 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 2074 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 2076 + MOVE_ATTRACT, + MOVE_SAFEGUARD, + MOVE_TAKE_DOWN, + MOVE_WATER_PULSE, + }, + }, + }, }, - +#line 2081 [TRAINER_GRUNT_SPACE_CENTER_2] = { - .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, - .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, +#line 2082 .trainerName = _("GRUNT"), - .items = {}, +#line 2083 + .trainerClass = TRAINER_CLASS_TEAM_MAGMA, +#line 2084 + .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, + .encounterMusic_gender = +#line 2086 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 2087 .doubleBattle = FALSE, +#line 2088 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntSpaceCenter2), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 2090 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2092 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2091 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2094 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2096 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2095 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2098 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2100 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2099 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2102 [TRAINER_CINDY_2] = { - .trainerClass = TRAINER_CLASS_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LADY, +#line 2103 .trainerName = _("CINDY"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 2104 + .trainerClass = TRAINER_CLASS_LADY, +#line 2105 + .trainerPic = TRAINER_PIC_LADY, + .encounterMusic_gender = +#line 2106 +F_TRAINER_FEMALE | +#line 2107 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2108 + .items = { ITEM_FULL_RESTORE }, +#line 2109 .doubleBattle = FALSE, +#line 2110 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cindy2), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2112 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2112 + .heldItem = ITEM_NUGGET, +#line 2114 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2113 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 2115 + MOVE_TACKLE, + MOVE_TAIL_WHIP, + }, + }, + }, }, - +#line 2118 [TRAINER_BRIANNA] = { - .trainerClass = TRAINER_CLASS_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LADY, +#line 2119 .trainerName = _("BRIANNA"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 2120 + .trainerClass = TRAINER_CLASS_LADY, +#line 2121 + .trainerPic = TRAINER_PIC_LADY, + .encounterMusic_gender = +#line 2122 +F_TRAINER_FEMALE | +#line 2123 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2124 + .items = { ITEM_FULL_RESTORE }, +#line 2125 .doubleBattle = FALSE, +#line 2126 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Brianna), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2128 + .species = SPECIES_SEAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2128 + .heldItem = ITEM_NUGGET, +#line 2130 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 2129 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2132 [TRAINER_NAOMI] = { - .trainerClass = TRAINER_CLASS_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LADY, +#line 2133 .trainerName = _("NAOMI"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 2134 + .trainerClass = TRAINER_CLASS_LADY, +#line 2135 + .trainerPic = TRAINER_PIC_LADY, + .encounterMusic_gender = +#line 2136 +F_TRAINER_FEMALE | +#line 2137 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2138 + .items = { ITEM_FULL_RESTORE }, +#line 2139 .doubleBattle = FALSE, +#line 2140 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Naomi), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2142 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2142 + .heldItem = ITEM_NUGGET, +#line 2144 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 2143 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2146 [TRAINER_CINDY_3] = { - .trainerClass = TRAINER_CLASS_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LADY, +#line 2147 .trainerName = _("CINDY"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 2148 + .trainerClass = TRAINER_CLASS_LADY, +#line 2149 + .trainerPic = TRAINER_PIC_LADY, + .encounterMusic_gender = +#line 2150 +F_TRAINER_FEMALE | +#line 2151 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2152 + .items = { ITEM_FULL_RESTORE }, +#line 2153 .doubleBattle = FALSE, +#line 2154 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cindy3), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2156 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2156 + .heldItem = ITEM_NUGGET, +#line 2158 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 2157 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2160 [TRAINER_CINDY_4] = { - .trainerClass = TRAINER_CLASS_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LADY, +#line 2161 .trainerName = _("CINDY"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 2162 + .trainerClass = TRAINER_CLASS_LADY, +#line 2163 + .trainerPic = TRAINER_PIC_LADY, + .encounterMusic_gender = +#line 2164 +F_TRAINER_FEMALE | +#line 2165 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2166 + .items = { ITEM_FULL_RESTORE }, +#line 2167 .doubleBattle = FALSE, +#line 2168 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cindy4), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2170 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2170 + .heldItem = ITEM_NUGGET, +#line 2172 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 2171 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2174 [TRAINER_CINDY_5] = { - .trainerClass = TRAINER_CLASS_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LADY, +#line 2175 .trainerName = _("CINDY"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 2176 + .trainerClass = TRAINER_CLASS_LADY, +#line 2177 + .trainerPic = TRAINER_PIC_LADY, + .encounterMusic_gender = +#line 2178 +F_TRAINER_FEMALE | +#line 2179 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2180 + .items = { ITEM_FULL_RESTORE }, +#line 2181 .doubleBattle = FALSE, +#line 2182 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cindy5), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2184 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2184 + .heldItem = ITEM_NUGGET, +#line 2186 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 2185 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2188 [TRAINER_CINDY_6] = { - .trainerClass = TRAINER_CLASS_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LADY, +#line 2189 .trainerName = _("CINDY"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 2190 + .trainerClass = TRAINER_CLASS_LADY, +#line 2191 + .trainerPic = TRAINER_PIC_LADY, + .encounterMusic_gender = +#line 2192 +F_TRAINER_FEMALE | +#line 2193 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2194 + .items = { ITEM_FULL_RESTORE }, +#line 2195 .doubleBattle = FALSE, +#line 2196 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cindy6), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2198 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2198 + .heldItem = ITEM_NUGGET, +#line 2200 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 2199 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 2201 + MOVE_FURY_SWIPES, + MOVE_MUD_SPORT, + MOVE_ODOR_SLEUTH, + MOVE_SAND_ATTACK, + }, + }, + }, }, - +#line 2206 [TRAINER_MELISSA] = { - .trainerClass = TRAINER_CLASS_BEAUTY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_BEAUTY, +#line 2207 .trainerName = _("MELISSA"), - .items = {}, +#line 2208 + .trainerClass = TRAINER_CLASS_BEAUTY, +#line 2209 + .trainerPic = TRAINER_PIC_BEAUTY, + .encounterMusic_gender = +#line 2210 +F_TRAINER_FEMALE | +#line 2211 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2212 .doubleBattle = FALSE, +#line 2213 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Melissa), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2215 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2217 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2216 + .lvl = 21, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2219 [TRAINER_SHEILA] = { - .trainerClass = TRAINER_CLASS_BEAUTY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_BEAUTY, +#line 2220 .trainerName = _("SHEILA"), - .items = {}, +#line 2221 + .trainerClass = TRAINER_CLASS_BEAUTY, +#line 2222 + .trainerPic = TRAINER_PIC_BEAUTY, + .encounterMusic_gender = +#line 2223 +F_TRAINER_FEMALE | +#line 2224 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2225 .doubleBattle = FALSE, +#line 2226 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Sheila), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2228 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2230 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2229 + .lvl = 21, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2232 [TRAINER_SHIRLEY] = { - .trainerClass = TRAINER_CLASS_BEAUTY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_BEAUTY, +#line 2233 .trainerName = _("SHIRLEY"), - .items = {}, +#line 2234 + .trainerClass = TRAINER_CLASS_BEAUTY, +#line 2235 + .trainerPic = TRAINER_PIC_BEAUTY, + .encounterMusic_gender = +#line 2236 +F_TRAINER_FEMALE | +#line 2237 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2238 .doubleBattle = FALSE, +#line 2239 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Shirley), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2241 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2243 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2242 + .lvl = 21, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2245 [TRAINER_JESSICA_1] = { - .trainerClass = TRAINER_CLASS_BEAUTY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_BEAUTY, +#line 2246 .trainerName = _("JESSICA"), - .items = {}, +#line 2247 + .trainerClass = TRAINER_CLASS_BEAUTY, +#line 2248 + .trainerPic = TRAINER_PIC_BEAUTY, + .encounterMusic_gender = +#line 2249 +F_TRAINER_FEMALE | +#line 2250 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2251 .doubleBattle = FALSE, +#line 2252 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jessica1), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2254 + .species = SPECIES_KECLEON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2256 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2255 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 2257 + MOVE_BIND, + MOVE_LICK, + MOVE_FURY_SWIPES, + MOVE_FEINT_ATTACK, + }, + }, + { +#line 2262 + .species = SPECIES_SEVIPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2264 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2263 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 2265 + MOVE_POISON_TAIL, + MOVE_SCREECH, + MOVE_GLARE, + MOVE_CRUNCH, + }, + }, + }, }, - +#line 2270 [TRAINER_CONNIE] = { - .trainerClass = TRAINER_CLASS_BEAUTY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_BEAUTY, +#line 2271 .trainerName = _("CONNIE"), - .items = {}, +#line 2272 + .trainerClass = TRAINER_CLASS_BEAUTY, +#line 2273 + .trainerPic = TRAINER_PIC_BEAUTY, + .encounterMusic_gender = +#line 2274 +F_TRAINER_FEMALE | +#line 2275 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2276 .doubleBattle = FALSE, +#line 2277 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Connie), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2279 + .species = SPECIES_GOLDEEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2281 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 2280 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2283 [TRAINER_BRIDGET] = { - .trainerClass = TRAINER_CLASS_BEAUTY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_BEAUTY, +#line 2284 .trainerName = _("BRIDGET"), - .items = {}, +#line 2285 + .trainerClass = TRAINER_CLASS_BEAUTY, +#line 2286 + .trainerPic = TRAINER_PIC_BEAUTY, + .encounterMusic_gender = +#line 2287 +F_TRAINER_FEMALE | +#line 2288 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2289 .doubleBattle = FALSE, +#line 2290 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Bridget), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2292 + .species = SPECIES_AZUMARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2294 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 2293 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2296 [TRAINER_OLIVIA] = { - .trainerClass = TRAINER_CLASS_BEAUTY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_BEAUTY, +#line 2297 .trainerName = _("OLIVIA"), - .items = {}, +#line 2298 + .trainerClass = TRAINER_CLASS_BEAUTY, +#line 2299 + .trainerPic = TRAINER_PIC_BEAUTY, + .encounterMusic_gender = +#line 2300 +F_TRAINER_FEMALE | +#line 2301 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2302 .doubleBattle = FALSE, +#line 2303 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Olivia), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 2305 + .species = SPECIES_CLAMPERL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2307 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 2306 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 2308 + MOVE_IRON_DEFENSE, + MOVE_WHIRLPOOL, + MOVE_RAIN_DANCE, + MOVE_WATER_PULSE, + }, + }, + { +#line 2313 + .species = SPECIES_CORPHISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2315 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 2314 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 2316 + MOVE_TAUNT, + MOVE_CRABHAMMER, + MOVE_WATER_PULSE, + }, + }, + { +#line 2320 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2322 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 2321 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 2323 + MOVE_UPROAR, + MOVE_FURY_SWIPES, + MOVE_FAKE_OUT, + MOVE_WATER_PULSE, + }, + }, + }, }, - +#line 2328 [TRAINER_TIFFANY] = { - .trainerClass = TRAINER_CLASS_BEAUTY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_BEAUTY, +#line 2329 .trainerName = _("TIFFANY"), - .items = {}, +#line 2330 + .trainerClass = TRAINER_CLASS_BEAUTY, +#line 2331 + .trainerPic = TRAINER_PIC_BEAUTY, + .encounterMusic_gender = +#line 2332 +F_TRAINER_FEMALE | +#line 2333 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2334 .doubleBattle = FALSE, +#line 2335 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Tiffany), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2337 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2339 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 2338 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2341 + .species = SPECIES_SHARPEDO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2343 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 2342 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2345 [TRAINER_JESSICA_2] = { - .trainerClass = TRAINER_CLASS_BEAUTY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_BEAUTY, +#line 2346 .trainerName = _("JESSICA"), - .items = {}, +#line 2347 + .trainerClass = TRAINER_CLASS_BEAUTY, +#line 2348 + .trainerPic = TRAINER_PIC_BEAUTY, + .encounterMusic_gender = +#line 2349 +F_TRAINER_FEMALE | +#line 2350 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2351 .doubleBattle = FALSE, +#line 2352 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jessica2), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2354 + .species = SPECIES_KECLEON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2356 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 2355 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 2357 + MOVE_BIND, + MOVE_LICK, + MOVE_FURY_SWIPES, + MOVE_FEINT_ATTACK, + }, + }, + { +#line 2362 + .species = SPECIES_SEVIPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2364 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 2363 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 2365 + MOVE_POISON_TAIL, + MOVE_SCREECH, + MOVE_GLARE, + MOVE_CRUNCH, + }, + }, + }, }, - +#line 2370 [TRAINER_JESSICA_3] = { - .trainerClass = TRAINER_CLASS_BEAUTY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_BEAUTY, +#line 2371 .trainerName = _("JESSICA"), - .items = {}, +#line 2372 + .trainerClass = TRAINER_CLASS_BEAUTY, +#line 2373 + .trainerPic = TRAINER_PIC_BEAUTY, + .encounterMusic_gender = +#line 2374 +F_TRAINER_FEMALE | +#line 2375 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2376 .doubleBattle = FALSE, +#line 2377 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jessica3), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2379 + .species = SPECIES_KECLEON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2381 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 2380 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 2382 + MOVE_BIND, + MOVE_LICK, + MOVE_FURY_SWIPES, + MOVE_FEINT_ATTACK, + }, + }, + { +#line 2387 + .species = SPECIES_SEVIPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2389 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 2388 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 2390 + MOVE_POISON_TAIL, + MOVE_SCREECH, + MOVE_GLARE, + MOVE_CRUNCH, + }, + }, + }, }, - +#line 2395 [TRAINER_JESSICA_4] = { - .trainerClass = TRAINER_CLASS_BEAUTY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_BEAUTY, +#line 2396 .trainerName = _("JESSICA"), - .items = {}, +#line 2397 + .trainerClass = TRAINER_CLASS_BEAUTY, +#line 2398 + .trainerPic = TRAINER_PIC_BEAUTY, + .encounterMusic_gender = +#line 2399 +F_TRAINER_FEMALE | +#line 2400 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2401 .doubleBattle = FALSE, +#line 2402 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jessica4), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2404 + .species = SPECIES_KECLEON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2406 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 2405 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 2407 + MOVE_BIND, + MOVE_LICK, + MOVE_FURY_SWIPES, + MOVE_FEINT_ATTACK, + }, + }, + { +#line 2412 + .species = SPECIES_SEVIPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2414 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 2413 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 2415 + MOVE_POISON_TAIL, + MOVE_SCREECH, + MOVE_GLARE, + MOVE_CRUNCH, + }, + }, + }, }, - +#line 2420 [TRAINER_JESSICA_5] = { - .trainerClass = TRAINER_CLASS_BEAUTY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_BEAUTY, +#line 2421 .trainerName = _("JESSICA"), - .items = {}, +#line 2422 + .trainerClass = TRAINER_CLASS_BEAUTY, +#line 2423 + .trainerPic = TRAINER_PIC_BEAUTY, + .encounterMusic_gender = +#line 2424 +F_TRAINER_FEMALE | +#line 2425 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2426 .doubleBattle = FALSE, +#line 2427 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jessica5), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2429 + .species = SPECIES_KECLEON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2431 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 2430 + .lvl = 44, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 2432 + MOVE_BIND, + MOVE_LICK, + MOVE_FURY_SWIPES, + MOVE_FEINT_ATTACK, + }, + }, + { +#line 2437 + .species = SPECIES_SEVIPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2439 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 2438 + .lvl = 44, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 2440 + MOVE_POISON_TAIL, + MOVE_SCREECH, + MOVE_GLARE, + MOVE_CRUNCH, + }, + }, + }, }, - +#line 2445 [TRAINER_WINSTON_1] = { - .trainerClass = TRAINER_CLASS_RICH_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, - .trainerPic = TRAINER_PIC_RICH_BOY, +#line 2446 .trainerName = _("WINSTON"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 2447 + .trainerClass = TRAINER_CLASS_RICH_BOY, +#line 2448 + .trainerPic = TRAINER_PIC_RICH_BOY, + .encounterMusic_gender = +#line 2450 + TRAINER_ENCOUNTER_MUSIC_RICH, +#line 2451 + .items = { ITEM_FULL_RESTORE }, +#line 2452 .doubleBattle = FALSE, +#line 2453 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Winston1), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2455 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2455 + .heldItem = ITEM_NUGGET, +#line 2457 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2456 + .lvl = 7, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2459 [TRAINER_MOLLIE] = { - .trainerClass = TRAINER_CLASS_EXPERT, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_EXPERT_F, +#line 2460 .trainerName = _("MOLLIE"), - .items = {}, +#line 2461 + .trainerClass = TRAINER_CLASS_EXPERT, +#line 2462 + .trainerPic = TRAINER_PIC_EXPERT_F, + .encounterMusic_gender = +#line 2463 +F_TRAINER_FEMALE | +#line 2464 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 2465 .doubleBattle = FALSE, +#line 2466 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Mollie), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2468 + .species = SPECIES_WHISCASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2470 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2469 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2472 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2474 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 2473 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2476 [TRAINER_GARRET] = { - .trainerClass = TRAINER_CLASS_RICH_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, - .trainerPic = TRAINER_PIC_RICH_BOY, +#line 2477 .trainerName = _("GARRET"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 2478 + .trainerClass = TRAINER_CLASS_RICH_BOY, +#line 2479 + .trainerPic = TRAINER_PIC_RICH_BOY, + .encounterMusic_gender = +#line 2481 + TRAINER_ENCOUNTER_MUSIC_RICH, +#line 2482 + .items = { ITEM_FULL_RESTORE }, +#line 2483 .doubleBattle = FALSE, +#line 2484 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Garret), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2486 + .species = SPECIES_AZUMARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2486 + .heldItem = ITEM_NUGGET, +#line 2488 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2487 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2490 [TRAINER_WINSTON_2] = { - .trainerClass = TRAINER_CLASS_RICH_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, - .trainerPic = TRAINER_PIC_RICH_BOY, +#line 2491 .trainerName = _("WINSTON"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 2492 + .trainerClass = TRAINER_CLASS_RICH_BOY, +#line 2493 + .trainerPic = TRAINER_PIC_RICH_BOY, + .encounterMusic_gender = +#line 2495 + TRAINER_ENCOUNTER_MUSIC_RICH, +#line 2496 + .items = { ITEM_FULL_RESTORE }, +#line 2497 .doubleBattle = FALSE, +#line 2498 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Winston2), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2500 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2500 + .heldItem = ITEM_NUGGET, +#line 2502 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2501 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2504 [TRAINER_WINSTON_3] = { - .trainerClass = TRAINER_CLASS_RICH_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, - .trainerPic = TRAINER_PIC_RICH_BOY, +#line 2505 .trainerName = _("WINSTON"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 2506 + .trainerClass = TRAINER_CLASS_RICH_BOY, +#line 2507 + .trainerPic = TRAINER_PIC_RICH_BOY, + .encounterMusic_gender = +#line 2509 + TRAINER_ENCOUNTER_MUSIC_RICH, +#line 2510 + .items = { ITEM_FULL_RESTORE }, +#line 2511 .doubleBattle = FALSE, +#line 2512 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Winston3), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2514 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2514 + .heldItem = ITEM_NUGGET, +#line 2516 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2515 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2518 [TRAINER_WINSTON_4] = { - .trainerClass = TRAINER_CLASS_RICH_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, - .trainerPic = TRAINER_PIC_RICH_BOY, +#line 2519 .trainerName = _("WINSTON"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 2520 + .trainerClass = TRAINER_CLASS_RICH_BOY, +#line 2521 + .trainerPic = TRAINER_PIC_RICH_BOY, + .encounterMusic_gender = +#line 2523 + TRAINER_ENCOUNTER_MUSIC_RICH, +#line 2524 + .items = { ITEM_FULL_RESTORE }, +#line 2525 .doubleBattle = FALSE, +#line 2526 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Winston4), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2528 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2528 + .heldItem = ITEM_NUGGET, +#line 2530 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2529 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2532 [TRAINER_WINSTON_5] = { - .trainerClass = TRAINER_CLASS_RICH_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, - .trainerPic = TRAINER_PIC_RICH_BOY, +#line 2533 .trainerName = _("WINSTON"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 2534 + .trainerClass = TRAINER_CLASS_RICH_BOY, +#line 2535 + .trainerPic = TRAINER_PIC_RICH_BOY, + .encounterMusic_gender = +#line 2537 + TRAINER_ENCOUNTER_MUSIC_RICH, +#line 2538 + .items = { ITEM_FULL_RESTORE }, +#line 2539 .doubleBattle = FALSE, +#line 2540 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Winston5), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2542 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2542 + .heldItem = ITEM_NUGGET, +#line 2544 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2543 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 2545 + MOVE_FURY_SWIPES, + MOVE_MUD_SPORT, + MOVE_ODOR_SLEUTH, + MOVE_SAND_ATTACK, + }, + }, + }, }, - +#line 2550 [TRAINER_STEVE_1] = { - .trainerClass = TRAINER_CLASS_POKEMANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_POKEMANIAC, +#line 2551 .trainerName = _("STEVE"), - .items = {}, +#line 2552 + .trainerClass = TRAINER_CLASS_POKEMANIAC, +#line 2553 + .trainerPic = TRAINER_PIC_POKEMANIAC, + .encounterMusic_gender = +#line 2555 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 2556 .doubleBattle = FALSE, +#line 2557 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Steve1), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2559 + .species = SPECIES_ARON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2561 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2560 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2563 [TRAINER_THALIA_1] = { - .trainerClass = TRAINER_CLASS_BEAUTY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_BEAUTY, +#line 2564 .trainerName = _("THALIA"), - .items = {}, +#line 2565 + .trainerClass = TRAINER_CLASS_BEAUTY, +#line 2566 + .trainerPic = TRAINER_PIC_BEAUTY, + .encounterMusic_gender = +#line 2567 +F_TRAINER_FEMALE | +#line 2568 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2569 .doubleBattle = FALSE, +#line 2570 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Thalia1), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2572 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2574 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2573 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2576 + .species = SPECIES_HORSEA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2578 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2577 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2580 [TRAINER_MARK] = { - .trainerClass = TRAINER_CLASS_POKEMANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_POKEMANIAC, +#line 2581 .trainerName = _("MARK"), - .items = {}, +#line 2582 + .trainerClass = TRAINER_CLASS_POKEMANIAC, +#line 2583 + .trainerPic = TRAINER_PIC_POKEMANIAC, + .encounterMusic_gender = +#line 2585 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 2586 .doubleBattle = FALSE, +#line 2587 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Mark), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2589 + .species = SPECIES_RHYHORN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2591 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2590 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2593 [TRAINER_GRUNT_MT_CHIMNEY_1] = { - .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MAGMA, - .trainerPic = TRAINER_PIC_MAGMA_GRUNT_F, +#line 2594 .trainerName = _("GRUNT"), - .items = {}, +#line 2595 + .trainerClass = TRAINER_CLASS_TEAM_MAGMA, +#line 2596 + .trainerPic = TRAINER_PIC_MAGMA_GRUNT_F, + .encounterMusic_gender = +#line 2597 +F_TRAINER_FEMALE | +#line 2598 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 2599 .doubleBattle = FALSE, +#line 2600 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMtChimney1), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2602 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2604 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2603 + .lvl = 20, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2606 [TRAINER_STEVE_2] = { - .trainerClass = TRAINER_CLASS_POKEMANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_POKEMANIAC, +#line 2607 .trainerName = _("STEVE"), - .items = {}, +#line 2608 + .trainerClass = TRAINER_CLASS_POKEMANIAC, +#line 2609 + .trainerPic = TRAINER_PIC_POKEMANIAC, + .encounterMusic_gender = +#line 2611 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 2612 .doubleBattle = FALSE, +#line 2613 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Steve2), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2615 + .species = SPECIES_LAIRON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2617 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 2616 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2619 [TRAINER_STEVE_3] = { - .trainerClass = TRAINER_CLASS_POKEMANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_POKEMANIAC, +#line 2620 .trainerName = _("STEVE"), - .items = {}, +#line 2621 + .trainerClass = TRAINER_CLASS_POKEMANIAC, +#line 2622 + .trainerPic = TRAINER_PIC_POKEMANIAC, + .encounterMusic_gender = +#line 2624 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 2625 .doubleBattle = FALSE, +#line 2626 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Steve3), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2628 + .species = SPECIES_LAIRON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2630 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 2629 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2632 + .species = SPECIES_RHYHORN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2634 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 2633 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2636 [TRAINER_STEVE_4] = { - .trainerClass = TRAINER_CLASS_POKEMANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_POKEMANIAC, +#line 2637 .trainerName = _("STEVE"), - .items = {}, +#line 2638 + .trainerClass = TRAINER_CLASS_POKEMANIAC, +#line 2639 + .trainerPic = TRAINER_PIC_POKEMANIAC, + .encounterMusic_gender = +#line 2641 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 2642 .doubleBattle = FALSE, +#line 2643 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Steve4), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2645 + .species = SPECIES_LAIRON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2647 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 2646 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2649 + .species = SPECIES_RHYHORN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2651 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 2650 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2653 [TRAINER_STEVE_5] = { - .trainerClass = TRAINER_CLASS_POKEMANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_POKEMANIAC, +#line 2654 .trainerName = _("STEVE"), - .items = {}, +#line 2655 + .trainerClass = TRAINER_CLASS_POKEMANIAC, +#line 2656 + .trainerPic = TRAINER_PIC_POKEMANIAC, + .encounterMusic_gender = +#line 2658 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 2659 .doubleBattle = FALSE, +#line 2660 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Steve5), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2662 + .species = SPECIES_AGGRON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2664 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 2663 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2666 + .species = SPECIES_RHYDON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2668 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 2667 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2670 [TRAINER_LUIS] = { - .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_M, +#line 2671 .trainerName = _("LUIS"), - .items = {}, +#line 2672 + .trainerClass = TRAINER_CLASS_SWIMMER_M, +#line 2673 + .trainerPic = TRAINER_PIC_SWIMMER_M, + .encounterMusic_gender = +#line 2675 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2676 .doubleBattle = FALSE, +#line 2677 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Luis), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2679 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2681 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2680 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2683 [TRAINER_DOMINIK] = { - .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_M, +#line 2684 .trainerName = _("DOMINIK"), - .items = {}, +#line 2685 + .trainerClass = TRAINER_CLASS_SWIMMER_M, +#line 2686 + .trainerPic = TRAINER_PIC_SWIMMER_M, + .encounterMusic_gender = +#line 2688 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2689 .doubleBattle = FALSE, +#line 2690 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dominik), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2692 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2694 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2693 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2696 [TRAINER_DOUGLAS] = { - .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_M, +#line 2697 .trainerName = _("DOUGLAS"), - .items = {}, +#line 2698 + .trainerClass = TRAINER_CLASS_SWIMMER_M, +#line 2699 + .trainerPic = TRAINER_PIC_SWIMMER_M, + .encounterMusic_gender = +#line 2701 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2702 .doubleBattle = FALSE, +#line 2703 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Douglas), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2705 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2707 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 2706 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2709 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2711 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 2710 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2713 [TRAINER_DARRIN] = { - .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_M, +#line 2714 .trainerName = _("DARRIN"), - .items = {}, +#line 2715 + .trainerClass = TRAINER_CLASS_SWIMMER_M, +#line 2716 + .trainerPic = TRAINER_PIC_SWIMMER_M, + .encounterMusic_gender = +#line 2718 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2719 .doubleBattle = FALSE, +#line 2720 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Darrin), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 2722 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2724 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 2723 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2726 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2728 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 2727 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2730 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2732 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 2731 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2734 [TRAINER_TONY_1] = { - .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_M, +#line 2735 .trainerName = _("TONY"), - .items = {}, +#line 2736 + .trainerClass = TRAINER_CLASS_SWIMMER_M, +#line 2737 + .trainerPic = TRAINER_PIC_SWIMMER_M, + .encounterMusic_gender = +#line 2739 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2740 .doubleBattle = FALSE, +#line 2741 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Tony1), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2743 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2745 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2744 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2747 [TRAINER_JEROME] = { - .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_M, +#line 2748 .trainerName = _("JEROME"), - .items = {}, +#line 2749 + .trainerClass = TRAINER_CLASS_SWIMMER_M, +#line 2750 + .trainerPic = TRAINER_PIC_SWIMMER_M, + .encounterMusic_gender = +#line 2752 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2753 .doubleBattle = FALSE, +#line 2754 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jerome), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2756 + .species = SPECIES_TENTACRUEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2758 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2757 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2760 [TRAINER_MATTHEW] = { - .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_M, +#line 2761 .trainerName = _("MATTHEW"), - .items = {}, +#line 2762 + .trainerClass = TRAINER_CLASS_SWIMMER_M, +#line 2763 + .trainerPic = TRAINER_PIC_SWIMMER_M, + .encounterMusic_gender = +#line 2765 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2766 .doubleBattle = FALSE, +#line 2767 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Matthew), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2769 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2771 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2770 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2773 [TRAINER_DAVID] = { - .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_M, +#line 2774 .trainerName = _("DAVID"), - .items = {}, +#line 2775 + .trainerClass = TRAINER_CLASS_SWIMMER_M, +#line 2776 + .trainerPic = TRAINER_PIC_SWIMMER_M, + .encounterMusic_gender = +#line 2778 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2779 .doubleBattle = FALSE, +#line 2780 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_David), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2782 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2784 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2783 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2786 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2788 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2787 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2790 [TRAINER_SPENCER] = { - .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_M, +#line 2791 .trainerName = _("SPENCER"), - .items = {}, +#line 2792 + .trainerClass = TRAINER_CLASS_SWIMMER_M, +#line 2793 + .trainerPic = TRAINER_PIC_SWIMMER_M, + .encounterMusic_gender = +#line 2795 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2796 .doubleBattle = FALSE, +#line 2797 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Spencer), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2799 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2801 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2800 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2803 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2805 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2804 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2807 [TRAINER_ROLAND] = { - .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_M, +#line 2808 .trainerName = _("ROLAND"), - .items = {}, +#line 2809 + .trainerClass = TRAINER_CLASS_SWIMMER_M, +#line 2810 + .trainerPic = TRAINER_PIC_SWIMMER_M, + .encounterMusic_gender = +#line 2812 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2813 .doubleBattle = FALSE, +#line 2814 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Roland), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2816 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2818 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2817 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2820 [TRAINER_NOLEN] = { - .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_M, +#line 2821 .trainerName = _("NOLEN"), - .items = {}, +#line 2822 + .trainerClass = TRAINER_CLASS_SWIMMER_M, +#line 2823 + .trainerPic = TRAINER_PIC_SWIMMER_M, + .encounterMusic_gender = +#line 2825 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2826 .doubleBattle = FALSE, +#line 2827 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Nolen), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2829 + .species = SPECIES_TENTACRUEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2831 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2830 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2833 [TRAINER_STAN] = { - .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_M, +#line 2834 .trainerName = _("STAN"), - .items = {}, +#line 2835 + .trainerClass = TRAINER_CLASS_SWIMMER_M, +#line 2836 + .trainerPic = TRAINER_PIC_SWIMMER_M, + .encounterMusic_gender = +#line 2838 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2839 .doubleBattle = FALSE, +#line 2840 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Stan), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2842 + .species = SPECIES_HORSEA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2844 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2843 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2846 [TRAINER_BARRY] = { - .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_M, +#line 2847 .trainerName = _("BARRY"), - .items = {}, +#line 2848 + .trainerClass = TRAINER_CLASS_SWIMMER_M, +#line 2849 + .trainerPic = TRAINER_PIC_SWIMMER_M, + .encounterMusic_gender = +#line 2851 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2852 .doubleBattle = FALSE, +#line 2853 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Barry), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2855 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2857 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2856 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2859 [TRAINER_DEAN] = { - .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_M, +#line 2860 .trainerName = _("DEAN"), - .items = {}, +#line 2861 + .trainerClass = TRAINER_CLASS_SWIMMER_M, +#line 2862 + .trainerPic = TRAINER_PIC_SWIMMER_M, + .encounterMusic_gender = +#line 2864 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2865 .doubleBattle = FALSE, +#line 2866 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dean), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 2868 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2870 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2869 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2872 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2874 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2873 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2876 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2878 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2877 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2880 [TRAINER_RODNEY] = { - .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_M, +#line 2881 .trainerName = _("RODNEY"), - .items = {}, +#line 2882 + .trainerClass = TRAINER_CLASS_SWIMMER_M, +#line 2883 + .trainerPic = TRAINER_PIC_SWIMMER_M, + .encounterMusic_gender = +#line 2885 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2886 .doubleBattle = FALSE, +#line 2887 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Rodney), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2889 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2891 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2890 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2893 [TRAINER_RICHARD] = { - .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_M, +#line 2894 .trainerName = _("RICHARD"), - .items = {}, +#line 2895 + .trainerClass = TRAINER_CLASS_SWIMMER_M, +#line 2896 + .trainerPic = TRAINER_PIC_SWIMMER_M, + .encounterMusic_gender = +#line 2898 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2899 .doubleBattle = FALSE, +#line 2900 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Richard), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2902 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2904 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2903 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2906 [TRAINER_HERMAN] = { - .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_M, +#line 2907 .trainerName = _("HERMAN"), - .items = {}, +#line 2908 + .trainerClass = TRAINER_CLASS_SWIMMER_M, +#line 2909 + .trainerPic = TRAINER_PIC_SWIMMER_M, + .encounterMusic_gender = +#line 2911 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2912 .doubleBattle = FALSE, +#line 2913 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Herman), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2915 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2917 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2916 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2919 + .species = SPECIES_TENTACRUEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2921 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2920 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2923 [TRAINER_SANTIAGO] = { - .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_M, +#line 2924 .trainerName = _("SANTIAGO"), - .items = {}, +#line 2925 + .trainerClass = TRAINER_CLASS_SWIMMER_M, +#line 2926 + .trainerPic = TRAINER_PIC_SWIMMER_M, + .encounterMusic_gender = +#line 2928 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2929 .doubleBattle = FALSE, +#line 2930 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Santiago), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2932 + .species = SPECIES_TENTACRUEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2934 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2933 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2936 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2938 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2937 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2940 [TRAINER_GILBERT] = { - .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_M, +#line 2941 .trainerName = _("GILBERT"), - .items = {}, +#line 2942 + .trainerClass = TRAINER_CLASS_SWIMMER_M, +#line 2943 + .trainerPic = TRAINER_PIC_SWIMMER_M, + .encounterMusic_gender = +#line 2945 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2946 .doubleBattle = FALSE, +#line 2947 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Gilbert), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2949 + .species = SPECIES_SHARPEDO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2951 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2950 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2953 [TRAINER_FRANKLIN] = { - .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_M, +#line 2954 .trainerName = _("FRANKLIN"), - .items = {}, +#line 2955 + .trainerClass = TRAINER_CLASS_SWIMMER_M, +#line 2956 + .trainerPic = TRAINER_PIC_SWIMMER_M, + .encounterMusic_gender = +#line 2958 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2959 .doubleBattle = FALSE, +#line 2960 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Franklin), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2962 + .species = SPECIES_SEALEO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2964 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2963 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2966 [TRAINER_KEVIN] = { - .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_M, +#line 2967 .trainerName = _("KEVIN"), - .items = {}, +#line 2968 + .trainerClass = TRAINER_CLASS_SWIMMER_M, +#line 2969 + .trainerPic = TRAINER_PIC_SWIMMER_M, + .encounterMusic_gender = +#line 2971 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2972 .doubleBattle = FALSE, +#line 2973 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Kevin), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2975 + .species = SPECIES_SPHEAL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2977 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2976 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2979 [TRAINER_JACK] = { - .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_M, +#line 2980 .trainerName = _("JACK"), - .items = {}, +#line 2981 + .trainerClass = TRAINER_CLASS_SWIMMER_M, +#line 2982 + .trainerPic = TRAINER_PIC_SWIMMER_M, + .encounterMusic_gender = +#line 2984 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2985 .doubleBattle = FALSE, +#line 2986 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jack), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2988 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2990 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2989 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 2992 [TRAINER_DUDLEY] = { - .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_M, +#line 2993 .trainerName = _("DUDLEY"), - .items = {}, +#line 2994 + .trainerClass = TRAINER_CLASS_SWIMMER_M, +#line 2995 + .trainerPic = TRAINER_PIC_SWIMMER_M, + .encounterMusic_gender = +#line 2997 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2998 .doubleBattle = FALSE, +#line 2999 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dudley), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 3001 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3003 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3002 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3005 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3007 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3006 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3009 + .species = SPECIES_TENTACRUEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3011 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3010 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3013 [TRAINER_CHAD] = { - .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_M, +#line 3014 .trainerName = _("CHAD"), - .items = {}, +#line 3015 + .trainerClass = TRAINER_CLASS_SWIMMER_M, +#line 3016 + .trainerPic = TRAINER_PIC_SWIMMER_M, + .encounterMusic_gender = +#line 3018 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 3019 .doubleBattle = FALSE, +#line 3020 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Chad), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3022 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3024 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3023 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3026 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3028 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3027 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3030 [TRAINER_TONY_2] = { - .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_M, +#line 3031 .trainerName = _("TONY"), - .items = {}, +#line 3032 + .trainerClass = TRAINER_CLASS_SWIMMER_M, +#line 3033 + .trainerPic = TRAINER_PIC_SWIMMER_M, + .encounterMusic_gender = +#line 3035 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 3036 .doubleBattle = FALSE, +#line 3037 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Tony2), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3039 + .species = SPECIES_SHARPEDO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3041 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 3040 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3043 [TRAINER_TONY_3] = { - .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_M, +#line 3044 .trainerName = _("TONY"), - .items = {}, +#line 3045 + .trainerClass = TRAINER_CLASS_SWIMMER_M, +#line 3046 + .trainerPic = TRAINER_PIC_SWIMMER_M, + .encounterMusic_gender = +#line 3048 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 3049 .doubleBattle = FALSE, +#line 3050 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Tony3), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3052 + .species = SPECIES_SHARPEDO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3054 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 3053 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3056 [TRAINER_TONY_4] = { - .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_M, +#line 3057 .trainerName = _("TONY"), - .items = {}, +#line 3058 + .trainerClass = TRAINER_CLASS_SWIMMER_M, +#line 3059 + .trainerPic = TRAINER_PIC_SWIMMER_M, + .encounterMusic_gender = +#line 3061 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 3062 .doubleBattle = FALSE, +#line 3063 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Tony4), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3065 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3067 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 3066 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3069 + .species = SPECIES_SHARPEDO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3071 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 3070 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3073 [TRAINER_TONY_5] = { - .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_M, +#line 3074 .trainerName = _("TONY"), - .items = {}, +#line 3075 + .trainerClass = TRAINER_CLASS_SWIMMER_M, +#line 3076 + .trainerPic = TRAINER_PIC_SWIMMER_M, + .encounterMusic_gender = +#line 3078 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 3079 .doubleBattle = FALSE, +#line 3080 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Tony5), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3082 + .species = SPECIES_STARMIE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3084 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 3083 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3086 + .species = SPECIES_SHARPEDO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3088 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 3087 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3090 [TRAINER_TAKAO] = { - .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_BLACK_BELT, +#line 3091 .trainerName = _("TAKAO"), - .items = {}, +#line 3092 + .trainerClass = TRAINER_CLASS_BLACK_BELT, +#line 3093 + .trainerPic = TRAINER_PIC_BLACK_BELT, + .encounterMusic_gender = +#line 3095 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3096 .doubleBattle = FALSE, +#line 3097 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Takao), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3099 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3101 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 3100 + .lvl = 13, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3103 [TRAINER_HITOSHI] = { - .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_BLACK_BELT, +#line 3104 .trainerName = _("HITOSHI"), - .items = {}, +#line 3105 + .trainerClass = TRAINER_CLASS_BLACK_BELT, +#line 3106 + .trainerPic = TRAINER_PIC_BLACK_BELT, + .encounterMusic_gender = +#line 3108 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3109 .doubleBattle = FALSE, +#line 3110 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Hitoshi), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3112 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3114 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 3113 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3116 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3118 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 3117 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3120 [TRAINER_KIYO] = { - .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_BLACK_BELT, +#line 3121 .trainerName = _("KIYO"), - .items = {}, +#line 3122 + .trainerClass = TRAINER_CLASS_BLACK_BELT, +#line 3123 + .trainerPic = TRAINER_PIC_BLACK_BELT, + .encounterMusic_gender = +#line 3125 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3126 .doubleBattle = FALSE, +#line 3127 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Kiyo), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3129 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3131 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3130 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3133 [TRAINER_KOICHI] = { - .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_BLACK_BELT, +#line 3134 .trainerName = _("KOICHI"), - .items = {}, +#line 3135 + .trainerClass = TRAINER_CLASS_BLACK_BELT, +#line 3136 + .trainerPic = TRAINER_PIC_BLACK_BELT, + .encounterMusic_gender = +#line 3138 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3139 .doubleBattle = FALSE, +#line 3140 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Koichi), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3142 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3144 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3143 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3146 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3148 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 3147 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3150 [TRAINER_NOB_1] = { - .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_BLACK_BELT, +#line 3151 .trainerName = _("NOB"), - .items = {}, +#line 3152 + .trainerClass = TRAINER_CLASS_BLACK_BELT, +#line 3153 + .trainerPic = TRAINER_PIC_BLACK_BELT, + .encounterMusic_gender = +#line 3155 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3156 .doubleBattle = FALSE, +#line 3157 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Nob1), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3159 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3161 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3160 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3163 [TRAINER_NOB_2] = { - .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_BLACK_BELT, +#line 3164 .trainerName = _("NOB"), - .items = {}, +#line 3165 + .trainerClass = TRAINER_CLASS_BLACK_BELT, +#line 3166 + .trainerPic = TRAINER_PIC_BLACK_BELT, + .encounterMusic_gender = +#line 3168 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3169 .doubleBattle = FALSE, +#line 3170 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Nob2), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3172 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3174 + .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), +#line 3173 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3176 [TRAINER_NOB_3] = { - .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_BLACK_BELT, +#line 3177 .trainerName = _("NOB"), - .items = {}, +#line 3178 + .trainerClass = TRAINER_CLASS_BLACK_BELT, +#line 3179 + .trainerPic = TRAINER_PIC_BLACK_BELT, + .encounterMusic_gender = +#line 3181 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3182 .doubleBattle = FALSE, +#line 3183 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Nob3), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3185 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3187 + .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), +#line 3186 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3189 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3191 + .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), +#line 3190 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3193 [TRAINER_NOB_4] = { - .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_BLACK_BELT, +#line 3194 .trainerName = _("NOB"), - .items = {}, +#line 3195 + .trainerClass = TRAINER_CLASS_BLACK_BELT, +#line 3196 + .trainerPic = TRAINER_PIC_BLACK_BELT, + .encounterMusic_gender = +#line 3198 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3199 .doubleBattle = FALSE, +#line 3200 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Nob4), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 3202 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3204 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 3203 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3206 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3208 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 3207 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3210 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3212 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 3211 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3214 [TRAINER_NOB_5] = { - .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_BLACK_BELT, +#line 3215 .trainerName = _("NOB"), - .items = {}, +#line 3216 + .trainerClass = TRAINER_CLASS_BLACK_BELT, +#line 3217 + .trainerPic = TRAINER_PIC_BLACK_BELT, + .encounterMusic_gender = +#line 3219 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3220 .doubleBattle = FALSE, +#line 3221 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Nob5), + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 3223 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3225 + .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), +#line 3224 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3227 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3229 + .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), +#line 3228 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3231 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3233 + .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), +#line 3232 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3235 + .species = SPECIES_MACHAMP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3235 + .heldItem = ITEM_BLACK_BELT, +#line 3237 + .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), +#line 3236 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3239 [TRAINER_YUJI] = { - .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_BLACK_BELT, +#line 3240 .trainerName = _("YUJI"), - .items = {}, +#line 3241 + .trainerClass = TRAINER_CLASS_BLACK_BELT, +#line 3242 + .trainerPic = TRAINER_PIC_BLACK_BELT, + .encounterMusic_gender = +#line 3244 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3245 .doubleBattle = FALSE, +#line 3246 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Yuji), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3248 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3250 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3249 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3252 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3254 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3253 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3256 [TRAINER_DAISUKE] = { - .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_BLACK_BELT, +#line 3257 .trainerName = _("DAISUKE"), - .items = {}, +#line 3258 + .trainerClass = TRAINER_CLASS_BLACK_BELT, +#line 3259 + .trainerPic = TRAINER_PIC_BLACK_BELT, + .encounterMusic_gender = +#line 3261 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3262 .doubleBattle = FALSE, +#line 3263 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Daisuke), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3265 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3267 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3266 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3269 [TRAINER_ATSUSHI] = { - .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_BLACK_BELT, +#line 3270 .trainerName = _("ATSUSHI"), - .items = {}, +#line 3271 + .trainerClass = TRAINER_CLASS_BLACK_BELT, +#line 3272 + .trainerPic = TRAINER_PIC_BLACK_BELT, + .encounterMusic_gender = +#line 3274 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3275 .doubleBattle = FALSE, +#line 3276 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Atsushi), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3278 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3280 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3279 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3282 [TRAINER_KIRK] = { - .trainerClass = TRAINER_CLASS_GUITARIST, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_GUITARIST, +#line 3283 .trainerName = _("KIRK"), - .items = {}, +#line 3284 + .trainerClass = TRAINER_CLASS_GUITARIST, +#line 3285 + .trainerPic = TRAINER_PIC_GUITARIST, + .encounterMusic_gender = +#line 3287 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3288 .doubleBattle = FALSE, +#line 3289 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Kirk), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3291 + .species = SPECIES_ELECTRIKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3293 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3292 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 3294 + MOVE_QUICK_ATTACK, + MOVE_THUNDER_WAVE, + MOVE_SPARK, + MOVE_LEER, + }, + }, + { +#line 3299 + .species = SPECIES_VOLTORB, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3301 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3300 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 3302 + MOVE_CHARGE, + MOVE_SHOCK_WAVE, + MOVE_SCREECH, + }, + }, + }, }, - +#line 3306 [TRAINER_GRUNT_AQUA_HIDEOUT_7] = { - .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA, - .trainerPic = TRAINER_PIC_AQUA_GRUNT_F, +#line 3307 .trainerName = _("GRUNT"), - .items = {}, +#line 3308 + .trainerClass = TRAINER_CLASS_TEAM_AQUA, +#line 3309 + .trainerPic = TRAINER_PIC_AQUA_GRUNT_F, + .encounterMusic_gender = +#line 3310 +F_TRAINER_FEMALE | +#line 3311 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 3312 .doubleBattle = FALSE, +#line 3313 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntAquaHideout7), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3315 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3317 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3316 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3319 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3321 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3320 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3323 [TRAINER_GRUNT_AQUA_HIDEOUT_8] = { - .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, - .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, +#line 3324 .trainerName = _("GRUNT"), - .items = {}, +#line 3325 + .trainerClass = TRAINER_CLASS_TEAM_AQUA, +#line 3326 + .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, + .encounterMusic_gender = +#line 3328 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 3329 .doubleBattle = FALSE, +#line 3330 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntAquaHideout8), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3332 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3334 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3333 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3336 [TRAINER_SHAWN] = { - .trainerClass = TRAINER_CLASS_GUITARIST, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_GUITARIST, +#line 3337 .trainerName = _("SHAWN"), - .items = {}, +#line 3338 + .trainerClass = TRAINER_CLASS_GUITARIST, +#line 3339 + .trainerPic = TRAINER_PIC_GUITARIST, + .encounterMusic_gender = +#line 3341 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3342 .doubleBattle = FALSE, +#line 3343 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Shawn), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3345 + .species = SPECIES_VOLTORB, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3347 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3346 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3349 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3351 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3350 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3353 [TRAINER_FERNANDO_1] = { - .trainerClass = TRAINER_CLASS_GUITARIST, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_GUITARIST, +#line 3354 .trainerName = _("FERNANDO"), - .items = {}, +#line 3355 + .trainerClass = TRAINER_CLASS_GUITARIST, +#line 3356 + .trainerPic = TRAINER_PIC_GUITARIST, + .encounterMusic_gender = +#line 3358 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3359 .doubleBattle = FALSE, +#line 3360 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Fernando1), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3362 + .species = SPECIES_ELECTRIKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3364 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3363 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3366 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3368 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3367 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3370 [TRAINER_DALTON_1] = { - .trainerClass = TRAINER_CLASS_GUITARIST, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_GUITARIST, +#line 3371 .trainerName = _("DALTON"), - .items = {}, +#line 3372 + .trainerClass = TRAINER_CLASS_GUITARIST, +#line 3373 + .trainerPic = TRAINER_PIC_GUITARIST, + .encounterMusic_gender = +#line 3375 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3376 .doubleBattle = FALSE, +#line 3377 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dalton1), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3379 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3381 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3380 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3383 + .species = SPECIES_WHISMUR, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3385 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3384 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3387 [TRAINER_DALTON_2] = { - .trainerClass = TRAINER_CLASS_GUITARIST, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_GUITARIST, +#line 3388 .trainerName = _("DALTON"), - .items = {}, +#line 3389 + .trainerClass = TRAINER_CLASS_GUITARIST, +#line 3390 + .trainerPic = TRAINER_PIC_GUITARIST, + .encounterMusic_gender = +#line 3392 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3393 .doubleBattle = FALSE, +#line 3394 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dalton2), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 3396 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3398 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 3397 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3400 + .species = SPECIES_WHISMUR, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3402 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 3401 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3404 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3406 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 3405 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3408 [TRAINER_DALTON_3] = { - .trainerClass = TRAINER_CLASS_GUITARIST, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_GUITARIST, +#line 3409 .trainerName = _("DALTON"), - .items = {}, +#line 3410 + .trainerClass = TRAINER_CLASS_GUITARIST, +#line 3411 + .trainerPic = TRAINER_PIC_GUITARIST, + .encounterMusic_gender = +#line 3413 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3414 .doubleBattle = FALSE, +#line 3415 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dalton3), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 3417 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3419 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 3418 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3421 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3423 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 3422 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3425 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3427 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 3426 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3429 [TRAINER_DALTON_4] = { - .trainerClass = TRAINER_CLASS_GUITARIST, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_GUITARIST, +#line 3430 .trainerName = _("DALTON"), - .items = {}, +#line 3431 + .trainerClass = TRAINER_CLASS_GUITARIST, +#line 3432 + .trainerPic = TRAINER_PIC_GUITARIST, + .encounterMusic_gender = +#line 3434 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3435 .doubleBattle = FALSE, +#line 3436 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dalton4), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 3438 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3440 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 3439 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3442 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3444 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 3443 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3446 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3448 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 3447 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3450 [TRAINER_DALTON_5] = { - .trainerClass = TRAINER_CLASS_GUITARIST, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_GUITARIST, +#line 3451 .trainerName = _("DALTON"), - .items = {}, +#line 3452 + .trainerClass = TRAINER_CLASS_GUITARIST, +#line 3453 + .trainerPic = TRAINER_PIC_GUITARIST, + .encounterMusic_gender = +#line 3455 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3456 .doubleBattle = FALSE, +#line 3457 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dalton5), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 3459 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3461 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 3460 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3463 + .species = SPECIES_EXPLOUD, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3465 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 3464 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3467 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3469 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 3468 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3471 [TRAINER_COLE] = { - .trainerClass = TRAINER_CLASS_KINDLER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_KINDLER, +#line 3472 .trainerName = _("COLE"), - .items = {}, +#line 3473 + .trainerClass = TRAINER_CLASS_KINDLER, +#line 3474 + .trainerPic = TRAINER_PIC_KINDLER, + .encounterMusic_gender = +#line 3476 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 3477 .doubleBattle = FALSE, +#line 3478 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cole), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3480 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3482 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3481 + .lvl = 23, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3484 [TRAINER_JEFF] = { - .trainerClass = TRAINER_CLASS_KINDLER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_KINDLER, +#line 3485 .trainerName = _("JEFF"), - .items = {}, +#line 3486 + .trainerClass = TRAINER_CLASS_KINDLER, +#line 3487 + .trainerPic = TRAINER_PIC_KINDLER, + .encounterMusic_gender = +#line 3489 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 3490 .doubleBattle = FALSE, +#line 3491 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jeff), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3493 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3495 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3494 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3497 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3499 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3498 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3501 [TRAINER_AXLE] = { - .trainerClass = TRAINER_CLASS_KINDLER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_KINDLER, +#line 3502 .trainerName = _("AXLE"), - .items = {}, +#line 3503 + .trainerClass = TRAINER_CLASS_KINDLER, +#line 3504 + .trainerPic = TRAINER_PIC_KINDLER, + .encounterMusic_gender = +#line 3506 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 3507 .doubleBattle = FALSE, +#line 3508 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Axle), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3510 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3512 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3511 + .lvl = 23, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3514 [TRAINER_JACE] = { - .trainerClass = TRAINER_CLASS_KINDLER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_KINDLER, +#line 3515 .trainerName = _("JACE"), - .items = {}, +#line 3516 + .trainerClass = TRAINER_CLASS_KINDLER, +#line 3517 + .trainerPic = TRAINER_PIC_KINDLER, + .encounterMusic_gender = +#line 3519 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 3520 .doubleBattle = FALSE, +#line 3521 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jace), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3523 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3525 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3524 + .lvl = 23, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3527 [TRAINER_KEEGAN] = { - .trainerClass = TRAINER_CLASS_KINDLER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_KINDLER, +#line 3528 .trainerName = _("KEEGAN"), - .items = {}, +#line 3529 + .trainerClass = TRAINER_CLASS_KINDLER, +#line 3530 + .trainerPic = TRAINER_PIC_KINDLER, + .encounterMusic_gender = +#line 3532 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 3533 .doubleBattle = FALSE, +#line 3534 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Keegan), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3536 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3538 + .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), +#line 3537 + .lvl = 23, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3540 [TRAINER_BERNIE_1] = { - .trainerClass = TRAINER_CLASS_KINDLER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_KINDLER, +#line 3541 .trainerName = _("BERNIE"), - .items = {}, +#line 3542 + .trainerClass = TRAINER_CLASS_KINDLER, +#line 3543 + .trainerPic = TRAINER_PIC_KINDLER, + .encounterMusic_gender = +#line 3545 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 3546 .doubleBattle = FALSE, +#line 3547 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Bernie1), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3549 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3551 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3550 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3553 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3555 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3554 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3557 [TRAINER_BERNIE_2] = { - .trainerClass = TRAINER_CLASS_KINDLER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_KINDLER, +#line 3558 .trainerName = _("BERNIE"), - .items = {}, +#line 3559 + .trainerClass = TRAINER_CLASS_KINDLER, +#line 3560 + .trainerPic = TRAINER_PIC_KINDLER, + .encounterMusic_gender = +#line 3562 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 3563 .doubleBattle = FALSE, +#line 3564 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Bernie2), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3566 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3568 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 3567 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3570 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3572 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 3571 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3574 [TRAINER_BERNIE_3] = { - .trainerClass = TRAINER_CLASS_KINDLER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_KINDLER, +#line 3575 .trainerName = _("BERNIE"), - .items = {}, +#line 3576 + .trainerClass = TRAINER_CLASS_KINDLER, +#line 3577 + .trainerPic = TRAINER_PIC_KINDLER, + .encounterMusic_gender = +#line 3579 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 3580 .doubleBattle = FALSE, +#line 3581 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Bernie3), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3583 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3585 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 3584 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3587 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3589 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 3588 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3591 [TRAINER_BERNIE_4] = { - .trainerClass = TRAINER_CLASS_KINDLER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_KINDLER, +#line 3592 .trainerName = _("BERNIE"), - .items = {}, +#line 3593 + .trainerClass = TRAINER_CLASS_KINDLER, +#line 3594 + .trainerPic = TRAINER_PIC_KINDLER, + .encounterMusic_gender = +#line 3596 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 3597 .doubleBattle = FALSE, +#line 3598 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Bernie4), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3600 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3602 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 3601 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3604 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3606 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 3605 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3608 [TRAINER_BERNIE_5] = { - .trainerClass = TRAINER_CLASS_KINDLER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_KINDLER, +#line 3609 .trainerName = _("BERNIE"), - .items = {}, +#line 3610 + .trainerClass = TRAINER_CLASS_KINDLER, +#line 3611 + .trainerPic = TRAINER_PIC_KINDLER, + .encounterMusic_gender = +#line 3613 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 3614 .doubleBattle = FALSE, +#line 3615 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Bernie5), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3617 + .species = SPECIES_MAGCARGO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3619 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 3618 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3621 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3623 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 3622 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3625 [TRAINER_DREW] = { - .trainerClass = TRAINER_CLASS_CAMPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_CAMPER, +#line 3626 .trainerName = _("DREW"), - .items = {}, +#line 3627 + .trainerClass = TRAINER_CLASS_CAMPER, +#line 3628 + .trainerPic = TRAINER_PIC_CAMPER, + .encounterMusic_gender = +#line 3630 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 3631 .doubleBattle = FALSE, +#line 3632 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Drew), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3634 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3636 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3635 + .lvl = 23, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 3637 + MOVE_DIG, + MOVE_SAND_ATTACK, + MOVE_POISON_STING, + MOVE_SLASH, + }, + }, + }, }, - +#line 3642 [TRAINER_BEAU] = { - .trainerClass = TRAINER_CLASS_CAMPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_CAMPER, +#line 3643 .trainerName = _("BEAU"), - .items = {}, +#line 3644 + .trainerClass = TRAINER_CLASS_CAMPER, +#line 3645 + .trainerPic = TRAINER_PIC_CAMPER, + .encounterMusic_gender = +#line 3647 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 3648 .doubleBattle = FALSE, +#line 3649 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Beau), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 3651 + .species = SPECIES_BALTOY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3653 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3652 + .lvl = 21, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 3654 + MOVE_RAPID_SPIN, + MOVE_MUD_SLAP, + MOVE_PSYBEAM, + MOVE_ROCK_TOMB, + }, + }, + { +#line 3659 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3661 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3660 + .lvl = 21, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 3662 + MOVE_POISON_STING, + MOVE_SAND_ATTACK, + MOVE_SCRATCH, + MOVE_DIG, + }, + }, + { +#line 3667 + .species = SPECIES_BALTOY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3669 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3668 + .lvl = 21, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 3670 + MOVE_RAPID_SPIN, + MOVE_MUD_SLAP, + MOVE_PSYBEAM, + MOVE_ROCK_TOMB, + }, + }, + }, }, - +#line 3675 [TRAINER_LARRY] = { - .trainerClass = TRAINER_CLASS_CAMPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_CAMPER, +#line 3676 .trainerName = _("LARRY"), - .items = {}, +#line 3677 + .trainerClass = TRAINER_CLASS_CAMPER, +#line 3678 + .trainerPic = TRAINER_PIC_CAMPER, + .encounterMusic_gender = +#line 3680 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 3681 .doubleBattle = FALSE, +#line 3682 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Larry), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3684 + .species = SPECIES_NUZLEAF, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3686 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3685 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3688 [TRAINER_SHANE] = { - .trainerClass = TRAINER_CLASS_CAMPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_CAMPER, +#line 3689 .trainerName = _("SHANE"), - .items = {}, +#line 3690 + .trainerClass = TRAINER_CLASS_CAMPER, +#line 3691 + .trainerPic = TRAINER_PIC_CAMPER, + .encounterMusic_gender = +#line 3693 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 3694 .doubleBattle = FALSE, +#line 3695 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Shane), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3697 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3699 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3698 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3701 + .species = SPECIES_NUZLEAF, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3703 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3702 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3705 [TRAINER_JUSTIN] = { - .trainerClass = TRAINER_CLASS_CAMPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_CAMPER, +#line 3706 .trainerName = _("JUSTIN"), - .items = {}, +#line 3707 + .trainerClass = TRAINER_CLASS_CAMPER, +#line 3708 + .trainerPic = TRAINER_PIC_CAMPER, + .encounterMusic_gender = +#line 3710 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 3711 .doubleBattle = FALSE, +#line 3712 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Justin), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3714 + .species = SPECIES_KECLEON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3716 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3715 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3718 [TRAINER_ETHAN_1] = { - .trainerClass = TRAINER_CLASS_CAMPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_CAMPER, +#line 3719 .trainerName = _("ETHAN"), - .items = {}, +#line 3720 + .trainerClass = TRAINER_CLASS_CAMPER, +#line 3721 + .trainerPic = TRAINER_PIC_CAMPER, + .encounterMusic_gender = +#line 3723 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 3724 .doubleBattle = FALSE, +#line 3725 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ethan1), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3727 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3729 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3728 + .lvl = 20, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3731 + .species = SPECIES_TAILLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3733 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3732 + .lvl = 20, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3735 [TRAINER_AUTUMN] = { - .trainerClass = TRAINER_CLASS_PICNICKER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_PICNICKER, +#line 3736 .trainerName = _("AUTUMN"), - .items = {}, +#line 3737 + .trainerClass = TRAINER_CLASS_PICNICKER, +#line 3738 + .trainerPic = TRAINER_PIC_PICNICKER, + .encounterMusic_gender = +#line 3739 +F_TRAINER_FEMALE | +#line 3740 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 3741 .doubleBattle = FALSE, +#line 3742 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Autumn), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3744 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3746 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3745 + .lvl = 21, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3748 [TRAINER_TRAVIS] = { - .trainerClass = TRAINER_CLASS_CAMPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_CAMPER, +#line 3749 .trainerName = _("TRAVIS"), - .items = {}, +#line 3750 + .trainerClass = TRAINER_CLASS_CAMPER, +#line 3751 + .trainerPic = TRAINER_PIC_CAMPER, + .encounterMusic_gender = +#line 3753 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 3754 .doubleBattle = FALSE, +#line 3755 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Travis), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3757 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3759 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3758 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3761 [TRAINER_ETHAN_2] = { - .trainerClass = TRAINER_CLASS_CAMPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_CAMPER, +#line 3762 .trainerName = _("ETHAN"), - .items = {}, +#line 3763 + .trainerClass = TRAINER_CLASS_CAMPER, +#line 3764 + .trainerPic = TRAINER_PIC_CAMPER, + .encounterMusic_gender = +#line 3766 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 3767 .doubleBattle = FALSE, +#line 3768 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ethan2), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3770 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3772 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 3771 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3774 + .species = SPECIES_TAILLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3776 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 3775 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3778 [TRAINER_ETHAN_3] = { - .trainerClass = TRAINER_CLASS_CAMPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_CAMPER, +#line 3779 .trainerName = _("ETHAN"), - .items = {}, +#line 3780 + .trainerClass = TRAINER_CLASS_CAMPER, +#line 3781 + .trainerPic = TRAINER_PIC_CAMPER, + .encounterMusic_gender = +#line 3783 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 3784 .doubleBattle = FALSE, +#line 3785 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ethan3), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3787 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3789 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 3788 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3791 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3793 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 3792 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3795 [TRAINER_ETHAN_4] = { - .trainerClass = TRAINER_CLASS_CAMPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_CAMPER, +#line 3796 .trainerName = _("ETHAN"), - .items = {}, +#line 3797 + .trainerClass = TRAINER_CLASS_CAMPER, +#line 3798 + .trainerPic = TRAINER_PIC_CAMPER, + .encounterMusic_gender = +#line 3800 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 3801 .doubleBattle = FALSE, +#line 3802 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ethan4), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 3804 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3806 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 3805 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3808 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3810 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 3809 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3812 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3814 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 3813 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3816 [TRAINER_ETHAN_5] = { - .trainerClass = TRAINER_CLASS_CAMPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_CAMPER, +#line 3817 .trainerName = _("ETHAN"), - .items = {}, +#line 3818 + .trainerClass = TRAINER_CLASS_CAMPER, +#line 3819 + .trainerPic = TRAINER_PIC_CAMPER, + .encounterMusic_gender = +#line 3821 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 3822 .doubleBattle = FALSE, +#line 3823 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ethan5), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 3825 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3827 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 3826 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3829 + .species = SPECIES_SANDSLASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3831 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 3830 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3833 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3835 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 3834 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3837 [TRAINER_BRENT] = { - .trainerClass = TRAINER_CLASS_BUG_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_BUG_MANIAC, +#line 3838 .trainerName = _("BRENT"), - .items = {}, +#line 3839 + .trainerClass = TRAINER_CLASS_BUG_MANIAC, +#line 3840 + .trainerPic = TRAINER_PIC_BUG_MANIAC, + .encounterMusic_gender = +#line 3842 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 3843 .doubleBattle = FALSE, +#line 3844 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Brent), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3846 + .species = SPECIES_SURSKIT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3848 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3847 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3850 [TRAINER_DONALD] = { - .trainerClass = TRAINER_CLASS_BUG_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_BUG_MANIAC, +#line 3851 .trainerName = _("DONALD"), - .items = {}, +#line 3852 + .trainerClass = TRAINER_CLASS_BUG_MANIAC, +#line 3853 + .trainerPic = TRAINER_PIC_BUG_MANIAC, + .encounterMusic_gender = +#line 3855 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 3856 .doubleBattle = FALSE, +#line 3857 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Donald), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 3859 + .species = SPECIES_WURMPLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3861 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3860 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3863 + .species = SPECIES_SILCOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3865 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3864 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3867 + .species = SPECIES_BEAUTIFLY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3869 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3868 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3871 [TRAINER_TAYLOR] = { - .trainerClass = TRAINER_CLASS_BUG_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_BUG_MANIAC, +#line 3872 .trainerName = _("TAYLOR"), - .items = {}, +#line 3873 + .trainerClass = TRAINER_CLASS_BUG_MANIAC, +#line 3874 + .trainerPic = TRAINER_PIC_BUG_MANIAC, + .encounterMusic_gender = +#line 3876 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 3877 .doubleBattle = FALSE, +#line 3878 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Taylor), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 3880 + .species = SPECIES_WURMPLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3882 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3881 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3884 + .species = SPECIES_CASCOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3886 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3885 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3888 + .species = SPECIES_DUSTOX, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3890 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3889 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3892 [TRAINER_JEFFREY_1] = { - .trainerClass = TRAINER_CLASS_BUG_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_BUG_MANIAC, +#line 3893 .trainerName = _("JEFFREY"), - .items = {}, +#line 3894 + .trainerClass = TRAINER_CLASS_BUG_MANIAC, +#line 3895 + .trainerPic = TRAINER_PIC_BUG_MANIAC, + .encounterMusic_gender = +#line 3897 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 3898 .doubleBattle = FALSE, +#line 3899 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jeffrey1), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 3901 + .species = SPECIES_SURSKIT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3903 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3902 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3905 + .species = SPECIES_SURSKIT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3907 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3906 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3909 + .species = SPECIES_SURSKIT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3911 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3910 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3913 [TRAINER_DEREK] = { - .trainerClass = TRAINER_CLASS_BUG_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_BUG_MANIAC, +#line 3914 .trainerName = _("DEREK"), - .items = {}, +#line 3915 + .trainerClass = TRAINER_CLASS_BUG_MANIAC, +#line 3916 + .trainerPic = TRAINER_PIC_BUG_MANIAC, + .encounterMusic_gender = +#line 3918 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 3919 .doubleBattle = FALSE, +#line 3920 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Derek), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3922 + .species = SPECIES_DUSTOX, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3924 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 3923 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3926 + .species = SPECIES_BEAUTIFLY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3928 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 3927 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3930 [TRAINER_JEFFREY_2] = { - .trainerClass = TRAINER_CLASS_BUG_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_BUG_MANIAC, +#line 3931 .trainerName = _("JEFFREY"), - .items = {}, +#line 3932 + .trainerClass = TRAINER_CLASS_BUG_MANIAC, +#line 3933 + .trainerPic = TRAINER_PIC_BUG_MANIAC, + .encounterMusic_gender = +#line 3935 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 3936 .doubleBattle = FALSE, +#line 3937 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jeffrey2), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 3939 + .species = SPECIES_SURSKIT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3941 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 3940 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3943 + .species = SPECIES_SURSKIT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3945 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 3944 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3947 + .species = SPECIES_SURSKIT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3949 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 3948 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3951 [TRAINER_JEFFREY_3] = { - .trainerClass = TRAINER_CLASS_BUG_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_BUG_MANIAC, +#line 3952 .trainerName = _("JEFFREY"), - .items = {}, +#line 3953 + .trainerClass = TRAINER_CLASS_BUG_MANIAC, +#line 3954 + .trainerPic = TRAINER_PIC_BUG_MANIAC, + .encounterMusic_gender = +#line 3956 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 3957 .doubleBattle = FALSE, +#line 3958 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jeffrey3), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 3960 + .species = SPECIES_SURSKIT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3962 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 3961 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3964 + .species = SPECIES_SURSKIT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3966 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 3965 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3968 + .species = SPECIES_MASQUERAIN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3970 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 3969 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3972 [TRAINER_JEFFREY_4] = { - .trainerClass = TRAINER_CLASS_BUG_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_BUG_MANIAC, +#line 3973 .trainerName = _("JEFFREY"), - .items = {}, +#line 3974 + .trainerClass = TRAINER_CLASS_BUG_MANIAC, +#line 3975 + .trainerPic = TRAINER_PIC_BUG_MANIAC, + .encounterMusic_gender = +#line 3977 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 3978 .doubleBattle = FALSE, +#line 3979 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jeffrey4), + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 3981 + .species = SPECIES_SURSKIT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3983 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 3982 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3985 + .species = SPECIES_WURMPLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3987 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 3986 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3989 + .species = SPECIES_SURSKIT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3991 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 3990 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3993 + .species = SPECIES_MASQUERAIN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3995 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 3994 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 3997 [TRAINER_JEFFREY_5] = { - .trainerClass = TRAINER_CLASS_BUG_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_BUG_MANIAC, +#line 3998 .trainerName = _("JEFFREY"), - .items = {}, +#line 3999 + .trainerClass = TRAINER_CLASS_BUG_MANIAC, +#line 4000 + .trainerPic = TRAINER_PIC_BUG_MANIAC, + .encounterMusic_gender = +#line 4002 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 4003 .doubleBattle = FALSE, +#line 4004 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jeffrey5), + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 4006 + .species = SPECIES_SURSKIT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4008 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 4007 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4010 + .species = SPECIES_DUSTOX, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4012 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 4011 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4014 + .species = SPECIES_SURSKIT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4016 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 4015 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4018 + .species = SPECIES_MASQUERAIN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4018 + .heldItem = ITEM_SILVER_POWDER, +#line 4020 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 4019 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4022 + .species = SPECIES_BEAUTIFLY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4024 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 4023 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 4026 [TRAINER_EDWARD] = { - .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_PSYCHIC_M, +#line 4027 .trainerName = _("EDWARD"), - .items = {}, +#line 4028 + .trainerClass = TRAINER_CLASS_PSYCHIC, +#line 4029 + .trainerPic = TRAINER_PIC_PSYCHIC_M, + .encounterMusic_gender = +#line 4031 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4032 .doubleBattle = FALSE, +#line 4033 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Edward), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 4035 + .species = SPECIES_ABRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4037 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4036 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4038 + MOVE_HIDDEN_POWER, + }, + }, + }, }, - +#line 4040 [TRAINER_PRESTON] = { - .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_PSYCHIC_M, +#line 4041 .trainerName = _("PRESTON"), - .items = {}, +#line 4042 + .trainerClass = TRAINER_CLASS_PSYCHIC, +#line 4043 + .trainerPic = TRAINER_PIC_PSYCHIC_M, + .encounterMusic_gender = +#line 4045 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4046 .doubleBattle = FALSE, +#line 4047 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Preston), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 4049 + .species = SPECIES_KIRLIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4051 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 4050 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 4053 [TRAINER_VIRGIL] = { - .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_PSYCHIC_M, +#line 4054 .trainerName = _("VIRGIL"), - .items = {}, +#line 4055 + .trainerClass = TRAINER_CLASS_PSYCHIC, +#line 4056 + .trainerPic = TRAINER_PIC_PSYCHIC_M, + .encounterMusic_gender = +#line 4058 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4059 .doubleBattle = FALSE, +#line 4060 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Virgil), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 4062 + .species = SPECIES_RALTS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4064 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 4063 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 4066 [TRAINER_BLAKE] = { - .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_PSYCHIC_M, +#line 4067 .trainerName = _("BLAKE"), - .items = {}, +#line 4068 + .trainerClass = TRAINER_CLASS_PSYCHIC, +#line 4069 + .trainerPic = TRAINER_PIC_PSYCHIC_M, + .encounterMusic_gender = +#line 4071 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4072 .doubleBattle = FALSE, +#line 4073 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Blake), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 4075 + .species = SPECIES_GIRAFARIG, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4077 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 4076 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 4079 [TRAINER_WILLIAM] = { - .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_PSYCHIC_M, +#line 4080 .trainerName = _("WILLIAM"), - .items = {}, +#line 4081 + .trainerClass = TRAINER_CLASS_PSYCHIC, +#line 4082 + .trainerPic = TRAINER_PIC_PSYCHIC_M, + .encounterMusic_gender = +#line 4084 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4085 .doubleBattle = FALSE, +#line 4086 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_William), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 4088 + .species = SPECIES_RALTS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4090 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4089 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4092 + .species = SPECIES_RALTS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4094 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4093 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4096 + .species = SPECIES_KIRLIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4098 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4097 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 4100 [TRAINER_JOSHUA] = { - .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_PSYCHIC_M, +#line 4101 .trainerName = _("JOSHUA"), - .items = {}, +#line 4102 + .trainerClass = TRAINER_CLASS_PSYCHIC, +#line 4103 + .trainerPic = TRAINER_PIC_PSYCHIC_M, + .encounterMusic_gender = +#line 4105 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4106 .doubleBattle = FALSE, +#line 4107 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Joshua), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 4109 + .species = SPECIES_KADABRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4111 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4110 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4113 + .species = SPECIES_SOLROCK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4115 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4114 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 4117 [TRAINER_CAMERON_1] = { - .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_PSYCHIC_M, +#line 4118 .trainerName = _("CAMERON"), - .items = {}, +#line 4119 + .trainerClass = TRAINER_CLASS_PSYCHIC, +#line 4120 + .trainerPic = TRAINER_PIC_PSYCHIC_M, + .encounterMusic_gender = +#line 4122 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4123 .doubleBattle = FALSE, +#line 4124 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cameron1), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 4126 + .species = SPECIES_SOLROCK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4128 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4127 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 4130 [TRAINER_CAMERON_2] = { - .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_PSYCHIC_M, +#line 4131 .trainerName = _("CAMERON"), - .items = {}, +#line 4132 + .trainerClass = TRAINER_CLASS_PSYCHIC, +#line 4133 + .trainerPic = TRAINER_PIC_PSYCHIC_M, + .encounterMusic_gender = +#line 4135 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4136 .doubleBattle = FALSE, +#line 4137 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cameron2), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 4139 + .species = SPECIES_KADABRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4141 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 4140 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4143 + .species = SPECIES_SOLROCK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4145 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 4144 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 4147 [TRAINER_CAMERON_3] = { - .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_PSYCHIC_M, +#line 4148 .trainerName = _("CAMERON"), - .items = {}, +#line 4149 + .trainerClass = TRAINER_CLASS_PSYCHIC, +#line 4150 + .trainerPic = TRAINER_PIC_PSYCHIC_M, + .encounterMusic_gender = +#line 4152 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4153 .doubleBattle = FALSE, +#line 4154 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cameron3), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 4156 + .species = SPECIES_KADABRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4158 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 4157 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4160 + .species = SPECIES_SOLROCK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4162 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 4161 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 4164 [TRAINER_CAMERON_4] = { - .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_PSYCHIC_M, +#line 4165 .trainerName = _("CAMERON"), - .items = {}, +#line 4166 + .trainerClass = TRAINER_CLASS_PSYCHIC, +#line 4167 + .trainerPic = TRAINER_PIC_PSYCHIC_M, + .encounterMusic_gender = +#line 4169 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4170 .doubleBattle = FALSE, +#line 4171 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cameron4), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 4173 + .species = SPECIES_KADABRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4175 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 4174 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4177 + .species = SPECIES_SOLROCK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4179 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 4178 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 4181 [TRAINER_CAMERON_5] = { - .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_PSYCHIC_M, +#line 4182 .trainerName = _("CAMERON"), - .items = {}, +#line 4183 + .trainerClass = TRAINER_CLASS_PSYCHIC, +#line 4184 + .trainerPic = TRAINER_PIC_PSYCHIC_M, + .encounterMusic_gender = +#line 4186 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4187 .doubleBattle = FALSE, +#line 4188 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cameron5), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 4190 + .species = SPECIES_SOLROCK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4192 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 4191 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4194 + .species = SPECIES_ALAKAZAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4196 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 4195 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 4198 [TRAINER_JACLYN] = { - .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_PSYCHIC_F, +#line 4199 .trainerName = _("JACLYN"), - .items = {}, +#line 4200 + .trainerClass = TRAINER_CLASS_PSYCHIC, +#line 4201 + .trainerPic = TRAINER_PIC_PSYCHIC_F, + .encounterMusic_gender = +#line 4202 +F_TRAINER_FEMALE | +#line 4203 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4204 .doubleBattle = FALSE, +#line 4205 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jaclyn), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 4207 + .species = SPECIES_ABRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4209 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4208 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4210 + MOVE_HIDDEN_POWER, + }, + }, + }, }, - +#line 4212 [TRAINER_HANNAH] = { - .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_PSYCHIC_F, +#line 4213 .trainerName = _("HANNAH"), - .items = {}, +#line 4214 + .trainerClass = TRAINER_CLASS_PSYCHIC, +#line 4215 + .trainerPic = TRAINER_PIC_PSYCHIC_F, + .encounterMusic_gender = +#line 4216 +F_TRAINER_FEMALE | +#line 4217 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4218 .doubleBattle = FALSE, +#line 4219 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Hannah), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 4221 + .species = SPECIES_KIRLIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4223 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 4222 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 4225 [TRAINER_SAMANTHA] = { - .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_PSYCHIC_F, +#line 4226 .trainerName = _("SAMANTHA"), - .items = {}, +#line 4227 + .trainerClass = TRAINER_CLASS_PSYCHIC, +#line 4228 + .trainerPic = TRAINER_PIC_PSYCHIC_F, + .encounterMusic_gender = +#line 4229 +F_TRAINER_FEMALE | +#line 4230 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4231 .doubleBattle = FALSE, +#line 4232 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Samantha), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 4234 + .species = SPECIES_XATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4236 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 4235 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 4238 [TRAINER_MAURA] = { - .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_PSYCHIC_F, +#line 4239 .trainerName = _("MAURA"), - .items = {}, +#line 4240 + .trainerClass = TRAINER_CLASS_PSYCHIC, +#line 4241 + .trainerPic = TRAINER_PIC_PSYCHIC_F, + .encounterMusic_gender = +#line 4242 +F_TRAINER_FEMALE | +#line 4243 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4244 .doubleBattle = FALSE, +#line 4245 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Maura), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 4247 + .species = SPECIES_KADABRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4249 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 4248 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 4251 [TRAINER_KAYLA] = { - .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_PSYCHIC_F, +#line 4252 .trainerName = _("KAYLA"), - .items = {}, +#line 4253 + .trainerClass = TRAINER_CLASS_PSYCHIC, +#line 4254 + .trainerPic = TRAINER_PIC_PSYCHIC_F, + .encounterMusic_gender = +#line 4255 +F_TRAINER_FEMALE | +#line 4256 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4257 .doubleBattle = FALSE, +#line 4258 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Kayla), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 4260 + .species = SPECIES_WOBBUFFET, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4262 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4261 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4264 + .species = SPECIES_NATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4266 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4265 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4268 + .species = SPECIES_KADABRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4270 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4269 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 4272 [TRAINER_ALEXIS] = { - .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_PSYCHIC_F, +#line 4273 .trainerName = _("ALEXIS"), - .items = {}, +#line 4274 + .trainerClass = TRAINER_CLASS_PSYCHIC, +#line 4275 + .trainerPic = TRAINER_PIC_PSYCHIC_F, + .encounterMusic_gender = +#line 4276 +F_TRAINER_FEMALE | +#line 4277 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4278 .doubleBattle = FALSE, +#line 4279 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Alexis), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 4281 + .species = SPECIES_KIRLIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4283 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4282 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4285 + .species = SPECIES_XATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4287 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4286 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 4289 [TRAINER_JACKI_1] = { - .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_PSYCHIC_F, +#line 4290 .trainerName = _("JACKI"), - .items = {}, +#line 4291 + .trainerClass = TRAINER_CLASS_PSYCHIC, +#line 4292 + .trainerPic = TRAINER_PIC_PSYCHIC_F, + .encounterMusic_gender = +#line 4293 +F_TRAINER_FEMALE | +#line 4294 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4295 .doubleBattle = FALSE, +#line 4296 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jacki1), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 4298 + .species = SPECIES_KADABRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4300 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4299 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4302 + .species = SPECIES_LUNATONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4304 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4303 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 4306 [TRAINER_JACKI_2] = { - .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_PSYCHIC_F, +#line 4307 .trainerName = _("JACKI"), - .items = {}, +#line 4308 + .trainerClass = TRAINER_CLASS_PSYCHIC, +#line 4309 + .trainerPic = TRAINER_PIC_PSYCHIC_F, + .encounterMusic_gender = +#line 4310 +F_TRAINER_FEMALE | +#line 4311 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4312 .doubleBattle = FALSE, +#line 4313 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jacki2), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 4315 + .species = SPECIES_KADABRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4317 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 4316 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4319 + .species = SPECIES_LUNATONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4321 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 4320 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 4323 [TRAINER_JACKI_3] = { - .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_PSYCHIC_F, +#line 4324 .trainerName = _("JACKI"), - .items = {}, +#line 4325 + .trainerClass = TRAINER_CLASS_PSYCHIC, +#line 4326 + .trainerPic = TRAINER_PIC_PSYCHIC_F, + .encounterMusic_gender = +#line 4327 +F_TRAINER_FEMALE | +#line 4328 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4329 .doubleBattle = FALSE, +#line 4330 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jacki3), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 4332 + .species = SPECIES_KADABRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4334 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 4333 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4336 + .species = SPECIES_LUNATONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4338 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 4337 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 4340 [TRAINER_JACKI_4] = { - .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_PSYCHIC_F, +#line 4341 .trainerName = _("JACKI"), - .items = {}, +#line 4342 + .trainerClass = TRAINER_CLASS_PSYCHIC, +#line 4343 + .trainerPic = TRAINER_PIC_PSYCHIC_F, + .encounterMusic_gender = +#line 4344 +F_TRAINER_FEMALE | +#line 4345 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4346 .doubleBattle = FALSE, +#line 4347 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jacki4), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 4349 + .species = SPECIES_KADABRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4351 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 4350 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4353 + .species = SPECIES_LUNATONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4355 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 4354 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 4357 [TRAINER_JACKI_5] = { - .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_PSYCHIC_F, +#line 4358 .trainerName = _("JACKI"), - .items = {}, +#line 4359 + .trainerClass = TRAINER_CLASS_PSYCHIC, +#line 4360 + .trainerPic = TRAINER_PIC_PSYCHIC_F, + .encounterMusic_gender = +#line 4361 +F_TRAINER_FEMALE | +#line 4362 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4363 .doubleBattle = FALSE, +#line 4364 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jacki5), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 4366 + .species = SPECIES_LUNATONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4368 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 4367 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4370 + .species = SPECIES_ALAKAZAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4372 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 4371 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 4374 [TRAINER_WALTER_1] = { - .trainerClass = TRAINER_CLASS_GENTLEMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, - .trainerPic = TRAINER_PIC_GENTLEMAN, +#line 4375 .trainerName = _("WALTER"), - .items = {}, +#line 4376 + .trainerClass = TRAINER_CLASS_GENTLEMAN, +#line 4377 + .trainerPic = TRAINER_PIC_GENTLEMAN, + .encounterMusic_gender = +#line 4379 + TRAINER_ENCOUNTER_MUSIC_RICH, +#line 4380 .doubleBattle = FALSE, +#line 4381 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Walter1), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 4383 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4385 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4384 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 4387 [TRAINER_MICAH] = { - .trainerClass = TRAINER_CLASS_GENTLEMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, - .trainerPic = TRAINER_PIC_GENTLEMAN, +#line 4388 .trainerName = _("MICAH"), - .items = {}, +#line 4389 + .trainerClass = TRAINER_CLASS_GENTLEMAN, +#line 4390 + .trainerPic = TRAINER_PIC_GENTLEMAN, + .encounterMusic_gender = +#line 4392 + TRAINER_ENCOUNTER_MUSIC_RICH, +#line 4393 .doubleBattle = FALSE, +#line 4394 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Micah), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 4396 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4398 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4397 + .lvl = 44, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4400 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4402 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4401 + .lvl = 44, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 4404 [TRAINER_THOMAS] = { - .trainerClass = TRAINER_CLASS_GENTLEMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, - .trainerPic = TRAINER_PIC_GENTLEMAN, +#line 4405 .trainerName = _("THOMAS"), - .items = {}, +#line 4406 + .trainerClass = TRAINER_CLASS_GENTLEMAN, +#line 4407 + .trainerPic = TRAINER_PIC_GENTLEMAN, + .encounterMusic_gender = +#line 4409 + TRAINER_ENCOUNTER_MUSIC_RICH, +#line 4410 .doubleBattle = FALSE, +#line 4411 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Thomas), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 4413 + .species = SPECIES_ZANGOOSE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4415 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4414 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 4417 [TRAINER_WALTER_2] = { - .trainerClass = TRAINER_CLASS_GENTLEMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, - .trainerPic = TRAINER_PIC_GENTLEMAN, +#line 4418 .trainerName = _("WALTER"), - .items = {}, +#line 4419 + .trainerClass = TRAINER_CLASS_GENTLEMAN, +#line 4420 + .trainerPic = TRAINER_PIC_GENTLEMAN, + .encounterMusic_gender = +#line 4422 + TRAINER_ENCOUNTER_MUSIC_RICH, +#line 4423 .doubleBattle = FALSE, +#line 4424 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Walter2), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 4426 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4428 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 4427 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 4430 [TRAINER_WALTER_3] = { - .trainerClass = TRAINER_CLASS_GENTLEMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, - .trainerPic = TRAINER_PIC_GENTLEMAN, +#line 4431 .trainerName = _("WALTER"), - .items = {}, +#line 4432 + .trainerClass = TRAINER_CLASS_GENTLEMAN, +#line 4433 + .trainerPic = TRAINER_PIC_GENTLEMAN, + .encounterMusic_gender = +#line 4435 + TRAINER_ENCOUNTER_MUSIC_RICH, +#line 4436 .doubleBattle = FALSE, +#line 4437 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Walter3), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 4439 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4441 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 4440 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4442 + MOVE_HEADBUTT, + MOVE_SAND_ATTACK, + MOVE_ODOR_SLEUTH, + MOVE_FURY_SWIPES, + }, + }, + { +#line 4447 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4449 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 4448 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4450 + MOVE_QUICK_ATTACK, + MOVE_SPARK, + MOVE_ODOR_SLEUTH, + MOVE_ROAR, + }, + }, + }, }, - +#line 4455 [TRAINER_WALTER_4] = { - .trainerClass = TRAINER_CLASS_GENTLEMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, - .trainerPic = TRAINER_PIC_GENTLEMAN, +#line 4456 .trainerName = _("WALTER"), - .items = {}, +#line 4457 + .trainerClass = TRAINER_CLASS_GENTLEMAN, +#line 4458 + .trainerPic = TRAINER_PIC_GENTLEMAN, + .encounterMusic_gender = +#line 4460 + TRAINER_ENCOUNTER_MUSIC_RICH, +#line 4461 .doubleBattle = FALSE, +#line 4462 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Walter4), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 4464 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4466 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 4465 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4467 + MOVE_HEADBUTT, + MOVE_SAND_ATTACK, + MOVE_ODOR_SLEUTH, + MOVE_FURY_SWIPES, + }, + }, + { +#line 4472 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4474 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 4473 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4475 + MOVE_QUICK_ATTACK, + MOVE_SPARK, + MOVE_ODOR_SLEUTH, + }, + }, + }, }, - +#line 4479 [TRAINER_WALTER_5] = { - .trainerClass = TRAINER_CLASS_GENTLEMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, - .trainerPic = TRAINER_PIC_GENTLEMAN, +#line 4480 .trainerName = _("WALTER"), - .items = {}, +#line 4481 + .trainerClass = TRAINER_CLASS_GENTLEMAN, +#line 4482 + .trainerPic = TRAINER_PIC_GENTLEMAN, + .encounterMusic_gender = +#line 4484 + TRAINER_ENCOUNTER_MUSIC_RICH, +#line 4485 .doubleBattle = FALSE, +#line 4486 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Walter5), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 4488 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4490 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 4489 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4491 + MOVE_HEADBUTT, + MOVE_SAND_ATTACK, + MOVE_ODOR_SLEUTH, + MOVE_FURY_SWIPES, + }, + }, + { +#line 4496 + .species = SPECIES_GOLDUCK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4498 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 4497 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4499 + MOVE_FURY_SWIPES, + MOVE_DISABLE, + MOVE_CONFUSION, + MOVE_PSYCH_UP, + }, + }, + { +#line 4504 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4506 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 4505 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4507 + MOVE_QUICK_ATTACK, + MOVE_SPARK, + MOVE_ODOR_SLEUTH, + MOVE_ROAR, + }, + }, + }, }, - +#line 4512 [TRAINER_SIDNEY] = { - .trainerClass = TRAINER_CLASS_ELITE_FOUR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR, - .trainerPic = TRAINER_PIC_ELITE_FOUR_SIDNEY, +#line 4513 .trainerName = _("SIDNEY"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE}, +#line 4514 + .trainerClass = TRAINER_CLASS_ELITE_FOUR, +#line 4515 + .trainerPic = TRAINER_PIC_ELITE_FOUR_SIDNEY, + .encounterMusic_gender = +#line 4517 + TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR, +#line 4518 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 4519 .doubleBattle = FALSE, +#line 4520 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_SETUP_FIRST_TURN, +#line 4521 .mugshotEnabled = TRUE, .mugshotColor = MUGSHOT_COLOR_PURPLE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_SETUP_FIRST_TURN, - .party = TRAINER_PARTY(sParty_Sidney), + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 4523 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4525 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4524 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4526 + MOVE_ROAR, + MOVE_DOUBLE_EDGE, + MOVE_SAND_ATTACK, + MOVE_CRUNCH, + }, + }, + { +#line 4531 + .species = SPECIES_SHIFTRY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4533 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4532 + .lvl = 48, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4534 + MOVE_TORMENT, + MOVE_DOUBLE_TEAM, + MOVE_SWAGGER, + MOVE_EXTRASENSORY, + }, + }, + { +#line 4539 + .species = SPECIES_CACTURNE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4541 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4540 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4542 + MOVE_LEECH_SEED, + MOVE_FEINT_ATTACK, + MOVE_NEEDLE_ARM, + MOVE_COTTON_SPORE, + }, + }, + { +#line 4547 + .species = SPECIES_CRAWDAUNT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4549 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4548 + .lvl = 48, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4550 + MOVE_SURF, + MOVE_SWORDS_DANCE, + MOVE_STRENGTH, + MOVE_FACADE, + }, + }, + { +#line 4555 + .species = SPECIES_ABSOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4555 + .heldItem = ITEM_SITRUS_BERRY, +#line 4557 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 4556 + .lvl = 49, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4558 + MOVE_AERIAL_ACE, + MOVE_ROCK_SLIDE, + MOVE_SWORDS_DANCE, + MOVE_SLASH, + }, + }, + }, }, - +#line 4563 [TRAINER_PHOEBE] = { - .trainerClass = TRAINER_CLASS_ELITE_FOUR, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR, - .trainerPic = TRAINER_PIC_ELITE_FOUR_PHOEBE, +#line 4564 .trainerName = _("PHOEBE"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE}, +#line 4565 + .trainerClass = TRAINER_CLASS_ELITE_FOUR, +#line 4566 + .trainerPic = TRAINER_PIC_ELITE_FOUR_PHOEBE, + .encounterMusic_gender = +#line 4567 +F_TRAINER_FEMALE | +#line 4568 + TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR, +#line 4569 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 4570 .doubleBattle = FALSE, +#line 4571 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, +#line 4572 .mugshotEnabled = TRUE, .mugshotColor = MUGSHOT_COLOR_GREEN, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Phoebe), + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 4574 + .species = SPECIES_DUSCLOPS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4576 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4575 + .lvl = 48, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4577 + MOVE_SHADOW_PUNCH, + MOVE_CONFUSE_RAY, + MOVE_CURSE, + MOVE_PROTECT, + }, + }, + { +#line 4582 + .species = SPECIES_BANETTE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4584 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4583 + .lvl = 49, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4585 + MOVE_SHADOW_BALL, + MOVE_GRUDGE, + MOVE_WILL_O_WISP, + MOVE_FEINT_ATTACK, + }, + }, + { +#line 4590 + .species = SPECIES_SABLEYE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4592 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4591 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4593 + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_NIGHT_SHADE, + MOVE_FEINT_ATTACK, + }, + }, + { +#line 4598 + .species = SPECIES_BANETTE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4600 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4599 + .lvl = 49, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4601 + MOVE_SHADOW_BALL, + MOVE_PSYCHIC, + MOVE_THUNDERBOLT, + MOVE_FACADE, + }, + }, + { +#line 4606 + .species = SPECIES_DUSCLOPS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4606 + .heldItem = ITEM_SITRUS_BERRY, +#line 4608 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 4607 + .lvl = 51, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4609 + MOVE_SHADOW_BALL, + MOVE_ICE_BEAM, + MOVE_ROCK_SLIDE, + MOVE_EARTHQUAKE, + }, + }, + }, }, - +#line 4614 [TRAINER_GLACIA] = { - .trainerClass = TRAINER_CLASS_ELITE_FOUR, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR, - .trainerPic = TRAINER_PIC_ELITE_FOUR_GLACIA, +#line 4615 .trainerName = _("GLACIA"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE}, +#line 4616 + .trainerClass = TRAINER_CLASS_ELITE_FOUR, +#line 4617 + .trainerPic = TRAINER_PIC_ELITE_FOUR_GLACIA, + .encounterMusic_gender = +#line 4618 +F_TRAINER_FEMALE | +#line 4619 + TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR, +#line 4620 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 4621 .doubleBattle = FALSE, +#line 4622 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, +#line 4623 .mugshotEnabled = TRUE, .mugshotColor = MUGSHOT_COLOR_PINK, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Glacia), + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 4625 + .species = SPECIES_SEALEO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4627 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4626 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4628 + MOVE_ENCORE, + MOVE_BODY_SLAM, + MOVE_HAIL, + MOVE_ICE_BALL, + }, + }, + { +#line 4633 + .species = SPECIES_GLALIE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4635 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4634 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4636 + MOVE_LIGHT_SCREEN, + MOVE_CRUNCH, + MOVE_ICY_WIND, + MOVE_ICE_BEAM, + }, + }, + { +#line 4641 + .species = SPECIES_SEALEO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4643 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4642 + .lvl = 52, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4644 + MOVE_ATTRACT, + MOVE_DOUBLE_EDGE, + MOVE_HAIL, + MOVE_BLIZZARD, + }, + }, + { +#line 4649 + .species = SPECIES_GLALIE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4651 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4650 + .lvl = 52, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4652 + MOVE_SHADOW_BALL, + MOVE_EXPLOSION, + MOVE_HAIL, + MOVE_ICE_BEAM, + }, + }, + { +#line 4657 + .species = SPECIES_WALREIN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4657 + .heldItem = ITEM_SITRUS_BERRY, +#line 4659 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 4658 + .lvl = 53, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4660 + MOVE_SURF, + MOVE_BODY_SLAM, + MOVE_ICE_BEAM, + MOVE_SHEER_COLD, + }, + }, + }, }, - +#line 4665 [TRAINER_DRAKE] = { - .trainerClass = TRAINER_CLASS_ELITE_FOUR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR, - .trainerPic = TRAINER_PIC_ELITE_FOUR_DRAKE, +#line 4666 .trainerName = _("DRAKE"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE}, +#line 4667 + .trainerClass = TRAINER_CLASS_ELITE_FOUR, +#line 4668 + .trainerPic = TRAINER_PIC_ELITE_FOUR_DRAKE, + .encounterMusic_gender = +#line 4670 + TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR, +#line 4671 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 4672 .doubleBattle = FALSE, +#line 4673 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, +#line 4674 .mugshotEnabled = TRUE, .mugshotColor = MUGSHOT_COLOR_BLUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Drake), + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 4676 + .species = SPECIES_SHELGON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4678 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4677 + .lvl = 52, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4679 + MOVE_ROCK_TOMB, + MOVE_DRAGON_CLAW, + MOVE_PROTECT, + MOVE_DOUBLE_EDGE, + }, + }, + { +#line 4684 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4686 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4685 + .lvl = 54, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4687 + MOVE_DOUBLE_EDGE, + MOVE_DRAGON_BREATH, + MOVE_DRAGON_DANCE, + MOVE_AERIAL_ACE, + }, + }, + { +#line 4692 + .species = SPECIES_KINGDRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4694 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4693 + .lvl = 53, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4695 + MOVE_SMOKESCREEN, + MOVE_DRAGON_DANCE, + MOVE_SURF, + MOVE_BODY_SLAM, + }, + }, + { +#line 4700 + .species = SPECIES_FLYGON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4702 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4701 + .lvl = 53, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4703 + MOVE_FLAMETHROWER, + MOVE_CRUNCH, + MOVE_DRAGON_BREATH, + MOVE_EARTHQUAKE, + }, + }, + { +#line 4708 + .species = SPECIES_SALAMENCE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4708 + .heldItem = ITEM_SITRUS_BERRY, +#line 4710 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 4709 + .lvl = 55, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4711 + MOVE_FLAMETHROWER, + MOVE_DRAGON_CLAW, + MOVE_ROCK_SLIDE, + MOVE_CRUNCH, + }, + }, + }, }, - +#line 4716 [TRAINER_ROXANNE_1] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LEADER_ROXANNE, +#line 4717 .trainerName = _("ROXANNE"), - .items = {ITEM_POTION, ITEM_POTION, ITEM_NONE, ITEM_NONE}, +#line 4718 + .trainerClass = TRAINER_CLASS_LEADER, +#line 4719 + .trainerPic = TRAINER_PIC_LEADER_ROXANNE, + .encounterMusic_gender = +#line 4720 +F_TRAINER_FEMALE | +#line 4721 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 4722 + .items = { ITEM_POTION, ITEM_POTION }, +#line 4723 .doubleBattle = FALSE, +#line 4724 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Roxanne1), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 4726 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4728 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 4727 + .lvl = 12, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4729 + MOVE_TACKLE, + MOVE_DEFENSE_CURL, + MOVE_ROCK_THROW, + MOVE_ROCK_TOMB, + }, + }, + { +#line 4734 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4736 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 4735 + .lvl = 12, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4737 + MOVE_TACKLE, + MOVE_DEFENSE_CURL, + MOVE_ROCK_THROW, + MOVE_ROCK_TOMB, + }, + }, + { +#line 4742 + .species = SPECIES_NOSEPASS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4742 + .heldItem = ITEM_ORAN_BERRY, +#line 4744 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 4743 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4745 + MOVE_BLOCK, + MOVE_HARDEN, + MOVE_TACKLE, + MOVE_ROCK_TOMB, + }, + }, + }, }, - +#line 4750 [TRAINER_BRAWLY_1] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_LEADER_BRAWLY, +#line 4751 .trainerName = _("BRAWLY"), - .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE}, +#line 4752 + .trainerClass = TRAINER_CLASS_LEADER, +#line 4753 + .trainerPic = TRAINER_PIC_LEADER_BRAWLY, + .encounterMusic_gender = +#line 4755 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 4756 + .items = { ITEM_SUPER_POTION, ITEM_SUPER_POTION }, +#line 4757 .doubleBattle = FALSE, +#line 4758 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Brawly1), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 4760 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4762 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 4761 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4763 + MOVE_KARATE_CHOP, + MOVE_LOW_KICK, + MOVE_SEISMIC_TOSS, + MOVE_BULK_UP, + }, + }, + { +#line 4768 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4770 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 4769 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4771 + MOVE_FOCUS_PUNCH, + MOVE_LIGHT_SCREEN, + MOVE_REFLECT, + MOVE_BULK_UP, + }, + }, + { +#line 4776 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4776 + .heldItem = ITEM_SITRUS_BERRY, +#line 4778 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 4777 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4779 + MOVE_ARM_THRUST, + MOVE_VITAL_THROW, + MOVE_REVERSAL, + MOVE_BULK_UP, + }, + }, + }, }, - +#line 4784 [TRAINER_WATTSON_1] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_LEADER_WATTSON, +#line 4785 .trainerName = _("WATTSON"), - .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE}, +#line 4786 + .trainerClass = TRAINER_CLASS_LEADER, +#line 4787 + .trainerPic = TRAINER_PIC_LEADER_WATTSON, + .encounterMusic_gender = +#line 4789 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 4790 + .items = { ITEM_SUPER_POTION, ITEM_SUPER_POTION }, +#line 4791 .doubleBattle = FALSE, +#line 4792 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Wattson1), + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 4794 + .species = SPECIES_VOLTORB, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4796 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 4795 + .lvl = 20, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4797 + MOVE_ROLLOUT, + MOVE_SPARK, + MOVE_SELF_DESTRUCT, + MOVE_SHOCK_WAVE, + }, + }, + { +#line 4802 + .species = SPECIES_ELECTRIKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4804 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 4803 + .lvl = 20, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4805 + MOVE_SHOCK_WAVE, + MOVE_LEER, + MOVE_QUICK_ATTACK, + MOVE_HOWL, + }, + }, + { +#line 4810 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4812 + .iv = TRAINER_PARTY_IVS(26, 26, 26, 26, 26, 26), +#line 4811 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4813 + MOVE_SUPERSONIC, + MOVE_SHOCK_WAVE, + MOVE_THUNDER_WAVE, + MOVE_SONIC_BOOM, + }, + }, + { +#line 4818 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4818 + .heldItem = ITEM_SITRUS_BERRY, +#line 4820 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4819 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4821 + MOVE_QUICK_ATTACK, + MOVE_THUNDER_WAVE, + MOVE_SHOCK_WAVE, + MOVE_HOWL, + }, + }, + }, }, - +#line 4826 [TRAINER_FLANNERY_1] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LEADER_FLANNERY, +#line 4827 .trainerName = _("FLANNERY"), - .items = {ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE}, +#line 4828 + .trainerClass = TRAINER_CLASS_LEADER, +#line 4829 + .trainerPic = TRAINER_PIC_LEADER_FLANNERY, + .encounterMusic_gender = +#line 4830 +F_TRAINER_FEMALE | +#line 4831 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 4832 + .items = { ITEM_HYPER_POTION, ITEM_HYPER_POTION }, +#line 4833 .doubleBattle = FALSE, +#line 4834 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Flannery1), + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 4836 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4838 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 4837 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4839 + MOVE_OVERHEAT, + MOVE_TAKE_DOWN, + MOVE_MAGNITUDE, + MOVE_SUNNY_DAY, + }, + }, + { +#line 4844 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4846 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 4845 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4847 + MOVE_OVERHEAT, + MOVE_SMOG, + MOVE_LIGHT_SCREEN, + MOVE_SUNNY_DAY, + }, + }, + { +#line 4852 + .species = SPECIES_CAMERUPT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4854 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4853 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4855 + MOVE_OVERHEAT, + MOVE_TACKLE, + MOVE_SUNNY_DAY, + MOVE_ATTRACT, + }, + }, + { +#line 4860 + .species = SPECIES_TORKOAL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4860 + .heldItem = ITEM_WHITE_HERB, +#line 4862 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4861 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4863 + MOVE_OVERHEAT, + MOVE_SUNNY_DAY, + MOVE_BODY_SLAM, + MOVE_ATTRACT, + }, + }, + }, }, - +#line 4868 [TRAINER_NORMAN_1] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_LEADER_NORMAN, +#line 4869 .trainerName = _("NORMAN"), - .items = {ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE}, +#line 4870 + .trainerClass = TRAINER_CLASS_LEADER, +#line 4871 + .trainerPic = TRAINER_PIC_LEADER_NORMAN, + .encounterMusic_gender = +#line 4873 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 4874 + .items = { ITEM_HYPER_POTION, ITEM_HYPER_POTION }, +#line 4875 .doubleBattle = FALSE, +#line 4876 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Norman1), + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 4878 + .species = SPECIES_SPINDA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4880 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 4879 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4881 + MOVE_TEETER_DANCE, + MOVE_PSYBEAM, + MOVE_FACADE, + MOVE_ENCORE, + }, + }, + { +#line 4886 + .species = SPECIES_VIGOROTH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4888 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 4887 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4889 + MOVE_SLASH, + MOVE_FACADE, + MOVE_ENCORE, + MOVE_FEINT_ATTACK, + }, + }, + { +#line 4894 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4896 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 4895 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4897 + MOVE_SLASH, + MOVE_BELLY_DRUM, + MOVE_FACADE, + MOVE_HEADBUTT, + }, + }, + { +#line 4902 + .species = SPECIES_SLAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4902 + .heldItem = ITEM_SITRUS_BERRY, +#line 4904 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4903 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4905 + MOVE_COUNTER, + MOVE_YAWN, + MOVE_FACADE, + MOVE_FEINT_ATTACK, + }, + }, + }, }, - +#line 4910 [TRAINER_WINONA_1] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LEADER_WINONA, +#line 4911 .trainerName = _("WINONA"), - .items = {ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE}, +#line 4912 + .trainerClass = TRAINER_CLASS_LEADER, +#line 4913 + .trainerPic = TRAINER_PIC_LEADER_WINONA, + .encounterMusic_gender = +#line 4914 +F_TRAINER_FEMALE | +#line 4915 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 4916 + .items = { ITEM_HYPER_POTION, ITEM_HYPER_POTION }, +#line 4917 .doubleBattle = FALSE, +#line 4918 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_RISKY, - .party = TRAINER_PARTY(sParty_Winona1), + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 4920 + .species = SPECIES_SWABLU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4922 + .iv = TRAINER_PARTY_IVS(25, 25, 25, 25, 25, 25), +#line 4921 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4923 + MOVE_PERISH_SONG, + MOVE_MIRROR_MOVE, + MOVE_SAFEGUARD, + MOVE_AERIAL_ACE, + }, + }, + { +#line 4928 + .species = SPECIES_TROPIUS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4930 + .iv = TRAINER_PARTY_IVS(25, 25, 25, 25, 25, 25), +#line 4929 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4931 + MOVE_SUNNY_DAY, + MOVE_AERIAL_ACE, + MOVE_SOLAR_BEAM, + MOVE_SYNTHESIS, + }, + }, + { +#line 4936 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4938 + .iv = TRAINER_PARTY_IVS(25, 25, 25, 25, 25, 25), +#line 4937 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4939 + MOVE_WATER_GUN, + MOVE_SUPERSONIC, + MOVE_PROTECT, + MOVE_AERIAL_ACE, + }, + }, + { +#line 4944 + .species = SPECIES_SKARMORY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4946 + .iv = TRAINER_PARTY_IVS(26, 26, 26, 26, 26, 26), +#line 4945 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4947 + MOVE_SAND_ATTACK, + MOVE_FURY_ATTACK, + MOVE_STEEL_WING, + MOVE_AERIAL_ACE, + }, + }, + { +#line 4952 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4952 + .heldItem = ITEM_ORAN_BERRY, +#line 4954 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 4953 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4955 + MOVE_EARTHQUAKE, + MOVE_DRAGON_BREATH, + MOVE_DRAGON_DANCE, + MOVE_AERIAL_ACE, + }, + }, + }, }, - +#line 4960 [TRAINER_TATE_AND_LIZA_1] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LEADER_TATE_AND_LIZA, +#line 4961 .trainerName = _("TATE&LIZA"), - .items = {ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_HYPER_POTION}, +#line 4962 + .trainerClass = TRAINER_CLASS_LEADER, +#line 4963 + .trainerPic = TRAINER_PIC_LEADER_TATE_AND_LIZA, + .encounterMusic_gender = +#line 4965 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 4966 + .items = { ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_HYPER_POTION }, +#line 4967 .doubleBattle = TRUE, +#line 4968 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_TateAndLiza1), + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 4970 + .species = SPECIES_CLAYDOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4972 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4971 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4973 + MOVE_EARTHQUAKE, + MOVE_ANCIENT_POWER, + MOVE_PSYCHIC, + MOVE_LIGHT_SCREEN, + }, + }, + { +#line 4978 + .species = SPECIES_XATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4980 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4979 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4981 + MOVE_PSYCHIC, + MOVE_SUNNY_DAY, + MOVE_CONFUSE_RAY, + MOVE_CALM_MIND, + }, + }, + { +#line 4986 + .species = SPECIES_LUNATONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4986 + .heldItem = ITEM_SITRUS_BERRY, +#line 4988 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4987 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4989 + MOVE_LIGHT_SCREEN, + MOVE_PSYCHIC, + MOVE_HYPNOSIS, + MOVE_CALM_MIND, + }, + }, + { +#line 4994 + .species = SPECIES_SOLROCK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4994 + .heldItem = ITEM_SITRUS_BERRY, +#line 4996 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4995 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4997 + MOVE_SUNNY_DAY, + MOVE_SOLAR_BEAM, + MOVE_PSYCHIC, + MOVE_FLAMETHROWER, + }, + }, + }, }, - +#line 5002 [TRAINER_JUAN_1] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_LEADER_JUAN, +#line 5003 .trainerName = _("JUAN"), - .items = {ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE}, +#line 5004 + .trainerClass = TRAINER_CLASS_LEADER, +#line 5005 + .trainerPic = TRAINER_PIC_LEADER_JUAN, + .encounterMusic_gender = +#line 5007 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5008 + .items = { ITEM_HYPER_POTION, ITEM_HYPER_POTION }, +#line 5009 .doubleBattle = FALSE, +#line 5010 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Juan1), + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 5012 + .species = SPECIES_LUVDISC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5014 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 5013 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5015 + MOVE_WATER_PULSE, + MOVE_ATTRACT, + MOVE_SWEET_KISS, + MOVE_FLAIL, + }, + }, + { +#line 5020 + .species = SPECIES_WHISCASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5022 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 5021 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5023 + MOVE_RAIN_DANCE, + MOVE_WATER_PULSE, + MOVE_AMNESIA, + MOVE_EARTHQUAKE, + }, + }, + { +#line 5028 + .species = SPECIES_SEALEO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5030 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 5029 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5031 + MOVE_ENCORE, + MOVE_BODY_SLAM, + MOVE_AURORA_BEAM, + MOVE_WATER_PULSE, + }, + }, + { +#line 5036 + .species = SPECIES_CRAWDAUNT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5038 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 5037 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5039 + MOVE_WATER_PULSE, + MOVE_CRABHAMMER, + MOVE_TAUNT, + MOVE_LEER, + }, + }, + { +#line 5044 + .species = SPECIES_KINGDRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5044 + .heldItem = ITEM_CHESTO_BERRY, +#line 5046 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 5045 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5047 + MOVE_WATER_PULSE, + MOVE_DOUBLE_TEAM, + MOVE_ICE_BEAM, + MOVE_REST, + }, + }, + }, }, - +#line 5052 [TRAINER_JERRY_1] = { - .trainerClass = TRAINER_CLASS_SCHOOL_KID, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_SCHOOL_KID_M, +#line 5053 .trainerName = _("JERRY"), - .items = {}, +#line 5054 + .trainerClass = TRAINER_CLASS_SCHOOL_KID, +#line 5055 + .trainerPic = TRAINER_PIC_SCHOOL_KID_M, + .encounterMusic_gender = +#line 5057 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5058 .doubleBattle = FALSE, +#line 5059 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jerry1), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5061 + .species = SPECIES_RALTS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5063 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 5062 + .lvl = 9, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5065 [TRAINER_TED] = { - .trainerClass = TRAINER_CLASS_SCHOOL_KID, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_SCHOOL_KID_M, +#line 5066 .trainerName = _("TED"), - .items = {}, +#line 5067 + .trainerClass = TRAINER_CLASS_SCHOOL_KID, +#line 5068 + .trainerPic = TRAINER_PIC_SCHOOL_KID_M, + .encounterMusic_gender = +#line 5070 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5071 .doubleBattle = FALSE, +#line 5072 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ted), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5074 + .species = SPECIES_RALTS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5076 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 5075 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5078 [TRAINER_PAUL] = { - .trainerClass = TRAINER_CLASS_SCHOOL_KID, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_SCHOOL_KID_M, +#line 5079 .trainerName = _("PAUL"), - .items = {}, +#line 5080 + .trainerClass = TRAINER_CLASS_SCHOOL_KID, +#line 5081 + .trainerPic = TRAINER_PIC_SCHOOL_KID_M, + .encounterMusic_gender = +#line 5083 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5084 .doubleBattle = FALSE, +#line 5085 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Paul), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 5087 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5089 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 5088 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5091 + .species = SPECIES_ODDISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5093 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 5092 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5095 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5097 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 5096 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5099 [TRAINER_JERRY_2] = { - .trainerClass = TRAINER_CLASS_SCHOOL_KID, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_SCHOOL_KID_M, +#line 5100 .trainerName = _("JERRY"), - .items = {}, +#line 5101 + .trainerClass = TRAINER_CLASS_SCHOOL_KID, +#line 5102 + .trainerPic = TRAINER_PIC_SCHOOL_KID_M, + .encounterMusic_gender = +#line 5104 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5105 .doubleBattle = FALSE, +#line 5106 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jerry2), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5108 + .species = SPECIES_RALTS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5110 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 5109 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5112 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5114 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 5113 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5116 [TRAINER_JERRY_3] = { - .trainerClass = TRAINER_CLASS_SCHOOL_KID, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_SCHOOL_KID_M, +#line 5117 .trainerName = _("JERRY"), - .items = {}, +#line 5118 + .trainerClass = TRAINER_CLASS_SCHOOL_KID, +#line 5119 + .trainerPic = TRAINER_PIC_SCHOOL_KID_M, + .encounterMusic_gender = +#line 5121 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5122 .doubleBattle = FALSE, +#line 5123 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jerry3), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5125 + .species = SPECIES_KIRLIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5127 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 5126 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5129 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5131 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 5130 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5133 [TRAINER_JERRY_4] = { - .trainerClass = TRAINER_CLASS_SCHOOL_KID, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_SCHOOL_KID_M, +#line 5134 .trainerName = _("JERRY"), - .items = {}, +#line 5135 + .trainerClass = TRAINER_CLASS_SCHOOL_KID, +#line 5136 + .trainerPic = TRAINER_PIC_SCHOOL_KID_M, + .encounterMusic_gender = +#line 5138 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5139 .doubleBattle = FALSE, +#line 5140 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jerry4), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5142 + .species = SPECIES_KIRLIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5144 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 5143 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5146 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5148 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 5147 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5150 [TRAINER_JERRY_5] = { - .trainerClass = TRAINER_CLASS_SCHOOL_KID, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_SCHOOL_KID_M, +#line 5151 .trainerName = _("JERRY"), - .items = {}, +#line 5152 + .trainerClass = TRAINER_CLASS_SCHOOL_KID, +#line 5153 + .trainerPic = TRAINER_PIC_SCHOOL_KID_M, + .encounterMusic_gender = +#line 5155 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5156 .doubleBattle = FALSE, +#line 5157 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jerry5), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 5159 + .species = SPECIES_KIRLIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5161 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 5160 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5163 + .species = SPECIES_BANETTE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5165 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 5164 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5167 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5169 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 5168 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5171 [TRAINER_KAREN_1] = { - .trainerClass = TRAINER_CLASS_SCHOOL_KID, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_SCHOOL_KID_F, +#line 5172 .trainerName = _("KAREN"), - .items = {}, +#line 5173 + .trainerClass = TRAINER_CLASS_SCHOOL_KID, +#line 5174 + .trainerPic = TRAINER_PIC_SCHOOL_KID_F, + .encounterMusic_gender = +#line 5175 +F_TRAINER_FEMALE | +#line 5176 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 5177 .doubleBattle = FALSE, +#line 5178 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Karen1), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5180 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5182 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 5181 + .lvl = 9, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5184 [TRAINER_GEORGIA] = { - .trainerClass = TRAINER_CLASS_SCHOOL_KID, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_SCHOOL_KID_F, +#line 5185 .trainerName = _("GEORGIA"), - .items = {}, +#line 5186 + .trainerClass = TRAINER_CLASS_SCHOOL_KID, +#line 5187 + .trainerPic = TRAINER_PIC_SCHOOL_KID_F, + .encounterMusic_gender = +#line 5188 +F_TRAINER_FEMALE | +#line 5189 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 5190 .doubleBattle = FALSE, +#line 5191 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Georgia), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5193 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5195 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 5194 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5197 + .species = SPECIES_BEAUTIFLY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5199 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 5198 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5201 [TRAINER_KAREN_2] = { - .trainerClass = TRAINER_CLASS_SCHOOL_KID, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_SCHOOL_KID_F, +#line 5202 .trainerName = _("KAREN"), - .items = {}, +#line 5203 + .trainerClass = TRAINER_CLASS_SCHOOL_KID, +#line 5204 + .trainerPic = TRAINER_PIC_SCHOOL_KID_F, + .encounterMusic_gender = +#line 5205 +F_TRAINER_FEMALE | +#line 5206 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 5207 .doubleBattle = FALSE, +#line 5208 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Karen2), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5210 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5212 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 5211 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5214 + .species = SPECIES_WHISMUR, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5216 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 5215 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5218 [TRAINER_KAREN_3] = { - .trainerClass = TRAINER_CLASS_SCHOOL_KID, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_SCHOOL_KID_F, +#line 5219 .trainerName = _("KAREN"), - .items = {}, +#line 5220 + .trainerClass = TRAINER_CLASS_SCHOOL_KID, +#line 5221 + .trainerPic = TRAINER_PIC_SCHOOL_KID_F, + .encounterMusic_gender = +#line 5222 +F_TRAINER_FEMALE | +#line 5223 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 5224 .doubleBattle = FALSE, +#line 5225 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Karen3), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5227 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5229 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 5228 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5231 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5233 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 5232 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5235 [TRAINER_KAREN_4] = { - .trainerClass = TRAINER_CLASS_SCHOOL_KID, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_SCHOOL_KID_F, +#line 5236 .trainerName = _("KAREN"), - .items = {}, +#line 5237 + .trainerClass = TRAINER_CLASS_SCHOOL_KID, +#line 5238 + .trainerPic = TRAINER_PIC_SCHOOL_KID_F, + .encounterMusic_gender = +#line 5239 +F_TRAINER_FEMALE | +#line 5240 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 5241 .doubleBattle = FALSE, +#line 5242 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Karen4), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5244 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5246 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 5245 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5248 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5250 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 5249 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5252 [TRAINER_KAREN_5] = { - .trainerClass = TRAINER_CLASS_SCHOOL_KID, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_SCHOOL_KID_F, +#line 5253 .trainerName = _("KAREN"), - .items = {}, +#line 5254 + .trainerClass = TRAINER_CLASS_SCHOOL_KID, +#line 5255 + .trainerPic = TRAINER_PIC_SCHOOL_KID_F, + .encounterMusic_gender = +#line 5256 +F_TRAINER_FEMALE | +#line 5257 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 5258 .doubleBattle = FALSE, +#line 5259 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Karen5), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5261 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5263 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 5262 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5265 + .species = SPECIES_EXPLOUD, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5267 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 5266 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5269 [TRAINER_KATE_AND_JOY] = { - .trainerClass = TRAINER_CLASS_SR_AND_JR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, - .trainerPic = TRAINER_PIC_SR_AND_JR, +#line 5270 .trainerName = _("KATE & JOY"), - .items = {}, +#line 5271 + .trainerClass = TRAINER_CLASS_SR_AND_JR, +#line 5272 + .trainerPic = TRAINER_PIC_SR_AND_JR, + .encounterMusic_gender = +#line 5274 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5275 .doubleBattle = TRUE, +#line 5276 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_KateAndJoy), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5278 + .species = SPECIES_SPINDA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5280 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5279 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5281 + MOVE_HYPNOSIS, + MOVE_PSYBEAM, + MOVE_DIZZY_PUNCH, + MOVE_TEETER_DANCE, + }, + }, + { +#line 5286 + .species = SPECIES_SLAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5288 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5287 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5289 + MOVE_FOCUS_PUNCH, + MOVE_YAWN, + MOVE_SLACK_OFF, + MOVE_FEINT_ATTACK, + }, + }, + }, }, - +#line 5294 [TRAINER_ANNA_AND_MEG_1] = { - .trainerClass = TRAINER_CLASS_SR_AND_JR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, - .trainerPic = TRAINER_PIC_SR_AND_JR, +#line 5295 .trainerName = _("ANNA & MEG"), - .items = {}, +#line 5296 + .trainerClass = TRAINER_CLASS_SR_AND_JR, +#line 5297 + .trainerPic = TRAINER_PIC_SR_AND_JR, + .encounterMusic_gender = +#line 5299 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5300 .doubleBattle = TRUE, +#line 5301 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_AnnaAndMeg1), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5303 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5305 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5304 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5306 + MOVE_GROWL, + MOVE_TAIL_WHIP, + MOVE_HEADBUTT, + MOVE_ODOR_SLEUTH, + }, + }, + { +#line 5311 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5313 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5312 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5314 + MOVE_TACKLE, + MOVE_FOCUS_ENERGY, + MOVE_ARM_THRUST, + }, + }, + }, }, - +#line 5318 [TRAINER_ANNA_AND_MEG_2] = { - .trainerClass = TRAINER_CLASS_SR_AND_JR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, - .trainerPic = TRAINER_PIC_SR_AND_JR, +#line 5319 .trainerName = _("ANNA & MEG"), - .items = {}, +#line 5320 + .trainerClass = TRAINER_CLASS_SR_AND_JR, +#line 5321 + .trainerPic = TRAINER_PIC_SR_AND_JR, + .encounterMusic_gender = +#line 5323 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5324 .doubleBattle = TRUE, +#line 5325 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_AnnaAndMeg2), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5327 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5329 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 5328 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5330 + MOVE_GROWL, + MOVE_TAIL_WHIP, + MOVE_HEADBUTT, + MOVE_ODOR_SLEUTH, + }, + }, + { +#line 5335 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5337 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 5336 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5338 + MOVE_TACKLE, + MOVE_FOCUS_ENERGY, + MOVE_ARM_THRUST, + }, + }, + }, }, - +#line 5342 [TRAINER_ANNA_AND_MEG_3] = { - .trainerClass = TRAINER_CLASS_SR_AND_JR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, - .trainerPic = TRAINER_PIC_SR_AND_JR, +#line 5343 .trainerName = _("ANNA & MEG"), - .items = {}, +#line 5344 + .trainerClass = TRAINER_CLASS_SR_AND_JR, +#line 5345 + .trainerPic = TRAINER_PIC_SR_AND_JR, + .encounterMusic_gender = +#line 5347 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5348 .doubleBattle = TRUE, +#line 5349 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_AnnaAndMeg3), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5351 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5353 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 5352 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5354 + MOVE_GROWL, + MOVE_TAIL_WHIP, + MOVE_HEADBUTT, + MOVE_ODOR_SLEUTH, + }, + }, + { +#line 5359 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5361 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 5360 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5362 + MOVE_TACKLE, + MOVE_FOCUS_ENERGY, + MOVE_ARM_THRUST, + }, + }, + }, }, - +#line 5366 [TRAINER_ANNA_AND_MEG_4] = { - .trainerClass = TRAINER_CLASS_SR_AND_JR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, - .trainerPic = TRAINER_PIC_SR_AND_JR, +#line 5367 .trainerName = _("ANNA & MEG"), - .items = {}, +#line 5368 + .trainerClass = TRAINER_CLASS_SR_AND_JR, +#line 5369 + .trainerPic = TRAINER_PIC_SR_AND_JR, + .encounterMusic_gender = +#line 5371 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5372 .doubleBattle = TRUE, +#line 5373 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_AnnaAndMeg4), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5375 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5377 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 5376 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5378 + MOVE_GROWL, + MOVE_TAIL_WHIP, + MOVE_HEADBUTT, + MOVE_ODOR_SLEUTH, + }, + }, + { +#line 5383 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5385 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 5384 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5386 + MOVE_TACKLE, + MOVE_FOCUS_ENERGY, + MOVE_ARM_THRUST, + }, + }, + }, }, - +#line 5390 [TRAINER_ANNA_AND_MEG_5] = { - .trainerClass = TRAINER_CLASS_SR_AND_JR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, - .trainerPic = TRAINER_PIC_SR_AND_JR, +#line 5391 .trainerName = _("ANNA & MEG"), - .items = {}, +#line 5392 + .trainerClass = TRAINER_CLASS_SR_AND_JR, +#line 5393 + .trainerPic = TRAINER_PIC_SR_AND_JR, + .encounterMusic_gender = +#line 5395 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5396 .doubleBattle = TRUE, +#line 5397 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_AnnaAndMeg5), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5399 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5401 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 5400 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5402 + MOVE_GROWL, + MOVE_TAIL_WHIP, + MOVE_HEADBUTT, + MOVE_ODOR_SLEUTH, + }, + }, + { +#line 5407 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5409 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 5408 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5410 + MOVE_TACKLE, + MOVE_FOCUS_ENERGY, + MOVE_ARM_THRUST, + }, + }, + }, }, - +#line 5414 [TRAINER_VICTOR] = { - .trainerClass = TRAINER_CLASS_WINSTRATE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, - .trainerPic = TRAINER_PIC_POKEFAN_M, +#line 5415 .trainerName = _("VICTOR"), - .items = {}, +#line 5416 + .trainerClass = TRAINER_CLASS_WINSTRATE, +#line 5417 + .trainerPic = TRAINER_PIC_POKEFAN_M, + .encounterMusic_gender = +#line 5419 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5420 .doubleBattle = FALSE, +#line 5421 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Victor), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5423 + .species = SPECIES_TAILLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5423 + .heldItem = ITEM_ORAN_BERRY, +#line 5425 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 5424 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5427 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5427 + .heldItem = ITEM_ORAN_BERRY, +#line 5429 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 5428 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5431 [TRAINER_MIGUEL_1] = { - .trainerClass = TRAINER_CLASS_POKEFAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, - .trainerPic = TRAINER_PIC_POKEFAN_M, +#line 5432 .trainerName = _("MIGUEL"), - .items = {}, +#line 5433 + .trainerClass = TRAINER_CLASS_POKEFAN, +#line 5434 + .trainerPic = TRAINER_PIC_POKEFAN_M, + .encounterMusic_gender = +#line 5436 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5437 .doubleBattle = FALSE, +#line 5438 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Miguel1), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5440 + .species = SPECIES_SKITTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5440 + .heldItem = ITEM_ORAN_BERRY, +#line 5442 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5441 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5444 [TRAINER_COLTON] = { - .trainerClass = TRAINER_CLASS_POKEFAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, - .trainerPic = TRAINER_PIC_POKEFAN_M, +#line 5445 .trainerName = _("COLTON"), - .items = {}, +#line 5446 + .trainerClass = TRAINER_CLASS_POKEFAN, +#line 5447 + .trainerPic = TRAINER_PIC_POKEFAN_M, + .encounterMusic_gender = +#line 5449 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5450 .doubleBattle = FALSE, +#line 5451 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Colton), + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 5453 + .species = SPECIES_SKITTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5453 + .heldItem = ITEM_ORAN_BERRY, +#line 5455 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5454 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5456 + MOVE_ASSIST, + MOVE_CHARM, + MOVE_FEINT_ATTACK, + MOVE_HEAL_BELL, + }, + }, + { +#line 5461 + .species = SPECIES_SKITTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5461 + .heldItem = ITEM_ORAN_BERRY, +#line 5463 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5462 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5464 + MOVE_ASSIST, + MOVE_CHARM, + MOVE_FEINT_ATTACK, + MOVE_HEAL_BELL, + }, + }, + { +#line 5469 + .species = SPECIES_SKITTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5469 + .heldItem = ITEM_ORAN_BERRY, +#line 5471 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5470 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5472 + MOVE_ASSIST, + MOVE_CHARM, + MOVE_FEINT_ATTACK, + MOVE_HEAL_BELL, + }, + }, + { +#line 5477 + .species = SPECIES_SKITTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5477 + .heldItem = ITEM_ORAN_BERRY, +#line 5479 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5478 + .lvl = 12, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5480 + MOVE_ASSIST, + MOVE_CHARM, + MOVE_FEINT_ATTACK, + MOVE_HEAL_BELL, + }, + }, + { +#line 5485 + .species = SPECIES_SKITTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5485 + .heldItem = ITEM_ORAN_BERRY, +#line 5487 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5486 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5488 + MOVE_ASSIST, + MOVE_CHARM, + MOVE_FEINT_ATTACK, + MOVE_HEAL_BELL, + }, + }, + { +#line 5493 + .species = SPECIES_DELCATTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5493 + .heldItem = ITEM_ORAN_BERRY, +#line 5495 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5494 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5496 + MOVE_ASSIST, + MOVE_CHARM, + MOVE_FEINT_ATTACK, + MOVE_HEAL_BELL, + }, + }, + }, }, - +#line 5501 [TRAINER_MIGUEL_2] = { - .trainerClass = TRAINER_CLASS_POKEFAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, - .trainerPic = TRAINER_PIC_POKEFAN_M, +#line 5502 .trainerName = _("MIGUEL"), - .items = {}, +#line 5503 + .trainerClass = TRAINER_CLASS_POKEFAN, +#line 5504 + .trainerPic = TRAINER_PIC_POKEFAN_M, + .encounterMusic_gender = +#line 5506 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5507 .doubleBattle = FALSE, +#line 5508 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Miguel2), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5510 + .species = SPECIES_SKITTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5510 + .heldItem = ITEM_ORAN_BERRY, +#line 5512 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5511 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5514 [TRAINER_MIGUEL_3] = { - .trainerClass = TRAINER_CLASS_POKEFAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, - .trainerPic = TRAINER_PIC_POKEFAN_M, +#line 5515 .trainerName = _("MIGUEL"), - .items = {}, +#line 5516 + .trainerClass = TRAINER_CLASS_POKEFAN, +#line 5517 + .trainerPic = TRAINER_PIC_POKEFAN_M, + .encounterMusic_gender = +#line 5519 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5520 .doubleBattle = FALSE, +#line 5521 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Miguel3), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5523 + .species = SPECIES_SKITTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5523 + .heldItem = ITEM_ORAN_BERRY, +#line 5525 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5524 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5527 [TRAINER_MIGUEL_4] = { - .trainerClass = TRAINER_CLASS_POKEFAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, - .trainerPic = TRAINER_PIC_POKEFAN_M, +#line 5528 .trainerName = _("MIGUEL"), - .items = {}, +#line 5529 + .trainerClass = TRAINER_CLASS_POKEFAN, +#line 5530 + .trainerPic = TRAINER_PIC_POKEFAN_M, + .encounterMusic_gender = +#line 5532 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5533 .doubleBattle = FALSE, +#line 5534 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Miguel4), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5536 + .species = SPECIES_DELCATTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5536 + .heldItem = ITEM_ORAN_BERRY, +#line 5538 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5537 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5540 [TRAINER_MIGUEL_5] = { - .trainerClass = TRAINER_CLASS_POKEFAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, - .trainerPic = TRAINER_PIC_POKEFAN_M, +#line 5541 .trainerName = _("MIGUEL"), - .items = {}, +#line 5542 + .trainerClass = TRAINER_CLASS_POKEFAN, +#line 5543 + .trainerPic = TRAINER_PIC_POKEFAN_M, + .encounterMusic_gender = +#line 5545 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5546 .doubleBattle = FALSE, +#line 5547 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Miguel5), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5549 + .species = SPECIES_DELCATTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5549 + .heldItem = ITEM_SITRUS_BERRY, +#line 5551 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5550 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5553 [TRAINER_VICTORIA] = { - .trainerClass = TRAINER_CLASS_WINSTRATE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS, - .trainerPic = TRAINER_PIC_POKEFAN_F, +#line 5554 .trainerName = _("VICTORIA"), - .items = {}, +#line 5555 + .trainerClass = TRAINER_CLASS_WINSTRATE, +#line 5556 + .trainerPic = TRAINER_PIC_POKEFAN_F, + .encounterMusic_gender = +#line 5557 +F_TRAINER_FEMALE | +#line 5558 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5559 .doubleBattle = FALSE, +#line 5560 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT, - .party = TRAINER_PARTY(sParty_Victoria), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5562 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5562 + .heldItem = ITEM_ORAN_BERRY, +#line 5564 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 5563 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5566 [TRAINER_VANESSA] = { - .trainerClass = TRAINER_CLASS_POKEFAN, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS, - .trainerPic = TRAINER_PIC_POKEFAN_F, +#line 5567 .trainerName = _("VANESSA"), - .items = {}, +#line 5568 + .trainerClass = TRAINER_CLASS_POKEFAN, +#line 5569 + .trainerPic = TRAINER_PIC_POKEFAN_F, + .encounterMusic_gender = +#line 5570 +F_TRAINER_FEMALE | +#line 5571 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5572 .doubleBattle = FALSE, +#line 5573 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Vanessa), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5575 + .species = SPECIES_PIKACHU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5575 + .heldItem = ITEM_ORAN_BERRY, +#line 5577 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5576 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5579 [TRAINER_BETHANY] = { - .trainerClass = TRAINER_CLASS_POKEFAN, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS, - .trainerPic = TRAINER_PIC_POKEFAN_F, +#line 5580 .trainerName = _("BETHANY"), - .items = {}, +#line 5581 + .trainerClass = TRAINER_CLASS_POKEFAN, +#line 5582 + .trainerPic = TRAINER_PIC_POKEFAN_F, + .encounterMusic_gender = +#line 5583 +F_TRAINER_FEMALE | +#line 5584 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5585 .doubleBattle = FALSE, +#line 5586 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Bethany), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 5588 + .species = SPECIES_AZURILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5588 + .heldItem = ITEM_ORAN_BERRY, +#line 5590 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 5589 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5592 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5592 + .heldItem = ITEM_ORAN_BERRY, +#line 5594 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 5593 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5596 + .species = SPECIES_AZUMARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5596 + .heldItem = ITEM_ORAN_BERRY, +#line 5598 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 5597 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5600 [TRAINER_ISABEL_1] = { - .trainerClass = TRAINER_CLASS_POKEFAN, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS, - .trainerPic = TRAINER_PIC_POKEFAN_F, +#line 5601 .trainerName = _("ISABEL"), - .items = {}, +#line 5602 + .trainerClass = TRAINER_CLASS_POKEFAN, +#line 5603 + .trainerPic = TRAINER_PIC_POKEFAN_F, + .encounterMusic_gender = +#line 5604 +F_TRAINER_FEMALE | +#line 5605 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5606 .doubleBattle = FALSE, +#line 5607 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Isabel1), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5609 + .species = SPECIES_PLUSLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5609 + .heldItem = ITEM_ORAN_BERRY, +#line 5611 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5610 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5613 + .species = SPECIES_MINUN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5613 + .heldItem = ITEM_ORAN_BERRY, +#line 5615 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5614 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5617 [TRAINER_ISABEL_2] = { - .trainerClass = TRAINER_CLASS_POKEFAN, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS, - .trainerPic = TRAINER_PIC_POKEFAN_F, +#line 5618 .trainerName = _("ISABEL"), - .items = {}, +#line 5619 + .trainerClass = TRAINER_CLASS_POKEFAN, +#line 5620 + .trainerPic = TRAINER_PIC_POKEFAN_F, + .encounterMusic_gender = +#line 5621 +F_TRAINER_FEMALE | +#line 5622 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5623 .doubleBattle = FALSE, +#line 5624 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Isabel2), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5626 + .species = SPECIES_PLUSLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5626 + .heldItem = ITEM_ORAN_BERRY, +#line 5628 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 5627 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5630 + .species = SPECIES_MINUN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5630 + .heldItem = ITEM_ORAN_BERRY, +#line 5632 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 5631 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5634 [TRAINER_ISABEL_3] = { - .trainerClass = TRAINER_CLASS_POKEFAN, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS, - .trainerPic = TRAINER_PIC_POKEFAN_F, +#line 5635 .trainerName = _("ISABEL"), - .items = {}, +#line 5636 + .trainerClass = TRAINER_CLASS_POKEFAN, +#line 5637 + .trainerPic = TRAINER_PIC_POKEFAN_F, + .encounterMusic_gender = +#line 5638 +F_TRAINER_FEMALE | +#line 5639 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5640 .doubleBattle = FALSE, +#line 5641 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Isabel3), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5643 + .species = SPECIES_PLUSLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5643 + .heldItem = ITEM_ORAN_BERRY, +#line 5645 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 5644 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5647 + .species = SPECIES_MINUN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5647 + .heldItem = ITEM_ORAN_BERRY, +#line 5649 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 5648 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5651 [TRAINER_ISABEL_4] = { - .trainerClass = TRAINER_CLASS_POKEFAN, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS, - .trainerPic = TRAINER_PIC_POKEFAN_F, +#line 5652 .trainerName = _("ISABEL"), - .items = {}, +#line 5653 + .trainerClass = TRAINER_CLASS_POKEFAN, +#line 5654 + .trainerPic = TRAINER_PIC_POKEFAN_F, + .encounterMusic_gender = +#line 5655 +F_TRAINER_FEMALE | +#line 5656 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5657 .doubleBattle = FALSE, +#line 5658 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Isabel4), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5660 + .species = SPECIES_PLUSLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5660 + .heldItem = ITEM_ORAN_BERRY, +#line 5662 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 5661 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5664 + .species = SPECIES_MINUN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5664 + .heldItem = ITEM_ORAN_BERRY, +#line 5666 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 5665 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5668 [TRAINER_ISABEL_5] = { - .trainerClass = TRAINER_CLASS_POKEFAN, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS, - .trainerPic = TRAINER_PIC_POKEFAN_F, +#line 5669 .trainerName = _("ISABEL"), - .items = {}, +#line 5670 + .trainerClass = TRAINER_CLASS_POKEFAN, +#line 5671 + .trainerPic = TRAINER_PIC_POKEFAN_F, + .encounterMusic_gender = +#line 5672 +F_TRAINER_FEMALE | +#line 5673 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5674 .doubleBattle = FALSE, +#line 5675 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Isabel5), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5677 + .species = SPECIES_PLUSLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5677 + .heldItem = ITEM_SITRUS_BERRY, +#line 5679 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 5678 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5681 + .species = SPECIES_MINUN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5681 + .heldItem = ITEM_SITRUS_BERRY, +#line 5683 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 5682 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5685 [TRAINER_TIMOTHY_1] = { - .trainerClass = TRAINER_CLASS_EXPERT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_EXPERT_M, +#line 5686 .trainerName = _("TIMOTHY"), - .items = {}, +#line 5687 + .trainerClass = TRAINER_CLASS_EXPERT, +#line 5688 + .trainerPic = TRAINER_PIC_EXPERT_M, + .encounterMusic_gender = +#line 5690 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 5691 .doubleBattle = FALSE, +#line 5692 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Timothy1), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5694 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5696 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 5695 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5698 [TRAINER_TIMOTHY_2] = { - .trainerClass = TRAINER_CLASS_EXPERT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_EXPERT_M, +#line 5699 .trainerName = _("TIMOTHY"), - .items = {}, +#line 5700 + .trainerClass = TRAINER_CLASS_EXPERT, +#line 5701 + .trainerPic = TRAINER_PIC_EXPERT_M, + .encounterMusic_gender = +#line 5703 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 5704 .doubleBattle = FALSE, +#line 5705 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Timothy2), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5707 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5709 + .iv = TRAINER_PARTY_IVS(25, 25, 25, 25, 25, 25), +#line 5708 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5710 + MOVE_ARM_THRUST, + MOVE_KNOCK_OFF, + MOVE_SAND_ATTACK, + MOVE_DIG, + }, + }, + }, }, - +#line 5715 [TRAINER_TIMOTHY_3] = { - .trainerClass = TRAINER_CLASS_EXPERT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_EXPERT_M, +#line 5716 .trainerName = _("TIMOTHY"), - .items = {}, +#line 5717 + .trainerClass = TRAINER_CLASS_EXPERT, +#line 5718 + .trainerPic = TRAINER_PIC_EXPERT_M, + .encounterMusic_gender = +#line 5720 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 5721 .doubleBattle = FALSE, +#line 5722 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Timothy3), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5724 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5726 + .iv = TRAINER_PARTY_IVS(26, 26, 26, 26, 26, 26), +#line 5725 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5727 + MOVE_ARM_THRUST, + MOVE_KNOCK_OFF, + MOVE_SAND_ATTACK, + MOVE_DIG, + }, + }, + }, }, - +#line 5732 [TRAINER_TIMOTHY_4] = { - .trainerClass = TRAINER_CLASS_EXPERT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_EXPERT_M, +#line 5733 .trainerName = _("TIMOTHY"), - .items = {}, +#line 5734 + .trainerClass = TRAINER_CLASS_EXPERT, +#line 5735 + .trainerPic = TRAINER_PIC_EXPERT_M, + .encounterMusic_gender = +#line 5737 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 5738 .doubleBattle = FALSE, +#line 5739 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Timothy4), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5741 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5743 + .iv = TRAINER_PARTY_IVS(27, 27, 27, 27, 27, 27), +#line 5742 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5744 + MOVE_ARM_THRUST, + MOVE_BELLY_DRUM, + MOVE_SAND_ATTACK, + MOVE_DIG, + }, + }, + }, }, - +#line 5749 [TRAINER_TIMOTHY_5] = { - .trainerClass = TRAINER_CLASS_EXPERT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_EXPERT_M, +#line 5750 .trainerName = _("TIMOTHY"), - .items = {}, +#line 5751 + .trainerClass = TRAINER_CLASS_EXPERT, +#line 5752 + .trainerPic = TRAINER_PIC_EXPERT_M, + .encounterMusic_gender = +#line 5754 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 5755 .doubleBattle = FALSE, +#line 5756 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Timothy5), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5758 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5760 + .iv = TRAINER_PARTY_IVS(29, 29, 29, 29, 29, 29), +#line 5759 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5761 + MOVE_ARM_THRUST, + MOVE_BELLY_DRUM, + MOVE_SAND_ATTACK, + MOVE_DIG, + }, + }, + }, }, - +#line 5766 [TRAINER_VICKY] = { - .trainerClass = TRAINER_CLASS_WINSTRATE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_EXPERT_F, +#line 5767 .trainerName = _("VICKY"), - .items = {}, +#line 5768 + .trainerClass = TRAINER_CLASS_WINSTRATE, +#line 5769 + .trainerPic = TRAINER_PIC_EXPERT_F, + .encounterMusic_gender = +#line 5770 +F_TRAINER_FEMALE | +#line 5771 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 5772 .doubleBattle = FALSE, +#line 5773 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Vicky), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5775 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5777 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 5776 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5778 + MOVE_HIGH_JUMP_KICK, + MOVE_MEDITATE, + MOVE_CONFUSION, + MOVE_DETECT, + }, + }, + }, }, - +#line 5783 [TRAINER_SHELBY_1] = { - .trainerClass = TRAINER_CLASS_EXPERT, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_EXPERT_F, +#line 5784 .trainerName = _("SHELBY"), - .items = {}, +#line 5785 + .trainerClass = TRAINER_CLASS_EXPERT, +#line 5786 + .trainerPic = TRAINER_PIC_EXPERT_F, + .encounterMusic_gender = +#line 5787 +F_TRAINER_FEMALE | +#line 5788 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 5789 .doubleBattle = FALSE, +#line 5790 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Shelby1), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5792 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5794 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 5793 + .lvl = 21, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5796 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5798 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 5797 + .lvl = 21, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5800 [TRAINER_SHELBY_2] = { - .trainerClass = TRAINER_CLASS_EXPERT, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_EXPERT_F, +#line 5801 .trainerName = _("SHELBY"), - .items = {}, +#line 5802 + .trainerClass = TRAINER_CLASS_EXPERT, +#line 5803 + .trainerPic = TRAINER_PIC_EXPERT_F, + .encounterMusic_gender = +#line 5804 +F_TRAINER_FEMALE | +#line 5805 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 5806 .doubleBattle = FALSE, +#line 5807 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Shelby2), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5809 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5811 + .iv = TRAINER_PARTY_IVS(25, 25, 25, 25, 25, 25), +#line 5810 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5813 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5815 + .iv = TRAINER_PARTY_IVS(25, 25, 25, 25, 25, 25), +#line 5814 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5817 [TRAINER_SHELBY_3] = { - .trainerClass = TRAINER_CLASS_EXPERT, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_EXPERT_F, +#line 5818 .trainerName = _("SHELBY"), - .items = {}, +#line 5819 + .trainerClass = TRAINER_CLASS_EXPERT, +#line 5820 + .trainerPic = TRAINER_PIC_EXPERT_F, + .encounterMusic_gender = +#line 5821 +F_TRAINER_FEMALE | +#line 5822 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 5823 .doubleBattle = FALSE, +#line 5824 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Shelby3), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5826 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5828 + .iv = TRAINER_PARTY_IVS(26, 26, 26, 26, 26, 26), +#line 5827 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5830 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5832 + .iv = TRAINER_PARTY_IVS(26, 26, 26, 26, 26, 26), +#line 5831 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5834 [TRAINER_SHELBY_4] = { - .trainerClass = TRAINER_CLASS_EXPERT, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_EXPERT_F, +#line 5835 .trainerName = _("SHELBY"), - .items = {}, +#line 5836 + .trainerClass = TRAINER_CLASS_EXPERT, +#line 5837 + .trainerPic = TRAINER_PIC_EXPERT_F, + .encounterMusic_gender = +#line 5838 +F_TRAINER_FEMALE | +#line 5839 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 5840 .doubleBattle = FALSE, +#line 5841 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Shelby4), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5843 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5845 + .iv = TRAINER_PARTY_IVS(27, 27, 27, 27, 27, 27), +#line 5844 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5847 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5849 + .iv = TRAINER_PARTY_IVS(27, 27, 27, 27, 27, 27), +#line 5848 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5851 [TRAINER_SHELBY_5] = { - .trainerClass = TRAINER_CLASS_EXPERT, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_EXPERT_F, +#line 5852 .trainerName = _("SHELBY"), - .items = {}, +#line 5853 + .trainerClass = TRAINER_CLASS_EXPERT, +#line 5854 + .trainerPic = TRAINER_PIC_EXPERT_F, + .encounterMusic_gender = +#line 5855 +F_TRAINER_FEMALE | +#line 5856 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 5857 .doubleBattle = FALSE, +#line 5858 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Shelby5), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5860 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5862 + .iv = TRAINER_PARTY_IVS(29, 29, 29, 29, 29, 29), +#line 5861 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5864 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5866 + .iv = TRAINER_PARTY_IVS(29, 29, 29, 29, 29, 29), +#line 5865 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5868 [TRAINER_CALVIN_1] = { - .trainerClass = TRAINER_CLASS_YOUNGSTER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_YOUNGSTER, +#line 5869 .trainerName = _("CALVIN"), - .items = {}, +#line 5870 + .trainerClass = TRAINER_CLASS_YOUNGSTER, +#line 5871 + .trainerPic = TRAINER_PIC_YOUNGSTER, + .encounterMusic_gender = +#line 5873 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5874 .doubleBattle = FALSE, +#line 5875 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Calvin1), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5877 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5879 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5878 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5881 [TRAINER_BILLY] = { - .trainerClass = TRAINER_CLASS_YOUNGSTER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_YOUNGSTER, +#line 5882 .trainerName = _("BILLY"), - .items = {}, +#line 5883 + .trainerClass = TRAINER_CLASS_YOUNGSTER, +#line 5884 + .trainerPic = TRAINER_PIC_YOUNGSTER, + .encounterMusic_gender = +#line 5886 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5887 .doubleBattle = FALSE, +#line 5888 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Billy), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5890 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5892 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5891 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5894 + .species = SPECIES_SEEDOT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5896 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5895 + .lvl = 7, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5898 [TRAINER_JOSH] = { - .trainerClass = TRAINER_CLASS_YOUNGSTER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_YOUNGSTER, +#line 5899 .trainerName = _("JOSH"), - .items = {}, +#line 5900 + .trainerClass = TRAINER_CLASS_YOUNGSTER, +#line 5901 + .trainerPic = TRAINER_PIC_YOUNGSTER, + .encounterMusic_gender = +#line 5903 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5904 .doubleBattle = FALSE, +#line 5905 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Josh), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5907 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5909 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 5908 + .lvl = 10, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5910 + MOVE_TACKLE, + }, + }, + }, }, - +#line 5912 [TRAINER_TOMMY] = { - .trainerClass = TRAINER_CLASS_YOUNGSTER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_YOUNGSTER, +#line 5913 .trainerName = _("TOMMY"), - .items = {}, +#line 5914 + .trainerClass = TRAINER_CLASS_YOUNGSTER, +#line 5915 + .trainerPic = TRAINER_PIC_YOUNGSTER, + .encounterMusic_gender = +#line 5917 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5918 .doubleBattle = FALSE, +#line 5919 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Tommy), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5921 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5923 + .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), +#line 5922 + .lvl = 8, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5925 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5927 + .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), +#line 5926 + .lvl = 8, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5929 [TRAINER_JOEY] = { - .trainerClass = TRAINER_CLASS_YOUNGSTER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_YOUNGSTER, +#line 5930 .trainerName = _("JOEY"), - .items = {}, +#line 5931 + .trainerClass = TRAINER_CLASS_YOUNGSTER, +#line 5932 + .trainerPic = TRAINER_PIC_YOUNGSTER, + .encounterMusic_gender = +#line 5934 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5935 .doubleBattle = FALSE, +#line 5936 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Joey), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5938 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5940 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5939 + .lvl = 9, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 5942 [TRAINER_BEN] = { - .trainerClass = TRAINER_CLASS_YOUNGSTER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_YOUNGSTER, +#line 5943 .trainerName = _("BEN"), - .items = {}, +#line 5944 + .trainerClass = TRAINER_CLASS_YOUNGSTER, +#line 5945 + .trainerPic = TRAINER_PIC_YOUNGSTER, + .encounterMusic_gender = +#line 5947 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5948 .doubleBattle = FALSE, +#line 5949 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ben), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5951 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5953 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 5952 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5954 + MOVE_HEADBUTT, + MOVE_SAND_ATTACK, + MOVE_GROWL, + MOVE_THUNDERBOLT, + }, + }, + { +#line 5959 + .species = SPECIES_GULPIN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5961 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 5960 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5962 + MOVE_AMNESIA, + MOVE_SLUDGE, + MOVE_YAWN, + MOVE_POUND, + }, + }, + }, }, - +#line 5967 [TRAINER_QUINCY] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_M, +#line 5968 .trainerName = _("QUINCY"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 5969 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 5970 + .trainerPic = TRAINER_PIC_COOLTRAINER_M, + .encounterMusic_gender = +#line 5972 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 5973 + .items = { ITEM_FULL_RESTORE }, +#line 5974 .doubleBattle = FALSE, +#line 5975 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Quincy), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5977 + .species = SPECIES_SLAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5979 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 5978 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5980 + MOVE_ATTRACT, + MOVE_ICE_BEAM, + MOVE_THUNDERBOLT, + MOVE_FLAMETHROWER, + }, + }, + { +#line 5985 + .species = SPECIES_DUSCLOPS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5987 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 5986 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5988 + MOVE_SKILL_SWAP, + MOVE_PROTECT, + MOVE_WILL_O_WISP, + MOVE_TOXIC, + }, + }, + }, }, - +#line 5993 [TRAINER_KATELYNN] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_F, +#line 5994 .trainerName = _("KATELYNN"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 5995 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 5996 + .trainerPic = TRAINER_PIC_COOLTRAINER_F, + .encounterMusic_gender = +#line 5997 +F_TRAINER_FEMALE | +#line 5998 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 5999 + .items = { ITEM_FULL_RESTORE }, +#line 6000 .doubleBattle = FALSE, +#line 6001 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Katelynn), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 6003 + .species = SPECIES_GARDEVOIR, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6005 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 6004 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 6006 + MOVE_SKILL_SWAP, + MOVE_PSYCHIC, + MOVE_THUNDERBOLT, + MOVE_CALM_MIND, + }, + }, + { +#line 6011 + .species = SPECIES_SLAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6013 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 6012 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 6014 + MOVE_EARTHQUAKE, + MOVE_SHADOW_BALL, + MOVE_AERIAL_ACE, + MOVE_BRICK_BREAK, + }, + }, + }, }, - +#line 6019 [TRAINER_JAYLEN] = { - .trainerClass = TRAINER_CLASS_YOUNGSTER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_YOUNGSTER, +#line 6020 .trainerName = _("JAYLEN"), - .items = {}, +#line 6021 + .trainerClass = TRAINER_CLASS_YOUNGSTER, +#line 6022 + .trainerPic = TRAINER_PIC_YOUNGSTER, + .encounterMusic_gender = +#line 6024 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6025 .doubleBattle = FALSE, +#line 6026 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jaylen), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6028 + .species = SPECIES_TRAPINCH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6030 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6029 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6032 [TRAINER_DILLON] = { - .trainerClass = TRAINER_CLASS_YOUNGSTER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_YOUNGSTER, +#line 6033 .trainerName = _("DILLON"), - .items = {}, +#line 6034 + .trainerClass = TRAINER_CLASS_YOUNGSTER, +#line 6035 + .trainerPic = TRAINER_PIC_YOUNGSTER, + .encounterMusic_gender = +#line 6037 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6038 .doubleBattle = FALSE, +#line 6039 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dillon), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6041 + .species = SPECIES_ARON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6043 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6042 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6045 [TRAINER_CALVIN_2] = { - .trainerClass = TRAINER_CLASS_YOUNGSTER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_YOUNGSTER, +#line 6046 .trainerName = _("CALVIN"), - .items = {}, +#line 6047 + .trainerClass = TRAINER_CLASS_YOUNGSTER, +#line 6048 + .trainerPic = TRAINER_PIC_YOUNGSTER, + .encounterMusic_gender = +#line 6050 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6051 .doubleBattle = FALSE, +#line 6052 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Calvin2), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6054 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6056 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 6055 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6058 [TRAINER_CALVIN_3] = { - .trainerClass = TRAINER_CLASS_YOUNGSTER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_YOUNGSTER, +#line 6059 .trainerName = _("CALVIN"), - .items = {}, +#line 6060 + .trainerClass = TRAINER_CLASS_YOUNGSTER, +#line 6061 + .trainerPic = TRAINER_PIC_YOUNGSTER, + .encounterMusic_gender = +#line 6063 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6064 .doubleBattle = FALSE, +#line 6065 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Calvin3), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 6067 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6069 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 6068 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6071 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6073 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 6072 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6075 [TRAINER_CALVIN_4] = { - .trainerClass = TRAINER_CLASS_YOUNGSTER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_YOUNGSTER, +#line 6076 .trainerName = _("CALVIN"), - .items = {}, +#line 6077 + .trainerClass = TRAINER_CLASS_YOUNGSTER, +#line 6078 + .trainerPic = TRAINER_PIC_YOUNGSTER, + .encounterMusic_gender = +#line 6080 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6081 .doubleBattle = FALSE, +#line 6082 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Calvin4), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 6084 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6086 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 6085 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6088 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6090 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 6089 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6092 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6094 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 6093 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6096 [TRAINER_CALVIN_5] = { - .trainerClass = TRAINER_CLASS_YOUNGSTER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_YOUNGSTER, +#line 6097 .trainerName = _("CALVIN"), - .items = {}, +#line 6098 + .trainerClass = TRAINER_CLASS_YOUNGSTER, +#line 6099 + .trainerPic = TRAINER_PIC_YOUNGSTER, + .encounterMusic_gender = +#line 6101 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6102 .doubleBattle = FALSE, +#line 6103 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Calvin5), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 6105 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6107 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 6106 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6109 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6111 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 6110 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6113 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6115 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 6114 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6117 [TRAINER_EDDIE] = { - .trainerClass = TRAINER_CLASS_YOUNGSTER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_YOUNGSTER, +#line 6118 .trainerName = _("EDDIE"), - .items = {}, +#line 6119 + .trainerClass = TRAINER_CLASS_YOUNGSTER, +#line 6120 + .trainerPic = TRAINER_PIC_YOUNGSTER, + .encounterMusic_gender = +#line 6122 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6123 .doubleBattle = FALSE, +#line 6124 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Eddie), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 6126 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6128 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6127 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6130 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6132 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6131 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6134 [TRAINER_ALLEN] = { - .trainerClass = TRAINER_CLASS_YOUNGSTER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_YOUNGSTER, +#line 6135 .trainerName = _("ALLEN"), - .items = {}, +#line 6136 + .trainerClass = TRAINER_CLASS_YOUNGSTER, +#line 6137 + .trainerPic = TRAINER_PIC_YOUNGSTER, + .encounterMusic_gender = +#line 6139 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6140 .doubleBattle = FALSE, +#line 6141 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Allen), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 6143 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6145 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6144 + .lvl = 4, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6147 + .species = SPECIES_TAILLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6149 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6148 + .lvl = 3, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6151 [TRAINER_TIMMY] = { - .trainerClass = TRAINER_CLASS_YOUNGSTER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_YOUNGSTER, +#line 6152 .trainerName = _("TIMMY"), - .items = {}, +#line 6153 + .trainerClass = TRAINER_CLASS_YOUNGSTER, +#line 6154 + .trainerPic = TRAINER_PIC_YOUNGSTER, + .encounterMusic_gender = +#line 6156 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6157 .doubleBattle = FALSE, +#line 6158 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Timmy), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 6160 + .species = SPECIES_ARON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6162 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6161 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6164 + .species = SPECIES_ELECTRIKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6166 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6165 + .lvl = 13, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6168 [TRAINER_WALLACE] = { - .trainerClass = TRAINER_CLASS_CHAMPION, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_CHAMPION_WALLACE, +#line 6169 .trainerName = _("WALLACE"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE}, +#line 6170 + .trainerClass = TRAINER_CLASS_CHAMPION, +#line 6171 + .trainerPic = TRAINER_PIC_CHAMPION_WALLACE, + .encounterMusic_gender = +#line 6173 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6174 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 6175 .doubleBattle = FALSE, +#line 6176 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, +#line 6177 .mugshotEnabled = TRUE, .mugshotColor = MUGSHOT_COLOR_YELLOW, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Wallace), + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 6179 + .species = SPECIES_WAILORD, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6181 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 6180 + .lvl = 57, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 6182 + MOVE_RAIN_DANCE, + MOVE_WATER_SPOUT, + MOVE_DOUBLE_EDGE, + MOVE_BLIZZARD, + }, + }, + { +#line 6187 + .species = SPECIES_TENTACRUEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6189 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 6188 + .lvl = 55, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 6190 + MOVE_TOXIC, + MOVE_HYDRO_PUMP, + MOVE_SLUDGE_BOMB, + MOVE_ICE_BEAM, + }, + }, + { +#line 6195 + .species = SPECIES_LUDICOLO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6197 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 6196 + .lvl = 56, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 6198 + MOVE_GIGA_DRAIN, + MOVE_SURF, + MOVE_LEECH_SEED, + MOVE_DOUBLE_TEAM, + }, + }, + { +#line 6203 + .species = SPECIES_WHISCASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6205 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 6204 + .lvl = 56, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 6206 + MOVE_EARTHQUAKE, + MOVE_SURF, + MOVE_AMNESIA, + MOVE_HYPER_BEAM, + }, + }, + { +#line 6211 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6213 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 6212 + .lvl = 56, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 6214 + MOVE_DRAGON_DANCE, + MOVE_EARTHQUAKE, + MOVE_HYPER_BEAM, + MOVE_SURF, + }, + }, + { +#line 6219 + .species = SPECIES_MILOTIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6219 + .heldItem = ITEM_SITRUS_BERRY, +#line 6221 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 6220 + .lvl = 58, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 6222 + MOVE_RECOVER, + MOVE_SURF, + MOVE_ICE_BEAM, + MOVE_TOXIC, + }, + }, + }, }, - +#line 6227 [TRAINER_ANDREW] = { - .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_FISHERMAN, +#line 6228 .trainerName = _("ANDREW"), - .items = {}, +#line 6229 + .trainerClass = TRAINER_CLASS_FISHERMAN, +#line 6230 + .trainerPic = TRAINER_PIC_FISHERMAN, + .encounterMusic_gender = +#line 6232 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6233 .doubleBattle = FALSE, +#line 6234 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Andrew), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 6236 + .species = SPECIES_MAGIKARP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6238 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6237 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6240 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6242 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6241 + .lvl = 10, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6244 + .species = SPECIES_MAGIKARP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6246 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6245 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6248 [TRAINER_IVAN] = { - .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_FISHERMAN, +#line 6249 .trainerName = _("IVAN"), - .items = {}, +#line 6250 + .trainerClass = TRAINER_CLASS_FISHERMAN, +#line 6251 + .trainerPic = TRAINER_PIC_FISHERMAN, + .encounterMusic_gender = +#line 6253 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6254 .doubleBattle = FALSE, +#line 6255 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ivan), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 6257 + .species = SPECIES_MAGIKARP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6259 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6258 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6261 + .species = SPECIES_MAGIKARP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6263 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6262 + .lvl = 6, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6265 + .species = SPECIES_MAGIKARP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6267 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6266 + .lvl = 7, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6269 [TRAINER_CLAUDE] = { - .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_FISHERMAN, +#line 6270 .trainerName = _("CLAUDE"), - .items = {}, +#line 6271 + .trainerClass = TRAINER_CLASS_FISHERMAN, +#line 6272 + .trainerPic = TRAINER_PIC_FISHERMAN, + .encounterMusic_gender = +#line 6274 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6275 .doubleBattle = FALSE, +#line 6276 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Claude), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 6278 + .species = SPECIES_MAGIKARP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6280 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6279 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6282 + .species = SPECIES_GOLDEEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6284 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6283 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6286 + .species = SPECIES_BARBOACH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6288 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6287 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6290 [TRAINER_ELLIOT_1] = { - .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_FISHERMAN, +#line 6291 .trainerName = _("ELLIOT"), - .items = {}, +#line 6292 + .trainerClass = TRAINER_CLASS_FISHERMAN, +#line 6293 + .trainerPic = TRAINER_PIC_FISHERMAN, + .encounterMusic_gender = +#line 6295 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6296 .doubleBattle = FALSE, +#line 6297 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Elliot1), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 6299 + .species = SPECIES_MAGIKARP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6301 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6300 + .lvl = 10, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6303 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6305 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6304 + .lvl = 7, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6307 + .species = SPECIES_MAGIKARP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6309 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6308 + .lvl = 10, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6311 [TRAINER_NED] = { - .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_FISHERMAN, +#line 6312 .trainerName = _("NED"), - .items = {}, +#line 6313 + .trainerClass = TRAINER_CLASS_FISHERMAN, +#line 6314 + .trainerPic = TRAINER_PIC_FISHERMAN, + .encounterMusic_gender = +#line 6316 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6317 .doubleBattle = FALSE, +#line 6318 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ned), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6320 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6322 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 6321 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6324 [TRAINER_DALE] = { - .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_FISHERMAN, +#line 6325 .trainerName = _("DALE"), - .items = {}, +#line 6326 + .trainerClass = TRAINER_CLASS_FISHERMAN, +#line 6327 + .trainerPic = TRAINER_PIC_FISHERMAN, + .encounterMusic_gender = +#line 6329 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6330 .doubleBattle = FALSE, +#line 6331 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dale), + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 6333 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6335 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6334 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6337 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6339 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6338 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6341 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6343 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6342 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6345 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6347 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6346 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6349 [TRAINER_NOLAN] = { - .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_FISHERMAN, +#line 6350 .trainerName = _("NOLAN"), - .items = {}, +#line 6351 + .trainerClass = TRAINER_CLASS_FISHERMAN, +#line 6352 + .trainerPic = TRAINER_PIC_FISHERMAN, + .encounterMusic_gender = +#line 6354 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6355 .doubleBattle = FALSE, +#line 6356 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Nolan), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6358 + .species = SPECIES_BARBOACH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6360 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6359 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6362 [TRAINER_BARNY] = { - .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_FISHERMAN, +#line 6363 .trainerName = _("BARNY"), - .items = {}, +#line 6364 + .trainerClass = TRAINER_CLASS_FISHERMAN, +#line 6365 + .trainerPic = TRAINER_PIC_FISHERMAN, + .encounterMusic_gender = +#line 6367 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6368 .doubleBattle = FALSE, +#line 6369 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Barny), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 6371 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6373 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6372 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6375 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6377 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6376 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6379 [TRAINER_WADE] = { - .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_FISHERMAN, +#line 6380 .trainerName = _("WADE"), - .items = {}, +#line 6381 + .trainerClass = TRAINER_CLASS_FISHERMAN, +#line 6382 + .trainerPic = TRAINER_PIC_FISHERMAN, + .encounterMusic_gender = +#line 6384 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6385 .doubleBattle = FALSE, +#line 6386 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Wade), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6388 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6390 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6389 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6392 [TRAINER_CARTER] = { - .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_FISHERMAN, +#line 6393 .trainerName = _("CARTER"), - .items = {}, +#line 6394 + .trainerClass = TRAINER_CLASS_FISHERMAN, +#line 6395 + .trainerPic = TRAINER_PIC_FISHERMAN, + .encounterMusic_gender = +#line 6397 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6398 .doubleBattle = FALSE, +#line 6399 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Carter), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 6401 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6403 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 6402 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6405 + .species = SPECIES_TENTACRUEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6407 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 6406 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6409 [TRAINER_ELLIOT_2] = { - .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_FISHERMAN, +#line 6410 .trainerName = _("ELLIOT"), - .items = {}, +#line 6411 + .trainerClass = TRAINER_CLASS_FISHERMAN, +#line 6412 + .trainerPic = TRAINER_PIC_FISHERMAN, + .encounterMusic_gender = +#line 6414 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6415 .doubleBattle = FALSE, +#line 6416 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Elliot2), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 6418 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6420 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 6419 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6422 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6424 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 6423 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6426 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6428 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 6427 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6430 [TRAINER_ELLIOT_3] = { - .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_FISHERMAN, +#line 6431 .trainerName = _("ELLIOT"), - .items = {}, +#line 6432 + .trainerClass = TRAINER_CLASS_FISHERMAN, +#line 6433 + .trainerPic = TRAINER_PIC_FISHERMAN, + .encounterMusic_gender = +#line 6435 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6436 .doubleBattle = FALSE, +#line 6437 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Elliot3), + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 6439 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6441 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 6440 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6443 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6445 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 6444 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6447 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6449 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 6448 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6451 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6453 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 6452 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6455 [TRAINER_ELLIOT_4] = { - .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_FISHERMAN, +#line 6456 .trainerName = _("ELLIOT"), - .items = {}, +#line 6457 + .trainerClass = TRAINER_CLASS_FISHERMAN, +#line 6458 + .trainerPic = TRAINER_PIC_FISHERMAN, + .encounterMusic_gender = +#line 6460 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6461 .doubleBattle = FALSE, +#line 6462 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Elliot4), + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 6464 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6466 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 6465 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6468 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6470 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 6469 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6472 + .species = SPECIES_TENTACRUEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6474 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 6473 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6476 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6478 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 6477 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6480 [TRAINER_ELLIOT_5] = { - .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_FISHERMAN, +#line 6481 .trainerName = _("ELLIOT"), - .items = {}, +#line 6482 + .trainerClass = TRAINER_CLASS_FISHERMAN, +#line 6483 + .trainerPic = TRAINER_PIC_FISHERMAN, + .encounterMusic_gender = +#line 6485 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6486 .doubleBattle = FALSE, +#line 6487 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT, - .party = TRAINER_PARTY(sParty_Elliot5), + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 6489 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6491 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 6490 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6493 + .species = SPECIES_SHARPEDO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6495 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 6494 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6497 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6499 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 6498 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6501 + .species = SPECIES_TENTACRUEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6503 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 6502 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6505 [TRAINER_RONALD] = { - .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_FISHERMAN, +#line 6506 .trainerName = _("RONALD"), - .items = {}, +#line 6507 + .trainerClass = TRAINER_CLASS_FISHERMAN, +#line 6508 + .trainerPic = TRAINER_PIC_FISHERMAN, + .encounterMusic_gender = +#line 6510 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6511 .doubleBattle = FALSE, +#line 6512 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ronald), + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 6514 + .species = SPECIES_MAGIKARP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6516 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6515 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6518 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6520 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6519 + .lvl = 21, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6522 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6524 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6523 + .lvl = 23, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6526 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6528 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6527 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6530 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6532 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6531 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6534 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6536 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6535 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6538 [TRAINER_JACOB] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M, +#line 6539 .trainerName = _("JACOB"), - .items = {}, +#line 6540 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 6541 + .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M, + .encounterMusic_gender = +#line 6543 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6544 .doubleBattle = FALSE, +#line 6545 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jacob), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 6547 + .species = SPECIES_VOLTORB, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6549 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 6548 + .lvl = 6, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6551 + .species = SPECIES_VOLTORB, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6553 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 6552 + .lvl = 6, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6555 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6557 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 6556 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6559 [TRAINER_ANTHONY] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M, +#line 6560 .trainerName = _("ANTHONY"), - .items = {}, +#line 6561 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 6562 + .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M, + .encounterMusic_gender = +#line 6564 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6565 .doubleBattle = FALSE, +#line 6566 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Anthony), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 6568 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6570 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6569 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6572 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6574 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6573 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6576 [TRAINER_BENJAMIN_1] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M, +#line 6577 .trainerName = _("BENJAMIN"), - .items = {}, +#line 6578 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 6579 + .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M, + .encounterMusic_gender = +#line 6581 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6582 .doubleBattle = FALSE, +#line 6583 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Benjamin1), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6585 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6587 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6586 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6589 [TRAINER_BENJAMIN_2] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M, +#line 6590 .trainerName = _("BENJAMIN"), - .items = {}, +#line 6591 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 6592 + .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M, + .encounterMusic_gender = +#line 6594 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6595 .doubleBattle = FALSE, +#line 6596 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Benjamin2), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6598 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6600 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 6599 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6602 [TRAINER_BENJAMIN_3] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M, +#line 6603 .trainerName = _("BENJAMIN"), - .items = {}, +#line 6604 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 6605 + .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M, + .encounterMusic_gender = +#line 6607 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6608 .doubleBattle = FALSE, +#line 6609 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Benjamin3), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6611 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6613 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 6612 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6615 [TRAINER_BENJAMIN_4] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M, +#line 6616 .trainerName = _("BENJAMIN"), - .items = {}, +#line 6617 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 6618 + .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M, + .encounterMusic_gender = +#line 6620 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6621 .doubleBattle = FALSE, +#line 6622 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Benjamin4), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6624 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6626 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 6625 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6628 [TRAINER_BENJAMIN_5] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M, +#line 6629 .trainerName = _("BENJAMIN"), - .items = {}, +#line 6630 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 6631 + .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M, + .encounterMusic_gender = +#line 6633 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6634 .doubleBattle = FALSE, +#line 6635 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Benjamin5), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6637 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6639 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 6638 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6641 [TRAINER_ABIGAIL_1] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F, +#line 6642 .trainerName = _("ABIGAIL"), - .items = {}, +#line 6643 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 6644 + .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F, + .encounterMusic_gender = +#line 6645 +F_TRAINER_FEMALE | +#line 6646 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 6647 .doubleBattle = FALSE, +#line 6648 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Abigail1), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6650 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6652 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6651 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6654 [TRAINER_JASMINE] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F, +#line 6655 .trainerName = _("JASMINE"), - .items = {}, +#line 6656 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 6657 + .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F, + .encounterMusic_gender = +#line 6658 +F_TRAINER_FEMALE | +#line 6659 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 6660 .doubleBattle = FALSE, +#line 6661 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jasmine), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 6663 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6665 + .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), +#line 6664 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6667 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6669 + .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), +#line 6668 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6671 + .species = SPECIES_VOLTORB, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6673 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6672 + .lvl = 6, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6675 [TRAINER_ABIGAIL_2] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F, +#line 6676 .trainerName = _("ABIGAIL"), - .items = {}, +#line 6677 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 6678 + .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F, + .encounterMusic_gender = +#line 6679 +F_TRAINER_FEMALE | +#line 6680 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 6681 .doubleBattle = FALSE, +#line 6682 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Abigail2), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6684 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6686 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 6685 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6688 [TRAINER_ABIGAIL_3] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F, +#line 6689 .trainerName = _("ABIGAIL"), - .items = {}, +#line 6690 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 6691 + .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F, + .encounterMusic_gender = +#line 6692 +F_TRAINER_FEMALE | +#line 6693 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 6694 .doubleBattle = FALSE, +#line 6695 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Abigail3), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6697 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6699 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 6698 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6701 [TRAINER_ABIGAIL_4] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F, +#line 6702 .trainerName = _("ABIGAIL"), - .items = {}, +#line 6703 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 6704 + .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F, + .encounterMusic_gender = +#line 6705 +F_TRAINER_FEMALE | +#line 6706 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 6707 .doubleBattle = FALSE, +#line 6708 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Abigail4), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6710 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6712 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 6711 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6714 [TRAINER_ABIGAIL_5] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F, +#line 6715 .trainerName = _("ABIGAIL"), - .items = {}, +#line 6716 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 6717 + .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F, + .encounterMusic_gender = +#line 6718 +F_TRAINER_FEMALE | +#line 6719 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 6720 .doubleBattle = FALSE, +#line 6721 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Abigail5), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6723 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6725 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 6724 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6727 [TRAINER_DYLAN_1] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_M, +#line 6728 .trainerName = _("DYLAN"), - .items = {}, +#line 6729 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 6730 + .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_M, + .encounterMusic_gender = +#line 6732 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6733 .doubleBattle = FALSE, +#line 6734 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dylan1), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6736 + .species = SPECIES_DODUO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6738 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6737 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6740 [TRAINER_DYLAN_2] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_M, +#line 6741 .trainerName = _("DYLAN"), - .items = {}, +#line 6742 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 6743 + .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_M, + .encounterMusic_gender = +#line 6745 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6746 .doubleBattle = FALSE, +#line 6747 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dylan2), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6749 + .species = SPECIES_DODUO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6751 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 6750 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6753 [TRAINER_DYLAN_3] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_M, +#line 6754 .trainerName = _("DYLAN"), - .items = {}, +#line 6755 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 6756 + .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_M, + .encounterMusic_gender = +#line 6758 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6759 .doubleBattle = FALSE, +#line 6760 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dylan3), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6762 + .species = SPECIES_DODUO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6764 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 6763 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6766 [TRAINER_DYLAN_4] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_M, +#line 6767 .trainerName = _("DYLAN"), - .items = {}, +#line 6768 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 6769 + .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_M, + .encounterMusic_gender = +#line 6771 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6772 .doubleBattle = FALSE, +#line 6773 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dylan4), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6775 + .species = SPECIES_DODRIO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6777 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 6776 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6779 [TRAINER_DYLAN_5] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_M, +#line 6780 .trainerName = _("DYLAN"), - .items = {}, +#line 6781 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 6782 + .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_M, + .encounterMusic_gender = +#line 6784 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6785 .doubleBattle = FALSE, +#line 6786 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dylan5), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6788 + .species = SPECIES_DODRIO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6790 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 6789 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6792 [TRAINER_MARIA_1] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F, +#line 6793 .trainerName = _("MARIA"), - .items = {}, +#line 6794 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 6795 + .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F, + .encounterMusic_gender = +#line 6796 +F_TRAINER_FEMALE | +#line 6797 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 6798 .doubleBattle = FALSE, +#line 6799 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Maria1), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6801 + .species = SPECIES_DODUO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6803 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6802 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6805 [TRAINER_MARIA_2] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F, +#line 6806 .trainerName = _("MARIA"), - .items = {}, +#line 6807 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 6808 + .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F, + .encounterMusic_gender = +#line 6809 +F_TRAINER_FEMALE | +#line 6810 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 6811 .doubleBattle = FALSE, +#line 6812 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Maria2), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6814 + .species = SPECIES_DODUO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6816 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 6815 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6818 [TRAINER_MARIA_3] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F, +#line 6819 .trainerName = _("MARIA"), - .items = {}, +#line 6820 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 6821 + .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F, + .encounterMusic_gender = +#line 6822 +F_TRAINER_FEMALE | +#line 6823 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 6824 .doubleBattle = FALSE, +#line 6825 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Maria3), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6827 + .species = SPECIES_DODUO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6829 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 6828 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6831 [TRAINER_MARIA_4] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F, +#line 6832 .trainerName = _("MARIA"), - .items = {}, +#line 6833 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 6834 + .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F, + .encounterMusic_gender = +#line 6835 +F_TRAINER_FEMALE | +#line 6836 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 6837 .doubleBattle = FALSE, +#line 6838 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Maria4), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6840 + .species = SPECIES_DODRIO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6842 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 6841 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6844 [TRAINER_MARIA_5] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F, +#line 6845 .trainerName = _("MARIA"), - .items = {}, +#line 6846 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 6847 + .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F, + .encounterMusic_gender = +#line 6848 +F_TRAINER_FEMALE | +#line 6849 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 6850 .doubleBattle = FALSE, +#line 6851 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Maria5), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6853 + .species = SPECIES_DODRIO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6855 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 6854 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6857 [TRAINER_CAMDEN] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, +#line 6858 .trainerName = _("CAMDEN"), - .items = {}, +#line 6859 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 6860 + .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, + .encounterMusic_gender = +#line 6862 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 6863 .doubleBattle = FALSE, +#line 6864 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Camden), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 6866 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6868 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6867 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6870 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6872 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6871 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6874 [TRAINER_DEMETRIUS] = { - .trainerClass = TRAINER_CLASS_YOUNGSTER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_YOUNGSTER, +#line 6875 .trainerName = _("DEMETRIUS"), - .items = {}, +#line 6876 + .trainerClass = TRAINER_CLASS_YOUNGSTER, +#line 6877 + .trainerPic = TRAINER_PIC_YOUNGSTER, + .encounterMusic_gender = +#line 6879 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6880 .doubleBattle = FALSE, +#line 6881 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Demetrius), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 6883 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6885 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6884 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6887 + .species = SPECIES_ELECTRIKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6889 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6888 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6891 [TRAINER_ISAIAH_1] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, +#line 6892 .trainerName = _("ISAIAH"), - .items = {}, +#line 6893 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 6894 + .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, + .encounterMusic_gender = +#line 6896 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 6897 .doubleBattle = FALSE, +#line 6898 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Isaiah1), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6900 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6902 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6901 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6904 [TRAINER_PABLO_1] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, +#line 6905 .trainerName = _("PABLO"), - .items = {}, +#line 6906 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 6907 + .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, + .encounterMusic_gender = +#line 6909 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 6910 .doubleBattle = FALSE, +#line 6911 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Pablo1), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 6913 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6915 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6914 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6917 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6919 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6918 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6921 [TRAINER_CHASE] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, +#line 6922 .trainerName = _("CHASE"), - .items = {}, +#line 6923 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 6924 + .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, + .encounterMusic_gender = +#line 6926 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 6927 .doubleBattle = FALSE, +#line 6928 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Chase), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 6930 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6932 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6931 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6934 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6936 + .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), +#line 6935 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6938 [TRAINER_ISAIAH_2] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, +#line 6939 .trainerName = _("ISAIAH"), - .items = {}, +#line 6940 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 6941 + .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, + .encounterMusic_gender = +#line 6943 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 6944 .doubleBattle = FALSE, +#line 6945 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Isaiah2), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6947 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6949 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 6948 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6951 [TRAINER_ISAIAH_3] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, +#line 6952 .trainerName = _("ISAIAH"), - .items = {}, +#line 6953 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 6954 + .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, + .encounterMusic_gender = +#line 6956 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 6957 .doubleBattle = FALSE, +#line 6958 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Isaiah3), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6960 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6962 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 6961 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6964 [TRAINER_ISAIAH_4] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, +#line 6965 .trainerName = _("ISAIAH"), - .items = {}, +#line 6966 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 6967 + .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, + .encounterMusic_gender = +#line 6969 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 6970 .doubleBattle = FALSE, +#line 6971 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Isaiah4), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6973 + .species = SPECIES_STARMIE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6975 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 6974 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6977 [TRAINER_ISAIAH_5] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, +#line 6978 .trainerName = _("ISAIAH"), - .items = {}, +#line 6979 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 6980 + .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, + .encounterMusic_gender = +#line 6982 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 6983 .doubleBattle = FALSE, +#line 6984 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Isaiah5), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6986 + .species = SPECIES_STARMIE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6988 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 6987 + .lvl = 48, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 6990 [TRAINER_ISOBEL] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, +#line 6991 .trainerName = _("ISOBEL"), - .items = {}, +#line 6992 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 6993 + .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, + .encounterMusic_gender = +#line 6994 +F_TRAINER_FEMALE | +#line 6995 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 6996 .doubleBattle = FALSE, +#line 6997 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Isobel), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6999 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7001 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7000 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7003 [TRAINER_DONNY] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, +#line 7004 .trainerName = _("DONNY"), - .items = {}, +#line 7005 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 7006 + .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, + .encounterMusic_gender = +#line 7007 +F_TRAINER_FEMALE | +#line 7008 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 7009 .doubleBattle = FALSE, +#line 7010 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Donny), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7012 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7014 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7013 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7016 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7018 + .iv = TRAINER_PARTY_IVS(19, 19, 19, 19, 19, 19), +#line 7017 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7020 [TRAINER_TALIA] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, +#line 7021 .trainerName = _("TALIA"), - .items = {}, +#line 7022 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 7023 + .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, + .encounterMusic_gender = +#line 7024 +F_TRAINER_FEMALE | +#line 7025 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 7026 .doubleBattle = FALSE, +#line 7027 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Talia), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7029 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7031 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7030 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7033 [TRAINER_KATELYN_1] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, +#line 7034 .trainerName = _("KATELYN"), - .items = {}, +#line 7035 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 7036 + .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, + .encounterMusic_gender = +#line 7037 +F_TRAINER_FEMALE | +#line 7038 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 7039 .doubleBattle = FALSE, +#line 7040 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Katelyn1), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7042 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7044 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7043 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7046 [TRAINER_ALLISON] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, +#line 7047 .trainerName = _("ALLISON"), - .items = {}, +#line 7048 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 7049 + .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, + .encounterMusic_gender = +#line 7050 +F_TRAINER_FEMALE | +#line 7051 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 7052 .doubleBattle = FALSE, +#line 7053 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Allison), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7055 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7057 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7056 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7059 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7061 + .iv = TRAINER_PARTY_IVS(29, 29, 29, 29, 29, 29), +#line 7060 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7063 [TRAINER_KATELYN_2] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, +#line 7064 .trainerName = _("KATELYN"), - .items = {}, +#line 7065 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 7066 + .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, + .encounterMusic_gender = +#line 7067 +F_TRAINER_FEMALE | +#line 7068 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 7069 .doubleBattle = FALSE, +#line 7070 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Katelyn2), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7072 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7074 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 7073 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7076 [TRAINER_KATELYN_3] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, +#line 7077 .trainerName = _("KATELYN"), - .items = {}, +#line 7078 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 7079 + .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, + .encounterMusic_gender = +#line 7080 +F_TRAINER_FEMALE | +#line 7081 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 7082 .doubleBattle = FALSE, +#line 7083 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Katelyn3), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7085 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7087 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 7086 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7089 [TRAINER_KATELYN_4] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, +#line 7090 .trainerName = _("KATELYN"), - .items = {}, +#line 7091 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 7092 + .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, + .encounterMusic_gender = +#line 7093 +F_TRAINER_FEMALE | +#line 7094 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 7095 .doubleBattle = FALSE, +#line 7096 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Katelyn4), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7098 + .species = SPECIES_STARMIE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7100 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 7099 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7102 [TRAINER_KATELYN_5] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, +#line 7103 .trainerName = _("KATELYN"), - .items = {}, +#line 7104 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 7105 + .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, + .encounterMusic_gender = +#line 7106 +F_TRAINER_FEMALE | +#line 7107 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 7108 .doubleBattle = FALSE, +#line 7109 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Katelyn5), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7111 + .species = SPECIES_STARMIE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7113 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 7112 + .lvl = 48, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7115 [TRAINER_NICOLAS_1] = { - .trainerClass = TRAINER_CLASS_DRAGON_TAMER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_DRAGON_TAMER, +#line 7116 .trainerName = _("NICOLAS"), - .items = {}, +#line 7117 + .trainerClass = TRAINER_CLASS_DRAGON_TAMER, +#line 7118 + .trainerPic = TRAINER_PIC_DRAGON_TAMER, + .encounterMusic_gender = +#line 7120 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7121 .doubleBattle = FALSE, +#line 7122 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Nicolas1), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7124 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7126 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 7125 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7128 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7130 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 7129 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7132 [TRAINER_NICOLAS_2] = { - .trainerClass = TRAINER_CLASS_DRAGON_TAMER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_DRAGON_TAMER, +#line 7133 .trainerName = _("NICOLAS"), - .items = {}, +#line 7134 + .trainerClass = TRAINER_CLASS_DRAGON_TAMER, +#line 7135 + .trainerPic = TRAINER_PIC_DRAGON_TAMER, + .encounterMusic_gender = +#line 7137 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7138 .doubleBattle = FALSE, +#line 7139 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Nicolas2), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7141 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7143 + .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), +#line 7142 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7145 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7147 + .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), +#line 7146 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7149 [TRAINER_NICOLAS_3] = { - .trainerClass = TRAINER_CLASS_DRAGON_TAMER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_DRAGON_TAMER, +#line 7150 .trainerName = _("NICOLAS"), - .items = {}, +#line 7151 + .trainerClass = TRAINER_CLASS_DRAGON_TAMER, +#line 7152 + .trainerPic = TRAINER_PIC_DRAGON_TAMER, + .encounterMusic_gender = +#line 7154 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7155 .doubleBattle = FALSE, +#line 7156 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Nicolas3), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7158 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7160 + .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), +#line 7159 + .lvl = 44, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7162 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7164 + .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), +#line 7163 + .lvl = 44, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7166 [TRAINER_NICOLAS_4] = { - .trainerClass = TRAINER_CLASS_DRAGON_TAMER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_DRAGON_TAMER, +#line 7167 .trainerName = _("NICOLAS"), - .items = {}, +#line 7168 + .trainerClass = TRAINER_CLASS_DRAGON_TAMER, +#line 7169 + .trainerPic = TRAINER_PIC_DRAGON_TAMER, + .encounterMusic_gender = +#line 7171 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7172 .doubleBattle = FALSE, +#line 7173 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Nicolas4), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 7175 + .species = SPECIES_BAGON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7177 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 7176 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7179 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7181 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 7180 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7183 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7185 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 7184 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7187 [TRAINER_NICOLAS_5] = { - .trainerClass = TRAINER_CLASS_DRAGON_TAMER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_DRAGON_TAMER, +#line 7188 .trainerName = _("NICOLAS"), - .items = {}, +#line 7189 + .trainerClass = TRAINER_CLASS_DRAGON_TAMER, +#line 7190 + .trainerPic = TRAINER_PIC_DRAGON_TAMER, + .encounterMusic_gender = +#line 7192 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7193 .doubleBattle = FALSE, +#line 7194 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Nicolas5), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 7196 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7198 + .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), +#line 7197 + .lvl = 49, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7200 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7202 + .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), +#line 7201 + .lvl = 49, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7204 + .species = SPECIES_SHELGON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7204 + .heldItem = ITEM_DRAGON_FANG, +#line 7206 + .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), +#line 7205 + .lvl = 49, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7208 [TRAINER_AARON] = { - .trainerClass = TRAINER_CLASS_DRAGON_TAMER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_DRAGON_TAMER, +#line 7209 .trainerName = _("AARON"), - .items = {}, +#line 7210 + .trainerClass = TRAINER_CLASS_DRAGON_TAMER, +#line 7211 + .trainerPic = TRAINER_PIC_DRAGON_TAMER, + .encounterMusic_gender = +#line 7213 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7214 .doubleBattle = FALSE, +#line 7215 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Aaron), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7217 + .species = SPECIES_BAGON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7219 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 7218 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7220 + MOVE_DRAGON_BREATH, + MOVE_HEADBUTT, + MOVE_FOCUS_ENERGY, + MOVE_EMBER, + }, + }, + }, }, - +#line 7225 [TRAINER_PERRY] = { - .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_BIRD_KEEPER, +#line 7226 .trainerName = _("PERRY"), - .items = {}, +#line 7227 + .trainerClass = TRAINER_CLASS_BIRD_KEEPER, +#line 7228 + .trainerPic = TRAINER_PIC_BIRD_KEEPER, + .encounterMusic_gender = +#line 7230 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7231 .doubleBattle = FALSE, +#line 7232 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Perry), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7234 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7236 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7235 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7238 [TRAINER_HUGH] = { - .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_BIRD_KEEPER, +#line 7239 .trainerName = _("HUGH"), - .items = {}, +#line 7240 + .trainerClass = TRAINER_CLASS_BIRD_KEEPER, +#line 7241 + .trainerPic = TRAINER_PIC_BIRD_KEEPER, + .encounterMusic_gender = +#line 7243 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7244 .doubleBattle = FALSE, +#line 7245 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Hugh), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7247 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7249 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7248 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7251 + .species = SPECIES_TROPIUS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7253 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7252 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7255 [TRAINER_PHIL] = { - .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_BIRD_KEEPER, +#line 7256 .trainerName = _("PHIL"), - .items = {}, +#line 7257 + .trainerClass = TRAINER_CLASS_BIRD_KEEPER, +#line 7258 + .trainerPic = TRAINER_PIC_BIRD_KEEPER, + .encounterMusic_gender = +#line 7260 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7261 .doubleBattle = FALSE, +#line 7262 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Phil), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7264 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7266 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7265 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7268 [TRAINER_JARED] = { - .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_BIRD_KEEPER, +#line 7269 .trainerName = _("JARED"), - .items = {}, +#line 7270 + .trainerClass = TRAINER_CLASS_BIRD_KEEPER, +#line 7271 + .trainerPic = TRAINER_PIC_BIRD_KEEPER, + .encounterMusic_gender = +#line 7273 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7274 .doubleBattle = FALSE, +#line 7275 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jared), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 7277 + .species = SPECIES_DODUO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7279 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 7278 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7281 + .species = SPECIES_SKARMORY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7283 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 7282 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7285 + .species = SPECIES_TROPIUS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7287 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 7286 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7289 [TRAINER_HUMBERTO] = { - .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_BIRD_KEEPER, +#line 7290 .trainerName = _("HUMBERTO"), - .items = {}, +#line 7291 + .trainerClass = TRAINER_CLASS_BIRD_KEEPER, +#line 7292 + .trainerPic = TRAINER_PIC_BIRD_KEEPER, + .encounterMusic_gender = +#line 7294 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7295 .doubleBattle = FALSE, +#line 7296 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Humberto), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7298 + .species = SPECIES_SKARMORY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7300 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 7299 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7302 [TRAINER_PRESLEY] = { - .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_BIRD_KEEPER, +#line 7303 .trainerName = _("PRESLEY"), - .items = {}, +#line 7304 + .trainerClass = TRAINER_CLASS_BIRD_KEEPER, +#line 7305 + .trainerPic = TRAINER_PIC_BIRD_KEEPER, + .encounterMusic_gender = +#line 7307 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7308 .doubleBattle = FALSE, +#line 7309 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Presley), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7311 + .species = SPECIES_TROPIUS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7313 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7312 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7315 + .species = SPECIES_XATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7317 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7316 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7319 [TRAINER_EDWARDO] = { - .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_BIRD_KEEPER, +#line 7320 .trainerName = _("EDWARDO"), - .items = {}, +#line 7321 + .trainerClass = TRAINER_CLASS_BIRD_KEEPER, +#line 7322 + .trainerPic = TRAINER_PIC_BIRD_KEEPER, + .encounterMusic_gender = +#line 7324 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7325 .doubleBattle = FALSE, +#line 7326 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Edwardo), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7328 + .species = SPECIES_DODUO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7330 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 7329 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7332 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7334 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 7333 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7336 [TRAINER_COLIN] = { - .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_BIRD_KEEPER, +#line 7337 .trainerName = _("COLIN"), - .items = {}, +#line 7338 + .trainerClass = TRAINER_CLASS_BIRD_KEEPER, +#line 7339 + .trainerPic = TRAINER_PIC_BIRD_KEEPER, + .encounterMusic_gender = +#line 7341 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7342 .doubleBattle = FALSE, +#line 7343 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Colin), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7345 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7347 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7346 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7349 + .species = SPECIES_NATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7351 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7350 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7353 [TRAINER_ROBERT_1] = { - .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_BIRD_KEEPER, +#line 7354 .trainerName = _("ROBERT"), - .items = {}, +#line 7355 + .trainerClass = TRAINER_CLASS_BIRD_KEEPER, +#line 7356 + .trainerPic = TRAINER_PIC_BIRD_KEEPER, + .encounterMusic_gender = +#line 7358 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7359 .doubleBattle = FALSE, +#line 7360 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Robert1), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7362 + .species = SPECIES_SWABLU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7364 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7363 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7366 [TRAINER_BENNY] = { - .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_BIRD_KEEPER, +#line 7367 .trainerName = _("BENNY"), - .items = {}, +#line 7368 + .trainerClass = TRAINER_CLASS_BIRD_KEEPER, +#line 7369 + .trainerPic = TRAINER_PIC_BIRD_KEEPER, + .encounterMusic_gender = +#line 7371 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7372 .doubleBattle = FALSE, +#line 7373 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Benny), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 7375 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7377 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7376 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7379 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7381 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7380 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7383 + .species = SPECIES_XATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7385 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7384 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7387 [TRAINER_CHESTER] = { - .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_BIRD_KEEPER, +#line 7388 .trainerName = _("CHESTER"), - .items = {}, +#line 7389 + .trainerClass = TRAINER_CLASS_BIRD_KEEPER, +#line 7390 + .trainerPic = TRAINER_PIC_BIRD_KEEPER, + .encounterMusic_gender = +#line 7392 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7393 .doubleBattle = FALSE, +#line 7394 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Chester), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7396 + .species = SPECIES_TAILLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7398 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7397 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7400 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7402 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7401 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7404 [TRAINER_ROBERT_2] = { - .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_BIRD_KEEPER, +#line 7405 .trainerName = _("ROBERT"), - .items = {}, +#line 7406 + .trainerClass = TRAINER_CLASS_BIRD_KEEPER, +#line 7407 + .trainerPic = TRAINER_PIC_BIRD_KEEPER, + .encounterMusic_gender = +#line 7409 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7410 .doubleBattle = FALSE, +#line 7411 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Robert2), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7413 + .species = SPECIES_NATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7415 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 7414 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7417 + .species = SPECIES_SWABLU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7419 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 7418 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7421 [TRAINER_ROBERT_3] = { - .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_BIRD_KEEPER, +#line 7422 .trainerName = _("ROBERT"), - .items = {}, +#line 7423 + .trainerClass = TRAINER_CLASS_BIRD_KEEPER, +#line 7424 + .trainerPic = TRAINER_PIC_BIRD_KEEPER, + .encounterMusic_gender = +#line 7426 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7427 .doubleBattle = FALSE, +#line 7428 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Robert3), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7430 + .species = SPECIES_NATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7432 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 7431 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7434 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7436 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 7435 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7438 [TRAINER_ROBERT_4] = { - .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_BIRD_KEEPER, +#line 7439 .trainerName = _("ROBERT"), - .items = {}, +#line 7440 + .trainerClass = TRAINER_CLASS_BIRD_KEEPER, +#line 7441 + .trainerPic = TRAINER_PIC_BIRD_KEEPER, + .encounterMusic_gender = +#line 7443 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7444 .doubleBattle = FALSE, +#line 7445 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Robert4), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7447 + .species = SPECIES_NATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7449 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 7448 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7451 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7453 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 7452 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7455 [TRAINER_ROBERT_5] = { - .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_BIRD_KEEPER, +#line 7456 .trainerName = _("ROBERT"), - .items = {}, +#line 7457 + .trainerClass = TRAINER_CLASS_BIRD_KEEPER, +#line 7458 + .trainerPic = TRAINER_PIC_BIRD_KEEPER, + .encounterMusic_gender = +#line 7460 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7461 .doubleBattle = FALSE, +#line 7462 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Robert5), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7464 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7466 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 7465 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7468 + .species = SPECIES_XATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7470 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 7469 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7472 [TRAINER_ALEX] = { - .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_BIRD_KEEPER, +#line 7473 .trainerName = _("ALEX"), - .items = {}, +#line 7474 + .trainerClass = TRAINER_CLASS_BIRD_KEEPER, +#line 7475 + .trainerPic = TRAINER_PIC_BIRD_KEEPER, + .encounterMusic_gender = +#line 7477 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7478 .doubleBattle = FALSE, +#line 7479 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Alex), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7481 + .species = SPECIES_NATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7483 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 7482 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7485 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7487 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 7486 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7489 [TRAINER_BECK] = { - .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_BIRD_KEEPER, +#line 7490 .trainerName = _("BECK"), - .items = {}, +#line 7491 + .trainerClass = TRAINER_CLASS_BIRD_KEEPER, +#line 7492 + .trainerPic = TRAINER_PIC_BIRD_KEEPER, + .encounterMusic_gender = +#line 7494 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7495 .doubleBattle = FALSE, +#line 7496 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Beck), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7498 + .species = SPECIES_TROPIUS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7500 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7499 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7502 [TRAINER_YASU] = { - .trainerClass = TRAINER_CLASS_NINJA_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_NINJA_BOY, +#line 7503 .trainerName = _("YASU"), - .items = {}, +#line 7504 + .trainerClass = TRAINER_CLASS_NINJA_BOY, +#line 7505 + .trainerPic = TRAINER_PIC_NINJA_BOY, + .encounterMusic_gender = +#line 7507 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 7508 .doubleBattle = FALSE, +#line 7509 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT, - .party = TRAINER_PARTY(sParty_Yasu), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7511 + .species = SPECIES_NINJASK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7513 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7512 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7515 [TRAINER_TAKASHI] = { - .trainerClass = TRAINER_CLASS_NINJA_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_NINJA_BOY, +#line 7516 .trainerName = _("TAKASHI"), - .items = {}, +#line 7517 + .trainerClass = TRAINER_CLASS_NINJA_BOY, +#line 7518 + .trainerPic = TRAINER_PIC_NINJA_BOY, + .encounterMusic_gender = +#line 7520 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 7521 .doubleBattle = FALSE, +#line 7522 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT, - .party = TRAINER_PARTY(sParty_Takashi), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7524 + .species = SPECIES_NINJASK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7526 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7525 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7528 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7530 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7529 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7532 [TRAINER_DIANNE] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_F, +#line 7533 .trainerName = _("DIANNE"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 7534 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 7535 + .trainerPic = TRAINER_PIC_COOLTRAINER_F, + .encounterMusic_gender = +#line 7536 +F_TRAINER_FEMALE | +#line 7537 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7538 + .items = { ITEM_FULL_RESTORE }, +#line 7539 .doubleBattle = FALSE, - .aiFlags = 0, - .party = TRAINER_PARTY(sParty_Dianne), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7541 + .species = SPECIES_CLAYDOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7543 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7542 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7544 + MOVE_SKILL_SWAP, + MOVE_EARTHQUAKE, + }, + }, + { +#line 7547 + .species = SPECIES_LANTURN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7549 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7548 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7550 + MOVE_THUNDERBOLT, + MOVE_EARTHQUAKE, + }, + }, + }, }, - +#line 7553 [TRAINER_JANI] = { - .trainerClass = TRAINER_CLASS_TUBER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_TUBER_F, +#line 7554 .trainerName = _("JANI"), - .items = {}, +#line 7555 + .trainerClass = TRAINER_CLASS_TUBER_F, +#line 7556 + .trainerPic = TRAINER_PIC_TUBER_F, + .encounterMusic_gender = +#line 7557 +F_TRAINER_FEMALE | +#line 7558 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 7559 .doubleBattle = FALSE, - .aiFlags = 0, - .party = TRAINER_PARTY(sParty_Jani), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7561 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7563 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7562 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7565 [TRAINER_LAO_1] = { - .trainerClass = TRAINER_CLASS_NINJA_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_NINJA_BOY, +#line 7566 .trainerName = _("LAO"), - .items = {}, +#line 7567 + .trainerClass = TRAINER_CLASS_NINJA_BOY, +#line 7568 + .trainerPic = TRAINER_PIC_NINJA_BOY, + .encounterMusic_gender = +#line 7570 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 7571 .doubleBattle = FALSE, - .aiFlags = 0, - .party = TRAINER_PARTY(sParty_Lao1), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 7573 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7575 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7574 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7576 + MOVE_POISON_GAS, + MOVE_TACKLE, + MOVE_SMOG, + MOVE_SELF_DESTRUCT, + }, + }, + { +#line 7581 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7583 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7582 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7584 + MOVE_POISON_GAS, + MOVE_TACKLE, + MOVE_SMOG, + MOVE_SELF_DESTRUCT, + }, + }, + { +#line 7589 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7591 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7590 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7592 + MOVE_POISON_GAS, + MOVE_TACKLE, + MOVE_SLUDGE, + MOVE_SELF_DESTRUCT, + }, + }, + }, }, - +#line 7597 [TRAINER_LUNG] = { - .trainerClass = TRAINER_CLASS_NINJA_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_NINJA_BOY, +#line 7598 .trainerName = _("LUNG"), - .items = {}, +#line 7599 + .trainerClass = TRAINER_CLASS_NINJA_BOY, +#line 7600 + .trainerPic = TRAINER_PIC_NINJA_BOY, + .encounterMusic_gender = +#line 7602 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 7603 .doubleBattle = FALSE, - .aiFlags = 0, - .party = TRAINER_PARTY(sParty_Lung), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7605 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7607 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7606 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7609 + .species = SPECIES_NINJASK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7611 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7610 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7613 [TRAINER_LAO_2] = { - .trainerClass = TRAINER_CLASS_NINJA_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_NINJA_BOY, +#line 7614 .trainerName = _("LAO"), - .items = {}, +#line 7615 + .trainerClass = TRAINER_CLASS_NINJA_BOY, +#line 7616 + .trainerPic = TRAINER_PIC_NINJA_BOY, + .encounterMusic_gender = +#line 7618 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 7619 .doubleBattle = FALSE, - .aiFlags = 0, - .party = TRAINER_PARTY(sParty_Lao2), + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 7621 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7623 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7622 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7624 + MOVE_POISON_GAS, + MOVE_TACKLE, + MOVE_SLUDGE, + MOVE_SELF_DESTRUCT, + }, + }, + { +#line 7629 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7631 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7630 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7632 + MOVE_POISON_GAS, + MOVE_TACKLE, + MOVE_SLUDGE, + }, + }, + { +#line 7636 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7638 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7637 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7639 + MOVE_POISON_GAS, + MOVE_TACKLE, + MOVE_SLUDGE, + MOVE_SELF_DESTRUCT, + }, + }, + { +#line 7644 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7646 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7645 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7647 + MOVE_TACKLE, + MOVE_SLUDGE, + }, + }, + }, }, - +#line 7650 [TRAINER_LAO_3] = { - .trainerClass = TRAINER_CLASS_NINJA_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_NINJA_BOY, +#line 7651 .trainerName = _("LAO"), - .items = {}, +#line 7652 + .trainerClass = TRAINER_CLASS_NINJA_BOY, +#line 7653 + .trainerPic = TRAINER_PIC_NINJA_BOY, + .encounterMusic_gender = +#line 7655 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 7656 .doubleBattle = FALSE, - .aiFlags = 0, - .party = TRAINER_PARTY(sParty_Lao3), + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 7658 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7660 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 7659 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7661 + MOVE_POISON_GAS, + MOVE_TACKLE, + MOVE_SLUDGE, + MOVE_SELF_DESTRUCT, + }, + }, + { +#line 7666 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7668 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 7667 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7669 + MOVE_POISON_GAS, + MOVE_TACKLE, + MOVE_SLUDGE, + MOVE_SELF_DESTRUCT, + }, + }, + { +#line 7674 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7676 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 7675 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7677 + MOVE_POISON_GAS, + MOVE_TACKLE, + MOVE_SLUDGE, + }, + }, + { +#line 7681 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7683 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 7682 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7684 + MOVE_TACKLE, + MOVE_SLUDGE, + }, + }, + }, }, - +#line 7687 [TRAINER_LAO_4] = { - .trainerClass = TRAINER_CLASS_NINJA_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_NINJA_BOY, +#line 7688 .trainerName = _("LAO"), - .items = {}, +#line 7689 + .trainerClass = TRAINER_CLASS_NINJA_BOY, +#line 7690 + .trainerPic = TRAINER_PIC_NINJA_BOY, + .encounterMusic_gender = +#line 7692 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 7693 .doubleBattle = FALSE, - .aiFlags = 0, - .party = TRAINER_PARTY(sParty_Lao4), + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 7695 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7697 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 7696 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7698 + MOVE_POISON_GAS, + MOVE_TACKLE, + MOVE_SLUDGE, + }, + }, + { +#line 7702 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7704 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 7703 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7705 + MOVE_POISON_GAS, + MOVE_TACKLE, + MOVE_SLUDGE, + }, + }, + { +#line 7709 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7711 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 7710 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7712 + MOVE_POISON_GAS, + MOVE_TACKLE, + MOVE_SLUDGE, + }, + }, + { +#line 7716 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7718 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 7717 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7719 + MOVE_TACKLE, + MOVE_SLUDGE, + }, + }, + }, }, - +#line 7722 [TRAINER_LAO_5] = { - .trainerClass = TRAINER_CLASS_NINJA_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_NINJA_BOY, +#line 7723 .trainerName = _("LAO"), - .items = {}, +#line 7724 + .trainerClass = TRAINER_CLASS_NINJA_BOY, +#line 7725 + .trainerPic = TRAINER_PIC_NINJA_BOY, + .encounterMusic_gender = +#line 7727 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 7728 .doubleBattle = FALSE, - .aiFlags = 0, - .party = TRAINER_PARTY(sParty_Lao5), + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 7730 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7732 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 7731 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7733 + MOVE_POISON_GAS, + MOVE_TACKLE, + MOVE_SLUDGE, + }, + }, + { +#line 7737 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7739 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 7738 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7740 + MOVE_POISON_GAS, + MOVE_TACKLE, + MOVE_SLUDGE, + MOVE_SELF_DESTRUCT, + }, + }, + { +#line 7745 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7747 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 7746 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7748 + MOVE_POISON_GAS, + MOVE_TACKLE, + MOVE_SLUDGE, + MOVE_SELF_DESTRUCT, + }, + }, + { +#line 7753 + .species = SPECIES_WEEZING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7753 + .heldItem = ITEM_SMOKE_BALL, +#line 7755 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 7754 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7756 + MOVE_TACKLE, + MOVE_SLUDGE, + }, + }, + }, }, - +#line 7759 [TRAINER_JOCELYN] = { - .trainerClass = TRAINER_CLASS_BATTLE_GIRL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_BATTLE_GIRL, +#line 7760 .trainerName = _("JOCELYN"), - .items = {}, +#line 7761 + .trainerClass = TRAINER_CLASS_BATTLE_GIRL, +#line 7762 + .trainerPic = TRAINER_PIC_BATTLE_GIRL, + .encounterMusic_gender = +#line 7763 +F_TRAINER_FEMALE | +#line 7764 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7765 .doubleBattle = FALSE, +#line 7766 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jocelyn), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7768 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7770 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 7769 + .lvl = 13, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7772 [TRAINER_LAURA] = { - .trainerClass = TRAINER_CLASS_BATTLE_GIRL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_BATTLE_GIRL, +#line 7773 .trainerName = _("LAURA"), - .items = {}, +#line 7774 + .trainerClass = TRAINER_CLASS_BATTLE_GIRL, +#line 7775 + .trainerPic = TRAINER_PIC_BATTLE_GIRL, + .encounterMusic_gender = +#line 7776 +F_TRAINER_FEMALE | +#line 7777 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7778 .doubleBattle = FALSE, +#line 7779 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Laura), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7781 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7783 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 7782 + .lvl = 13, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7785 [TRAINER_CYNDY_1] = { - .trainerClass = TRAINER_CLASS_BATTLE_GIRL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_BATTLE_GIRL, +#line 7786 .trainerName = _("CYNDY"), - .items = {}, +#line 7787 + .trainerClass = TRAINER_CLASS_BATTLE_GIRL, +#line 7788 + .trainerPic = TRAINER_PIC_BATTLE_GIRL, + .encounterMusic_gender = +#line 7789 +F_TRAINER_FEMALE | +#line 7790 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7791 .doubleBattle = FALSE, +#line 7792 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cyndy1), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7794 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7796 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 7795 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7798 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7800 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 7799 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7802 [TRAINER_CORA] = { - .trainerClass = TRAINER_CLASS_BATTLE_GIRL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_BATTLE_GIRL, +#line 7803 .trainerName = _("CORA"), - .items = {}, +#line 7804 + .trainerClass = TRAINER_CLASS_BATTLE_GIRL, +#line 7805 + .trainerPic = TRAINER_PIC_BATTLE_GIRL, + .encounterMusic_gender = +#line 7806 +F_TRAINER_FEMALE | +#line 7807 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7808 .doubleBattle = FALSE, +#line 7809 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cora), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7811 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7813 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 7812 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7815 [TRAINER_PAULA] = { - .trainerClass = TRAINER_CLASS_BATTLE_GIRL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_BATTLE_GIRL, +#line 7816 .trainerName = _("PAULA"), - .items = {}, +#line 7817 + .trainerClass = TRAINER_CLASS_BATTLE_GIRL, +#line 7818 + .trainerPic = TRAINER_PIC_BATTLE_GIRL, + .encounterMusic_gender = +#line 7819 +F_TRAINER_FEMALE | +#line 7820 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7821 .doubleBattle = FALSE, +#line 7822 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Paula), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7824 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7826 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 7825 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7828 [TRAINER_CYNDY_2] = { - .trainerClass = TRAINER_CLASS_BATTLE_GIRL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_BATTLE_GIRL, +#line 7829 .trainerName = _("CYNDY"), - .items = {}, +#line 7830 + .trainerClass = TRAINER_CLASS_BATTLE_GIRL, +#line 7831 + .trainerPic = TRAINER_PIC_BATTLE_GIRL, + .encounterMusic_gender = +#line 7832 +F_TRAINER_FEMALE | +#line 7833 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7834 .doubleBattle = FALSE, +#line 7835 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cyndy2), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7837 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7839 + .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), +#line 7838 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7841 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7843 + .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), +#line 7842 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7845 [TRAINER_CYNDY_3] = { - .trainerClass = TRAINER_CLASS_BATTLE_GIRL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_BATTLE_GIRL, +#line 7846 .trainerName = _("CYNDY"), - .items = {}, +#line 7847 + .trainerClass = TRAINER_CLASS_BATTLE_GIRL, +#line 7848 + .trainerPic = TRAINER_PIC_BATTLE_GIRL, + .encounterMusic_gender = +#line 7849 +F_TRAINER_FEMALE | +#line 7850 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7851 .doubleBattle = FALSE, +#line 7852 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cyndy3), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7854 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7856 + .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), +#line 7855 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7858 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7860 + .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), +#line 7859 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7862 [TRAINER_CYNDY_4] = { - .trainerClass = TRAINER_CLASS_BATTLE_GIRL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_BATTLE_GIRL, +#line 7863 .trainerName = _("CYNDY"), - .items = {}, +#line 7864 + .trainerClass = TRAINER_CLASS_BATTLE_GIRL, +#line 7865 + .trainerPic = TRAINER_PIC_BATTLE_GIRL, + .encounterMusic_gender = +#line 7866 +F_TRAINER_FEMALE | +#line 7867 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7868 .doubleBattle = FALSE, +#line 7869 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cyndy4), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7871 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7873 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 7872 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7875 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7877 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 7876 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7879 [TRAINER_CYNDY_5] = { - .trainerClass = TRAINER_CLASS_BATTLE_GIRL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_BATTLE_GIRL, +#line 7880 .trainerName = _("CYNDY"), - .items = {}, +#line 7881 + .trainerClass = TRAINER_CLASS_BATTLE_GIRL, +#line 7882 + .trainerPic = TRAINER_PIC_BATTLE_GIRL, + .encounterMusic_gender = +#line 7883 +F_TRAINER_FEMALE | +#line 7884 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7885 .doubleBattle = FALSE, +#line 7886 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cyndy5), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7888 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7890 + .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), +#line 7889 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7892 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7894 + .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), +#line 7893 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7896 [TRAINER_MADELINE_1] = { - .trainerClass = TRAINER_CLASS_PARASOL_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_PARASOL_LADY, +#line 7897 .trainerName = _("MADELINE"), - .items = {}, +#line 7898 + .trainerClass = TRAINER_CLASS_PARASOL_LADY, +#line 7899 + .trainerPic = TRAINER_PIC_PARASOL_LADY, + .encounterMusic_gender = +#line 7900 +F_TRAINER_FEMALE | +#line 7901 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 7902 .doubleBattle = FALSE, +#line 7903 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Madeline1), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7905 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7907 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7906 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7908 + MOVE_EMBER, + MOVE_TACKLE, + MOVE_MAGNITUDE, + MOVE_SUNNY_DAY, + }, + }, + }, }, - +#line 7913 [TRAINER_CLARISSA] = { - .trainerClass = TRAINER_CLASS_PARASOL_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_PARASOL_LADY, +#line 7914 .trainerName = _("CLARISSA"), - .items = {}, +#line 7915 + .trainerClass = TRAINER_CLASS_PARASOL_LADY, +#line 7916 + .trainerPic = TRAINER_PIC_PARASOL_LADY, + .encounterMusic_gender = +#line 7917 +F_TRAINER_FEMALE | +#line 7918 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 7919 .doubleBattle = FALSE, +#line 7920 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Clarissa), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7922 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7924 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7923 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7926 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7928 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7927 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 7930 [TRAINER_ANGELICA] = { - .trainerClass = TRAINER_CLASS_PARASOL_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_PARASOL_LADY, +#line 7931 .trainerName = _("ANGELICA"), - .items = {}, +#line 7932 + .trainerClass = TRAINER_CLASS_PARASOL_LADY, +#line 7933 + .trainerPic = TRAINER_PIC_PARASOL_LADY, + .encounterMusic_gender = +#line 7934 +F_TRAINER_FEMALE | +#line 7935 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 7936 .doubleBattle = FALSE, +#line 7937 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Angelica), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7939 + .species = SPECIES_CASTFORM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7941 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 7940 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7942 + MOVE_RAIN_DANCE, + MOVE_WEATHER_BALL, + MOVE_THUNDER, + MOVE_WATER_PULSE, + }, + }, + }, }, - +#line 7947 [TRAINER_MADELINE_2] = { - .trainerClass = TRAINER_CLASS_PARASOL_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_PARASOL_LADY, +#line 7948 .trainerName = _("MADELINE"), - .items = {}, +#line 7949 + .trainerClass = TRAINER_CLASS_PARASOL_LADY, +#line 7950 + .trainerPic = TRAINER_PIC_PARASOL_LADY, + .encounterMusic_gender = +#line 7951 +F_TRAINER_FEMALE | +#line 7952 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 7953 .doubleBattle = FALSE, +#line 7954 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Madeline2), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7956 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7958 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 7957 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7959 + MOVE_EMBER, + MOVE_TACKLE, + MOVE_MAGNITUDE, + MOVE_SUNNY_DAY, + }, + }, + }, }, - +#line 7964 [TRAINER_MADELINE_3] = { - .trainerClass = TRAINER_CLASS_PARASOL_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_PARASOL_LADY, +#line 7965 .trainerName = _("MADELINE"), - .items = {}, +#line 7966 + .trainerClass = TRAINER_CLASS_PARASOL_LADY, +#line 7967 + .trainerPic = TRAINER_PIC_PARASOL_LADY, + .encounterMusic_gender = +#line 7968 +F_TRAINER_FEMALE | +#line 7969 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 7970 .doubleBattle = FALSE, +#line 7971 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Madeline3), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7973 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7975 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 7974 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7976 + MOVE_EMBER, + MOVE_TAKE_DOWN, + MOVE_MAGNITUDE, + MOVE_SUNNY_DAY, + }, + }, + }, }, - +#line 7981 [TRAINER_MADELINE_4] = { - .trainerClass = TRAINER_CLASS_PARASOL_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_PARASOL_LADY, +#line 7982 .trainerName = _("MADELINE"), - .items = {}, +#line 7983 + .trainerClass = TRAINER_CLASS_PARASOL_LADY, +#line 7984 + .trainerPic = TRAINER_PIC_PARASOL_LADY, + .encounterMusic_gender = +#line 7985 +F_TRAINER_FEMALE | +#line 7986 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 7987 .doubleBattle = FALSE, +#line 7988 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Madeline4), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7990 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7992 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 7991 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7993 + MOVE_LEECH_SEED, + MOVE_MEGA_DRAIN, + MOVE_GRASS_WHISTLE, + MOVE_SUNNY_DAY, + }, + }, + { +#line 7998 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8000 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 7999 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 8001 + MOVE_FLAMETHROWER, + MOVE_TAKE_DOWN, + MOVE_MAGNITUDE, + MOVE_SUNNY_DAY, + }, + }, + }, }, - +#line 8006 [TRAINER_MADELINE_5] = { - .trainerClass = TRAINER_CLASS_PARASOL_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_PARASOL_LADY, +#line 8007 .trainerName = _("MADELINE"), - .items = {}, +#line 8008 + .trainerClass = TRAINER_CLASS_PARASOL_LADY, +#line 8009 + .trainerPic = TRAINER_PIC_PARASOL_LADY, + .encounterMusic_gender = +#line 8010 +F_TRAINER_FEMALE | +#line 8011 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 8012 .doubleBattle = FALSE, +#line 8013 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Madeline5), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8015 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8017 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 8016 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 8018 + MOVE_LEECH_SEED, + MOVE_GIGA_DRAIN, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + }, + }, + { +#line 8023 + .species = SPECIES_CAMERUPT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8025 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 8024 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 8026 + MOVE_FLAMETHROWER, + MOVE_TAKE_DOWN, + MOVE_EARTHQUAKE, + MOVE_SUNNY_DAY, + }, + }, + }, }, - +#line 8031 [TRAINER_BEVERLY] = { - .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_F, +#line 8032 .trainerName = _("BEVERLY"), - .items = {}, +#line 8033 + .trainerClass = TRAINER_CLASS_SWIMMER_F, +#line 8034 + .trainerPic = TRAINER_PIC_SWIMMER_F, + .encounterMusic_gender = +#line 8035 +F_TRAINER_FEMALE | +#line 8036 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8037 .doubleBattle = FALSE, +#line 8038 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Beverly), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8040 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8042 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8041 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8044 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8046 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8045 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8048 [TRAINER_IMANI] = { - .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_F, +#line 8049 .trainerName = _("IMANI"), - .items = {}, +#line 8050 + .trainerClass = TRAINER_CLASS_SWIMMER_F, +#line 8051 + .trainerPic = TRAINER_PIC_SWIMMER_F, + .encounterMusic_gender = +#line 8052 +F_TRAINER_FEMALE | +#line 8053 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8054 .doubleBattle = FALSE, +#line 8055 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Imani), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 8057 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8059 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8058 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8061 [TRAINER_KYLA] = { - .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_F, +#line 8062 .trainerName = _("KYLA"), - .items = {}, +#line 8063 + .trainerClass = TRAINER_CLASS_SWIMMER_F, +#line 8064 + .trainerPic = TRAINER_PIC_SWIMMER_F, + .encounterMusic_gender = +#line 8065 +F_TRAINER_FEMALE | +#line 8066 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8067 .doubleBattle = FALSE, +#line 8068 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Kyla), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 8070 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8072 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8071 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8074 [TRAINER_DENISE] = { - .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_F, +#line 8075 .trainerName = _("DENISE"), - .items = {}, +#line 8076 + .trainerClass = TRAINER_CLASS_SWIMMER_F, +#line 8077 + .trainerPic = TRAINER_PIC_SWIMMER_F, + .encounterMusic_gender = +#line 8078 +F_TRAINER_FEMALE | +#line 8079 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8080 .doubleBattle = FALSE, +#line 8081 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Denise), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8083 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8085 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8084 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8087 + .species = SPECIES_GOLDEEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8089 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8088 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8091 [TRAINER_BETH] = { - .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_F, +#line 8092 .trainerName = _("BETH"), - .items = {}, +#line 8093 + .trainerClass = TRAINER_CLASS_SWIMMER_F, +#line 8094 + .trainerPic = TRAINER_PIC_SWIMMER_F, + .encounterMusic_gender = +#line 8095 +F_TRAINER_FEMALE | +#line 8096 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8097 .doubleBattle = FALSE, +#line 8098 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Beth), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 8100 + .species = SPECIES_GOLDEEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8102 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8101 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8104 [TRAINER_TARA] = { - .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_F, +#line 8105 .trainerName = _("TARA"), - .items = {}, +#line 8106 + .trainerClass = TRAINER_CLASS_SWIMMER_F, +#line 8107 + .trainerPic = TRAINER_PIC_SWIMMER_F, + .encounterMusic_gender = +#line 8108 +F_TRAINER_FEMALE | +#line 8109 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8110 .doubleBattle = FALSE, +#line 8111 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Tara), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8113 + .species = SPECIES_HORSEA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8115 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8114 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8117 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8119 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8118 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8121 [TRAINER_MISSY] = { - .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_F, +#line 8122 .trainerName = _("MISSY"), - .items = {}, +#line 8123 + .trainerClass = TRAINER_CLASS_SWIMMER_F, +#line 8124 + .trainerPic = TRAINER_PIC_SWIMMER_F, + .encounterMusic_gender = +#line 8125 +F_TRAINER_FEMALE | +#line 8126 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8127 .doubleBattle = FALSE, +#line 8128 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Missy), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 8130 + .species = SPECIES_GOLDEEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8132 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8131 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8134 [TRAINER_ALICE] = { - .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_F, +#line 8135 .trainerName = _("ALICE"), - .items = {}, +#line 8136 + .trainerClass = TRAINER_CLASS_SWIMMER_F, +#line 8137 + .trainerPic = TRAINER_PIC_SWIMMER_F, + .encounterMusic_gender = +#line 8138 +F_TRAINER_FEMALE | +#line 8139 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8140 .doubleBattle = FALSE, +#line 8141 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Alice), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 8143 + .species = SPECIES_GOLDEEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8145 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8144 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8147 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8149 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8148 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8151 + .species = SPECIES_GOLDEEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8153 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8152 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8155 [TRAINER_JENNY_1] = { - .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_F, +#line 8156 .trainerName = _("JENNY"), - .items = {}, +#line 8157 + .trainerClass = TRAINER_CLASS_SWIMMER_F, +#line 8158 + .trainerPic = TRAINER_PIC_SWIMMER_F, + .encounterMusic_gender = +#line 8159 +F_TRAINER_FEMALE | +#line 8160 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8161 .doubleBattle = FALSE, +#line 8162 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jenny1), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 8164 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8166 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8165 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8168 [TRAINER_GRACE] = { - .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_F, +#line 8169 .trainerName = _("GRACE"), - .items = {}, +#line 8170 + .trainerClass = TRAINER_CLASS_SWIMMER_F, +#line 8171 + .trainerPic = TRAINER_PIC_SWIMMER_F, + .encounterMusic_gender = +#line 8172 +F_TRAINER_FEMALE | +#line 8173 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8174 .doubleBattle = FALSE, +#line 8175 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Grace), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 8177 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8179 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8178 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8181 [TRAINER_TANYA] = { - .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_F, +#line 8182 .trainerName = _("TANYA"), - .items = {}, +#line 8183 + .trainerClass = TRAINER_CLASS_SWIMMER_F, +#line 8184 + .trainerPic = TRAINER_PIC_SWIMMER_F, + .encounterMusic_gender = +#line 8185 +F_TRAINER_FEMALE | +#line 8186 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8187 .doubleBattle = FALSE, +#line 8188 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Tanya), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 8190 + .species = SPECIES_LUVDISC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8192 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8191 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8194 [TRAINER_SHARON] = { - .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_F, +#line 8195 .trainerName = _("SHARON"), - .items = {}, +#line 8196 + .trainerClass = TRAINER_CLASS_SWIMMER_F, +#line 8197 + .trainerPic = TRAINER_PIC_SWIMMER_F, + .encounterMusic_gender = +#line 8198 +F_TRAINER_FEMALE | +#line 8199 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8200 .doubleBattle = FALSE, +#line 8201 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Sharon), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 8203 + .species = SPECIES_SEAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8205 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8204 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8207 [TRAINER_NIKKI] = { - .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_F, +#line 8208 .trainerName = _("NIKKI"), - .items = {}, +#line 8209 + .trainerClass = TRAINER_CLASS_SWIMMER_F, +#line 8210 + .trainerPic = TRAINER_PIC_SWIMMER_F, + .encounterMusic_gender = +#line 8211 +F_TRAINER_FEMALE | +#line 8212 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8213 .doubleBattle = FALSE, +#line 8214 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Nikki), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8216 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8218 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8217 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8220 + .species = SPECIES_SPHEAL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8222 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8221 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8224 [TRAINER_BRENDA] = { - .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_F, +#line 8225 .trainerName = _("BRENDA"), - .items = {}, +#line 8226 + .trainerClass = TRAINER_CLASS_SWIMMER_F, +#line 8227 + .trainerPic = TRAINER_PIC_SWIMMER_F, + .encounterMusic_gender = +#line 8228 +F_TRAINER_FEMALE | +#line 8229 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8230 .doubleBattle = FALSE, +#line 8231 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Brenda), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 8233 + .species = SPECIES_GOLDEEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8235 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8234 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8237 [TRAINER_KATIE] = { - .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_F, +#line 8238 .trainerName = _("KATIE"), - .items = {}, +#line 8239 + .trainerClass = TRAINER_CLASS_SWIMMER_F, +#line 8240 + .trainerPic = TRAINER_PIC_SWIMMER_F, + .encounterMusic_gender = +#line 8241 +F_TRAINER_FEMALE | +#line 8242 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8243 .doubleBattle = FALSE, +#line 8244 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Katie), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8246 + .species = SPECIES_GOLDEEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8248 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8247 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8250 + .species = SPECIES_SPHEAL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8252 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8251 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8254 [TRAINER_SUSIE] = { - .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_F, +#line 8255 .trainerName = _("SUSIE"), - .items = {}, +#line 8256 + .trainerClass = TRAINER_CLASS_SWIMMER_F, +#line 8257 + .trainerPic = TRAINER_PIC_SWIMMER_F, + .encounterMusic_gender = +#line 8258 +F_TRAINER_FEMALE | +#line 8259 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8260 .doubleBattle = FALSE, +#line 8261 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Susie), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 8263 + .species = SPECIES_LUVDISC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8265 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8264 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8267 [TRAINER_KARA] = { - .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_F, +#line 8268 .trainerName = _("KARA"), - .items = {}, +#line 8269 + .trainerClass = TRAINER_CLASS_SWIMMER_F, +#line 8270 + .trainerPic = TRAINER_PIC_SWIMMER_F, + .encounterMusic_gender = +#line 8271 +F_TRAINER_FEMALE | +#line 8272 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8273 .doubleBattle = FALSE, +#line 8274 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Kara), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 8276 + .species = SPECIES_SEAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8278 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8277 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8280 [TRAINER_DANA] = { - .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_F, +#line 8281 .trainerName = _("DANA"), - .items = {}, +#line 8282 + .trainerClass = TRAINER_CLASS_SWIMMER_F, +#line 8283 + .trainerPic = TRAINER_PIC_SWIMMER_F, + .encounterMusic_gender = +#line 8284 +F_TRAINER_FEMALE | +#line 8285 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8286 .doubleBattle = FALSE, +#line 8287 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dana), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 8289 + .species = SPECIES_AZUMARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8291 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8290 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8293 [TRAINER_SIENNA] = { - .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_F, +#line 8294 .trainerName = _("SIENNA"), - .items = {}, +#line 8295 + .trainerClass = TRAINER_CLASS_SWIMMER_F, +#line 8296 + .trainerPic = TRAINER_PIC_SWIMMER_F, + .encounterMusic_gender = +#line 8297 +F_TRAINER_FEMALE | +#line 8298 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8299 .doubleBattle = FALSE, +#line 8300 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Sienna), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8302 + .species = SPECIES_LUVDISC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8304 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8303 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8306 + .species = SPECIES_LUVDISC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8308 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8307 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8310 [TRAINER_DEBRA] = { - .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_F, +#line 8311 .trainerName = _("DEBRA"), - .items = {}, +#line 8312 + .trainerClass = TRAINER_CLASS_SWIMMER_F, +#line 8313 + .trainerPic = TRAINER_PIC_SWIMMER_F, + .encounterMusic_gender = +#line 8314 +F_TRAINER_FEMALE | +#line 8315 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8316 .doubleBattle = FALSE, +#line 8317 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Debra), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 8319 + .species = SPECIES_SEAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8321 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8320 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8323 [TRAINER_LINDA] = { - .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_F, +#line 8324 .trainerName = _("LINDA"), - .items = {}, +#line 8325 + .trainerClass = TRAINER_CLASS_SWIMMER_F, +#line 8326 + .trainerPic = TRAINER_PIC_SWIMMER_F, + .encounterMusic_gender = +#line 8327 +F_TRAINER_FEMALE | +#line 8328 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8329 .doubleBattle = FALSE, +#line 8330 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Linda), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8332 + .species = SPECIES_HORSEA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8334 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8333 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8336 + .species = SPECIES_SEADRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8338 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8337 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8340 [TRAINER_KAYLEE] = { - .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_F, +#line 8341 .trainerName = _("KAYLEE"), - .items = {}, +#line 8342 + .trainerClass = TRAINER_CLASS_SWIMMER_F, +#line 8343 + .trainerPic = TRAINER_PIC_SWIMMER_F, + .encounterMusic_gender = +#line 8344 +F_TRAINER_FEMALE | +#line 8345 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8346 .doubleBattle = FALSE, +#line 8347 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Kaylee), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8349 + .species = SPECIES_LANTURN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8351 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8350 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8353 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8355 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8354 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8357 [TRAINER_LAUREL] = { - .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_F, +#line 8358 .trainerName = _("LAUREL"), - .items = {}, +#line 8359 + .trainerClass = TRAINER_CLASS_SWIMMER_F, +#line 8360 + .trainerPic = TRAINER_PIC_SWIMMER_F, + .encounterMusic_gender = +#line 8361 +F_TRAINER_FEMALE | +#line 8362 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8363 .doubleBattle = FALSE, +#line 8364 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Laurel), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8366 + .species = SPECIES_LUVDISC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8368 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8367 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8370 + .species = SPECIES_LUVDISC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8372 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8371 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8374 [TRAINER_CARLEE] = { - .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_F, +#line 8375 .trainerName = _("CARLEE"), - .items = {}, +#line 8376 + .trainerClass = TRAINER_CLASS_SWIMMER_F, +#line 8377 + .trainerPic = TRAINER_PIC_SWIMMER_F, + .encounterMusic_gender = +#line 8378 +F_TRAINER_FEMALE | +#line 8379 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8380 .doubleBattle = FALSE, +#line 8381 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Carlee), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 8383 + .species = SPECIES_SEAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8385 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8384 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8387 [TRAINER_JENNY_2] = { - .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_F, +#line 8388 .trainerName = _("JENNY"), - .items = {}, +#line 8389 + .trainerClass = TRAINER_CLASS_SWIMMER_F, +#line 8390 + .trainerPic = TRAINER_PIC_SWIMMER_F, + .encounterMusic_gender = +#line 8391 +F_TRAINER_FEMALE | +#line 8392 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8393 .doubleBattle = FALSE, +#line 8394 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jenny2), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 8396 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8398 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8397 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8400 [TRAINER_JENNY_3] = { - .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_F, +#line 8401 .trainerName = _("JENNY"), - .items = {}, +#line 8402 + .trainerClass = TRAINER_CLASS_SWIMMER_F, +#line 8403 + .trainerPic = TRAINER_PIC_SWIMMER_F, + .encounterMusic_gender = +#line 8404 +F_TRAINER_FEMALE | +#line 8405 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8406 .doubleBattle = FALSE, +#line 8407 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jenny3), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 8409 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8411 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8410 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8413 [TRAINER_JENNY_4] = { - .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_F, +#line 8414 .trainerName = _("JENNY"), - .items = {}, +#line 8415 + .trainerClass = TRAINER_CLASS_SWIMMER_F, +#line 8416 + .trainerPic = TRAINER_PIC_SWIMMER_F, + .encounterMusic_gender = +#line 8417 +F_TRAINER_FEMALE | +#line 8418 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8419 .doubleBattle = FALSE, +#line 8420 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jenny4), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8422 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8424 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8423 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8426 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8428 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8427 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8430 [TRAINER_JENNY_5] = { - .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_F, +#line 8431 .trainerName = _("JENNY"), - .items = {}, +#line 8432 + .trainerClass = TRAINER_CLASS_SWIMMER_F, +#line 8433 + .trainerPic = TRAINER_PIC_SWIMMER_F, + .encounterMusic_gender = +#line 8434 +F_TRAINER_FEMALE | +#line 8435 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8436 .doubleBattle = FALSE, +#line 8437 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jenny5), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 8439 + .species = SPECIES_LUVDISC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8441 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8440 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8443 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8445 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8444 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8447 + .species = SPECIES_STARMIE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8449 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8448 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8451 [TRAINER_HEIDI] = { - .trainerClass = TRAINER_CLASS_PICNICKER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_PICNICKER, +#line 8452 .trainerName = _("HEIDI"), - .items = {}, +#line 8453 + .trainerClass = TRAINER_CLASS_PICNICKER, +#line 8454 + .trainerPic = TRAINER_PIC_PICNICKER, + .encounterMusic_gender = +#line 8455 +F_TRAINER_FEMALE | +#line 8456 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 8457 .doubleBattle = FALSE, +#line 8458 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Heidi), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8460 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8462 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8461 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 8463 + MOVE_DIG, + MOVE_SAND_ATTACK, + MOVE_POISON_STING, + MOVE_SLASH, + }, + }, + { +#line 8468 + .species = SPECIES_BALTOY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8470 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8469 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 8471 + MOVE_RAPID_SPIN, + MOVE_MUD_SLAP, + MOVE_PSYBEAM, + MOVE_ROCK_TOMB, + }, + }, + }, }, - +#line 8476 [TRAINER_BECKY] = { - .trainerClass = TRAINER_CLASS_PICNICKER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_PICNICKER, +#line 8477 .trainerName = _("BECKY"), - .items = {}, +#line 8478 + .trainerClass = TRAINER_CLASS_PICNICKER, +#line 8479 + .trainerPic = TRAINER_PIC_PICNICKER, + .encounterMusic_gender = +#line 8480 +F_TRAINER_FEMALE | +#line 8481 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 8482 .doubleBattle = FALSE, +#line 8483 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Becky), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8485 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8487 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8486 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 8488 + MOVE_SAND_ATTACK, + MOVE_POISON_STING, + MOVE_SLASH, + MOVE_DIG, + }, + }, + { +#line 8493 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8495 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8494 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 8496 + MOVE_ROLLOUT, + MOVE_BUBBLE_BEAM, + MOVE_TAIL_WHIP, + MOVE_DEFENSE_CURL, + }, + }, + }, }, - +#line 8501 [TRAINER_CAROL] = { - .trainerClass = TRAINER_CLASS_PICNICKER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_PICNICKER, +#line 8502 .trainerName = _("CAROL"), - .items = {}, +#line 8503 + .trainerClass = TRAINER_CLASS_PICNICKER, +#line 8504 + .trainerPic = TRAINER_PIC_PICNICKER, + .encounterMusic_gender = +#line 8505 +F_TRAINER_FEMALE | +#line 8506 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 8507 .doubleBattle = FALSE, +#line 8508 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Carol), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8510 + .species = SPECIES_TAILLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8512 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8511 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8514 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8516 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8515 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8518 [TRAINER_NANCY] = { - .trainerClass = TRAINER_CLASS_PICNICKER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_PICNICKER, +#line 8519 .trainerName = _("NANCY"), - .items = {}, +#line 8520 + .trainerClass = TRAINER_CLASS_PICNICKER, +#line 8521 + .trainerPic = TRAINER_PIC_PICNICKER, + .encounterMusic_gender = +#line 8522 +F_TRAINER_FEMALE | +#line 8523 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 8524 .doubleBattle = FALSE, +#line 8525 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Nancy), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8527 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8529 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8528 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8531 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8533 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8532 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8535 [TRAINER_MARTHA] = { - .trainerClass = TRAINER_CLASS_PICNICKER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_PICNICKER, +#line 8536 .trainerName = _("MARTHA"), - .items = {}, +#line 8537 + .trainerClass = TRAINER_CLASS_PICNICKER, +#line 8538 + .trainerPic = TRAINER_PIC_PICNICKER, + .encounterMusic_gender = +#line 8539 +F_TRAINER_FEMALE | +#line 8540 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 8541 .doubleBattle = FALSE, +#line 8542 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Martha), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8544 + .species = SPECIES_SKITTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8546 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8545 + .lvl = 23, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8548 + .species = SPECIES_SWABLU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8550 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8549 + .lvl = 23, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8552 [TRAINER_DIANA_1] = { - .trainerClass = TRAINER_CLASS_PICNICKER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_PICNICKER, +#line 8553 .trainerName = _("DIANA"), - .items = {}, +#line 8554 + .trainerClass = TRAINER_CLASS_PICNICKER, +#line 8555 + .trainerPic = TRAINER_PIC_PICNICKER, + .encounterMusic_gender = +#line 8556 +F_TRAINER_FEMALE | +#line 8557 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 8558 .doubleBattle = FALSE, +#line 8559 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Diana1), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 8561 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8563 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8562 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8565 + .species = SPECIES_ODDISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8567 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8566 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8569 + .species = SPECIES_SWABLU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8571 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8570 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8573 [TRAINER_CEDRIC] = { - .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_PSYCHIC_M, +#line 8574 .trainerName = _("CEDRIC"), - .items = {}, +#line 8575 + .trainerClass = TRAINER_CLASS_PSYCHIC, +#line 8576 + .trainerPic = TRAINER_PIC_PSYCHIC_M, + .encounterMusic_gender = +#line 8578 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 8579 .doubleBattle = FALSE, +#line 8580 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cedric), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 8582 + .species = SPECIES_WOBBUFFET, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8584 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8583 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 8585 + MOVE_DESTINY_BOND, + MOVE_SAFEGUARD, + MOVE_COUNTER, + MOVE_MIRROR_COAT, + }, + }, + }, }, - +#line 8590 [TRAINER_IRENE] = { - .trainerClass = TRAINER_CLASS_PICNICKER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_PICNICKER, +#line 8591 .trainerName = _("IRENE"), - .items = {}, +#line 8592 + .trainerClass = TRAINER_CLASS_PICNICKER, +#line 8593 + .trainerPic = TRAINER_PIC_PICNICKER, + .encounterMusic_gender = +#line 8594 +F_TRAINER_FEMALE | +#line 8595 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 8596 .doubleBattle = FALSE, +#line 8597 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Irene), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8599 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8601 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8600 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8603 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8605 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8604 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8607 [TRAINER_DIANA_2] = { - .trainerClass = TRAINER_CLASS_PICNICKER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_PICNICKER, +#line 8608 .trainerName = _("DIANA"), - .items = {}, +#line 8609 + .trainerClass = TRAINER_CLASS_PICNICKER, +#line 8610 + .trainerPic = TRAINER_PIC_PICNICKER, + .encounterMusic_gender = +#line 8611 +F_TRAINER_FEMALE | +#line 8612 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 8613 .doubleBattle = FALSE, +#line 8614 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Diana2), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 8616 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8618 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 8617 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8620 + .species = SPECIES_GLOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8622 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 8621 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8624 + .species = SPECIES_SWABLU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8626 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 8625 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8628 [TRAINER_DIANA_3] = { - .trainerClass = TRAINER_CLASS_PICNICKER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_PICNICKER, +#line 8629 .trainerName = _("DIANA"), - .items = {}, +#line 8630 + .trainerClass = TRAINER_CLASS_PICNICKER, +#line 8631 + .trainerPic = TRAINER_PIC_PICNICKER, + .encounterMusic_gender = +#line 8632 +F_TRAINER_FEMALE | +#line 8633 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 8634 .doubleBattle = FALSE, +#line 8635 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Diana3), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 8637 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8639 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 8638 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8641 + .species = SPECIES_GLOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8643 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 8642 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8645 + .species = SPECIES_SWABLU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8647 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 8646 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8649 [TRAINER_DIANA_4] = { - .trainerClass = TRAINER_CLASS_PICNICKER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_PICNICKER, +#line 8650 .trainerName = _("DIANA"), - .items = {}, +#line 8651 + .trainerClass = TRAINER_CLASS_PICNICKER, +#line 8652 + .trainerPic = TRAINER_PIC_PICNICKER, + .encounterMusic_gender = +#line 8653 +F_TRAINER_FEMALE | +#line 8654 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 8655 .doubleBattle = FALSE, +#line 8656 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Diana4), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 8658 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8660 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 8659 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8662 + .species = SPECIES_GLOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8664 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 8663 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8666 + .species = SPECIES_SWABLU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8668 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 8667 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8670 [TRAINER_DIANA_5] = { - .trainerClass = TRAINER_CLASS_PICNICKER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_PICNICKER, +#line 8671 .trainerName = _("DIANA"), - .items = {}, +#line 8672 + .trainerClass = TRAINER_CLASS_PICNICKER, +#line 8673 + .trainerPic = TRAINER_PIC_PICNICKER, + .encounterMusic_gender = +#line 8674 +F_TRAINER_FEMALE | +#line 8675 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 8676 .doubleBattle = FALSE, +#line 8677 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Diana5), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 8679 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8681 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 8680 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8683 + .species = SPECIES_VILEPLUME, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8685 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 8684 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8687 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8689 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 8688 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8691 [TRAINER_AMY_AND_LIV_1] = { - .trainerClass = TRAINER_CLASS_TWINS, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, - .trainerPic = TRAINER_PIC_TWINS, +#line 8692 .trainerName = _("AMY & LIV"), - .items = {}, +#line 8693 + .trainerClass = TRAINER_CLASS_TWINS, +#line 8694 + .trainerPic = TRAINER_PIC_TWINS, + .encounterMusic_gender = +#line 8696 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 8697 .doubleBattle = TRUE, +#line 8698 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_AmyAndLiv1), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8700 + .species = SPECIES_PLUSLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8702 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8701 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8704 + .species = SPECIES_MINUN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8706 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8705 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8708 [TRAINER_AMY_AND_LIV_2] = { - .trainerClass = TRAINER_CLASS_TWINS, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, - .trainerPic = TRAINER_PIC_TWINS, +#line 8709 .trainerName = _("AMY & LIV"), - .items = {}, +#line 8710 + .trainerClass = TRAINER_CLASS_TWINS, +#line 8711 + .trainerPic = TRAINER_PIC_TWINS, + .encounterMusic_gender = +#line 8713 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 8714 .doubleBattle = TRUE, +#line 8715 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_AmyAndLiv2), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8717 + .species = SPECIES_PLUSLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8719 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 8718 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8721 + .species = SPECIES_MINUN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8723 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 8722 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8725 [TRAINER_GINA_AND_MIA_1] = { - .trainerClass = TRAINER_CLASS_TWINS, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, - .trainerPic = TRAINER_PIC_TWINS, +#line 8726 .trainerName = _("GINA & MIA"), - .items = {}, +#line 8727 + .trainerClass = TRAINER_CLASS_TWINS, +#line 8728 + .trainerPic = TRAINER_PIC_TWINS, + .encounterMusic_gender = +#line 8730 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 8731 .doubleBattle = TRUE, +#line 8732 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GinaAndMia1), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8734 + .species = SPECIES_SEEDOT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8736 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8735 + .lvl = 6, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8738 + .species = SPECIES_LOTAD, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8740 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8739 + .lvl = 6, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8742 [TRAINER_MIU_AND_YUKI] = { - .trainerClass = TRAINER_CLASS_TWINS, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, - .trainerPic = TRAINER_PIC_TWINS, +#line 8743 .trainerName = _("MIU & YUKI"), - .items = {}, +#line 8744 + .trainerClass = TRAINER_CLASS_TWINS, +#line 8745 + .trainerPic = TRAINER_PIC_TWINS, + .encounterMusic_gender = +#line 8747 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 8748 .doubleBattle = TRUE, +#line 8749 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_MiuAndYuki), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8751 + .species = SPECIES_BEAUTIFLY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8753 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8752 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8755 + .species = SPECIES_DUSTOX, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8757 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8756 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8759 [TRAINER_AMY_AND_LIV_3] = { - .trainerClass = TRAINER_CLASS_TWINS, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, - .trainerPic = TRAINER_PIC_TWINS, +#line 8760 .trainerName = _("AMY & LIV"), - .items = {}, +#line 8761 + .trainerClass = TRAINER_CLASS_TWINS, +#line 8762 + .trainerPic = TRAINER_PIC_TWINS, + .encounterMusic_gender = +#line 8764 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 8765 .doubleBattle = TRUE, +#line 8766 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_AmyAndLiv3), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8768 + .species = SPECIES_PLUSLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8770 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8769 + .lvl = 9, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8772 + .species = SPECIES_MINUN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8774 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8773 + .lvl = 9, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8776 [TRAINER_GINA_AND_MIA_2] = { - .trainerClass = TRAINER_CLASS_TWINS, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, - .trainerPic = TRAINER_PIC_TWINS, +#line 8777 .trainerName = _("GINA & MIA"), - .items = {}, +#line 8778 + .trainerClass = TRAINER_CLASS_TWINS, +#line 8779 + .trainerPic = TRAINER_PIC_TWINS, + .encounterMusic_gender = +#line 8781 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 8782 .doubleBattle = TRUE, +#line 8783 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GinaAndMia2), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8785 + .species = SPECIES_DUSKULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8787 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8786 + .lvl = 10, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 8788 + MOVE_NIGHT_SHADE, + MOVE_DISABLE, + }, + }, + { +#line 8791 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8793 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8792 + .lvl = 10, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 8794 + MOVE_ABSORB, + MOVE_LEECH_SEED, + }, + }, + }, }, - +#line 8797 [TRAINER_AMY_AND_LIV_4] = { - .trainerClass = TRAINER_CLASS_TWINS, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, - .trainerPic = TRAINER_PIC_TWINS, +#line 8798 .trainerName = _("AMY & LIV"), - .items = {}, +#line 8799 + .trainerClass = TRAINER_CLASS_TWINS, +#line 8800 + .trainerPic = TRAINER_PIC_TWINS, + .encounterMusic_gender = +#line 8802 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 8803 .doubleBattle = TRUE, +#line 8804 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_AmyAndLiv4), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8806 + .species = SPECIES_PLUSLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8808 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 8807 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8810 + .species = SPECIES_MINUN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8812 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 8811 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8814 [TRAINER_AMY_AND_LIV_5] = { - .trainerClass = TRAINER_CLASS_TWINS, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, - .trainerPic = TRAINER_PIC_TWINS, +#line 8815 .trainerName = _("AMY & LIV"), - .items = {}, +#line 8816 + .trainerClass = TRAINER_CLASS_TWINS, +#line 8817 + .trainerPic = TRAINER_PIC_TWINS, + .encounterMusic_gender = +#line 8819 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 8820 .doubleBattle = TRUE, +#line 8821 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_AmyAndLiv5), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8823 + .species = SPECIES_PLUSLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8825 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 8824 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 8826 + MOVE_SPARK, + MOVE_CHARGE, + MOVE_FAKE_TEARS, + MOVE_HELPING_HAND, + }, + }, + { +#line 8831 + .species = SPECIES_MINUN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8833 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 8832 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 8834 + MOVE_SPARK, + MOVE_CHARGE, + MOVE_CHARM, + MOVE_HELPING_HAND, + }, + }, + }, }, - +#line 8839 [TRAINER_AMY_AND_LIV_6] = { - .trainerClass = TRAINER_CLASS_TWINS, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, - .trainerPic = TRAINER_PIC_TWINS, +#line 8840 .trainerName = _("AMY & LIV"), - .items = {}, +#line 8841 + .trainerClass = TRAINER_CLASS_TWINS, +#line 8842 + .trainerPic = TRAINER_PIC_TWINS, + .encounterMusic_gender = +#line 8844 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 8845 .doubleBattle = TRUE, +#line 8846 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_AmyAndLiv6), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8848 + .species = SPECIES_PLUSLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8850 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 8849 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 8851 + MOVE_THUNDER, + MOVE_CHARGE, + MOVE_FAKE_TEARS, + MOVE_HELPING_HAND, + }, + }, + { +#line 8856 + .species = SPECIES_MINUN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8858 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 8857 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 8859 + MOVE_THUNDER, + MOVE_CHARGE, + MOVE_CHARM, + MOVE_HELPING_HAND, + }, + }, + }, }, - +#line 8864 [TRAINER_HUEY] = { - .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_SAILOR, +#line 8865 .trainerName = _("HUEY"), - .items = {}, +#line 8866 + .trainerClass = TRAINER_CLASS_SAILOR, +#line 8867 + .trainerPic = TRAINER_PIC_SAILOR, + .encounterMusic_gender = +#line 8869 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 8870 .doubleBattle = FALSE, +#line 8871 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Huey), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8873 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8875 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 8874 + .lvl = 12, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8877 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8879 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 8878 + .lvl = 12, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8881 [TRAINER_EDMOND] = { - .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_SAILOR, +#line 8882 .trainerName = _("EDMOND"), - .items = {}, +#line 8883 + .trainerClass = TRAINER_CLASS_SAILOR, +#line 8884 + .trainerPic = TRAINER_PIC_SAILOR, + .encounterMusic_gender = +#line 8886 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 8887 .doubleBattle = FALSE, +#line 8888 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Edmond), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 8890 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8892 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8891 + .lvl = 13, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8894 [TRAINER_ERNEST_1] = { - .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_SAILOR, +#line 8895 .trainerName = _("ERNEST"), - .items = {}, +#line 8896 + .trainerClass = TRAINER_CLASS_SAILOR, +#line 8897 + .trainerPic = TRAINER_PIC_SAILOR, + .encounterMusic_gender = +#line 8899 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 8900 .doubleBattle = FALSE, +#line 8901 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ernest1), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8903 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8905 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8904 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8907 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8909 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8908 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8911 [TRAINER_DWAYNE] = { - .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_SAILOR, +#line 8912 .trainerName = _("DWAYNE"), - .items = {}, +#line 8913 + .trainerClass = TRAINER_CLASS_SAILOR, +#line 8914 + .trainerPic = TRAINER_PIC_SAILOR, + .encounterMusic_gender = +#line 8916 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 8917 .doubleBattle = FALSE, +#line 8918 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dwayne), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 8920 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8922 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8921 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8924 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8926 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8925 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8928 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8930 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8929 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8932 [TRAINER_PHILLIP] = { - .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_SAILOR, +#line 8933 .trainerName = _("PHILLIP"), - .items = {}, +#line 8934 + .trainerClass = TRAINER_CLASS_SAILOR, +#line 8935 + .trainerPic = TRAINER_PIC_SAILOR, + .encounterMusic_gender = +#line 8937 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 8938 .doubleBattle = FALSE, +#line 8939 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Phillip), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8941 + .species = SPECIES_TENTACRUEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8943 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8942 + .lvl = 44, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8945 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8947 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8946 + .lvl = 44, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8949 [TRAINER_LEONARD] = { - .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_SAILOR, +#line 8950 .trainerName = _("LEONARD"), - .items = {}, +#line 8951 + .trainerClass = TRAINER_CLASS_SAILOR, +#line 8952 + .trainerPic = TRAINER_PIC_SAILOR, + .encounterMusic_gender = +#line 8954 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 8955 .doubleBattle = FALSE, +#line 8956 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Leonard), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 8958 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8960 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8959 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8962 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8964 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8963 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8966 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8968 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8967 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8970 [TRAINER_DUNCAN] = { - .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_SAILOR, +#line 8971 .trainerName = _("DUNCAN"), - .items = {}, +#line 8972 + .trainerClass = TRAINER_CLASS_SAILOR, +#line 8973 + .trainerPic = TRAINER_PIC_SAILOR, + .encounterMusic_gender = +#line 8975 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 8976 .doubleBattle = FALSE, +#line 8977 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Duncan), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8979 + .species = SPECIES_SPHEAL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8981 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8980 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8983 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8985 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8984 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 8987 [TRAINER_ERNEST_2] = { - .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_SAILOR, +#line 8988 .trainerName = _("ERNEST"), - .items = {}, +#line 8989 + .trainerClass = TRAINER_CLASS_SAILOR, +#line 8990 + .trainerPic = TRAINER_PIC_SAILOR, + .encounterMusic_gender = +#line 8992 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 8993 .doubleBattle = FALSE, +#line 8994 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ernest2), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 8996 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8998 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 8997 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9000 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9002 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 9001 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9004 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9006 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 9005 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9008 [TRAINER_ERNEST_3] = { - .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_SAILOR, +#line 9009 .trainerName = _("ERNEST"), - .items = {}, +#line 9010 + .trainerClass = TRAINER_CLASS_SAILOR, +#line 9011 + .trainerPic = TRAINER_PIC_SAILOR, + .encounterMusic_gender = +#line 9013 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9014 .doubleBattle = FALSE, +#line 9015 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ernest3), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 9017 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9019 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 9018 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9021 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9023 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 9022 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9025 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9027 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 9026 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9029 [TRAINER_ERNEST_4] = { - .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_SAILOR, +#line 9030 .trainerName = _("ERNEST"), - .items = {}, +#line 9031 + .trainerClass = TRAINER_CLASS_SAILOR, +#line 9032 + .trainerPic = TRAINER_PIC_SAILOR, + .encounterMusic_gender = +#line 9034 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9035 .doubleBattle = FALSE, +#line 9036 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ernest4), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 9038 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9040 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 9039 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9042 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9044 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 9043 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9046 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9048 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 9047 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9050 [TRAINER_ERNEST_5] = { - .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_SAILOR, +#line 9051 .trainerName = _("ERNEST"), - .items = {}, +#line 9052 + .trainerClass = TRAINER_CLASS_SAILOR, +#line 9053 + .trainerPic = TRAINER_PIC_SAILOR, + .encounterMusic_gender = +#line 9055 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9056 .doubleBattle = FALSE, +#line 9057 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ernest5), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 9059 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9061 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 9060 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9063 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9065 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 9064 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9067 + .species = SPECIES_TENTACRUEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9069 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 9068 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9071 [TRAINER_ELI] = { - .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_HIKER, +#line 9072 .trainerName = _("ELI"), - .items = {}, +#line 9073 + .trainerClass = TRAINER_CLASS_HIKER, +#line 9074 + .trainerPic = TRAINER_PIC_HIKER, + .encounterMusic_gender = +#line 9076 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 9077 .doubleBattle = FALSE, +#line 9078 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Eli), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 9080 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9082 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9081 + .lvl = 23, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9084 [TRAINER_ANNIKA] = { - .trainerClass = TRAINER_CLASS_POKEFAN, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS, - .trainerPic = TRAINER_PIC_POKEFAN_F, +#line 9085 .trainerName = _("ANNIKA"), - .items = {}, +#line 9086 + .trainerClass = TRAINER_CLASS_POKEFAN, +#line 9087 + .trainerPic = TRAINER_PIC_POKEFAN_F, + .encounterMusic_gender = +#line 9088 +F_TRAINER_FEMALE | +#line 9089 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 9090 .doubleBattle = FALSE, +#line 9091 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Annika), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 9093 + .species = SPECIES_FEEBAS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9093 + .heldItem = ITEM_ORAN_BERRY, +#line 9095 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9094 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 9096 + MOVE_FLAIL, + MOVE_WATER_PULSE, + MOVE_RETURN, + MOVE_ATTRACT, + }, + }, + { +#line 9101 + .species = SPECIES_FEEBAS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9101 + .heldItem = ITEM_ORAN_BERRY, +#line 9103 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9102 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 9104 + MOVE_FLAIL, + MOVE_WATER_PULSE, + MOVE_RETURN, + MOVE_ATTRACT, + }, + }, + }, }, - +#line 9109 [TRAINER_JAZMYN] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER_2, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_F, +#line 9110 .trainerName = _("JAZMYN"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 9111 + .trainerClass = TRAINER_CLASS_COOLTRAINER_2, +#line 9112 + .trainerPic = TRAINER_PIC_COOLTRAINER_F, + .encounterMusic_gender = +#line 9113 +F_TRAINER_FEMALE | +#line 9114 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 9115 + .items = { ITEM_HYPER_POTION }, +#line 9116 .doubleBattle = FALSE, +#line 9117 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Jazmyn), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 9119 + .species = SPECIES_ABSOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9121 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9120 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9123 [TRAINER_JONAS] = { - .trainerClass = TRAINER_CLASS_NINJA_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_NINJA_BOY, +#line 9124 .trainerName = _("JONAS"), - .items = {}, +#line 9125 + .trainerClass = TRAINER_CLASS_NINJA_BOY, +#line 9126 + .trainerPic = TRAINER_PIC_NINJA_BOY, + .encounterMusic_gender = +#line 9128 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 9129 .doubleBattle = FALSE, +#line 9130 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Jonas), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 9132 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9134 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9133 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 9135 + MOVE_TOXIC, + MOVE_THUNDER, + MOVE_SELF_DESTRUCT, + MOVE_SLUDGE_BOMB, + }, + }, + }, }, - +#line 9140 [TRAINER_KAYLEY] = { - .trainerClass = TRAINER_CLASS_PARASOL_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_PARASOL_LADY, +#line 9141 .trainerName = _("KAYLEY"), - .items = {}, +#line 9142 + .trainerClass = TRAINER_CLASS_PARASOL_LADY, +#line 9143 + .trainerPic = TRAINER_PIC_PARASOL_LADY, + .encounterMusic_gender = +#line 9144 +F_TRAINER_FEMALE | +#line 9145 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 9146 .doubleBattle = FALSE, +#line 9147 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Kayley), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 9149 + .species = SPECIES_CASTFORM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9151 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9150 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 9152 + MOVE_SUNNY_DAY, + MOVE_WEATHER_BALL, + MOVE_FLAMETHROWER, + MOVE_SOLAR_BEAM, + }, + }, + }, }, - +#line 9157 [TRAINER_AURON] = { - .trainerClass = TRAINER_CLASS_EXPERT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_EXPERT_M, +#line 9158 .trainerName = _("AURON"), - .items = {}, +#line 9159 + .trainerClass = TRAINER_CLASS_EXPERT, +#line 9160 + .trainerPic = TRAINER_PIC_EXPERT_M, + .encounterMusic_gender = +#line 9162 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 9163 .doubleBattle = FALSE, +#line 9164 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Auron), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 9166 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9168 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9167 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9170 + .species = SPECIES_MACHAMP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9172 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9171 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9174 [TRAINER_KELVIN] = { - .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_SAILOR, +#line 9175 .trainerName = _("KELVIN"), - .items = {}, +#line 9176 + .trainerClass = TRAINER_CLASS_SAILOR, +#line 9177 + .trainerPic = TRAINER_PIC_SAILOR, + .encounterMusic_gender = +#line 9179 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9180 .doubleBattle = FALSE, +#line 9181 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Kelvin), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 9183 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9185 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 9184 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9187 + .species = SPECIES_SPHEAL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9189 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 9188 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9191 [TRAINER_MARLEY] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_F, +#line 9192 .trainerName = _("MARLEY"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 9193 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 9194 + .trainerPic = TRAINER_PIC_COOLTRAINER_F, + .encounterMusic_gender = +#line 9195 +F_TRAINER_FEMALE | +#line 9196 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 9197 + .items = { ITEM_HYPER_POTION }, +#line 9198 .doubleBattle = FALSE, +#line 9199 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Marley), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 9201 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9203 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 9202 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 9204 + MOVE_BITE, + MOVE_ROAR, + MOVE_THUNDER_WAVE, + MOVE_THUNDERBOLT, + }, + }, + }, }, - +#line 9209 [TRAINER_REYNA] = { - .trainerClass = TRAINER_CLASS_BATTLE_GIRL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_BATTLE_GIRL, +#line 9210 .trainerName = _("REYNA"), - .items = {}, +#line 9211 + .trainerClass = TRAINER_CLASS_BATTLE_GIRL, +#line 9212 + .trainerPic = TRAINER_PIC_BATTLE_GIRL, + .encounterMusic_gender = +#line 9213 +F_TRAINER_FEMALE | +#line 9214 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 9215 .doubleBattle = FALSE, +#line 9216 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Reyna), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 9218 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9220 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 9219 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9222 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9224 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 9223 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9226 [TRAINER_HUDSON] = { - .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_SAILOR, +#line 9227 .trainerName = _("HUDSON"), - .items = {}, +#line 9228 + .trainerClass = TRAINER_CLASS_SAILOR, +#line 9229 + .trainerPic = TRAINER_PIC_SAILOR, + .encounterMusic_gender = +#line 9231 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9232 .doubleBattle = FALSE, +#line 9233 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Hudson), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 9235 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9237 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9236 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9239 [TRAINER_CONOR] = { - .trainerClass = TRAINER_CLASS_EXPERT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_EXPERT_M, +#line 9240 .trainerName = _("CONOR"), - .items = {}, +#line 9241 + .trainerClass = TRAINER_CLASS_EXPERT, +#line 9242 + .trainerPic = TRAINER_PIC_EXPERT_M, + .encounterMusic_gender = +#line 9244 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 9245 .doubleBattle = FALSE, +#line 9246 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Conor), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 9248 + .species = SPECIES_CHINCHOU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9250 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9249 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9252 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9254 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 9253 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9256 [TRAINER_EDWIN_1] = { - .trainerClass = TRAINER_CLASS_COLLECTOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_COLLECTOR, +#line 9257 .trainerName = _("EDWIN"), - .items = {}, +#line 9258 + .trainerClass = TRAINER_CLASS_COLLECTOR, +#line 9259 + .trainerPic = TRAINER_PIC_COLLECTOR, + .encounterMusic_gender = +#line 9261 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 9262 .doubleBattle = FALSE, +#line 9263 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Edwin1), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 9265 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9267 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9266 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9269 + .species = SPECIES_NUZLEAF, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9271 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9270 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9273 [TRAINER_HECTOR] = { - .trainerClass = TRAINER_CLASS_COLLECTOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_COLLECTOR, +#line 9274 .trainerName = _("HECTOR"), - .items = {}, +#line 9275 + .trainerClass = TRAINER_CLASS_COLLECTOR, +#line 9276 + .trainerPic = TRAINER_PIC_COLLECTOR, + .encounterMusic_gender = +#line 9278 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 9279 .doubleBattle = FALSE, +#line 9280 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Hector), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 9282 + .species = SPECIES_ZANGOOSE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9284 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9283 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9286 + .species = SPECIES_SEVIPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9288 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9287 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9290 [TRAINER_TABITHA_MOSSDEEP] = { - .trainerClass = TRAINER_CLASS_MAGMA_ADMIN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, - .trainerPic = TRAINER_PIC_MAGMA_ADMIN, +#line 9291 .trainerName = _("TABITHA"), - .items = {}, +#line 9292 + .trainerClass = TRAINER_CLASS_MAGMA_ADMIN, +#line 9293 + .trainerPic = TRAINER_PIC_MAGMA_ADMIN, + .encounterMusic_gender = +#line 9295 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 9296 .doubleBattle = FALSE, +#line 9297 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_TabithaMossdeep), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 9299 + .species = SPECIES_CAMERUPT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9301 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9300 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9303 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9305 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9304 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9307 + .species = SPECIES_GOLBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9309 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9308 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9311 [TRAINER_EDWIN_2] = { - .trainerClass = TRAINER_CLASS_COLLECTOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_COLLECTOR, +#line 9312 .trainerName = _("EDWIN"), - .items = {}, +#line 9313 + .trainerClass = TRAINER_CLASS_COLLECTOR, +#line 9314 + .trainerPic = TRAINER_PIC_COLLECTOR, + .encounterMusic_gender = +#line 9316 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 9317 .doubleBattle = FALSE, +#line 9318 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Edwin2), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 9320 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9322 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9321 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9324 + .species = SPECIES_NUZLEAF, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9326 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9325 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9328 [TRAINER_EDWIN_3] = { - .trainerClass = TRAINER_CLASS_COLLECTOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_COLLECTOR, +#line 9329 .trainerName = _("EDWIN"), - .items = {}, +#line 9330 + .trainerClass = TRAINER_CLASS_COLLECTOR, +#line 9331 + .trainerPic = TRAINER_PIC_COLLECTOR, + .encounterMusic_gender = +#line 9333 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 9334 .doubleBattle = FALSE, +#line 9335 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Edwin3), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 9337 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9339 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9338 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9341 + .species = SPECIES_NUZLEAF, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9343 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9342 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9345 [TRAINER_EDWIN_4] = { - .trainerClass = TRAINER_CLASS_COLLECTOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_COLLECTOR, +#line 9346 .trainerName = _("EDWIN"), - .items = {}, +#line 9347 + .trainerClass = TRAINER_CLASS_COLLECTOR, +#line 9348 + .trainerPic = TRAINER_PIC_COLLECTOR, + .encounterMusic_gender = +#line 9350 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 9351 .doubleBattle = FALSE, +#line 9352 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Edwin4), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 9354 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9356 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9355 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9358 + .species = SPECIES_NUZLEAF, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9360 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9359 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9362 [TRAINER_EDWIN_5] = { - .trainerClass = TRAINER_CLASS_COLLECTOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_COLLECTOR, +#line 9363 .trainerName = _("EDWIN"), - .items = {}, +#line 9364 + .trainerClass = TRAINER_CLASS_COLLECTOR, +#line 9365 + .trainerPic = TRAINER_PIC_COLLECTOR, + .encounterMusic_gender = +#line 9367 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 9368 .doubleBattle = FALSE, +#line 9369 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Edwin5), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 9371 + .species = SPECIES_LUDICOLO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9373 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9372 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9375 + .species = SPECIES_SHIFTRY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9377 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9376 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9379 [TRAINER_WALLY_VR_1] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_WALLY, +#line 9380 .trainerName = _("WALLY"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE}, +#line 9381 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 9382 + .trainerPic = TRAINER_PIC_WALLY, + .encounterMusic_gender = +#line 9384 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9385 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 9386 .doubleBattle = FALSE, +#line 9387 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_WallyVR1), + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 9389 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9391 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 9390 + .lvl = 44, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 9392 + MOVE_AERIAL_ACE, + MOVE_SAFEGUARD, + MOVE_DRAGON_BREATH, + MOVE_DRAGON_DANCE, + }, + }, + { +#line 9397 + .species = SPECIES_DELCATTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9399 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 9398 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 9400 + MOVE_SING, + MOVE_ASSIST, + MOVE_CHARM, + MOVE_FEINT_ATTACK, + }, + }, + { +#line 9405 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9407 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 9406 + .lvl = 44, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 9408 + MOVE_MAGICAL_LEAF, + MOVE_LEECH_SEED, + MOVE_GIGA_DRAIN, + MOVE_TOXIC, + }, + }, + { +#line 9413 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9415 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 9414 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 9416 + MOVE_SUPERSONIC, + MOVE_THUNDERBOLT, + MOVE_TRI_ATTACK, + MOVE_SCREECH, + }, + }, + { +#line 9421 + .species = SPECIES_GARDEVOIR, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9423 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 9422 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 9424 + MOVE_DOUBLE_TEAM, + MOVE_CALM_MIND, + MOVE_PSYCHIC, + MOVE_FUTURE_SIGHT, + }, + }, + }, }, - +#line 9429 [TRAINER_BRENDAN_ROUTE_103_MUDKIP] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_BRENDAN, +#line 9430 .trainerName = _("BRENDAN"), - .items = {}, +#line 9431 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 9432 + .trainerPic = TRAINER_PIC_BRENDAN, + .encounterMusic_gender = +#line 9434 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9435 .doubleBattle = FALSE, +#line 9436 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_BrendanRoute103Mudkip), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 9438 + .species = SPECIES_TREECKO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9440 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9439 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9442 [TRAINER_BRENDAN_ROUTE_110_MUDKIP] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_BRENDAN, +#line 9443 .trainerName = _("BRENDAN"), - .items = {}, +#line 9444 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 9445 + .trainerPic = TRAINER_PIC_BRENDAN, + .encounterMusic_gender = +#line 9447 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9448 .doubleBattle = FALSE, +#line 9449 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_BrendanRoute110Mudkip), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 9451 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9453 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 9452 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9455 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9457 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 9456 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9459 + .species = SPECIES_GROVYLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9461 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9460 + .lvl = 20, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9463 [TRAINER_BRENDAN_ROUTE_119_MUDKIP] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_BRENDAN, +#line 9464 .trainerName = _("BRENDAN"), - .items = {}, +#line 9465 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 9466 + .trainerPic = TRAINER_PIC_BRENDAN, + .encounterMusic_gender = +#line 9468 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9469 .doubleBattle = FALSE, +#line 9470 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_BrendanRoute119Mudkip), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 9472 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9474 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9473 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9476 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9478 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9477 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9480 + .species = SPECIES_GROVYLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9482 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 9481 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9484 [TRAINER_BRENDAN_ROUTE_103_TREECKO] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_BRENDAN, +#line 9485 .trainerName = _("BRENDAN"), - .items = {}, +#line 9486 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 9487 + .trainerPic = TRAINER_PIC_BRENDAN, + .encounterMusic_gender = +#line 9489 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9490 .doubleBattle = FALSE, +#line 9491 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SETUP_FIRST_TURN, - .party = TRAINER_PARTY(sParty_BrendanRoute103Treecko), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 9493 + .species = SPECIES_TORCHIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9495 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9494 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9497 [TRAINER_BRENDAN_ROUTE_110_TREECKO] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_BRENDAN, +#line 9498 .trainerName = _("BRENDAN"), - .items = {}, +#line 9499 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 9500 + .trainerPic = TRAINER_PIC_BRENDAN, + .encounterMusic_gender = +#line 9502 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9503 .doubleBattle = FALSE, +#line 9504 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_BrendanRoute110Treecko), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 9506 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9508 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 9507 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9510 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9512 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 9511 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9514 + .species = SPECIES_COMBUSKEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9516 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9515 + .lvl = 20, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9518 [TRAINER_BRENDAN_ROUTE_119_TREECKO] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_BRENDAN, +#line 9519 .trainerName = _("BRENDAN"), - .items = {}, +#line 9520 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 9521 + .trainerPic = TRAINER_PIC_BRENDAN, + .encounterMusic_gender = +#line 9523 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9524 .doubleBattle = FALSE, +#line 9525 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_BrendanRoute119Treecko), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 9527 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9529 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9528 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9531 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9533 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9532 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9535 + .species = SPECIES_COMBUSKEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9537 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 9536 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9539 [TRAINER_BRENDAN_ROUTE_103_TORCHIC] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_BRENDAN, +#line 9540 .trainerName = _("BRENDAN"), - .items = {}, +#line 9541 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 9542 + .trainerPic = TRAINER_PIC_BRENDAN, + .encounterMusic_gender = +#line 9544 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9545 .doubleBattle = FALSE, +#line 9546 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_BrendanRoute103Torchic), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 9548 + .species = SPECIES_MUDKIP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9550 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9549 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9552 [TRAINER_BRENDAN_ROUTE_110_TORCHIC] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_BRENDAN, +#line 9553 .trainerName = _("BRENDAN"), - .items = {}, +#line 9554 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 9555 + .trainerPic = TRAINER_PIC_BRENDAN, + .encounterMusic_gender = +#line 9557 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9558 .doubleBattle = FALSE, +#line 9559 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_BrendanRoute110Torchic), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 9561 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9563 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 9562 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9565 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9567 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 9566 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9569 + .species = SPECIES_MARSHTOMP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9571 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9570 + .lvl = 20, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9573 [TRAINER_BRENDAN_ROUTE_119_TORCHIC] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_BRENDAN, +#line 9574 .trainerName = _("BRENDAN"), - .items = {}, +#line 9575 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 9576 + .trainerPic = TRAINER_PIC_BRENDAN, + .encounterMusic_gender = +#line 9578 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9579 .doubleBattle = FALSE, +#line 9580 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_BrendanRoute119Torchic), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 9582 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9584 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9583 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9586 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9588 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9587 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9590 + .species = SPECIES_MARSHTOMP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9592 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 9591 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9594 [TRAINER_MAY_ROUTE_103_MUDKIP] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_MAY, +#line 9595 .trainerName = _("MAY"), - .items = {}, +#line 9596 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 9597 + .trainerPic = TRAINER_PIC_MAY, + .encounterMusic_gender = +#line 9598 +F_TRAINER_FEMALE | +#line 9599 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 9600 .doubleBattle = FALSE, +#line 9601 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_MayRoute103Mudkip), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 9603 + .species = SPECIES_TREECKO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9605 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9604 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9607 [TRAINER_MAY_ROUTE_110_MUDKIP] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_MAY, +#line 9608 .trainerName = _("MAY"), - .items = {}, +#line 9609 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 9610 + .trainerPic = TRAINER_PIC_MAY, + .encounterMusic_gender = +#line 9611 +F_TRAINER_FEMALE | +#line 9612 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 9613 .doubleBattle = FALSE, +#line 9614 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_MayRoute110Mudkip), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 9616 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9618 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 9617 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9620 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9622 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 9621 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9624 + .species = SPECIES_GROVYLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9626 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9625 + .lvl = 20, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9628 [TRAINER_MAY_ROUTE_119_MUDKIP] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_MAY, +#line 9629 .trainerName = _("MAY"), - .items = {}, +#line 9630 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 9631 + .trainerPic = TRAINER_PIC_MAY, + .encounterMusic_gender = +#line 9632 +F_TRAINER_FEMALE | +#line 9633 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 9634 .doubleBattle = FALSE, +#line 9635 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_MayRoute119Mudkip), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 9637 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9639 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9638 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9641 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9643 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9642 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9645 + .species = SPECIES_GROVYLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9647 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 9646 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9649 [TRAINER_MAY_ROUTE_103_TREECKO] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_MAY, +#line 9650 .trainerName = _("MAY"), - .items = {}, +#line 9651 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 9652 + .trainerPic = TRAINER_PIC_MAY, + .encounterMusic_gender = +#line 9653 +F_TRAINER_FEMALE | +#line 9654 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 9655 .doubleBattle = FALSE, +#line 9656 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_MayRoute103Treecko), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 9658 + .species = SPECIES_TORCHIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9660 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9659 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9662 [TRAINER_MAY_ROUTE_110_TREECKO] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_MAY, +#line 9663 .trainerName = _("MAY"), - .items = {}, +#line 9664 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 9665 + .trainerPic = TRAINER_PIC_MAY, + .encounterMusic_gender = +#line 9666 +F_TRAINER_FEMALE | +#line 9667 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 9668 .doubleBattle = FALSE, +#line 9669 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_MayRoute110Treecko), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 9671 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9673 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 9672 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9675 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9677 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 9676 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9679 + .species = SPECIES_COMBUSKEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9681 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9680 + .lvl = 20, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9683 [TRAINER_MAY_ROUTE_119_TREECKO] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_MAY, +#line 9684 .trainerName = _("MAY"), - .items = {}, +#line 9685 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 9686 + .trainerPic = TRAINER_PIC_MAY, + .encounterMusic_gender = +#line 9687 +F_TRAINER_FEMALE | +#line 9688 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 9689 .doubleBattle = FALSE, +#line 9690 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_MayRoute119Treecko), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 9692 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9694 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9693 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9696 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9698 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9697 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9700 + .species = SPECIES_COMBUSKEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9702 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 9701 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9704 [TRAINER_MAY_ROUTE_103_TORCHIC] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_MAY, +#line 9705 .trainerName = _("MAY"), - .items = {}, +#line 9706 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 9707 + .trainerPic = TRAINER_PIC_MAY, + .encounterMusic_gender = +#line 9708 +F_TRAINER_FEMALE | +#line 9709 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 9710 .doubleBattle = FALSE, +#line 9711 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_MayRoute103Torchic), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 9713 + .species = SPECIES_MUDKIP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9715 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9714 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9717 [TRAINER_MAY_ROUTE_110_TORCHIC] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_MAY, +#line 9718 .trainerName = _("MAY"), - .items = {}, +#line 9719 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 9720 + .trainerPic = TRAINER_PIC_MAY, + .encounterMusic_gender = +#line 9721 +F_TRAINER_FEMALE | +#line 9722 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 9723 .doubleBattle = FALSE, +#line 9724 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_MayRoute110Torchic), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 9726 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9728 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 9727 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9730 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9732 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 9731 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9734 + .species = SPECIES_MARSHTOMP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9736 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9735 + .lvl = 20, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9738 [TRAINER_MAY_ROUTE_119_TORCHIC] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_MAY, +#line 9739 .trainerName = _("MAY"), - .items = {}, +#line 9740 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 9741 + .trainerPic = TRAINER_PIC_MAY, + .encounterMusic_gender = +#line 9742 +F_TRAINER_FEMALE | +#line 9743 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 9744 .doubleBattle = FALSE, +#line 9745 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_MayRoute119Torchic), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 9747 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9749 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9748 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9751 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9753 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9752 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9755 + .species = SPECIES_MARSHTOMP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9757 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 9756 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9759 [TRAINER_ISAAC_1] = { - .trainerClass = TRAINER_CLASS_PKMN_BREEDER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M, +#line 9760 .trainerName = _("ISAAC"), - .items = {}, +#line 9761 + .trainerClass = TRAINER_CLASS_PKMN_BREEDER, +#line 9762 + .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M, + .encounterMusic_gender = +#line 9764 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9765 .doubleBattle = FALSE, +#line 9766 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Isaac1), + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 9768 + .species = SPECIES_WHISMUR, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9770 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9769 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9772 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9774 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9773 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9776 + .species = SPECIES_ARON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9778 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9777 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9780 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9782 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9781 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9784 + .species = SPECIES_TAILLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9786 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9785 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9788 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9790 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9789 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9792 [TRAINER_DAVIS] = { - .trainerClass = TRAINER_CLASS_BUG_CATCHER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_BUG_CATCHER, +#line 9793 .trainerName = _("DAVIS"), - .items = {}, +#line 9794 + .trainerClass = TRAINER_CLASS_BUG_CATCHER, +#line 9795 + .trainerPic = TRAINER_PIC_BUG_CATCHER, + .encounterMusic_gender = +#line 9797 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9798 .doubleBattle = FALSE, +#line 9799 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Davis), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 9801 + .species = SPECIES_PINSIR, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9803 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9802 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9805 [TRAINER_MITCHELL] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_M, +#line 9806 .trainerName = _("MITCHELL"), - .items = {}, +#line 9807 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 9808 + .trainerPic = TRAINER_PIC_COOLTRAINER_M, + .encounterMusic_gender = +#line 9810 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 9811 .doubleBattle = FALSE, +#line 9812 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Mitchell), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 9814 + .species = SPECIES_LUNATONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9816 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9815 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 9817 + MOVE_EXPLOSION, + MOVE_REFLECT, + MOVE_LIGHT_SCREEN, + MOVE_PSYCHIC, + }, + }, + { +#line 9822 + .species = SPECIES_SOLROCK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9824 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9823 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 9825 + MOVE_EXPLOSION, + MOVE_REFLECT, + MOVE_LIGHT_SCREEN, + MOVE_SHADOW_BALL, + }, + }, + }, }, - +#line 9830 [TRAINER_ISAAC_2] = { - .trainerClass = TRAINER_CLASS_PKMN_BREEDER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M, +#line 9831 .trainerName = _("ISAAC"), - .items = {}, +#line 9832 + .trainerClass = TRAINER_CLASS_PKMN_BREEDER, +#line 9833 + .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M, + .encounterMusic_gender = +#line 9835 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9836 .doubleBattle = FALSE, +#line 9837 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Isaac2), + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 9839 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9841 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 9840 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9843 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9845 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 9844 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9847 + .species = SPECIES_ARON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9849 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 9848 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9851 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9853 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 9852 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9855 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9857 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 9856 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9859 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9861 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 9860 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9863 [TRAINER_ISAAC_3] = { - .trainerClass = TRAINER_CLASS_PKMN_BREEDER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M, +#line 9864 .trainerName = _("ISAAC"), - .items = {}, +#line 9865 + .trainerClass = TRAINER_CLASS_PKMN_BREEDER, +#line 9866 + .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M, + .encounterMusic_gender = +#line 9868 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9869 .doubleBattle = FALSE, +#line 9870 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Isaac3), + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 9872 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9874 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 9873 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9876 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9878 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 9877 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9880 + .species = SPECIES_ARON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9882 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 9881 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9884 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9886 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 9885 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9888 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9890 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 9889 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9892 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9894 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 9893 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9896 [TRAINER_ISAAC_4] = { - .trainerClass = TRAINER_CLASS_PKMN_BREEDER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M, +#line 9897 .trainerName = _("ISAAC"), - .items = {}, +#line 9898 + .trainerClass = TRAINER_CLASS_PKMN_BREEDER, +#line 9899 + .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M, + .encounterMusic_gender = +#line 9901 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9902 .doubleBattle = FALSE, +#line 9903 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Isaac4), + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 9905 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9907 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 9906 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9909 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9911 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 9910 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9913 + .species = SPECIES_ARON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9915 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 9914 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9917 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9919 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 9918 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9921 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9923 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 9922 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9925 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9927 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 9926 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9929 [TRAINER_ISAAC_5] = { - .trainerClass = TRAINER_CLASS_PKMN_BREEDER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M, +#line 9930 .trainerName = _("ISAAC"), - .items = {}, +#line 9931 + .trainerClass = TRAINER_CLASS_PKMN_BREEDER, +#line 9932 + .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M, + .encounterMusic_gender = +#line 9934 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9935 .doubleBattle = FALSE, +#line 9936 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Isaac5), + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 9938 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9940 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 9939 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9942 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9944 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 9943 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9946 + .species = SPECIES_LAIRON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9948 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 9947 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9950 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9952 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 9951 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9954 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9956 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 9955 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9958 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9960 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 9959 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9962 [TRAINER_LYDIA_1] = { - .trainerClass = TRAINER_CLASS_PKMN_BREEDER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, +#line 9963 .trainerName = _("LYDIA"), - .items = {}, +#line 9964 + .trainerClass = TRAINER_CLASS_PKMN_BREEDER, +#line 9965 + .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, + .encounterMusic_gender = +#line 9966 +F_TRAINER_FEMALE | +#line 9967 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 9968 .doubleBattle = FALSE, +#line 9969 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Lydia1), + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 9971 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9973 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9972 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9975 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9977 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9976 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9979 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9981 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9980 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9983 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9985 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9984 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9987 + .species = SPECIES_SKITTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9989 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9988 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9991 + .species = SPECIES_GOLDEEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9993 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9992 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 9995 [TRAINER_HALLE] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_F, +#line 9996 .trainerName = _("HALLE"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 9997 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 9998 + .trainerPic = TRAINER_PIC_COOLTRAINER_F, + .encounterMusic_gender = +#line 9999 +F_TRAINER_FEMALE | +#line 10000 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10001 + .items = { ITEM_FULL_RESTORE }, +#line 10002 .doubleBattle = FALSE, +#line 10003 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Halle), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10005 + .species = SPECIES_SABLEYE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10007 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10006 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10009 + .species = SPECIES_ABSOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10011 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10010 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10013 [TRAINER_GARRISON] = { - .trainerClass = TRAINER_CLASS_RUIN_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_RUIN_MANIAC, +#line 10014 .trainerName = _("GARRISON"), - .items = {}, +#line 10015 + .trainerClass = TRAINER_CLASS_RUIN_MANIAC, +#line 10016 + .trainerPic = TRAINER_PIC_RUIN_MANIAC, + .encounterMusic_gender = +#line 10018 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 10019 .doubleBattle = FALSE, +#line 10020 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Garrison), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10022 + .species = SPECIES_SANDSLASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10024 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10023 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10026 [TRAINER_LYDIA_2] = { - .trainerClass = TRAINER_CLASS_PKMN_BREEDER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, +#line 10027 .trainerName = _("LYDIA"), - .items = {}, +#line 10028 + .trainerClass = TRAINER_CLASS_PKMN_BREEDER, +#line 10029 + .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, + .encounterMusic_gender = +#line 10030 +F_TRAINER_FEMALE | +#line 10031 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 10032 .doubleBattle = FALSE, +#line 10033 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Lydia2), + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 10035 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10037 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 10036 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10039 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10041 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 10040 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10043 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10045 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 10044 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10047 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10049 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 10048 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10051 + .species = SPECIES_SKITTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10053 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 10052 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10055 + .species = SPECIES_GOLDEEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10057 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 10056 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10059 [TRAINER_LYDIA_3] = { - .trainerClass = TRAINER_CLASS_PKMN_BREEDER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, +#line 10060 .trainerName = _("LYDIA"), - .items = {}, +#line 10061 + .trainerClass = TRAINER_CLASS_PKMN_BREEDER, +#line 10062 + .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, + .encounterMusic_gender = +#line 10063 +F_TRAINER_FEMALE | +#line 10064 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 10065 .doubleBattle = FALSE, +#line 10066 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Lydia3), + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 10068 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10070 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 10069 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10072 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10074 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 10073 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10076 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10078 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 10077 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10080 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10082 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 10081 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10084 + .species = SPECIES_DELCATTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10086 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 10085 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10088 + .species = SPECIES_GOLDEEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10090 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 10089 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10092 [TRAINER_LYDIA_4] = { - .trainerClass = TRAINER_CLASS_PKMN_BREEDER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, +#line 10093 .trainerName = _("LYDIA"), - .items = {}, +#line 10094 + .trainerClass = TRAINER_CLASS_PKMN_BREEDER, +#line 10095 + .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, + .encounterMusic_gender = +#line 10096 +F_TRAINER_FEMALE | +#line 10097 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 10098 .doubleBattle = FALSE, +#line 10099 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Lydia4), + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 10101 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10103 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 10102 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10105 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10107 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 10106 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10109 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10111 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 10110 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10113 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10115 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 10114 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10117 + .species = SPECIES_DELCATTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10119 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 10118 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10121 + .species = SPECIES_GOLDEEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10123 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 10122 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10125 [TRAINER_LYDIA_5] = { - .trainerClass = TRAINER_CLASS_PKMN_BREEDER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, +#line 10126 .trainerName = _("LYDIA"), - .items = {}, +#line 10127 + .trainerClass = TRAINER_CLASS_PKMN_BREEDER, +#line 10128 + .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, + .encounterMusic_gender = +#line 10129 +F_TRAINER_FEMALE | +#line 10130 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 10131 .doubleBattle = FALSE, +#line 10132 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Lydia5), + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 10134 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10136 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 10135 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10138 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10140 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 10139 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10142 + .species = SPECIES_AZUMARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10144 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 10143 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10146 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10148 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 10147 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10150 + .species = SPECIES_DELCATTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10152 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 10151 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10154 + .species = SPECIES_SEAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10156 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 10155 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10158 [TRAINER_JACKSON_1] = { - .trainerClass = TRAINER_CLASS_PKMN_RANGER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_POKEMON_RANGER_M, +#line 10159 .trainerName = _("JACKSON"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 10160 + .trainerClass = TRAINER_CLASS_PKMN_RANGER, +#line 10161 + .trainerPic = TRAINER_PIC_POKEMON_RANGER_M, + .encounterMusic_gender = +#line 10163 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10164 + .items = { ITEM_FULL_RESTORE }, +#line 10165 .doubleBattle = FALSE, +#line 10166 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Jackson1), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10168 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10170 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10169 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10172 [TRAINER_LORENZO] = { - .trainerClass = TRAINER_CLASS_PKMN_RANGER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_POKEMON_RANGER_M, +#line 10173 .trainerName = _("LORENZO"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 10174 + .trainerClass = TRAINER_CLASS_PKMN_RANGER, +#line 10175 + .trainerPic = TRAINER_PIC_POKEMON_RANGER_M, + .encounterMusic_gender = +#line 10177 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10178 + .items = { ITEM_FULL_RESTORE }, +#line 10179 .doubleBattle = FALSE, +#line 10180 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Lorenzo), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 10182 + .species = SPECIES_SEEDOT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10184 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10183 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10186 + .species = SPECIES_NUZLEAF, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10188 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10187 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10190 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10192 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10191 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10194 [TRAINER_SEBASTIAN] = { - .trainerClass = TRAINER_CLASS_PKMN_RANGER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_POKEMON_RANGER_M, +#line 10195 .trainerName = _("SEBASTIAN"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 10196 + .trainerClass = TRAINER_CLASS_PKMN_RANGER, +#line 10197 + .trainerPic = TRAINER_PIC_POKEMON_RANGER_M, + .encounterMusic_gender = +#line 10199 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10200 + .items = { ITEM_FULL_RESTORE }, +#line 10201 .doubleBattle = FALSE, +#line 10202 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Sebastian), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10204 + .species = SPECIES_CACTURNE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10206 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10205 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10208 [TRAINER_JACKSON_2] = { - .trainerClass = TRAINER_CLASS_PKMN_RANGER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_POKEMON_RANGER_M, +#line 10209 .trainerName = _("JACKSON"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 10210 + .trainerClass = TRAINER_CLASS_PKMN_RANGER, +#line 10211 + .trainerPic = TRAINER_PIC_POKEMON_RANGER_M, + .encounterMusic_gender = +#line 10213 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10214 + .items = { ITEM_FULL_RESTORE }, +#line 10215 .doubleBattle = FALSE, +#line 10216 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SETUP_FIRST_TURN, - .party = TRAINER_PARTY(sParty_Jackson2), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10218 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10220 + .iv = TRAINER_PARTY_IVS(7, 7, 7, 7, 7, 7), +#line 10219 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10222 [TRAINER_JACKSON_3] = { - .trainerClass = TRAINER_CLASS_PKMN_RANGER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_POKEMON_RANGER_M, +#line 10223 .trainerName = _("JACKSON"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 10224 + .trainerClass = TRAINER_CLASS_PKMN_RANGER, +#line 10225 + .trainerPic = TRAINER_PIC_POKEMON_RANGER_M, + .encounterMusic_gender = +#line 10227 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10228 + .items = { ITEM_FULL_RESTORE }, +#line 10229 .doubleBattle = FALSE, +#line 10230 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Jackson3), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10232 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10234 + .iv = TRAINER_PARTY_IVS(8, 8, 8, 8, 8, 8), +#line 10233 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10236 [TRAINER_JACKSON_4] = { - .trainerClass = TRAINER_CLASS_PKMN_RANGER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_POKEMON_RANGER_M, +#line 10237 .trainerName = _("JACKSON"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 10238 + .trainerClass = TRAINER_CLASS_PKMN_RANGER, +#line 10239 + .trainerPic = TRAINER_PIC_POKEMON_RANGER_M, + .encounterMusic_gender = +#line 10241 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10242 + .items = { ITEM_FULL_RESTORE }, +#line 10243 .doubleBattle = FALSE, +#line 10244 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SETUP_FIRST_TURN, - .party = TRAINER_PARTY(sParty_Jackson4), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10246 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10248 + .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), +#line 10247 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10250 [TRAINER_JACKSON_5] = { - .trainerClass = TRAINER_CLASS_PKMN_RANGER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_POKEMON_RANGER_M, +#line 10251 .trainerName = _("JACKSON"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 10252 + .trainerClass = TRAINER_CLASS_PKMN_RANGER, +#line 10253 + .trainerPic = TRAINER_PIC_POKEMON_RANGER_M, + .encounterMusic_gender = +#line 10255 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10256 + .items = { ITEM_FULL_RESTORE }, +#line 10257 .doubleBattle = FALSE, +#line 10258 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Jackson5), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10260 + .species = SPECIES_KECLEON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10262 + .iv = TRAINER_PARTY_IVS(10, 10, 10, 10, 10, 10), +#line 10261 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10264 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10266 + .iv = TRAINER_PARTY_IVS(10, 10, 10, 10, 10, 10), +#line 10265 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10268 [TRAINER_CATHERINE_1] = { - .trainerClass = TRAINER_CLASS_PKMN_RANGER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_POKEMON_RANGER_F, +#line 10269 .trainerName = _("CATHERINE"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 10270 + .trainerClass = TRAINER_CLASS_PKMN_RANGER, +#line 10271 + .trainerPic = TRAINER_PIC_POKEMON_RANGER_F, + .encounterMusic_gender = +#line 10272 +F_TRAINER_FEMALE | +#line 10273 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10274 + .items = { ITEM_FULL_RESTORE }, +#line 10275 .doubleBattle = FALSE, +#line 10276 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SETUP_FIRST_TURN, - .party = TRAINER_PARTY(sParty_Catherine1), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10278 + .species = SPECIES_GLOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10280 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10279 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10282 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10284 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10283 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10286 [TRAINER_JENNA] = { - .trainerClass = TRAINER_CLASS_PKMN_RANGER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_POKEMON_RANGER_F, +#line 10287 .trainerName = _("JENNA"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 10288 + .trainerClass = TRAINER_CLASS_PKMN_RANGER, +#line 10289 + .trainerPic = TRAINER_PIC_POKEMON_RANGER_F, + .encounterMusic_gender = +#line 10290 +F_TRAINER_FEMALE | +#line 10291 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10292 + .items = { ITEM_FULL_RESTORE }, +#line 10293 .doubleBattle = FALSE, +#line 10294 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SETUP_FIRST_TURN, - .party = TRAINER_PARTY(sParty_Jenna), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 10296 + .species = SPECIES_LOTAD, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10298 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10297 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10300 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10302 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10301 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10304 + .species = SPECIES_NUZLEAF, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10306 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10305 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10308 [TRAINER_SOPHIA] = { - .trainerClass = TRAINER_CLASS_PKMN_RANGER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_POKEMON_RANGER_F, +#line 10309 .trainerName = _("SOPHIA"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 10310 + .trainerClass = TRAINER_CLASS_PKMN_RANGER, +#line 10311 + .trainerPic = TRAINER_PIC_POKEMON_RANGER_F, + .encounterMusic_gender = +#line 10312 +F_TRAINER_FEMALE | +#line 10313 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10314 + .items = { ITEM_FULL_RESTORE }, +#line 10315 .doubleBattle = FALSE, +#line 10316 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Sophia), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10318 + .species = SPECIES_SWABLU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10320 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10319 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10322 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10324 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10323 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10326 [TRAINER_CATHERINE_2] = { - .trainerClass = TRAINER_CLASS_PKMN_RANGER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_POKEMON_RANGER_F, +#line 10327 .trainerName = _("CATHERINE"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 10328 + .trainerClass = TRAINER_CLASS_PKMN_RANGER, +#line 10329 + .trainerPic = TRAINER_PIC_POKEMON_RANGER_F, + .encounterMusic_gender = +#line 10330 +F_TRAINER_FEMALE | +#line 10331 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10332 + .items = { ITEM_FULL_RESTORE }, +#line 10333 .doubleBattle = FALSE, +#line 10334 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SETUP_FIRST_TURN, - .party = TRAINER_PARTY(sParty_Catherine2), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10336 + .species = SPECIES_GLOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10338 + .iv = TRAINER_PARTY_IVS(7, 7, 7, 7, 7, 7), +#line 10337 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10340 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10342 + .iv = TRAINER_PARTY_IVS(7, 7, 7, 7, 7, 7), +#line 10341 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10344 [TRAINER_CATHERINE_3] = { - .trainerClass = TRAINER_CLASS_PKMN_RANGER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_POKEMON_RANGER_F, +#line 10345 .trainerName = _("CATHERINE"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 10346 + .trainerClass = TRAINER_CLASS_PKMN_RANGER, +#line 10347 + .trainerPic = TRAINER_PIC_POKEMON_RANGER_F, + .encounterMusic_gender = +#line 10348 +F_TRAINER_FEMALE | +#line 10349 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10350 + .items = { ITEM_FULL_RESTORE }, +#line 10351 .doubleBattle = FALSE, +#line 10352 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Catherine3), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10354 + .species = SPECIES_GLOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10356 + .iv = TRAINER_PARTY_IVS(8, 8, 8, 8, 8, 8), +#line 10355 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10358 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10360 + .iv = TRAINER_PARTY_IVS(8, 8, 8, 8, 8, 8), +#line 10359 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10362 [TRAINER_CATHERINE_4] = { - .trainerClass = TRAINER_CLASS_PKMN_RANGER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_POKEMON_RANGER_F, +#line 10363 .trainerName = _("CATHERINE"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 10364 + .trainerClass = TRAINER_CLASS_PKMN_RANGER, +#line 10365 + .trainerPic = TRAINER_PIC_POKEMON_RANGER_F, + .encounterMusic_gender = +#line 10366 +F_TRAINER_FEMALE | +#line 10367 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10368 + .items = { ITEM_FULL_RESTORE }, +#line 10369 .doubleBattle = FALSE, +#line 10370 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SETUP_FIRST_TURN, - .party = TRAINER_PARTY(sParty_Catherine4), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10372 + .species = SPECIES_GLOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10374 + .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), +#line 10373 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10376 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10378 + .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), +#line 10377 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10380 [TRAINER_CATHERINE_5] = { - .trainerClass = TRAINER_CLASS_PKMN_RANGER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_POKEMON_RANGER_F, +#line 10381 .trainerName = _("CATHERINE"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 10382 + .trainerClass = TRAINER_CLASS_PKMN_RANGER, +#line 10383 + .trainerPic = TRAINER_PIC_POKEMON_RANGER_F, + .encounterMusic_gender = +#line 10384 +F_TRAINER_FEMALE | +#line 10385 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10386 + .items = { ITEM_FULL_RESTORE }, +#line 10387 .doubleBattle = FALSE, +#line 10388 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Catherine5), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10390 + .species = SPECIES_BELLOSSOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10392 + .iv = TRAINER_PARTY_IVS(10, 10, 10, 10, 10, 10), +#line 10391 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10394 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10396 + .iv = TRAINER_PARTY_IVS(10, 10, 10, 10, 10, 10), +#line 10395 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10398 [TRAINER_JULIO] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M, +#line 10399 .trainerName = _("JULIO"), - .items = {}, +#line 10400 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 10401 + .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M, + .encounterMusic_gender = +#line 10403 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 10404 .doubleBattle = FALSE, +#line 10405 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Julio), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10407 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10409 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10408 + .lvl = 21, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10411 [TRAINER_GRUNT_SEAFLOOR_CAVERN_5] = { - .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, - .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, +#line 10412 .trainerName = _("GRUNT"), - .items = {}, +#line 10413 + .trainerClass = TRAINER_CLASS_TEAM_AQUA, +#line 10414 + .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, + .encounterMusic_gender = +#line 10416 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 10417 .doubleBattle = FALSE, +#line 10418 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntSeafloorCavern5), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10420 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10422 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10421 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10424 + .species = SPECIES_GOLBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10426 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10425 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10428 [TRAINER_GRUNT_UNUSED] = { - .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA, - .trainerPic = TRAINER_PIC_AQUA_GRUNT_F, +#line 10429 .trainerName = _("GRUNT"), - .items = {}, +#line 10430 + .trainerClass = TRAINER_CLASS_TEAM_MAGMA, +#line 10431 + .trainerPic = TRAINER_PIC_AQUA_GRUNT_F, + .encounterMusic_gender = +#line 10432 +F_TRAINER_FEMALE | +#line 10433 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 10434 .doubleBattle = FALSE, +#line 10435 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntUnused), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10437 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10439 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10438 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10441 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10443 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10442 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10445 [TRAINER_GRUNT_MT_PYRE_4] = { - .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA, - .trainerPic = TRAINER_PIC_AQUA_GRUNT_F, +#line 10446 .trainerName = _("GRUNT"), - .items = {}, +#line 10447 + .trainerClass = TRAINER_CLASS_TEAM_AQUA, +#line 10448 + .trainerPic = TRAINER_PIC_AQUA_GRUNT_F, + .encounterMusic_gender = +#line 10449 +F_TRAINER_FEMALE | +#line 10450 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 10451 .doubleBattle = FALSE, +#line 10452 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMtPyre4), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10454 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10456 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10455 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10458 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10460 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10459 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10462 [TRAINER_GRUNT_JAGGED_PASS] = { - .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, - .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, +#line 10463 .trainerName = _("GRUNT"), - .items = {}, +#line 10464 + .trainerClass = TRAINER_CLASS_TEAM_MAGMA, +#line 10465 + .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, + .encounterMusic_gender = +#line 10467 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 10468 .doubleBattle = FALSE, +#line 10469 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntJaggedPass), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10471 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10473 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10472 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10475 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10477 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10476 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10479 [TRAINER_MARC] = { - .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_HIKER, +#line 10480 .trainerName = _("MARC"), - .items = {}, +#line 10481 + .trainerClass = TRAINER_CLASS_HIKER, +#line 10482 + .trainerPic = TRAINER_PIC_HIKER, + .encounterMusic_gender = +#line 10484 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 10485 .doubleBattle = FALSE, +#line 10486 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Marc), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10488 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10490 + .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), +#line 10489 + .lvl = 8, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10492 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10494 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 10493 + .lvl = 8, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10496 [TRAINER_BRENDEN] = { - .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_SAILOR, +#line 10497 .trainerName = _("BRENDEN"), - .items = {}, +#line 10498 + .trainerClass = TRAINER_CLASS_SAILOR, +#line 10499 + .trainerPic = TRAINER_PIC_SAILOR, + .encounterMusic_gender = +#line 10501 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 10502 .doubleBattle = FALSE, +#line 10503 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Brenden), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10505 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10507 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 10506 + .lvl = 13, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10509 [TRAINER_LILITH] = { - .trainerClass = TRAINER_CLASS_BATTLE_GIRL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_BATTLE_GIRL, +#line 10510 .trainerName = _("LILITH"), - .items = {}, +#line 10511 + .trainerClass = TRAINER_CLASS_BATTLE_GIRL, +#line 10512 + .trainerPic = TRAINER_PIC_BATTLE_GIRL, + .encounterMusic_gender = +#line 10513 +F_TRAINER_FEMALE | +#line 10514 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 10515 .doubleBattle = FALSE, +#line 10516 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Lilith), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10518 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10520 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 10519 + .lvl = 13, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10522 [TRAINER_CRISTIAN] = { - .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_BLACK_BELT, +#line 10523 .trainerName = _("CRISTIAN"), - .items = {}, +#line 10524 + .trainerClass = TRAINER_CLASS_BLACK_BELT, +#line 10525 + .trainerPic = TRAINER_PIC_BLACK_BELT, + .encounterMusic_gender = +#line 10527 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 10528 .doubleBattle = FALSE, +#line 10529 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cristian), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10531 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10533 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 10532 + .lvl = 13, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10535 [TRAINER_SYLVIA] = { - .trainerClass = TRAINER_CLASS_HEX_MANIAC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_HEX_MANIAC, +#line 10536 .trainerName = _("SYLVIA"), - .items = {}, +#line 10537 + .trainerClass = TRAINER_CLASS_HEX_MANIAC, +#line 10538 + .trainerPic = TRAINER_PIC_HEX_MANIAC, + .encounterMusic_gender = +#line 10539 +F_TRAINER_FEMALE | +#line 10540 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 10541 .doubleBattle = FALSE, +#line 10542 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Sylvia), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10544 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10546 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 10545 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10548 [TRAINER_LEONARDO] = { - .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_M, +#line 10549 .trainerName = _("LEONARDO"), - .items = {}, +#line 10550 + .trainerClass = TRAINER_CLASS_SWIMMER_M, +#line 10551 + .trainerPic = TRAINER_PIC_SWIMMER_M, + .encounterMusic_gender = +#line 10553 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 10554 .doubleBattle = FALSE, +#line 10555 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Leonardo), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10557 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10559 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10558 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10561 [TRAINER_ATHENA] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_F, +#line 10562 .trainerName = _("ATHENA"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 10563 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 10564 + .trainerPic = TRAINER_PIC_COOLTRAINER_F, + .encounterMusic_gender = +#line 10565 +F_TRAINER_FEMALE | +#line 10566 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10567 + .items = { ITEM_HYPER_POTION }, +#line 10568 .doubleBattle = FALSE, +#line 10569 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Athena), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10571 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10573 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 10572 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 10574 + MOVE_THUNDER, + MOVE_THUNDER_WAVE, + MOVE_QUICK_ATTACK, + }, + }, + { +#line 10578 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10580 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 10579 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 10581 + MOVE_SURF, + MOVE_THIEF, + }, + }, + }, }, - +#line 10584 [TRAINER_HARRISON] = { - .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_M, +#line 10585 .trainerName = _("HARRISON"), - .items = {}, +#line 10586 + .trainerClass = TRAINER_CLASS_SWIMMER_M, +#line 10587 + .trainerPic = TRAINER_PIC_SWIMMER_M, + .encounterMusic_gender = +#line 10589 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 10590 .doubleBattle = FALSE, +#line 10591 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Harrison), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10593 + .species = SPECIES_TENTACRUEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10595 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10594 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10597 [TRAINER_GRUNT_MT_CHIMNEY_2] = { - .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, - .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, +#line 10598 .trainerName = _("GRUNT"), - .items = {}, +#line 10599 + .trainerClass = TRAINER_CLASS_TEAM_MAGMA, +#line 10600 + .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, + .encounterMusic_gender = +#line 10602 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 10603 .doubleBattle = FALSE, +#line 10604 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMtChimney2), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10606 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10608 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10607 + .lvl = 20, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10610 [TRAINER_CLARENCE] = { - .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_M, +#line 10611 .trainerName = _("CLARENCE"), - .items = {}, +#line 10612 + .trainerClass = TRAINER_CLASS_SWIMMER_M, +#line 10613 + .trainerPic = TRAINER_PIC_SWIMMER_M, + .encounterMusic_gender = +#line 10615 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 10616 .doubleBattle = FALSE, +#line 10617 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Clarence), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10619 + .species = SPECIES_SHARPEDO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10621 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10620 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10623 [TRAINER_TERRY] = { - .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_PSYCHIC_F, +#line 10624 .trainerName = _("TERRY"), - .items = {}, +#line 10625 + .trainerClass = TRAINER_CLASS_PSYCHIC, +#line 10626 + .trainerPic = TRAINER_PIC_PSYCHIC_F, + .encounterMusic_gender = +#line 10627 +F_TRAINER_FEMALE | +#line 10628 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 10629 .doubleBattle = FALSE, +#line 10630 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Terry), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10632 + .species = SPECIES_GIRAFARIG, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10634 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10633 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10636 [TRAINER_NATE] = { - .trainerClass = TRAINER_CLASS_GENTLEMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, - .trainerPic = TRAINER_PIC_GENTLEMAN, +#line 10637 .trainerName = _("NATE"), - .items = {}, +#line 10638 + .trainerClass = TRAINER_CLASS_GENTLEMAN, +#line 10639 + .trainerPic = TRAINER_PIC_GENTLEMAN, + .encounterMusic_gender = +#line 10641 + TRAINER_ENCOUNTER_MUSIC_RICH, +#line 10642 .doubleBattle = FALSE, +#line 10643 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Nate), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10645 + .species = SPECIES_SPOINK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10647 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 10646 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10649 [TRAINER_KATHLEEN] = { - .trainerClass = TRAINER_CLASS_HEX_MANIAC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_HEX_MANIAC, +#line 10650 .trainerName = _("KATHLEEN"), - .items = {}, +#line 10651 + .trainerClass = TRAINER_CLASS_HEX_MANIAC, +#line 10652 + .trainerPic = TRAINER_PIC_HEX_MANIAC, + .encounterMusic_gender = +#line 10653 +F_TRAINER_FEMALE | +#line 10654 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 10655 .doubleBattle = FALSE, +#line 10656 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Kathleen), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10658 + .species = SPECIES_KADABRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10660 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 10659 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10662 [TRAINER_CLIFFORD] = { - .trainerClass = TRAINER_CLASS_GENTLEMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, - .trainerPic = TRAINER_PIC_GENTLEMAN, +#line 10663 .trainerName = _("CLIFFORD"), - .items = {}, +#line 10664 + .trainerClass = TRAINER_CLASS_GENTLEMAN, +#line 10665 + .trainerPic = TRAINER_PIC_GENTLEMAN, + .encounterMusic_gender = +#line 10667 + TRAINER_ENCOUNTER_MUSIC_RICH, +#line 10668 .doubleBattle = FALSE, +#line 10669 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Clifford), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10671 + .species = SPECIES_GIRAFARIG, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10673 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10672 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10675 [TRAINER_NICHOLAS] = { - .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_PSYCHIC_M, +#line 10676 .trainerName = _("NICHOLAS"), - .items = {}, +#line 10677 + .trainerClass = TRAINER_CLASS_PSYCHIC, +#line 10678 + .trainerPic = TRAINER_PIC_PSYCHIC_M, + .encounterMusic_gender = +#line 10680 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 10681 .doubleBattle = FALSE, +#line 10682 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Nicholas), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10684 + .species = SPECIES_WOBBUFFET, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10686 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10685 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10688 [TRAINER_GRUNT_SPACE_CENTER_3] = { - .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MAGMA, - .trainerPic = TRAINER_PIC_MAGMA_GRUNT_F, +#line 10689 .trainerName = _("GRUNT"), - .items = {}, +#line 10690 + .trainerClass = TRAINER_CLASS_TEAM_MAGMA, +#line 10691 + .trainerPic = TRAINER_PIC_MAGMA_GRUNT_F, + .encounterMusic_gender = +#line 10692 +F_TRAINER_FEMALE | +#line 10693 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 10694 .doubleBattle = FALSE, +#line 10695 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntSpaceCenter3), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10697 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10699 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10698 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10701 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10703 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10702 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10705 [TRAINER_GRUNT_SPACE_CENTER_4] = { - .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, - .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, +#line 10706 .trainerName = _("GRUNT"), - .items = {}, +#line 10707 + .trainerClass = TRAINER_CLASS_TEAM_MAGMA, +#line 10708 + .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, + .encounterMusic_gender = +#line 10710 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 10711 .doubleBattle = FALSE, +#line 10712 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntSpaceCenter4), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10714 + .species = SPECIES_BALTOY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10716 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10715 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10718 [TRAINER_GRUNT_SPACE_CENTER_5] = { - .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, - .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, +#line 10719 .trainerName = _("GRUNT"), - .items = {}, +#line 10720 + .trainerClass = TRAINER_CLASS_TEAM_MAGMA, +#line 10721 + .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, + .encounterMusic_gender = +#line 10723 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 10724 .doubleBattle = FALSE, +#line 10725 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntSpaceCenter5), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10727 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10729 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10728 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10731 [TRAINER_GRUNT_SPACE_CENTER_6] = { - .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, - .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, +#line 10732 .trainerName = _("GRUNT"), - .items = {}, +#line 10733 + .trainerClass = TRAINER_CLASS_TEAM_MAGMA, +#line 10734 + .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, + .encounterMusic_gender = +#line 10736 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 10737 .doubleBattle = FALSE, +#line 10738 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntSpaceCenter6), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10740 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10742 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10741 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10744 [TRAINER_GRUNT_SPACE_CENTER_7] = { - .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, - .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, +#line 10745 .trainerName = _("GRUNT"), - .items = {}, +#line 10746 + .trainerClass = TRAINER_CLASS_TEAM_MAGMA, +#line 10747 + .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, + .encounterMusic_gender = +#line 10749 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 10750 .doubleBattle = FALSE, +#line 10751 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntSpaceCenter7), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10753 + .species = SPECIES_BALTOY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10755 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10754 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10757 [TRAINER_MACEY] = { - .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_PSYCHIC_F, +#line 10758 .trainerName = _("MACEY"), - .items = {}, +#line 10759 + .trainerClass = TRAINER_CLASS_PSYCHIC, +#line 10760 + .trainerPic = TRAINER_PIC_PSYCHIC_F, + .encounterMusic_gender = +#line 10761 +F_TRAINER_FEMALE | +#line 10762 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 10763 .doubleBattle = FALSE, +#line 10764 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Macey), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10766 + .species = SPECIES_NATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10768 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10767 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10770 [TRAINER_BRENDAN_RUSTBORO_TREECKO] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_BRENDAN, +#line 10771 .trainerName = _("BRENDAN"), - .items = {}, +#line 10772 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 10773 + .trainerPic = TRAINER_PIC_BRENDAN, + .encounterMusic_gender = +#line 10775 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 10776 .doubleBattle = FALSE, +#line 10777 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_BrendanRustboroTreecko), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10779 + .species = SPECIES_LOTAD, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10781 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 10780 + .lvl = 13, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10783 + .species = SPECIES_TORCHIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10785 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10784 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10787 [TRAINER_BRENDAN_RUSTBORO_MUDKIP] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_BRENDAN, +#line 10788 .trainerName = _("BRENDAN"), - .items = {}, +#line 10789 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 10790 + .trainerPic = TRAINER_PIC_BRENDAN, + .encounterMusic_gender = +#line 10792 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 10793 .doubleBattle = FALSE, +#line 10794 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_BrendanRustboroMudkip), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10796 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10798 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 10797 + .lvl = 13, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10800 + .species = SPECIES_TREECKO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10802 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10801 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10804 [TRAINER_PAXTON] = { - .trainerClass = TRAINER_CLASS_EXPERT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_EXPERT_M, +#line 10805 .trainerName = _("PAXTON"), - .items = {}, +#line 10806 + .trainerClass = TRAINER_CLASS_EXPERT, +#line 10807 + .trainerPic = TRAINER_PIC_EXPERT_M, + .encounterMusic_gender = +#line 10809 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 10810 .doubleBattle = FALSE, +#line 10811 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Paxton), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10813 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10815 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10814 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10817 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10819 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10818 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10821 [TRAINER_ISABELLA] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, +#line 10822 .trainerName = _("ISABELLA"), - .items = {}, +#line 10823 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 10824 + .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, + .encounterMusic_gender = +#line 10825 +F_TRAINER_FEMALE | +#line 10826 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 10827 .doubleBattle = FALSE, +#line 10828 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Isabella), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10830 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10832 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10831 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10834 [TRAINER_GRUNT_WEATHER_INST_5] = { - .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA, - .trainerPic = TRAINER_PIC_AQUA_GRUNT_F, +#line 10835 .trainerName = _("GRUNT"), - .items = {}, +#line 10836 + .trainerClass = TRAINER_CLASS_TEAM_AQUA, +#line 10837 + .trainerPic = TRAINER_PIC_AQUA_GRUNT_F, + .encounterMusic_gender = +#line 10838 +F_TRAINER_FEMALE | +#line 10839 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 10840 .doubleBattle = FALSE, +#line 10841 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntWeatherInst5), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10843 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10845 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10844 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10847 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10849 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10848 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10851 [TRAINER_TABITHA_MT_CHIMNEY] = { - .trainerClass = TRAINER_CLASS_MAGMA_ADMIN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, - .trainerPic = TRAINER_PIC_MAGMA_ADMIN, +#line 10852 .trainerName = _("TABITHA"), - .items = {}, +#line 10853 + .trainerClass = TRAINER_CLASS_MAGMA_ADMIN, +#line 10854 + .trainerPic = TRAINER_PIC_MAGMA_ADMIN, + .encounterMusic_gender = +#line 10856 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 10857 .doubleBattle = FALSE, +#line 10858 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_TabithaMtChimney), + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 10860 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10862 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10861 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10864 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10866 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10865 + .lvl = 20, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10868 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10870 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10869 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10872 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10874 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10873 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10876 [TRAINER_JONATHAN] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_M, +#line 10877 .trainerName = _("JONATHAN"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 10878 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 10879 + .trainerPic = TRAINER_PIC_COOLTRAINER_M, + .encounterMusic_gender = +#line 10881 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10882 + .items = { ITEM_HYPER_POTION }, +#line 10883 .doubleBattle = FALSE, +#line 10884 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SETUP_FIRST_TURN, - .party = TRAINER_PARTY(sParty_Jonathan), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10886 + .species = SPECIES_KECLEON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10888 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10887 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10890 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10892 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10891 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10894 [TRAINER_BRENDAN_RUSTBORO_TORCHIC] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_BRENDAN, +#line 10895 .trainerName = _("BRENDAN"), - .items = {}, +#line 10896 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 10897 + .trainerPic = TRAINER_PIC_BRENDAN, + .encounterMusic_gender = +#line 10899 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 10900 .doubleBattle = FALSE, +#line 10901 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_BrendanRustboroTorchic), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10903 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10905 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 10904 + .lvl = 13, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10907 + .species = SPECIES_MUDKIP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10909 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10908 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10911 [TRAINER_MAY_RUSTBORO_MUDKIP] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_MAY, +#line 10912 .trainerName = _("MAY"), - .items = {}, +#line 10913 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 10914 + .trainerPic = TRAINER_PIC_MAY, + .encounterMusic_gender = +#line 10915 +F_TRAINER_FEMALE | +#line 10916 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 10917 .doubleBattle = FALSE, +#line 10918 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SETUP_FIRST_TURN, - .party = TRAINER_PARTY(sParty_MayRustboroMudkip), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10920 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10922 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 10921 + .lvl = 13, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10924 + .species = SPECIES_TREECKO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10926 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10925 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10928 [TRAINER_MAXIE_MAGMA_HIDEOUT] = { - .trainerClass = TRAINER_CLASS_MAGMA_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, - .trainerPic = TRAINER_PIC_MAGMA_LEADER_MAXIE, +#line 10929 .trainerName = _("MAXIE"), - .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE}, +#line 10930 + .trainerClass = TRAINER_CLASS_MAGMA_LEADER, +#line 10931 + .trainerPic = TRAINER_PIC_MAGMA_LEADER_MAXIE, + .encounterMusic_gender = +#line 10933 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 10934 + .items = { ITEM_SUPER_POTION, ITEM_SUPER_POTION }, +#line 10935 .doubleBattle = FALSE, +#line 10936 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_MaxieMagmaHideout), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 10938 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10940 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 10939 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10942 + .species = SPECIES_CROBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10944 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 10943 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10946 + .species = SPECIES_CAMERUPT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10948 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 10947 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10950 [TRAINER_MAXIE_MT_CHIMNEY] = { - .trainerClass = TRAINER_CLASS_MAGMA_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, - .trainerPic = TRAINER_PIC_MAGMA_LEADER_MAXIE, +#line 10951 .trainerName = _("MAXIE"), - .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE}, +#line 10952 + .trainerClass = TRAINER_CLASS_MAGMA_LEADER, +#line 10953 + .trainerPic = TRAINER_PIC_MAGMA_LEADER_MAXIE, + .encounterMusic_gender = +#line 10955 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 10956 + .items = { ITEM_SUPER_POTION, ITEM_SUPER_POTION }, +#line 10957 .doubleBattle = FALSE, +#line 10958 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_MaxieMtChimney), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 10960 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10962 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 10961 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10964 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10966 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 10965 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10968 + .species = SPECIES_CAMERUPT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10970 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 10969 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10972 [TRAINER_TIANA] = { - .trainerClass = TRAINER_CLASS_LASS, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LASS, +#line 10973 .trainerName = _("TIANA"), - .items = {}, +#line 10974 + .trainerClass = TRAINER_CLASS_LASS, +#line 10975 + .trainerPic = TRAINER_PIC_LASS, + .encounterMusic_gender = +#line 10976 +F_TRAINER_FEMALE | +#line 10977 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 10978 .doubleBattle = FALSE, +#line 10979 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Tiana), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10981 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10983 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10982 + .lvl = 4, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10985 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10987 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10986 + .lvl = 4, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 10989 [TRAINER_HALEY_1] = { - .trainerClass = TRAINER_CLASS_LASS, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LASS, +#line 10990 .trainerName = _("HALEY"), - .items = {}, +#line 10991 + .trainerClass = TRAINER_CLASS_LASS, +#line 10992 + .trainerPic = TRAINER_PIC_LASS, + .encounterMusic_gender = +#line 10993 +F_TRAINER_FEMALE | +#line 10994 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 10995 .doubleBattle = FALSE, +#line 10996 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Haley1), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10998 + .species = SPECIES_LOTAD, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11000 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10999 + .lvl = 6, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11002 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11004 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11003 + .lvl = 6, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11006 [TRAINER_JANICE] = { - .trainerClass = TRAINER_CLASS_LASS, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LASS, +#line 11007 .trainerName = _("JANICE"), - .items = {}, +#line 11008 + .trainerClass = TRAINER_CLASS_LASS, +#line 11009 + .trainerPic = TRAINER_PIC_LASS, + .encounterMusic_gender = +#line 11010 +F_TRAINER_FEMALE | +#line 11011 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 11012 .doubleBattle = FALSE, +#line 11013 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Janice), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 11015 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11017 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11016 + .lvl = 9, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11019 [TRAINER_VIVI] = { - .trainerClass = TRAINER_CLASS_WINSTRATE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LASS, +#line 11020 .trainerName = _("VIVI"), - .items = {}, +#line 11021 + .trainerClass = TRAINER_CLASS_WINSTRATE, +#line 11022 + .trainerPic = TRAINER_PIC_LASS, + .encounterMusic_gender = +#line 11023 +F_TRAINER_FEMALE | +#line 11024 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 11025 .doubleBattle = FALSE, +#line 11026 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Vivi), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 11028 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11030 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 11029 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11032 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11034 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 11033 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11036 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11038 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 11037 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11040 [TRAINER_HALEY_2] = { - .trainerClass = TRAINER_CLASS_LASS, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LASS, +#line 11041 .trainerName = _("HALEY"), - .items = {}, +#line 11042 + .trainerClass = TRAINER_CLASS_LASS, +#line 11043 + .trainerPic = TRAINER_PIC_LASS, + .encounterMusic_gender = +#line 11044 +F_TRAINER_FEMALE | +#line 11045 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 11046 .doubleBattle = FALSE, +#line 11047 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Haley2), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11049 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11051 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 11050 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11053 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11055 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 11054 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11057 [TRAINER_HALEY_3] = { - .trainerClass = TRAINER_CLASS_LASS, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LASS, +#line 11058 .trainerName = _("HALEY"), - .items = {}, +#line 11059 + .trainerClass = TRAINER_CLASS_LASS, +#line 11060 + .trainerPic = TRAINER_PIC_LASS, + .encounterMusic_gender = +#line 11061 +F_TRAINER_FEMALE | +#line 11062 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 11063 .doubleBattle = FALSE, +#line 11064 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Haley3), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11066 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11068 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 11067 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11070 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11072 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 11071 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11074 [TRAINER_HALEY_4] = { - .trainerClass = TRAINER_CLASS_LASS, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LASS, +#line 11075 .trainerName = _("HALEY"), - .items = {}, +#line 11076 + .trainerClass = TRAINER_CLASS_LASS, +#line 11077 + .trainerPic = TRAINER_PIC_LASS, + .encounterMusic_gender = +#line 11078 +F_TRAINER_FEMALE | +#line 11079 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 11080 .doubleBattle = FALSE, +#line 11081 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Haley4), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11083 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11085 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 11084 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11087 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11089 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 11088 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11091 [TRAINER_HALEY_5] = { - .trainerClass = TRAINER_CLASS_LASS, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LASS, +#line 11092 .trainerName = _("HALEY"), - .items = {}, +#line 11093 + .trainerClass = TRAINER_CLASS_LASS, +#line 11094 + .trainerPic = TRAINER_PIC_LASS, + .encounterMusic_gender = +#line 11095 +F_TRAINER_FEMALE | +#line 11096 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 11097 .doubleBattle = FALSE, +#line 11098 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Haley5), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 11100 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11102 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 11101 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11104 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11106 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 11105 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11108 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11110 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 11109 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11112 [TRAINER_SALLY] = { - .trainerClass = TRAINER_CLASS_LASS, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LASS, +#line 11113 .trainerName = _("SALLY"), - .items = {}, +#line 11114 + .trainerClass = TRAINER_CLASS_LASS, +#line 11115 + .trainerPic = TRAINER_PIC_LASS, + .encounterMusic_gender = +#line 11116 +F_TRAINER_FEMALE | +#line 11117 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 11118 .doubleBattle = FALSE, +#line 11119 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Sally), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 11121 + .species = SPECIES_ODDISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11123 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11122 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11125 [TRAINER_ROBIN] = { - .trainerClass = TRAINER_CLASS_LASS, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LASS, +#line 11126 .trainerName = _("ROBIN"), - .items = {}, +#line 11127 + .trainerClass = TRAINER_CLASS_LASS, +#line 11128 + .trainerPic = TRAINER_PIC_LASS, + .encounterMusic_gender = +#line 11129 +F_TRAINER_FEMALE | +#line 11130 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 11131 .doubleBattle = FALSE, +#line 11132 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Robin), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 11134 + .species = SPECIES_SKITTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11136 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11135 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11138 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11140 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11139 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11142 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11144 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11143 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11146 [TRAINER_ANDREA] = { - .trainerClass = TRAINER_CLASS_LASS, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LASS, +#line 11147 .trainerName = _("ANDREA"), - .items = {}, +#line 11148 + .trainerClass = TRAINER_CLASS_LASS, +#line 11149 + .trainerPic = TRAINER_PIC_LASS, + .encounterMusic_gender = +#line 11150 +F_TRAINER_FEMALE | +#line 11151 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 11152 .doubleBattle = FALSE, +#line 11153 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Andrea), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 11155 + .species = SPECIES_LUVDISC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11157 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 11156 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11159 [TRAINER_CRISSY] = { - .trainerClass = TRAINER_CLASS_LASS, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LASS, +#line 11160 .trainerName = _("CRISSY"), - .items = {}, +#line 11161 + .trainerClass = TRAINER_CLASS_LASS, +#line 11162 + .trainerPic = TRAINER_PIC_LASS, + .encounterMusic_gender = +#line 11163 +F_TRAINER_FEMALE | +#line 11164 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 11165 .doubleBattle = FALSE, +#line 11166 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Crissy), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11168 + .species = SPECIES_GOLDEEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11170 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 11169 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11172 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11174 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 11173 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11176 [TRAINER_RICK] = { - .trainerClass = TRAINER_CLASS_BUG_CATCHER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_BUG_CATCHER, +#line 11177 .trainerName = _("RICK"), - .items = {}, +#line 11178 + .trainerClass = TRAINER_CLASS_BUG_CATCHER, +#line 11179 + .trainerPic = TRAINER_PIC_BUG_CATCHER, + .encounterMusic_gender = +#line 11181 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11182 .doubleBattle = FALSE, +#line 11183 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Rick), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11185 + .species = SPECIES_WURMPLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11187 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11186 + .lvl = 4, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11189 + .species = SPECIES_WURMPLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11191 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11190 + .lvl = 4, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11193 [TRAINER_LYLE] = { - .trainerClass = TRAINER_CLASS_BUG_CATCHER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_BUG_CATCHER, +#line 11194 .trainerName = _("LYLE"), - .items = {}, +#line 11195 + .trainerClass = TRAINER_CLASS_BUG_CATCHER, +#line 11196 + .trainerPic = TRAINER_PIC_BUG_CATCHER, + .encounterMusic_gender = +#line 11198 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11199 .doubleBattle = FALSE, +#line 11200 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Lyle), + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 11202 + .species = SPECIES_WURMPLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11204 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11203 + .lvl = 3, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11206 + .species = SPECIES_WURMPLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11208 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11207 + .lvl = 3, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11210 + .species = SPECIES_WURMPLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11212 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11211 + .lvl = 3, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11214 + .species = SPECIES_WURMPLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11216 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11215 + .lvl = 3, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11218 [TRAINER_JOSE] = { - .trainerClass = TRAINER_CLASS_BUG_CATCHER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_BUG_CATCHER, +#line 11219 .trainerName = _("JOSE"), - .items = {}, +#line 11220 + .trainerClass = TRAINER_CLASS_BUG_CATCHER, +#line 11221 + .trainerPic = TRAINER_PIC_BUG_CATCHER, + .encounterMusic_gender = +#line 11223 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11224 .doubleBattle = FALSE, +#line 11225 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jose), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11227 + .species = SPECIES_WURMPLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11229 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 11228 + .lvl = 8, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11231 + .species = SPECIES_NINCADA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11233 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 11232 + .lvl = 8, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11235 [TRAINER_DOUG] = { - .trainerClass = TRAINER_CLASS_BUG_CATCHER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_BUG_CATCHER, +#line 11236 .trainerName = _("DOUG"), - .items = {}, +#line 11237 + .trainerClass = TRAINER_CLASS_BUG_CATCHER, +#line 11238 + .trainerPic = TRAINER_PIC_BUG_CATCHER, + .encounterMusic_gender = +#line 11240 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11241 .doubleBattle = FALSE, +#line 11242 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Doug), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11244 + .species = SPECIES_NINCADA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11246 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11245 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11248 + .species = SPECIES_NINJASK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11250 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11249 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11252 [TRAINER_GREG] = { - .trainerClass = TRAINER_CLASS_BUG_CATCHER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_BUG_CATCHER, +#line 11253 .trainerName = _("GREG"), - .items = {}, +#line 11254 + .trainerClass = TRAINER_CLASS_BUG_CATCHER, +#line 11255 + .trainerPic = TRAINER_PIC_BUG_CATCHER, + .encounterMusic_gender = +#line 11257 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11258 .doubleBattle = FALSE, +#line 11259 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Greg), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11261 + .species = SPECIES_VOLBEAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11263 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11262 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11265 + .species = SPECIES_ILLUMISE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11267 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11266 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11269 [TRAINER_KENT] = { - .trainerClass = TRAINER_CLASS_BUG_CATCHER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_BUG_CATCHER, +#line 11270 .trainerName = _("KENT"), - .items = {}, +#line 11271 + .trainerClass = TRAINER_CLASS_BUG_CATCHER, +#line 11272 + .trainerPic = TRAINER_PIC_BUG_CATCHER, + .encounterMusic_gender = +#line 11274 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11275 .doubleBattle = FALSE, +#line 11276 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Kent), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 11278 + .species = SPECIES_NINJASK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11280 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11279 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11282 [TRAINER_JAMES_1] = { - .trainerClass = TRAINER_CLASS_BUG_CATCHER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_BUG_CATCHER, +#line 11283 .trainerName = _("JAMES"), - .items = {}, +#line 11284 + .trainerClass = TRAINER_CLASS_BUG_CATCHER, +#line 11285 + .trainerPic = TRAINER_PIC_BUG_CATCHER, + .encounterMusic_gender = +#line 11287 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11288 .doubleBattle = FALSE, +#line 11289 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_James1), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11291 + .species = SPECIES_NINCADA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11293 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11292 + .lvl = 6, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11295 + .species = SPECIES_NINCADA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11297 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11296 + .lvl = 6, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11299 [TRAINER_JAMES_2] = { - .trainerClass = TRAINER_CLASS_BUG_CATCHER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_BUG_CATCHER, +#line 11300 .trainerName = _("JAMES"), - .items = {}, +#line 11301 + .trainerClass = TRAINER_CLASS_BUG_CATCHER, +#line 11302 + .trainerPic = TRAINER_PIC_BUG_CATCHER, + .encounterMusic_gender = +#line 11304 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11305 .doubleBattle = FALSE, +#line 11306 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_James2), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 11308 + .species = SPECIES_NINJASK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11310 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 11309 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11312 [TRAINER_JAMES_3] = { - .trainerClass = TRAINER_CLASS_BUG_CATCHER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_BUG_CATCHER, +#line 11313 .trainerName = _("JAMES"), - .items = {}, +#line 11314 + .trainerClass = TRAINER_CLASS_BUG_CATCHER, +#line 11315 + .trainerPic = TRAINER_PIC_BUG_CATCHER, + .encounterMusic_gender = +#line 11317 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11318 .doubleBattle = FALSE, +#line 11319 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_James3), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11321 + .species = SPECIES_DUSTOX, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11323 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 11322 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11325 + .species = SPECIES_NINJASK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11327 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 11326 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11329 [TRAINER_JAMES_4] = { - .trainerClass = TRAINER_CLASS_BUG_CATCHER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_BUG_CATCHER, +#line 11330 .trainerName = _("JAMES"), - .items = {}, +#line 11331 + .trainerClass = TRAINER_CLASS_BUG_CATCHER, +#line 11332 + .trainerPic = TRAINER_PIC_BUG_CATCHER, + .encounterMusic_gender = +#line 11334 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11335 .doubleBattle = FALSE, +#line 11336 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_James4), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 11338 + .species = SPECIES_SURSKIT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11340 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 11339 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11342 + .species = SPECIES_DUSTOX, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11344 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 11343 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11346 + .species = SPECIES_NINJASK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11348 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 11347 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11350 [TRAINER_JAMES_5] = { - .trainerClass = TRAINER_CLASS_BUG_CATCHER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_BUG_CATCHER, +#line 11351 .trainerName = _("JAMES"), - .items = {}, +#line 11352 + .trainerClass = TRAINER_CLASS_BUG_CATCHER, +#line 11353 + .trainerPic = TRAINER_PIC_BUG_CATCHER, + .encounterMusic_gender = +#line 11355 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11356 .doubleBattle = FALSE, +#line 11357 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_James5), + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 11359 + .species = SPECIES_SURSKIT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11361 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 11360 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11363 + .species = SPECIES_NINJASK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11365 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 11364 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11367 + .species = SPECIES_DUSTOX, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11369 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 11368 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11371 + .species = SPECIES_NINJASK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11373 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 11372 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11375 [TRAINER_BRICE] = { - .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_HIKER, +#line 11376 .trainerName = _("BRICE"), - .items = {}, +#line 11377 + .trainerClass = TRAINER_CLASS_HIKER, +#line 11378 + .trainerPic = TRAINER_PIC_HIKER, + .encounterMusic_gender = +#line 11380 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11381 .doubleBattle = FALSE, +#line 11382 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Brice), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11384 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11386 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11385 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11388 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11390 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11389 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11392 [TRAINER_TRENT_1] = { - .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_HIKER, +#line 11393 .trainerName = _("TRENT"), - .items = {}, +#line 11394 + .trainerClass = TRAINER_CLASS_HIKER, +#line 11395 + .trainerPic = TRAINER_PIC_HIKER, + .encounterMusic_gender = +#line 11397 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11398 .doubleBattle = FALSE, +#line 11399 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Trent1), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 11401 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11403 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11402 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11405 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11407 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11406 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11409 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11411 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11410 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11413 [TRAINER_LENNY] = { - .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_HIKER, +#line 11414 .trainerName = _("LENNY"), - .items = {}, +#line 11415 + .trainerClass = TRAINER_CLASS_HIKER, +#line 11416 + .trainerPic = TRAINER_PIC_HIKER, + .encounterMusic_gender = +#line 11418 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11419 .doubleBattle = FALSE, +#line 11420 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Lenny), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11422 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11424 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11423 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11426 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11428 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11427 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11430 [TRAINER_LUCAS_1] = { - .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_HIKER, +#line 11431 .trainerName = _("LUCAS"), - .items = {}, +#line 11432 + .trainerClass = TRAINER_CLASS_HIKER, +#line 11433 + .trainerPic = TRAINER_PIC_HIKER, + .encounterMusic_gender = +#line 11435 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11436 .doubleBattle = FALSE, +#line 11437 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Lucas1), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11439 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11441 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11440 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11443 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11445 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11444 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11447 [TRAINER_ALAN] = { - .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_HIKER, +#line 11448 .trainerName = _("ALAN"), - .items = {}, +#line 11449 + .trainerClass = TRAINER_CLASS_HIKER, +#line 11450 + .trainerPic = TRAINER_PIC_HIKER, + .encounterMusic_gender = +#line 11452 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11453 .doubleBattle = FALSE, +#line 11454 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Alan), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 11456 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11458 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11457 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11460 + .species = SPECIES_NOSEPASS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11462 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11461 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11464 + .species = SPECIES_GRAVELER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11466 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11465 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11468 [TRAINER_CLARK] = { - .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_HIKER, +#line 11469 .trainerName = _("CLARK"), - .items = {}, +#line 11470 + .trainerClass = TRAINER_CLASS_HIKER, +#line 11471 + .trainerPic = TRAINER_PIC_HIKER, + .encounterMusic_gender = +#line 11473 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11474 .doubleBattle = FALSE, +#line 11475 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Clark), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 11477 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11479 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11478 + .lvl = 8, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11481 [TRAINER_ERIC] = { - .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_HIKER, +#line 11482 .trainerName = _("ERIC"), - .items = {}, +#line 11483 + .trainerClass = TRAINER_CLASS_HIKER, +#line 11484 + .trainerPic = TRAINER_PIC_HIKER, + .encounterMusic_gender = +#line 11486 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11487 .doubleBattle = FALSE, +#line 11488 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Eric), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11490 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11492 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11491 + .lvl = 20, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11494 + .species = SPECIES_BALTOY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11496 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11495 + .lvl = 20, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11498 [TRAINER_LUCAS_2] = { - .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_HIKER, +#line 11499 .trainerName = _("LUCAS"), - .items = {}, +#line 11500 + .trainerClass = TRAINER_CLASS_HIKER, +#line 11501 + .trainerPic = TRAINER_PIC_HIKER, + .encounterMusic_gender = +#line 11503 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11504 .doubleBattle = FALSE, +#line 11505 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Lucas2), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 11507 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11509 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11508 + .lvl = 9, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 11510 + MOVE_SPLASH, + MOVE_WATER_GUN, + }, + }, + }, }, - +#line 11513 [TRAINER_MIKE_1] = { - .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_HIKER, +#line 11514 .trainerName = _("MIKE"), - .items = {}, +#line 11515 + .trainerClass = TRAINER_CLASS_HIKER, +#line 11516 + .trainerPic = TRAINER_PIC_HIKER, + .encounterMusic_gender = +#line 11518 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11519 .doubleBattle = FALSE, +#line 11520 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Mike1), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11522 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11524 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11523 + .lvl = 10, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 11525 + MOVE_GUST, + MOVE_GROWL, + }, + }, + { +#line 11528 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11530 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11529 + .lvl = 10, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 11531 + MOVE_BITE, + MOVE_SCARY_FACE, + }, + }, + }, }, - +#line 11534 [TRAINER_MIKE_2] = { - .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_HIKER, +#line 11535 .trainerName = _("MIKE"), - .items = {}, +#line 11536 + .trainerClass = TRAINER_CLASS_HIKER, +#line 11537 + .trainerPic = TRAINER_PIC_HIKER, + .encounterMusic_gender = +#line 11539 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11540 .doubleBattle = FALSE, +#line 11541 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Mike2), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 11543 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11545 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11544 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11547 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11549 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11548 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11551 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11553 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11552 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11555 [TRAINER_TRENT_2] = { - .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_HIKER, +#line 11556 .trainerName = _("TRENT"), - .items = {}, +#line 11557 + .trainerClass = TRAINER_CLASS_HIKER, +#line 11558 + .trainerPic = TRAINER_PIC_HIKER, + .encounterMusic_gender = +#line 11560 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11561 .doubleBattle = FALSE, +#line 11562 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Trent2), + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 11564 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11566 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 11565 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11568 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11570 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 11569 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11572 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11574 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 11573 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11576 + .species = SPECIES_GRAVELER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11578 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 11577 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11580 [TRAINER_TRENT_3] = { - .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_HIKER, +#line 11581 .trainerName = _("TRENT"), - .items = {}, +#line 11582 + .trainerClass = TRAINER_CLASS_HIKER, +#line 11583 + .trainerPic = TRAINER_PIC_HIKER, + .encounterMusic_gender = +#line 11585 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11586 .doubleBattle = FALSE, +#line 11587 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Trent3), + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 11589 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11591 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 11590 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11593 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11595 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 11594 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11597 + .species = SPECIES_GRAVELER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11599 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 11598 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11601 + .species = SPECIES_GRAVELER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11603 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 11602 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11605 [TRAINER_TRENT_4] = { - .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_HIKER, +#line 11606 .trainerName = _("TRENT"), - .items = {}, +#line 11607 + .trainerClass = TRAINER_CLASS_HIKER, +#line 11608 + .trainerPic = TRAINER_PIC_HIKER, + .encounterMusic_gender = +#line 11610 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11611 .doubleBattle = FALSE, +#line 11612 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Trent4), + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 11614 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11616 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 11615 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11618 + .species = SPECIES_GRAVELER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11620 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 11619 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11622 + .species = SPECIES_GRAVELER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11624 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 11623 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11626 + .species = SPECIES_GRAVELER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11628 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 11627 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11630 [TRAINER_TRENT_5] = { - .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_HIKER, +#line 11631 .trainerName = _("TRENT"), - .items = {}, +#line 11632 + .trainerClass = TRAINER_CLASS_HIKER, +#line 11633 + .trainerPic = TRAINER_PIC_HIKER, + .encounterMusic_gender = +#line 11635 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11636 .doubleBattle = FALSE, +#line 11637 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Trent5), + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 11639 + .species = SPECIES_GRAVELER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11641 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 11640 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11643 + .species = SPECIES_GRAVELER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11645 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 11644 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11647 + .species = SPECIES_GRAVELER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11649 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 11648 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11651 + .species = SPECIES_GOLEM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11653 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 11652 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11655 [TRAINER_DEZ_AND_LUKE] = { - .trainerClass = TRAINER_CLASS_YOUNG_COUPLE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_YOUNG_COUPLE, +#line 11656 .trainerName = _("DEZ & LUKE"), - .items = {}, +#line 11657 + .trainerClass = TRAINER_CLASS_YOUNG_COUPLE, +#line 11658 + .trainerPic = TRAINER_PIC_YOUNG_COUPLE, + .encounterMusic_gender = +#line 11660 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 11661 .doubleBattle = TRUE, +#line 11662 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_DezAndLuke), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11664 + .species = SPECIES_DELCATTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11666 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11665 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11668 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11670 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11669 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11672 [TRAINER_LEA_AND_JED] = { - .trainerClass = TRAINER_CLASS_YOUNG_COUPLE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_YOUNG_COUPLE, +#line 11673 .trainerName = _("LEA & JED"), - .items = {}, +#line 11674 + .trainerClass = TRAINER_CLASS_YOUNG_COUPLE, +#line 11675 + .trainerPic = TRAINER_PIC_YOUNG_COUPLE, + .encounterMusic_gender = +#line 11677 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 11678 .doubleBattle = TRUE, +#line 11679 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_LeaAndJed), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11681 + .species = SPECIES_LUVDISC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11683 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11682 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11685 + .species = SPECIES_LUVDISC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11687 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11686 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11689 [TRAINER_KIRA_AND_DAN_1] = { - .trainerClass = TRAINER_CLASS_YOUNG_COUPLE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_YOUNG_COUPLE, +#line 11690 .trainerName = _("KIRA & DAN"), - .items = {}, +#line 11691 + .trainerClass = TRAINER_CLASS_YOUNG_COUPLE, +#line 11692 + .trainerPic = TRAINER_PIC_YOUNG_COUPLE, + .encounterMusic_gender = +#line 11694 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 11695 .doubleBattle = TRUE, +#line 11696 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_KiraAndDan1), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11698 + .species = SPECIES_VOLBEAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11700 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11699 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11702 + .species = SPECIES_ILLUMISE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11704 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11703 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11706 [TRAINER_KIRA_AND_DAN_2] = { - .trainerClass = TRAINER_CLASS_YOUNG_COUPLE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_YOUNG_COUPLE, +#line 11707 .trainerName = _("KIRA & DAN"), - .items = {}, +#line 11708 + .trainerClass = TRAINER_CLASS_YOUNG_COUPLE, +#line 11709 + .trainerPic = TRAINER_PIC_YOUNG_COUPLE, + .encounterMusic_gender = +#line 11711 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 11712 .doubleBattle = TRUE, +#line 11713 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_KiraAndDan2), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11715 + .species = SPECIES_VOLBEAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11717 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 11716 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11719 + .species = SPECIES_ILLUMISE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11721 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 11720 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11723 [TRAINER_KIRA_AND_DAN_3] = { - .trainerClass = TRAINER_CLASS_YOUNG_COUPLE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_YOUNG_COUPLE, +#line 11724 .trainerName = _("KIRA & DAN"), - .items = {}, +#line 11725 + .trainerClass = TRAINER_CLASS_YOUNG_COUPLE, +#line 11726 + .trainerPic = TRAINER_PIC_YOUNG_COUPLE, + .encounterMusic_gender = +#line 11728 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 11729 .doubleBattle = TRUE, +#line 11730 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_KiraAndDan3), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11732 + .species = SPECIES_VOLBEAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11734 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 11733 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11736 + .species = SPECIES_ILLUMISE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11738 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 11737 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11740 [TRAINER_KIRA_AND_DAN_4] = { - .trainerClass = TRAINER_CLASS_YOUNG_COUPLE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_YOUNG_COUPLE, +#line 11741 .trainerName = _("KIRA & DAN"), - .items = {}, +#line 11742 + .trainerClass = TRAINER_CLASS_YOUNG_COUPLE, +#line 11743 + .trainerPic = TRAINER_PIC_YOUNG_COUPLE, + .encounterMusic_gender = +#line 11745 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 11746 .doubleBattle = TRUE, +#line 11747 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_KiraAndDan4), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11749 + .species = SPECIES_VOLBEAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11751 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 11750 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11753 + .species = SPECIES_ILLUMISE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11755 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 11754 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11757 [TRAINER_KIRA_AND_DAN_5] = { - .trainerClass = TRAINER_CLASS_YOUNG_COUPLE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_YOUNG_COUPLE, +#line 11758 .trainerName = _("KIRA & DAN"), - .items = {}, +#line 11759 + .trainerClass = TRAINER_CLASS_YOUNG_COUPLE, +#line 11760 + .trainerPic = TRAINER_PIC_YOUNG_COUPLE, + .encounterMusic_gender = +#line 11762 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 11763 .doubleBattle = TRUE, +#line 11764 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_KiraAndDan5), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11766 + .species = SPECIES_VOLBEAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11768 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 11767 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11770 + .species = SPECIES_ILLUMISE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11772 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 11771 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11774 [TRAINER_JOHANNA] = { - .trainerClass = TRAINER_CLASS_BEAUTY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_BEAUTY, +#line 11775 .trainerName = _("JOHANNA"), - .items = {}, +#line 11776 + .trainerClass = TRAINER_CLASS_BEAUTY, +#line 11777 + .trainerPic = TRAINER_PIC_BEAUTY, + .encounterMusic_gender = +#line 11778 +F_TRAINER_FEMALE | +#line 11779 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 11780 .doubleBattle = FALSE, +#line 11781 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Johanna), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 11783 + .species = SPECIES_GOLDEEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11785 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11784 + .lvl = 13, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11787 [TRAINER_GERALD] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_M, +#line 11788 .trainerName = _("GERALD"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 11789 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 11790 + .trainerPic = TRAINER_PIC_COOLTRAINER_M, + .encounterMusic_gender = +#line 11792 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 11793 + .items = { ITEM_HYPER_POTION }, +#line 11794 .doubleBattle = FALSE, +#line 11795 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Gerald), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 11797 + .species = SPECIES_KECLEON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11799 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 11798 + .lvl = 23, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 11800 + MOVE_FLAMETHROWER, + MOVE_FURY_SWIPES, + MOVE_FEINT_ATTACK, + MOVE_BIND, + }, + }, + }, }, - +#line 11805 [TRAINER_VIVIAN] = { - .trainerClass = TRAINER_CLASS_BATTLE_GIRL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_BATTLE_GIRL, +#line 11806 .trainerName = _("VIVIAN"), - .items = {}, +#line 11807 + .trainerClass = TRAINER_CLASS_BATTLE_GIRL, +#line 11808 + .trainerPic = TRAINER_PIC_BATTLE_GIRL, + .encounterMusic_gender = +#line 11809 +F_TRAINER_FEMALE | +#line 11810 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 11811 .doubleBattle = FALSE, +#line 11812 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Vivian), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11814 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11816 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 11815 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 11817 + MOVE_BIDE, + MOVE_DETECT, + MOVE_CONFUSION, + MOVE_THUNDER_PUNCH, + }, + }, + { +#line 11822 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11824 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 11823 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 11825 + MOVE_THUNDER_PUNCH, + MOVE_DETECT, + MOVE_CONFUSION, + MOVE_MEDITATE, + }, + }, + }, }, - +#line 11830 [TRAINER_DANIELLE] = { - .trainerClass = TRAINER_CLASS_BATTLE_GIRL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_BATTLE_GIRL, +#line 11831 .trainerName = _("DANIELLE"), - .items = {}, +#line 11832 + .trainerClass = TRAINER_CLASS_BATTLE_GIRL, +#line 11833 + .trainerPic = TRAINER_PIC_BATTLE_GIRL, + .encounterMusic_gender = +#line 11834 +F_TRAINER_FEMALE | +#line 11835 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 11836 .doubleBattle = FALSE, +#line 11837 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Danielle), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 11839 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11841 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 11840 + .lvl = 23, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 11842 + MOVE_BIDE, + MOVE_DETECT, + MOVE_CONFUSION, + MOVE_FIRE_PUNCH, + }, + }, + }, }, - +#line 11847 [TRAINER_HIDEO] = { - .trainerClass = TRAINER_CLASS_NINJA_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_NINJA_BOY, +#line 11848 .trainerName = _("HIDEO"), - .items = {}, +#line 11849 + .trainerClass = TRAINER_CLASS_NINJA_BOY, +#line 11850 + .trainerPic = TRAINER_PIC_NINJA_BOY, + .encounterMusic_gender = +#line 11852 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 11853 .doubleBattle = FALSE, +#line 11854 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT, - .party = TRAINER_PARTY(sParty_Hideo), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11856 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11858 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11857 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 11859 + MOVE_TACKLE, + MOVE_SELF_DESTRUCT, + MOVE_SLUDGE, + MOVE_SMOKESCREEN, + }, + }, + { +#line 11864 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11866 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11865 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 11867 + MOVE_TACKLE, + MOVE_POISON_GAS, + MOVE_SLUDGE, + MOVE_SMOKESCREEN, + }, + }, + }, }, - +#line 11872 [TRAINER_KEIGO] = { - .trainerClass = TRAINER_CLASS_NINJA_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_NINJA_BOY, +#line 11873 .trainerName = _("KEIGO"), - .items = {}, +#line 11874 + .trainerClass = TRAINER_CLASS_NINJA_BOY, +#line 11875 + .trainerPic = TRAINER_PIC_NINJA_BOY, + .encounterMusic_gender = +#line 11877 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 11878 .doubleBattle = FALSE, +#line 11879 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT, - .party = TRAINER_PARTY(sParty_Keigo), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11881 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11883 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11882 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 11884 + MOVE_POISON_GAS, + MOVE_SELF_DESTRUCT, + MOVE_SLUDGE, + MOVE_SMOKESCREEN, + }, + }, + { +#line 11889 + .species = SPECIES_NINJASK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11891 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11890 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 11892 + MOVE_SAND_ATTACK, + MOVE_DOUBLE_TEAM, + MOVE_FURY_CUTTER, + MOVE_SWORDS_DANCE, + }, + }, + }, }, - +#line 11897 [TRAINER_RILEY] = { - .trainerClass = TRAINER_CLASS_NINJA_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_NINJA_BOY, +#line 11898 .trainerName = _("RILEY"), - .items = {}, +#line 11899 + .trainerClass = TRAINER_CLASS_NINJA_BOY, +#line 11900 + .trainerPic = TRAINER_PIC_NINJA_BOY, + .encounterMusic_gender = +#line 11902 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 11903 .doubleBattle = FALSE, +#line 11904 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT, - .party = TRAINER_PARTY(sParty_Riley), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11906 + .species = SPECIES_NINCADA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11908 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11907 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 11909 + MOVE_LEECH_LIFE, + MOVE_FURY_SWIPES, + MOVE_MIND_READER, + MOVE_DIG, + }, + }, + { +#line 11914 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11916 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11915 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 11917 + MOVE_TACKLE, + MOVE_SELF_DESTRUCT, + MOVE_SLUDGE, + MOVE_SMOKESCREEN, + }, + }, + }, }, - +#line 11922 [TRAINER_FLINT] = { - .trainerClass = TRAINER_CLASS_CAMPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_CAMPER, +#line 11923 .trainerName = _("FLINT"), - .items = {}, +#line 11924 + .trainerClass = TRAINER_CLASS_CAMPER, +#line 11925 + .trainerPic = TRAINER_PIC_CAMPER, + .encounterMusic_gender = +#line 11927 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11928 .doubleBattle = FALSE, +#line 11929 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Flint), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11931 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11933 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 11932 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11935 + .species = SPECIES_XATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11937 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 11936 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11939 [TRAINER_ASHLEY] = { - .trainerClass = TRAINER_CLASS_PICNICKER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_PICNICKER, +#line 11940 .trainerName = _("ASHLEY"), - .items = {}, +#line 11941 + .trainerClass = TRAINER_CLASS_PICNICKER, +#line 11942 + .trainerPic = TRAINER_PIC_PICNICKER, + .encounterMusic_gender = +#line 11943 +F_TRAINER_FEMALE | +#line 11944 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 11945 .doubleBattle = FALSE, +#line 11946 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ashley), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 11948 + .species = SPECIES_SWABLU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11950 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 11949 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11952 + .species = SPECIES_SWABLU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11954 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 11953 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11956 + .species = SPECIES_SWABLU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11958 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 11957 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11960 [TRAINER_WALLY_MAUVILLE] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_WALLY, +#line 11961 .trainerName = _("WALLY"), - .items = {}, +#line 11962 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 11963 + .trainerPic = TRAINER_PIC_WALLY, + .encounterMusic_gender = +#line 11965 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11966 .doubleBattle = FALSE, +#line 11967 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_WallyMauville), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 11969 + .species = SPECIES_RALTS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11971 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 11970 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 11973 [TRAINER_WALLY_VR_2] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_WALLY, +#line 11974 .trainerName = _("WALLY"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE}, +#line 11975 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 11976 + .trainerPic = TRAINER_PIC_WALLY, + .encounterMusic_gender = +#line 11978 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11979 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 11980 .doubleBattle = FALSE, +#line 11981 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_WallyVR2), + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 11983 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11985 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 11984 + .lvl = 47, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 11986 + MOVE_AERIAL_ACE, + MOVE_SAFEGUARD, + MOVE_DRAGON_BREATH, + MOVE_DRAGON_DANCE, + }, + }, + { +#line 11991 + .species = SPECIES_DELCATTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11993 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 11992 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 11994 + MOVE_SING, + MOVE_ASSIST, + MOVE_CHARM, + MOVE_FEINT_ATTACK, + }, + }, + { +#line 11999 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12001 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12000 + .lvl = 47, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12002 + MOVE_MAGICAL_LEAF, + MOVE_LEECH_SEED, + MOVE_GIGA_DRAIN, + MOVE_TOXIC, + }, + }, + { +#line 12007 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12009 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12008 + .lvl = 44, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12010 + MOVE_SUPERSONIC, + MOVE_THUNDERBOLT, + MOVE_TRI_ATTACK, + MOVE_SCREECH, + }, + }, + { +#line 12015 + .species = SPECIES_GARDEVOIR, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12017 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 12016 + .lvl = 48, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12018 + MOVE_DOUBLE_TEAM, + MOVE_CALM_MIND, + MOVE_PSYCHIC, + MOVE_FUTURE_SIGHT, + }, + }, + }, }, - +#line 12023 [TRAINER_WALLY_VR_3] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_WALLY, +#line 12024 .trainerName = _("WALLY"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE}, +#line 12025 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 12026 + .trainerPic = TRAINER_PIC_WALLY, + .encounterMusic_gender = +#line 12028 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 12029 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 12030 .doubleBattle = FALSE, +#line 12031 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_WallyVR3), + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 12033 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12035 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12034 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12036 + MOVE_AERIAL_ACE, + MOVE_SAFEGUARD, + MOVE_DRAGON_BREATH, + MOVE_DRAGON_DANCE, + }, + }, + { +#line 12041 + .species = SPECIES_DELCATTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12043 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12042 + .lvl = 49, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12044 + MOVE_SING, + MOVE_ASSIST, + MOVE_CHARM, + MOVE_FEINT_ATTACK, + }, + }, + { +#line 12049 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12051 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12050 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12052 + MOVE_MAGICAL_LEAF, + MOVE_LEECH_SEED, + MOVE_GIGA_DRAIN, + MOVE_TOXIC, + }, + }, + { +#line 12057 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12059 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12058 + .lvl = 47, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12060 + MOVE_SUPERSONIC, + MOVE_THUNDERBOLT, + MOVE_TRI_ATTACK, + MOVE_SCREECH, + }, + }, + { +#line 12065 + .species = SPECIES_GARDEVOIR, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12067 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 12066 + .lvl = 51, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12068 + MOVE_DOUBLE_TEAM, + MOVE_CALM_MIND, + MOVE_PSYCHIC, + MOVE_FUTURE_SIGHT, + }, + }, + }, }, - +#line 12073 [TRAINER_WALLY_VR_4] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_WALLY, +#line 12074 .trainerName = _("WALLY"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE}, +#line 12075 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 12076 + .trainerPic = TRAINER_PIC_WALLY, + .encounterMusic_gender = +#line 12078 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 12079 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 12080 .doubleBattle = FALSE, +#line 12081 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_WallyVR4), + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 12083 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12085 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12084 + .lvl = 53, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12086 + MOVE_AERIAL_ACE, + MOVE_SAFEGUARD, + MOVE_DRAGON_BREATH, + MOVE_DRAGON_DANCE, + }, + }, + { +#line 12091 + .species = SPECIES_DELCATTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12093 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12092 + .lvl = 52, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12094 + MOVE_SING, + MOVE_ASSIST, + MOVE_CHARM, + MOVE_FEINT_ATTACK, + }, + }, + { +#line 12099 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12101 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12100 + .lvl = 53, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12102 + MOVE_MAGICAL_LEAF, + MOVE_LEECH_SEED, + MOVE_GIGA_DRAIN, + MOVE_TOXIC, + }, + }, + { +#line 12107 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12109 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12108 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12110 + MOVE_SUPERSONIC, + MOVE_THUNDERBOLT, + MOVE_TRI_ATTACK, + MOVE_SCREECH, + }, + }, + { +#line 12115 + .species = SPECIES_GARDEVOIR, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12117 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 12116 + .lvl = 54, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12118 + MOVE_DOUBLE_TEAM, + MOVE_CALM_MIND, + MOVE_PSYCHIC, + MOVE_FUTURE_SIGHT, + }, + }, + }, }, - +#line 12123 [TRAINER_WALLY_VR_5] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_WALLY, +#line 12124 .trainerName = _("WALLY"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE}, +#line 12125 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 12126 + .trainerPic = TRAINER_PIC_WALLY, + .encounterMusic_gender = +#line 12128 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 12129 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 12130 .doubleBattle = FALSE, +#line 12131 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_WallyVR5), + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 12133 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12135 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12134 + .lvl = 56, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12136 + MOVE_AERIAL_ACE, + MOVE_SAFEGUARD, + MOVE_DRAGON_BREATH, + MOVE_DRAGON_DANCE, + }, + }, + { +#line 12141 + .species = SPECIES_DELCATTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12143 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12142 + .lvl = 55, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12144 + MOVE_SING, + MOVE_ASSIST, + MOVE_CHARM, + MOVE_FEINT_ATTACK, + }, + }, + { +#line 12149 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12151 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12150 + .lvl = 56, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12152 + MOVE_MAGICAL_LEAF, + MOVE_LEECH_SEED, + MOVE_GIGA_DRAIN, + MOVE_TOXIC, + }, + }, + { +#line 12157 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12159 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12158 + .lvl = 53, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12160 + MOVE_SUPERSONIC, + MOVE_THUNDERBOLT, + MOVE_TRI_ATTACK, + MOVE_SCREECH, + }, + }, + { +#line 12165 + .species = SPECIES_GARDEVOIR, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12167 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 12166 + .lvl = 57, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12168 + MOVE_DOUBLE_TEAM, + MOVE_CALM_MIND, + MOVE_PSYCHIC, + MOVE_FUTURE_SIGHT, + }, + }, + }, }, - +#line 12173 [TRAINER_BRENDAN_LILYCOVE_MUDKIP] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_BRENDAN, +#line 12174 .trainerName = _("BRENDAN"), - .items = {}, +#line 12175 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 12176 + .trainerPic = TRAINER_PIC_BRENDAN, + .encounterMusic_gender = +#line 12178 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 12179 .doubleBattle = FALSE, +#line 12180 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_BrendanLilycoveMudkip), + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 12182 + .species = SPECIES_TROPIUS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12184 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12183 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12186 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12188 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12187 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12190 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12192 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12191 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12194 + .species = SPECIES_GROVYLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12196 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 12195 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 12198 [TRAINER_BRENDAN_LILYCOVE_TREECKO] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_BRENDAN, +#line 12199 .trainerName = _("BRENDAN"), - .items = {}, +#line 12200 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 12201 + .trainerPic = TRAINER_PIC_BRENDAN, + .encounterMusic_gender = +#line 12203 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 12204 .doubleBattle = FALSE, +#line 12205 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_BrendanLilycoveTreecko), + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 12207 + .species = SPECIES_TROPIUS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12209 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12208 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12211 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12213 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12212 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12215 + .species = SPECIES_LUDICOLO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12217 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12216 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12219 + .species = SPECIES_COMBUSKEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12221 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 12220 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 12223 [TRAINER_BRENDAN_LILYCOVE_TORCHIC] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_BRENDAN, +#line 12224 .trainerName = _("BRENDAN"), - .items = {}, +#line 12225 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 12226 + .trainerPic = TRAINER_PIC_BRENDAN, + .encounterMusic_gender = +#line 12228 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 12229 .doubleBattle = FALSE, +#line 12230 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_BrendanLilycoveTorchic), + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 12232 + .species = SPECIES_TROPIUS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12234 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12233 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12236 + .species = SPECIES_LUDICOLO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12238 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12237 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12240 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12242 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12241 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12244 + .species = SPECIES_MARSHTOMP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12246 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 12245 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 12248 [TRAINER_MAY_LILYCOVE_MUDKIP] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_MAY, +#line 12249 .trainerName = _("MAY"), - .items = {}, +#line 12250 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 12251 + .trainerPic = TRAINER_PIC_MAY, + .encounterMusic_gender = +#line 12252 +F_TRAINER_FEMALE | +#line 12253 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 12254 .doubleBattle = FALSE, +#line 12255 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_MayLilycoveMudkip), + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 12257 + .species = SPECIES_TROPIUS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12259 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12258 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12261 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12263 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12262 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12265 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12267 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12266 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12269 + .species = SPECIES_GROVYLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12271 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 12270 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 12273 [TRAINER_MAY_LILYCOVE_TREECKO] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_MAY, +#line 12274 .trainerName = _("MAY"), - .items = {}, +#line 12275 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 12276 + .trainerPic = TRAINER_PIC_MAY, + .encounterMusic_gender = +#line 12277 +F_TRAINER_FEMALE | +#line 12278 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 12279 .doubleBattle = FALSE, +#line 12280 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_MayLilycoveTreecko), + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 12282 + .species = SPECIES_TROPIUS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12284 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12283 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12286 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12288 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12287 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12290 + .species = SPECIES_LUDICOLO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12292 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12291 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12294 + .species = SPECIES_COMBUSKEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12296 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 12295 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 12298 [TRAINER_MAY_LILYCOVE_TORCHIC] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_MAY, +#line 12299 .trainerName = _("MAY"), - .items = {}, +#line 12300 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 12301 + .trainerPic = TRAINER_PIC_MAY, + .encounterMusic_gender = +#line 12302 +F_TRAINER_FEMALE | +#line 12303 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 12304 .doubleBattle = FALSE, +#line 12305 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_MayLilycoveTorchic), + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 12307 + .species = SPECIES_TROPIUS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12309 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12308 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12311 + .species = SPECIES_LUDICOLO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12313 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12312 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12315 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12317 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12316 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12319 + .species = SPECIES_MARSHTOMP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12321 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 12320 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 12323 [TRAINER_JONAH] = { - .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_FISHERMAN, +#line 12324 .trainerName = _("JONAH"), - .items = {}, +#line 12325 + .trainerClass = TRAINER_CLASS_FISHERMAN, +#line 12326 + .trainerPic = TRAINER_PIC_FISHERMAN, + .encounterMusic_gender = +#line 12328 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 12329 .doubleBattle = FALSE, +#line 12330 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jonah), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 12332 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12334 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12333 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12336 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12338 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12337 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12340 + .species = SPECIES_SHARPEDO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12342 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12341 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 12344 [TRAINER_HENRY] = { - .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_FISHERMAN, +#line 12345 .trainerName = _("HENRY"), - .items = {}, +#line 12346 + .trainerClass = TRAINER_CLASS_FISHERMAN, +#line 12347 + .trainerPic = TRAINER_PIC_FISHERMAN, + .encounterMusic_gender = +#line 12349 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 12350 .doubleBattle = FALSE, +#line 12351 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Henry), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12353 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12355 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12354 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12357 + .species = SPECIES_TENTACRUEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12359 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12358 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 12361 [TRAINER_ROGER] = { - .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_FISHERMAN, +#line 12362 .trainerName = _("ROGER"), - .items = {}, +#line 12363 + .trainerClass = TRAINER_CLASS_FISHERMAN, +#line 12364 + .trainerPic = TRAINER_PIC_FISHERMAN, + .encounterMusic_gender = +#line 12366 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 12367 .doubleBattle = FALSE, +#line 12368 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Roger), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 12370 + .species = SPECIES_MAGIKARP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12372 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12371 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12374 + .species = SPECIES_MAGIKARP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12376 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12375 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12378 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12380 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12379 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 12382 [TRAINER_ALEXA] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_F, +#line 12383 .trainerName = _("ALEXA"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 12384 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 12385 + .trainerPic = TRAINER_PIC_COOLTRAINER_F, + .encounterMusic_gender = +#line 12386 +F_TRAINER_FEMALE | +#line 12387 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 12388 + .items = { ITEM_FULL_RESTORE }, +#line 12389 .doubleBattle = FALSE, +#line 12390 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Alexa), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12392 + .species = SPECIES_GLOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12394 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 12393 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12396 + .species = SPECIES_AZUMARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12398 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 12397 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 12400 [TRAINER_RUBEN] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_M, +#line 12401 .trainerName = _("RUBEN"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 12402 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 12403 + .trainerPic = TRAINER_PIC_COOLTRAINER_M, + .encounterMusic_gender = +#line 12405 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 12406 + .items = { ITEM_HYPER_POTION }, +#line 12407 .doubleBattle = FALSE, +#line 12408 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Ruben), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12410 + .species = SPECIES_SHIFTRY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12412 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 12411 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12414 + .species = SPECIES_NOSEPASS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12416 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 12415 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 12418 [TRAINER_KOJI_1] = { - .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_BLACK_BELT, +#line 12419 .trainerName = _("KOJI"), - .items = {}, +#line 12420 + .trainerClass = TRAINER_CLASS_BLACK_BELT, +#line 12421 + .trainerPic = TRAINER_PIC_BLACK_BELT, + .encounterMusic_gender = +#line 12423 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 12424 .doubleBattle = FALSE, +#line 12425 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Koji1), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 12427 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12429 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12428 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 12431 [TRAINER_WAYNE] = { - .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_FISHERMAN, +#line 12432 .trainerName = _("WAYNE"), - .items = {}, +#line 12433 + .trainerClass = TRAINER_CLASS_FISHERMAN, +#line 12434 + .trainerPic = TRAINER_PIC_FISHERMAN, + .encounterMusic_gender = +#line 12436 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 12437 .doubleBattle = FALSE, +#line 12438 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Wayne), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 12440 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12442 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12441 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12444 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12446 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12445 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12448 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12450 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12449 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 12452 [TRAINER_AIDAN] = { - .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_BIRD_KEEPER, +#line 12453 .trainerName = _("AIDAN"), - .items = {}, +#line 12454 + .trainerClass = TRAINER_CLASS_BIRD_KEEPER, +#line 12455 + .trainerPic = TRAINER_PIC_BIRD_KEEPER, + .encounterMusic_gender = +#line 12457 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 12458 .doubleBattle = FALSE, +#line 12459 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Aidan), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12461 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12463 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12462 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12465 + .species = SPECIES_SKARMORY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12467 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12466 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 12469 [TRAINER_REED] = { - .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_M, +#line 12470 .trainerName = _("REED"), - .items = {}, +#line 12471 + .trainerClass = TRAINER_CLASS_SWIMMER_M, +#line 12472 + .trainerPic = TRAINER_PIC_SWIMMER_M, + .encounterMusic_gender = +#line 12474 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 12475 .doubleBattle = FALSE, +#line 12476 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Reed), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12478 + .species = SPECIES_SPHEAL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12480 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12479 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12482 + .species = SPECIES_SHARPEDO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12484 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12483 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 12486 [TRAINER_TISHA] = { - .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_F, +#line 12487 .trainerName = _("TISHA"), - .items = {}, +#line 12488 + .trainerClass = TRAINER_CLASS_SWIMMER_F, +#line 12489 + .trainerPic = TRAINER_PIC_SWIMMER_F, + .encounterMusic_gender = +#line 12490 +F_TRAINER_FEMALE | +#line 12491 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 12492 .doubleBattle = FALSE, +#line 12493 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Tisha), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 12495 + .species = SPECIES_CHINCHOU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12497 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12496 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 12499 [TRAINER_TORI_AND_TIA] = { - .trainerClass = TRAINER_CLASS_TWINS, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, - .trainerPic = TRAINER_PIC_TWINS, +#line 12500 .trainerName = _("TORI & TIA"), - .items = {}, +#line 12501 + .trainerClass = TRAINER_CLASS_TWINS, +#line 12502 + .trainerPic = TRAINER_PIC_TWINS, + .encounterMusic_gender = +#line 12504 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 12505 .doubleBattle = TRUE, +#line 12506 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_ToriAndTia), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12508 + .species = SPECIES_SPINDA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12510 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12509 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12512 + .species = SPECIES_SPINDA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12514 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12513 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 12516 [TRAINER_KIM_AND_IRIS] = { - .trainerClass = TRAINER_CLASS_SR_AND_JR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, - .trainerPic = TRAINER_PIC_SR_AND_JR, +#line 12517 .trainerName = _("KIM & IRIS"), - .items = {}, +#line 12518 + .trainerClass = TRAINER_CLASS_SR_AND_JR, +#line 12519 + .trainerPic = TRAINER_PIC_SR_AND_JR, + .encounterMusic_gender = +#line 12521 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 12522 .doubleBattle = TRUE, +#line 12523 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_KimAndIris), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12525 + .species = SPECIES_SWABLU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12527 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12526 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12528 + MOVE_SING, + MOVE_FURY_ATTACK, + MOVE_SAFEGUARD, + MOVE_AERIAL_ACE, + }, + }, + { +#line 12533 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12535 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12534 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12536 + MOVE_FLAMETHROWER, + MOVE_TAKE_DOWN, + MOVE_REST, + MOVE_EARTHQUAKE, + }, + }, + }, }, - +#line 12541 [TRAINER_TYRA_AND_IVY] = { - .trainerClass = TRAINER_CLASS_SR_AND_JR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, - .trainerPic = TRAINER_PIC_SR_AND_JR, +#line 12542 .trainerName = _("TYRA & IVY"), - .items = {}, +#line 12543 + .trainerClass = TRAINER_CLASS_SR_AND_JR, +#line 12544 + .trainerPic = TRAINER_PIC_SR_AND_JR, + .encounterMusic_gender = +#line 12546 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 12547 .doubleBattle = TRUE, +#line 12548 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_TyraAndIvy), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12550 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12552 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12551 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12553 + MOVE_GROWTH, + MOVE_STUN_SPORE, + MOVE_MEGA_DRAIN, + MOVE_LEECH_SEED, + }, + }, + { +#line 12558 + .species = SPECIES_GRAVELER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12560 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12559 + .lvl = 20, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12561 + MOVE_DEFENSE_CURL, + MOVE_ROLLOUT, + MOVE_MUD_SPORT, + MOVE_ROCK_THROW, + }, + }, + }, }, - +#line 12566 [TRAINER_MEL_AND_PAUL] = { - .trainerClass = TRAINER_CLASS_YOUNG_COUPLE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_YOUNG_COUPLE, +#line 12567 .trainerName = _("MEL & PAUL"), - .items = {}, +#line 12568 + .trainerClass = TRAINER_CLASS_YOUNG_COUPLE, +#line 12569 + .trainerPic = TRAINER_PIC_YOUNG_COUPLE, + .encounterMusic_gender = +#line 12571 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 12572 .doubleBattle = TRUE, +#line 12573 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_MelAndPaul), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12575 + .species = SPECIES_DUSTOX, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12577 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12576 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12578 + MOVE_GUST, + MOVE_PSYBEAM, + MOVE_TOXIC, + MOVE_PROTECT, + }, + }, + { +#line 12583 + .species = SPECIES_BEAUTIFLY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12585 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12584 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12586 + MOVE_GUST, + MOVE_MEGA_DRAIN, + MOVE_ATTRACT, + MOVE_STUN_SPORE, + }, + }, + }, }, - +#line 12591 [TRAINER_JOHN_AND_JAY_1] = { - .trainerClass = TRAINER_CLASS_OLD_COUPLE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_OLD_COUPLE, +#line 12592 .trainerName = _("JOHN & JAY"), - .items = {}, +#line 12593 + .trainerClass = TRAINER_CLASS_OLD_COUPLE, +#line 12594 + .trainerPic = TRAINER_PIC_OLD_COUPLE, + .encounterMusic_gender = +#line 12596 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 12597 .doubleBattle = TRUE, +#line 12598 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_JohnAndJay1), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12600 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12602 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 12601 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12603 + MOVE_PSYCHIC, + MOVE_FIRE_PUNCH, + MOVE_PSYCH_UP, + MOVE_PROTECT, + }, + }, + { +#line 12608 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12610 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 12609 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12611 + MOVE_FOCUS_PUNCH, + MOVE_ROCK_TOMB, + MOVE_REST, + MOVE_BELLY_DRUM, + }, + }, + }, }, - +#line 12616 [TRAINER_JOHN_AND_JAY_2] = { - .trainerClass = TRAINER_CLASS_OLD_COUPLE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_OLD_COUPLE, +#line 12617 .trainerName = _("JOHN & JAY"), - .items = {}, +#line 12618 + .trainerClass = TRAINER_CLASS_OLD_COUPLE, +#line 12619 + .trainerPic = TRAINER_PIC_OLD_COUPLE, + .encounterMusic_gender = +#line 12621 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 12622 .doubleBattle = TRUE, +#line 12623 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_JohnAndJay2), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12625 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12627 + .iv = TRAINER_PARTY_IVS(25, 25, 25, 25, 25, 25), +#line 12626 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12628 + MOVE_PSYCHIC, + MOVE_FIRE_PUNCH, + MOVE_PSYCH_UP, + MOVE_PROTECT, + }, + }, + { +#line 12633 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12635 + .iv = TRAINER_PARTY_IVS(25, 25, 25, 25, 25, 25), +#line 12634 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12636 + MOVE_FOCUS_PUNCH, + MOVE_ROCK_TOMB, + MOVE_REST, + MOVE_BELLY_DRUM, + }, + }, + }, }, - +#line 12641 [TRAINER_JOHN_AND_JAY_3] = { - .trainerClass = TRAINER_CLASS_OLD_COUPLE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_OLD_COUPLE, +#line 12642 .trainerName = _("JOHN & JAY"), - .items = {}, +#line 12643 + .trainerClass = TRAINER_CLASS_OLD_COUPLE, +#line 12644 + .trainerPic = TRAINER_PIC_OLD_COUPLE, + .encounterMusic_gender = +#line 12646 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 12647 .doubleBattle = TRUE, +#line 12648 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_JohnAndJay3), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12650 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12652 + .iv = TRAINER_PARTY_IVS(26, 26, 26, 26, 26, 26), +#line 12651 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12653 + MOVE_PSYCHIC, + MOVE_FIRE_PUNCH, + MOVE_PSYCH_UP, + MOVE_PROTECT, + }, + }, + { +#line 12658 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12660 + .iv = TRAINER_PARTY_IVS(26, 26, 26, 26, 26, 26), +#line 12659 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12661 + MOVE_FOCUS_PUNCH, + MOVE_ROCK_TOMB, + MOVE_REST, + MOVE_BELLY_DRUM, + }, + }, + }, }, - +#line 12666 [TRAINER_JOHN_AND_JAY_4] = { - .trainerClass = TRAINER_CLASS_OLD_COUPLE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_OLD_COUPLE, +#line 12667 .trainerName = _("JOHN & JAY"), - .items = {}, +#line 12668 + .trainerClass = TRAINER_CLASS_OLD_COUPLE, +#line 12669 + .trainerPic = TRAINER_PIC_OLD_COUPLE, + .encounterMusic_gender = +#line 12671 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 12672 .doubleBattle = TRUE, +#line 12673 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SETUP_FIRST_TURN, - .party = TRAINER_PARTY(sParty_JohnAndJay4), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12675 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12677 + .iv = TRAINER_PARTY_IVS(27, 27, 27, 27, 27, 27), +#line 12676 + .lvl = 49, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12678 + MOVE_PSYCHIC, + MOVE_FIRE_PUNCH, + MOVE_PSYCH_UP, + MOVE_PROTECT, + }, + }, + { +#line 12683 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12685 + .iv = TRAINER_PARTY_IVS(27, 27, 27, 27, 27, 27), +#line 12684 + .lvl = 49, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12686 + MOVE_FOCUS_PUNCH, + MOVE_ROCK_TOMB, + MOVE_REST, + MOVE_BELLY_DRUM, + }, + }, + }, }, - +#line 12691 [TRAINER_JOHN_AND_JAY_5] = { - .trainerClass = TRAINER_CLASS_OLD_COUPLE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_OLD_COUPLE, +#line 12692 .trainerName = _("JOHN & JAY"), - .items = {}, +#line 12693 + .trainerClass = TRAINER_CLASS_OLD_COUPLE, +#line 12694 + .trainerPic = TRAINER_PIC_OLD_COUPLE, + .encounterMusic_gender = +#line 12696 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 12697 .doubleBattle = TRUE, +#line 12698 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_JohnAndJay5), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12700 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12702 + .iv = TRAINER_PARTY_IVS(29, 29, 29, 29, 29, 29), +#line 12701 + .lvl = 52, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12703 + MOVE_PSYCHIC, + MOVE_FIRE_PUNCH, + MOVE_PSYCH_UP, + MOVE_PROTECT, + }, + }, + { +#line 12708 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12710 + .iv = TRAINER_PARTY_IVS(29, 29, 29, 29, 29, 29), +#line 12709 + .lvl = 52, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12711 + MOVE_FOCUS_PUNCH, + MOVE_ROCK_TOMB, + MOVE_REST, + MOVE_BELLY_DRUM, + }, + }, + }, }, - +#line 12716 [TRAINER_RELI_AND_IAN] = { - .trainerClass = TRAINER_CLASS_SIS_AND_BRO, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SIS_AND_BRO, +#line 12717 .trainerName = _("RELI & IAN"), - .items = {}, +#line 12718 + .trainerClass = TRAINER_CLASS_SIS_AND_BRO, +#line 12719 + .trainerPic = TRAINER_PIC_SIS_AND_BRO, + .encounterMusic_gender = +#line 12721 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 12722 .doubleBattle = TRUE, +#line 12723 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_ReliAndIan), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12725 + .species = SPECIES_AZUMARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12727 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12726 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12729 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12731 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12730 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 12733 [TRAINER_LILA_AND_ROY_1] = { - .trainerClass = TRAINER_CLASS_SIS_AND_BRO, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SIS_AND_BRO, +#line 12734 .trainerName = _("LILA & ROY"), - .items = {}, +#line 12735 + .trainerClass = TRAINER_CLASS_SIS_AND_BRO, +#line 12736 + .trainerPic = TRAINER_PIC_SIS_AND_BRO, + .encounterMusic_gender = +#line 12738 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 12739 .doubleBattle = TRUE, +#line 12740 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_LilaAndRoy1), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12742 + .species = SPECIES_CHINCHOU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12744 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12743 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12746 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12748 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12747 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 12750 [TRAINER_LILA_AND_ROY_2] = { - .trainerClass = TRAINER_CLASS_SIS_AND_BRO, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SIS_AND_BRO, +#line 12751 .trainerName = _("LILA & ROY"), - .items = {}, +#line 12752 + .trainerClass = TRAINER_CLASS_SIS_AND_BRO, +#line 12753 + .trainerPic = TRAINER_PIC_SIS_AND_BRO, + .encounterMusic_gender = +#line 12755 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 12756 .doubleBattle = TRUE, +#line 12757 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_LilaAndRoy2), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12759 + .species = SPECIES_CHINCHOU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12761 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12760 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12763 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12765 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12764 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 12767 [TRAINER_LILA_AND_ROY_3] = { - .trainerClass = TRAINER_CLASS_SIS_AND_BRO, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SIS_AND_BRO, +#line 12768 .trainerName = _("LILA & ROY"), - .items = {}, +#line 12769 + .trainerClass = TRAINER_CLASS_SIS_AND_BRO, +#line 12770 + .trainerPic = TRAINER_PIC_SIS_AND_BRO, + .encounterMusic_gender = +#line 12772 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 12773 .doubleBattle = TRUE, +#line 12774 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_LilaAndRoy3), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12776 + .species = SPECIES_LANTURN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12778 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12777 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12780 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12782 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12781 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 12784 [TRAINER_LILA_AND_ROY_4] = { - .trainerClass = TRAINER_CLASS_SIS_AND_BRO, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SIS_AND_BRO, +#line 12785 .trainerName = _("LILA & ROY"), - .items = {}, +#line 12786 + .trainerClass = TRAINER_CLASS_SIS_AND_BRO, +#line 12787 + .trainerPic = TRAINER_PIC_SIS_AND_BRO, + .encounterMusic_gender = +#line 12789 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 12790 .doubleBattle = TRUE, +#line 12791 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_LilaAndRoy4), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12793 + .species = SPECIES_LANTURN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12795 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12794 + .lvl = 48, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12797 + .species = SPECIES_SHARPEDO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12799 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12798 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 12801 [TRAINER_LILA_AND_ROY_5] = { - .trainerClass = TRAINER_CLASS_SIS_AND_BRO, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SIS_AND_BRO, +#line 12802 .trainerName = _("LILA & ROY"), - .items = {}, +#line 12803 + .trainerClass = TRAINER_CLASS_SIS_AND_BRO, +#line 12804 + .trainerPic = TRAINER_PIC_SIS_AND_BRO, + .encounterMusic_gender = +#line 12806 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 12807 .doubleBattle = TRUE, +#line 12808 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_LilaAndRoy5), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12810 + .species = SPECIES_LANTURN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12812 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12811 + .lvl = 51, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12814 + .species = SPECIES_SHARPEDO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12816 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12815 + .lvl = 49, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 12818 [TRAINER_LISA_AND_RAY] = { - .trainerClass = TRAINER_CLASS_SIS_AND_BRO, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SIS_AND_BRO, +#line 12819 .trainerName = _("LISA & RAY"), - .items = {}, +#line 12820 + .trainerClass = TRAINER_CLASS_SIS_AND_BRO, +#line 12821 + .trainerPic = TRAINER_PIC_SIS_AND_BRO, + .encounterMusic_gender = +#line 12823 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 12824 .doubleBattle = TRUE, +#line 12825 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_LisaAndRay), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12827 + .species = SPECIES_GOLDEEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12829 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12828 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12831 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12833 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12832 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 12835 [TRAINER_CHRIS] = { - .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_FISHERMAN, +#line 12836 .trainerName = _("CHRIS"), - .items = {}, +#line 12837 + .trainerClass = TRAINER_CLASS_FISHERMAN, +#line 12838 + .trainerPic = TRAINER_PIC_FISHERMAN, + .encounterMusic_gender = +#line 12840 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 12841 .doubleBattle = FALSE, +#line 12842 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Chris), + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 12844 + .species = SPECIES_MAGIKARP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12846 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12845 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12848 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12850 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12849 + .lvl = 20, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12852 + .species = SPECIES_FEEBAS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12854 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12853 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12856 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12858 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12857 + .lvl = 23, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 12860 [TRAINER_DAWSON] = { - .trainerClass = TRAINER_CLASS_RICH_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, - .trainerPic = TRAINER_PIC_RICH_BOY, +#line 12861 .trainerName = _("DAWSON"), - .items = {}, +#line 12862 + .trainerClass = TRAINER_CLASS_RICH_BOY, +#line 12863 + .trainerPic = TRAINER_PIC_RICH_BOY, + .encounterMusic_gender = +#line 12865 + TRAINER_ENCOUNTER_MUSIC_RICH, +#line 12866 .doubleBattle = FALSE, +#line 12867 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dawson), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12869 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12869 + .heldItem = ITEM_NUGGET, +#line 12871 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12870 + .lvl = 8, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12873 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12875 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12874 + .lvl = 8, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 12877 [TRAINER_SARAH] = { - .trainerClass = TRAINER_CLASS_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LADY, +#line 12878 .trainerName = _("SARAH"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 12879 + .trainerClass = TRAINER_CLASS_LADY, +#line 12880 + .trainerPic = TRAINER_PIC_LADY, + .encounterMusic_gender = +#line 12881 +F_TRAINER_FEMALE | +#line 12882 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 12883 + .items = { ITEM_FULL_RESTORE }, +#line 12884 .doubleBattle = FALSE, +#line 12885 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Sarah), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12887 + .species = SPECIES_LOTAD, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12889 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12888 + .lvl = 8, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12891 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12891 + .heldItem = ITEM_NUGGET, +#line 12893 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12892 + .lvl = 8, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 12895 [TRAINER_DARIAN] = { - .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_FISHERMAN, +#line 12896 .trainerName = _("DARIAN"), - .items = {}, +#line 12897 + .trainerClass = TRAINER_CLASS_FISHERMAN, +#line 12898 + .trainerPic = TRAINER_PIC_FISHERMAN, + .encounterMusic_gender = +#line 12900 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 12901 .doubleBattle = FALSE, +#line 12902 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Darian), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 12904 + .species = SPECIES_MAGIKARP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12906 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12905 + .lvl = 9, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 12908 [TRAINER_HAILEY] = { - .trainerClass = TRAINER_CLASS_TUBER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_TUBER_F, +#line 12909 .trainerName = _("HAILEY"), - .items = {}, +#line 12910 + .trainerClass = TRAINER_CLASS_TUBER_F, +#line 12911 + .trainerPic = TRAINER_PIC_TUBER_F, + .encounterMusic_gender = +#line 12912 +F_TRAINER_FEMALE | +#line 12913 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 12914 .doubleBattle = FALSE, +#line 12915 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Hailey), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 12917 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12919 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12918 + .lvl = 13, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 12921 [TRAINER_CHANDLER] = { - .trainerClass = TRAINER_CLASS_TUBER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_TUBER_M, +#line 12922 .trainerName = _("CHANDLER"), - .items = {}, +#line 12923 + .trainerClass = TRAINER_CLASS_TUBER_M, +#line 12924 + .trainerPic = TRAINER_PIC_TUBER_M, + .encounterMusic_gender = +#line 12926 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 12927 .doubleBattle = FALSE, +#line 12928 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Chandler), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12930 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12932 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12931 + .lvl = 12, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12934 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12936 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12935 + .lvl = 12, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 12938 [TRAINER_KALEB] = { - .trainerClass = TRAINER_CLASS_POKEFAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, - .trainerPic = TRAINER_PIC_POKEFAN_M, +#line 12939 .trainerName = _("KALEB"), - .items = {}, +#line 12940 + .trainerClass = TRAINER_CLASS_POKEFAN, +#line 12941 + .trainerPic = TRAINER_PIC_POKEFAN_M, + .encounterMusic_gender = +#line 12943 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 12944 .doubleBattle = FALSE, +#line 12945 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Kaleb), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12947 + .species = SPECIES_MINUN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12947 + .heldItem = ITEM_ORAN_BERRY, +#line 12949 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12948 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12951 + .species = SPECIES_PLUSLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12951 + .heldItem = ITEM_ORAN_BERRY, +#line 12953 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12952 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 12955 [TRAINER_JOSEPH] = { - .trainerClass = TRAINER_CLASS_GUITARIST, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_GUITARIST, +#line 12956 .trainerName = _("JOSEPH"), - .items = {}, +#line 12957 + .trainerClass = TRAINER_CLASS_GUITARIST, +#line 12958 + .trainerPic = TRAINER_PIC_GUITARIST, + .encounterMusic_gender = +#line 12960 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 12961 .doubleBattle = FALSE, +#line 12962 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Joseph), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12964 + .species = SPECIES_ELECTRIKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12966 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12965 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12968 + .species = SPECIES_VOLTORB, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12970 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12969 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 12972 [TRAINER_ALYSSA] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F, +#line 12973 .trainerName = _("ALYSSA"), - .items = {}, +#line 12974 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 12975 + .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F, + .encounterMusic_gender = +#line 12976 +F_TRAINER_FEMALE | +#line 12977 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 12978 .doubleBattle = FALSE, +#line 12979 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Alyssa), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 12981 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12983 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12982 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 12985 [TRAINER_MARCOS] = { - .trainerClass = TRAINER_CLASS_GUITARIST, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_GUITARIST, +#line 12986 .trainerName = _("MARCOS"), - .items = {}, +#line 12987 + .trainerClass = TRAINER_CLASS_GUITARIST, +#line 12988 + .trainerPic = TRAINER_PIC_GUITARIST, + .encounterMusic_gender = +#line 12990 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 12991 .doubleBattle = FALSE, +#line 12992 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Marcos), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 12994 + .species = SPECIES_VOLTORB, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12996 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 12995 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 12998 [TRAINER_RHETT] = { - .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_BLACK_BELT, +#line 12999 .trainerName = _("RHETT"), - .items = {}, +#line 13000 + .trainerClass = TRAINER_CLASS_BLACK_BELT, +#line 13001 + .trainerPic = TRAINER_PIC_BLACK_BELT, + .encounterMusic_gender = +#line 13003 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 13004 .doubleBattle = FALSE, +#line 13005 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Rhett), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13007 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13009 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 13008 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13011 [TRAINER_TYRON] = { - .trainerClass = TRAINER_CLASS_CAMPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_CAMPER, +#line 13012 .trainerName = _("TYRON"), - .items = {}, +#line 13013 + .trainerClass = TRAINER_CLASS_CAMPER, +#line 13014 + .trainerPic = TRAINER_PIC_CAMPER, + .encounterMusic_gender = +#line 13016 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 13017 .doubleBattle = FALSE, +#line 13018 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Tyron), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13020 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13022 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13021 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13024 [TRAINER_CELINA] = { - .trainerClass = TRAINER_CLASS_AROMA_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_AROMA_LADY, +#line 13025 .trainerName = _("CELINA"), - .items = {}, +#line 13026 + .trainerClass = TRAINER_CLASS_AROMA_LADY, +#line 13027 + .trainerPic = TRAINER_PIC_AROMA_LADY, + .encounterMusic_gender = +#line 13028 +F_TRAINER_FEMALE | +#line 13029 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 13030 .doubleBattle = FALSE, +#line 13031 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Celina), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13033 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13035 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13034 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13037 [TRAINER_BIANCA] = { - .trainerClass = TRAINER_CLASS_PICNICKER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_PICNICKER, +#line 13038 .trainerName = _("BIANCA"), - .items = {}, +#line 13039 + .trainerClass = TRAINER_CLASS_PICNICKER, +#line 13040 + .trainerPic = TRAINER_PIC_PICNICKER, + .encounterMusic_gender = +#line 13041 +F_TRAINER_FEMALE | +#line 13042 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 13043 .doubleBattle = FALSE, +#line 13044 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Bianca), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13046 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13048 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13047 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13050 [TRAINER_HAYDEN] = { - .trainerClass = TRAINER_CLASS_KINDLER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_KINDLER, +#line 13051 .trainerName = _("HAYDEN"), - .items = {}, +#line 13052 + .trainerClass = TRAINER_CLASS_KINDLER, +#line 13053 + .trainerPic = TRAINER_PIC_KINDLER, + .encounterMusic_gender = +#line 13055 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 13056 .doubleBattle = FALSE, +#line 13057 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Hayden), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13059 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13061 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13060 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13063 [TRAINER_SOPHIE] = { - .trainerClass = TRAINER_CLASS_PICNICKER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_PICNICKER, +#line 13064 .trainerName = _("SOPHIE"), - .items = {}, +#line 13065 + .trainerClass = TRAINER_CLASS_PICNICKER, +#line 13066 + .trainerPic = TRAINER_PIC_PICNICKER, + .encounterMusic_gender = +#line 13067 +F_TRAINER_FEMALE | +#line 13068 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 13069 .doubleBattle = FALSE, +#line 13070 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Sophie), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13072 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13074 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13073 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13076 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13078 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13077 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13080 [TRAINER_COBY] = { - .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_BIRD_KEEPER, +#line 13081 .trainerName = _("COBY"), - .items = {}, +#line 13082 + .trainerClass = TRAINER_CLASS_BIRD_KEEPER, +#line 13083 + .trainerPic = TRAINER_PIC_BIRD_KEEPER, + .encounterMusic_gender = +#line 13085 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 13086 .doubleBattle = FALSE, +#line 13087 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Coby), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13089 + .species = SPECIES_SKARMORY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13091 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13090 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13093 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13095 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13094 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13097 [TRAINER_LAWRENCE] = { - .trainerClass = TRAINER_CLASS_CAMPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_CAMPER, +#line 13098 .trainerName = _("LAWRENCE"), - .items = {}, +#line 13099 + .trainerClass = TRAINER_CLASS_CAMPER, +#line 13100 + .trainerPic = TRAINER_PIC_CAMPER, + .encounterMusic_gender = +#line 13102 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 13103 .doubleBattle = FALSE, +#line 13104 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Lawrence), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13106 + .species = SPECIES_BALTOY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13108 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13107 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13110 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13112 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13111 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13114 [TRAINER_WYATT] = { - .trainerClass = TRAINER_CLASS_POKEMANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_POKEMANIAC, +#line 13115 .trainerName = _("WYATT"), - .items = {}, +#line 13116 + .trainerClass = TRAINER_CLASS_POKEMANIAC, +#line 13117 + .trainerPic = TRAINER_PIC_POKEMANIAC, + .encounterMusic_gender = +#line 13119 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 13120 .doubleBattle = FALSE, +#line 13121 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Wyatt), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13123 + .species = SPECIES_ARON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13125 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13124 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13127 + .species = SPECIES_ARON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13129 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13128 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13131 [TRAINER_ANGELINA] = { - .trainerClass = TRAINER_CLASS_PICNICKER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_PICNICKER, +#line 13132 .trainerName = _("ANGELINA"), - .items = {}, +#line 13133 + .trainerClass = TRAINER_CLASS_PICNICKER, +#line 13134 + .trainerPic = TRAINER_PIC_PICNICKER, + .encounterMusic_gender = +#line 13135 +F_TRAINER_FEMALE | +#line 13136 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 13137 .doubleBattle = FALSE, +#line 13138 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Angelina), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13140 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13142 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13141 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13144 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13146 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13145 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13148 [TRAINER_KAI] = { - .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_FISHERMAN, +#line 13149 .trainerName = _("KAI"), - .items = {}, +#line 13150 + .trainerClass = TRAINER_CLASS_FISHERMAN, +#line 13151 + .trainerPic = TRAINER_PIC_FISHERMAN, + .encounterMusic_gender = +#line 13153 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 13154 .doubleBattle = FALSE, +#line 13155 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Kai), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13157 + .species = SPECIES_BARBOACH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13159 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13158 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13161 [TRAINER_CHARLOTTE] = { - .trainerClass = TRAINER_CLASS_PICNICKER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_PICNICKER, +#line 13162 .trainerName = _("CHARLOTTE"), - .items = {}, +#line 13163 + .trainerClass = TRAINER_CLASS_PICNICKER, +#line 13164 + .trainerPic = TRAINER_PIC_PICNICKER, + .encounterMusic_gender = +#line 13165 +F_TRAINER_FEMALE | +#line 13166 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 13167 .doubleBattle = FALSE, +#line 13168 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Charlotte), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13170 + .species = SPECIES_NUZLEAF, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13172 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13171 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13174 [TRAINER_DEANDRE] = { - .trainerClass = TRAINER_CLASS_YOUNGSTER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_YOUNGSTER, +#line 13175 .trainerName = _("DEANDRE"), - .items = {}, +#line 13176 + .trainerClass = TRAINER_CLASS_YOUNGSTER, +#line 13177 + .trainerPic = TRAINER_PIC_YOUNGSTER, + .encounterMusic_gender = +#line 13179 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 13180 .doubleBattle = FALSE, +#line 13181 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Deandre), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 13183 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13185 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13184 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13187 + .species = SPECIES_ARON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13189 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13188 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13191 + .species = SPECIES_ELECTRIKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13193 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13192 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13195 [TRAINER_GRUNT_MAGMA_HIDEOUT_1] = { - .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, - .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, +#line 13196 .trainerName = _("GRUNT"), - .items = {}, +#line 13197 + .trainerClass = TRAINER_CLASS_TEAM_MAGMA, +#line 13198 + .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, + .encounterMusic_gender = +#line 13200 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13201 .doubleBattle = FALSE, +#line 13202 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMagmaHideout1), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13204 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13206 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13205 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13208 [TRAINER_GRUNT_MAGMA_HIDEOUT_2] = { - .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, - .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, +#line 13209 .trainerName = _("GRUNT"), - .items = {}, +#line 13210 + .trainerClass = TRAINER_CLASS_TEAM_MAGMA, +#line 13211 + .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, + .encounterMusic_gender = +#line 13213 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13214 .doubleBattle = FALSE, +#line 13215 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMagmaHideout2), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13217 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13219 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13218 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13221 [TRAINER_GRUNT_MAGMA_HIDEOUT_3] = { - .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, - .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, +#line 13222 .trainerName = _("GRUNT"), - .items = {}, +#line 13223 + .trainerClass = TRAINER_CLASS_TEAM_MAGMA, +#line 13224 + .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, + .encounterMusic_gender = +#line 13226 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13227 .doubleBattle = FALSE, +#line 13228 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMagmaHideout3), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13230 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13232 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13231 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13234 [TRAINER_GRUNT_MAGMA_HIDEOUT_4] = { - .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, - .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, +#line 13235 .trainerName = _("GRUNT"), - .items = {}, +#line 13236 + .trainerClass = TRAINER_CLASS_TEAM_MAGMA, +#line 13237 + .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, + .encounterMusic_gender = +#line 13239 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13240 .doubleBattle = FALSE, +#line 13241 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMagmaHideout4), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13243 + .species = SPECIES_BALTOY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13245 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13244 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13247 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13249 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13248 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13251 [TRAINER_GRUNT_MAGMA_HIDEOUT_5] = { - .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, - .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, +#line 13252 .trainerName = _("GRUNT"), - .items = {}, +#line 13253 + .trainerClass = TRAINER_CLASS_TEAM_MAGMA, +#line 13254 + .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, + .encounterMusic_gender = +#line 13256 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13257 .doubleBattle = FALSE, +#line 13258 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMagmaHideout5), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13260 + .species = SPECIES_BALTOY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13262 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13261 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13264 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13266 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13265 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13268 [TRAINER_GRUNT_MAGMA_HIDEOUT_6] = { - .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, - .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, +#line 13269 .trainerName = _("GRUNT"), - .items = {}, +#line 13270 + .trainerClass = TRAINER_CLASS_TEAM_MAGMA, +#line 13271 + .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, + .encounterMusic_gender = +#line 13273 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13274 .doubleBattle = FALSE, +#line 13275 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMagmaHideout6), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13277 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13279 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13278 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13281 [TRAINER_GRUNT_MAGMA_HIDEOUT_7] = { - .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, - .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, +#line 13282 .trainerName = _("GRUNT"), - .items = {}, +#line 13283 + .trainerClass = TRAINER_CLASS_TEAM_MAGMA, +#line 13284 + .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, + .encounterMusic_gender = +#line 13286 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13287 .doubleBattle = FALSE, +#line 13288 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMagmaHideout7), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13290 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13292 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13291 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13294 [TRAINER_GRUNT_MAGMA_HIDEOUT_8] = { - .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, - .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, +#line 13295 .trainerName = _("GRUNT"), - .items = {}, +#line 13296 + .trainerClass = TRAINER_CLASS_TEAM_MAGMA, +#line 13297 + .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, + .encounterMusic_gender = +#line 13299 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13300 .doubleBattle = FALSE, +#line 13301 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMagmaHideout8), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13303 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13305 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13304 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13307 [TRAINER_GRUNT_MAGMA_HIDEOUT_9] = { - .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, - .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, +#line 13308 .trainerName = _("GRUNT"), - .items = {}, +#line 13309 + .trainerClass = TRAINER_CLASS_TEAM_MAGMA, +#line 13310 + .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, + .encounterMusic_gender = +#line 13312 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13313 .doubleBattle = FALSE, +#line 13314 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMagmaHideout9), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13316 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13318 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13317 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13320 [TRAINER_GRUNT_MAGMA_HIDEOUT_10] = { - .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, - .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, +#line 13321 .trainerName = _("GRUNT"), - .items = {}, +#line 13322 + .trainerClass = TRAINER_CLASS_TEAM_MAGMA, +#line 13323 + .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, + .encounterMusic_gender = +#line 13325 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13326 .doubleBattle = FALSE, +#line 13327 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMagmaHideout10), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13329 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13331 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13330 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13333 [TRAINER_GRUNT_MAGMA_HIDEOUT_11] = { - .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, - .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, +#line 13334 .trainerName = _("GRUNT"), - .items = {}, +#line 13335 + .trainerClass = TRAINER_CLASS_TEAM_MAGMA, +#line 13336 + .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, + .encounterMusic_gender = +#line 13338 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13339 .doubleBattle = FALSE, +#line 13340 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMagmaHideout11), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13342 + .species = SPECIES_BALTOY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13344 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13343 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13346 [TRAINER_GRUNT_MAGMA_HIDEOUT_12] = { - .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, - .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, +#line 13347 .trainerName = _("GRUNT"), - .items = {}, +#line 13348 + .trainerClass = TRAINER_CLASS_TEAM_MAGMA, +#line 13349 + .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, + .encounterMusic_gender = +#line 13351 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13352 .doubleBattle = FALSE, +#line 13353 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMagmaHideout12), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13355 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13357 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13356 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13359 [TRAINER_GRUNT_MAGMA_HIDEOUT_13] = { - .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, - .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, +#line 13360 .trainerName = _("GRUNT"), - .items = {}, +#line 13361 + .trainerClass = TRAINER_CLASS_TEAM_MAGMA, +#line 13362 + .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, + .encounterMusic_gender = +#line 13364 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13365 .doubleBattle = FALSE, +#line 13366 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMagmaHideout13), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13368 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13370 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13369 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13372 [TRAINER_GRUNT_MAGMA_HIDEOUT_14] = { - .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MAGMA, - .trainerPic = TRAINER_PIC_MAGMA_GRUNT_F, +#line 13373 .trainerName = _("GRUNT"), - .items = {}, +#line 13374 + .trainerClass = TRAINER_CLASS_TEAM_MAGMA, +#line 13375 + .trainerPic = TRAINER_PIC_MAGMA_GRUNT_F, + .encounterMusic_gender = +#line 13376 +F_TRAINER_FEMALE | +#line 13377 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13378 .doubleBattle = FALSE, +#line 13379 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMagmaHideout14), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13381 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13383 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13382 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13385 [TRAINER_GRUNT_MAGMA_HIDEOUT_15] = { - .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MAGMA, - .trainerPic = TRAINER_PIC_MAGMA_GRUNT_F, +#line 13386 .trainerName = _("GRUNT"), - .items = {}, +#line 13387 + .trainerClass = TRAINER_CLASS_TEAM_MAGMA, +#line 13388 + .trainerPic = TRAINER_PIC_MAGMA_GRUNT_F, + .encounterMusic_gender = +#line 13389 +F_TRAINER_FEMALE | +#line 13390 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13391 .doubleBattle = FALSE, +#line 13392 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMagmaHideout15), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13394 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13396 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13395 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13398 [TRAINER_GRUNT_MAGMA_HIDEOUT_16] = { - .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MAGMA, - .trainerPic = TRAINER_PIC_MAGMA_GRUNT_F, +#line 13399 .trainerName = _("GRUNT"), - .items = {}, +#line 13400 + .trainerClass = TRAINER_CLASS_TEAM_MAGMA, +#line 13401 + .trainerPic = TRAINER_PIC_MAGMA_GRUNT_F, + .encounterMusic_gender = +#line 13402 +F_TRAINER_FEMALE | +#line 13403 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13404 .doubleBattle = FALSE, +#line 13405 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMagmaHideout16), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13407 + .species = SPECIES_BALTOY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13409 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13408 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13411 [TRAINER_TABITHA_MAGMA_HIDEOUT] = { - .trainerClass = TRAINER_CLASS_MAGMA_ADMIN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, - .trainerPic = TRAINER_PIC_MAGMA_ADMIN, +#line 13412 .trainerName = _("TABITHA"), - .items = {}, +#line 13413 + .trainerClass = TRAINER_CLASS_MAGMA_ADMIN, +#line 13414 + .trainerPic = TRAINER_PIC_MAGMA_ADMIN, + .encounterMusic_gender = +#line 13416 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13417 .doubleBattle = FALSE, +#line 13418 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_TabithaMagmaHideout), + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 13420 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13422 + .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), +#line 13421 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13424 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13426 + .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), +#line 13425 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13428 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13430 + .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), +#line 13429 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13432 + .species = SPECIES_CAMERUPT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13434 + .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), +#line 13433 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13436 [TRAINER_DARCY] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_F, +#line 13437 .trainerName = _("DARCY"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 13438 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 13439 + .trainerPic = TRAINER_PIC_COOLTRAINER_F, + .encounterMusic_gender = +#line 13440 +F_TRAINER_FEMALE | +#line 13441 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 13442 + .items = { ITEM_HYPER_POTION }, +#line 13443 .doubleBattle = FALSE, +#line 13444 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Darcy), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13446 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13448 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13447 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13450 + .species = SPECIES_CAMERUPT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13452 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13451 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13454 [TRAINER_MAXIE_MOSSDEEP] = { - .trainerClass = TRAINER_CLASS_MAGMA_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, - .trainerPic = TRAINER_PIC_MAGMA_LEADER_MAXIE, +#line 13455 .trainerName = _("MAXIE"), - .items = {}, +#line 13456 + .trainerClass = TRAINER_CLASS_MAGMA_LEADER, +#line 13457 + .trainerPic = TRAINER_PIC_MAGMA_LEADER_MAXIE, + .encounterMusic_gender = +#line 13459 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13460 .doubleBattle = FALSE, +#line 13461 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_MaxieMossdeep), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 13463 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13465 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 13464 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13467 + .species = SPECIES_CROBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13469 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 13468 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13471 + .species = SPECIES_CAMERUPT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13473 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 13472 + .lvl = 44, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13475 [TRAINER_PETE] = { - .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_M, +#line 13476 .trainerName = _("PETE"), - .items = {}, +#line 13477 + .trainerClass = TRAINER_CLASS_SWIMMER_M, +#line 13478 + .trainerPic = TRAINER_PIC_SWIMMER_M, + .encounterMusic_gender = +#line 13480 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 13481 .doubleBattle = FALSE, +#line 13482 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Pete), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13484 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13486 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13485 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13488 [TRAINER_ISABELLE] = { - .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMER_F, +#line 13489 .trainerName = _("ISABELLE"), - .items = {}, +#line 13490 + .trainerClass = TRAINER_CLASS_SWIMMER_F, +#line 13491 + .trainerPic = TRAINER_PIC_SWIMMER_F, + .encounterMusic_gender = +#line 13492 +F_TRAINER_FEMALE | +#line 13493 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 13494 .doubleBattle = FALSE, +#line 13495 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Isabelle), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13497 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13499 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13498 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13501 [TRAINER_ANDRES_1] = { - .trainerClass = TRAINER_CLASS_RUIN_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_RUIN_MANIAC, +#line 13502 .trainerName = _("ANDRES"), - .items = {}, +#line 13503 + .trainerClass = TRAINER_CLASS_RUIN_MANIAC, +#line 13504 + .trainerPic = TRAINER_PIC_RUIN_MANIAC, + .encounterMusic_gender = +#line 13506 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 13507 .doubleBattle = FALSE, +#line 13508 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Andres1), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13510 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13512 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 13511 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13514 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13516 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 13515 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13518 [TRAINER_JOSUE] = { - .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_BIRD_KEEPER, +#line 13519 .trainerName = _("JOSUE"), - .items = {}, +#line 13520 + .trainerClass = TRAINER_CLASS_BIRD_KEEPER, +#line 13521 + .trainerPic = TRAINER_PIC_BIRD_KEEPER, + .encounterMusic_gender = +#line 13523 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 13524 .doubleBattle = FALSE, +#line 13525 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Josue), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13527 + .species = SPECIES_TAILLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13529 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 13528 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13531 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13533 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 13532 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13535 [TRAINER_CAMRON] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, +#line 13536 .trainerName = _("CAMRON"), - .items = {}, +#line 13537 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 13538 + .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, + .encounterMusic_gender = +#line 13540 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 13541 .doubleBattle = FALSE, +#line 13542 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Camron), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13544 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13546 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13545 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13548 [TRAINER_CORY_1] = { - .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_SAILOR, +#line 13549 .trainerName = _("CORY"), - .items = {}, +#line 13550 + .trainerClass = TRAINER_CLASS_SAILOR, +#line 13551 + .trainerPic = TRAINER_PIC_SAILOR, + .encounterMusic_gender = +#line 13553 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 13554 .doubleBattle = FALSE, +#line 13555 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cory1), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 13557 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13559 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13558 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13561 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13563 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13562 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13565 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13567 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13566 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13569 [TRAINER_CAROLINA] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_F, +#line 13570 .trainerName = _("CAROLINA"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 13571 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 13572 + .trainerPic = TRAINER_PIC_COOLTRAINER_F, + .encounterMusic_gender = +#line 13573 +F_TRAINER_FEMALE | +#line 13574 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 13575 + .items = { ITEM_HYPER_POTION }, +#line 13576 .doubleBattle = FALSE, +#line 13577 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Carolina), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 13579 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13581 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 13580 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13583 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13585 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 13584 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13587 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13589 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 13588 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13591 [TRAINER_ELIJAH] = { - .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_BIRD_KEEPER, +#line 13592 .trainerName = _("ELIJAH"), - .items = {}, +#line 13593 + .trainerClass = TRAINER_CLASS_BIRD_KEEPER, +#line 13594 + .trainerPic = TRAINER_PIC_BIRD_KEEPER, + .encounterMusic_gender = +#line 13596 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 13597 .doubleBattle = FALSE, +#line 13598 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Elijah), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13600 + .species = SPECIES_SKARMORY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13602 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13601 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13604 + .species = SPECIES_SKARMORY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13606 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13605 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13608 [TRAINER_CELIA] = { - .trainerClass = TRAINER_CLASS_PICNICKER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_PICNICKER, +#line 13609 .trainerName = _("CELIA"), - .items = {}, +#line 13610 + .trainerClass = TRAINER_CLASS_PICNICKER, +#line 13611 + .trainerPic = TRAINER_PIC_PICNICKER, + .encounterMusic_gender = +#line 13612 +F_TRAINER_FEMALE | +#line 13613 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 13614 .doubleBattle = FALSE, +#line 13615 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Celia), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13617 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13619 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13618 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13621 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13623 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13622 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13625 [TRAINER_BRYAN] = { - .trainerClass = TRAINER_CLASS_RUIN_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_RUIN_MANIAC, +#line 13626 .trainerName = _("BRYAN"), - .items = {}, +#line 13627 + .trainerClass = TRAINER_CLASS_RUIN_MANIAC, +#line 13628 + .trainerPic = TRAINER_PIC_RUIN_MANIAC, + .encounterMusic_gender = +#line 13630 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 13631 .doubleBattle = FALSE, +#line 13632 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Bryan), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13634 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13636 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13635 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13638 + .species = SPECIES_SANDSLASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13640 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13639 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13642 [TRAINER_BRANDEN] = { - .trainerClass = TRAINER_CLASS_CAMPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_CAMPER, +#line 13643 .trainerName = _("BRANDEN"), - .items = {}, +#line 13644 + .trainerClass = TRAINER_CLASS_CAMPER, +#line 13645 + .trainerPic = TRAINER_PIC_CAMPER, + .encounterMusic_gender = +#line 13647 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 13648 .doubleBattle = FALSE, +#line 13649 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Branden), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13651 + .species = SPECIES_TAILLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13653 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13652 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13655 + .species = SPECIES_NUZLEAF, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13657 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13656 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13659 [TRAINER_BRYANT] = { - .trainerClass = TRAINER_CLASS_KINDLER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_KINDLER, +#line 13660 .trainerName = _("BRYANT"), - .items = {}, +#line 13661 + .trainerClass = TRAINER_CLASS_KINDLER, +#line 13662 + .trainerPic = TRAINER_PIC_KINDLER, + .encounterMusic_gender = +#line 13664 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 13665 .doubleBattle = FALSE, +#line 13666 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Bryant), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13668 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13670 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13669 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13672 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13674 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13673 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13676 [TRAINER_SHAYLA] = { - .trainerClass = TRAINER_CLASS_AROMA_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_AROMA_LADY, +#line 13677 .trainerName = _("SHAYLA"), - .items = {}, +#line 13678 + .trainerClass = TRAINER_CLASS_AROMA_LADY, +#line 13679 + .trainerPic = TRAINER_PIC_AROMA_LADY, + .encounterMusic_gender = +#line 13680 +F_TRAINER_FEMALE | +#line 13681 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 13682 .doubleBattle = FALSE, +#line 13683 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Shayla), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13685 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13687 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13686 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13689 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13691 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13690 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13693 [TRAINER_KYRA] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F, +#line 13694 .trainerName = _("KYRA"), - .items = {}, +#line 13695 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 13696 + .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F, + .encounterMusic_gender = +#line 13697 +F_TRAINER_FEMALE | +#line 13698 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 13699 .doubleBattle = FALSE, +#line 13700 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Kyra), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13702 + .species = SPECIES_DODUO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13704 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13703 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13706 + .species = SPECIES_DODRIO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13708 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13707 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13710 [TRAINER_JAIDEN] = { - .trainerClass = TRAINER_CLASS_NINJA_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_NINJA_BOY, +#line 13711 .trainerName = _("JAIDEN"), - .items = {}, +#line 13712 + .trainerClass = TRAINER_CLASS_NINJA_BOY, +#line 13713 + .trainerPic = TRAINER_PIC_NINJA_BOY, + .encounterMusic_gender = +#line 13715 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 13716 .doubleBattle = FALSE, +#line 13717 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jaiden), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13719 + .species = SPECIES_NINJASK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13721 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13720 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13723 + .species = SPECIES_GULPIN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13725 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13724 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13727 [TRAINER_ALIX] = { - .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_PSYCHIC_F, +#line 13728 .trainerName = _("ALIX"), - .items = {}, +#line 13729 + .trainerClass = TRAINER_CLASS_PSYCHIC, +#line 13730 + .trainerPic = TRAINER_PIC_PSYCHIC_F, + .encounterMusic_gender = +#line 13731 +F_TRAINER_FEMALE | +#line 13732 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 13733 .doubleBattle = FALSE, +#line 13734 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Alix), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13736 + .species = SPECIES_KADABRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13738 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13737 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13740 + .species = SPECIES_KIRLIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13742 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13741 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13744 [TRAINER_HELENE] = { - .trainerClass = TRAINER_CLASS_BATTLE_GIRL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_BATTLE_GIRL, +#line 13745 .trainerName = _("HELENE"), - .items = {}, +#line 13746 + .trainerClass = TRAINER_CLASS_BATTLE_GIRL, +#line 13747 + .trainerPic = TRAINER_PIC_BATTLE_GIRL, + .encounterMusic_gender = +#line 13748 +F_TRAINER_FEMALE | +#line 13749 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 13750 .doubleBattle = FALSE, +#line 13751 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Helene), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13753 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13755 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13754 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13757 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13759 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13758 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13761 [TRAINER_MARLENE] = { - .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_PSYCHIC_F, +#line 13762 .trainerName = _("MARLENE"), - .items = {}, +#line 13763 + .trainerClass = TRAINER_CLASS_PSYCHIC, +#line 13764 + .trainerPic = TRAINER_PIC_PSYCHIC_F, + .encounterMusic_gender = +#line 13765 +F_TRAINER_FEMALE | +#line 13766 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 13767 .doubleBattle = FALSE, +#line 13768 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Marlene), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13770 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13772 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13771 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13774 + .species = SPECIES_SPOINK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13776 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13775 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13778 [TRAINER_DEVAN] = { - .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_HIKER, +#line 13779 .trainerName = _("DEVAN"), - .items = {}, +#line 13780 + .trainerClass = TRAINER_CLASS_HIKER, +#line 13781 + .trainerPic = TRAINER_PIC_HIKER, + .encounterMusic_gender = +#line 13783 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 13784 .doubleBattle = FALSE, +#line 13785 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Devan), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13787 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13789 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13788 + .lvl = 8, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13791 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13793 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13792 + .lvl = 8, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13795 [TRAINER_JOHNSON] = { - .trainerClass = TRAINER_CLASS_YOUNGSTER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_YOUNGSTER, +#line 13796 .trainerName = _("JOHNSON"), - .items = {}, +#line 13797 + .trainerClass = TRAINER_CLASS_YOUNGSTER, +#line 13798 + .trainerPic = TRAINER_PIC_YOUNGSTER, + .encounterMusic_gender = +#line 13800 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 13801 .doubleBattle = FALSE, +#line 13802 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Johnson), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13804 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13806 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13805 + .lvl = 8, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13808 + .species = SPECIES_LOTAD, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13810 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13809 + .lvl = 8, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13812 [TRAINER_MELINA] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F, +#line 13813 .trainerName = _("MELINA"), - .items = {}, +#line 13814 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 13815 + .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F, + .encounterMusic_gender = +#line 13816 +F_TRAINER_FEMALE | +#line 13817 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 13818 .doubleBattle = FALSE, +#line 13819 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Melina), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13821 + .species = SPECIES_DODUO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13823 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13822 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13825 [TRAINER_BRANDI] = { - .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_PSYCHIC_F, +#line 13826 .trainerName = _("BRANDI"), - .items = {}, +#line 13827 + .trainerClass = TRAINER_CLASS_PSYCHIC, +#line 13828 + .trainerPic = TRAINER_PIC_PSYCHIC_F, + .encounterMusic_gender = +#line 13829 +F_TRAINER_FEMALE | +#line 13830 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 13831 .doubleBattle = FALSE, +#line 13832 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Brandi), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13834 + .species = SPECIES_RALTS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13836 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13835 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13838 [TRAINER_AISHA] = { - .trainerClass = TRAINER_CLASS_BATTLE_GIRL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_BATTLE_GIRL, +#line 13839 .trainerName = _("AISHA"), - .items = {}, +#line 13840 + .trainerClass = TRAINER_CLASS_BATTLE_GIRL, +#line 13841 + .trainerPic = TRAINER_PIC_BATTLE_GIRL, + .encounterMusic_gender = +#line 13842 +F_TRAINER_FEMALE | +#line 13843 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 13844 .doubleBattle = FALSE, +#line 13845 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Aisha), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13847 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13849 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13848 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13851 [TRAINER_MAKAYLA] = { - .trainerClass = TRAINER_CLASS_EXPERT, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_EXPERT_F, +#line 13852 .trainerName = _("MAKAYLA"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 13853 + .trainerClass = TRAINER_CLASS_EXPERT, +#line 13854 + .trainerPic = TRAINER_PIC_EXPERT_F, + .encounterMusic_gender = +#line 13855 +F_TRAINER_FEMALE | +#line 13856 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 13857 + .items = { ITEM_HYPER_POTION }, +#line 13858 .doubleBattle = FALSE, +#line 13859 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Makayla), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13861 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13863 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13862 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13865 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13867 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13866 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13869 [TRAINER_FABIAN] = { - .trainerClass = TRAINER_CLASS_GUITARIST, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_GUITARIST, +#line 13870 .trainerName = _("FABIAN"), - .items = {}, +#line 13871 + .trainerClass = TRAINER_CLASS_GUITARIST, +#line 13872 + .trainerPic = TRAINER_PIC_GUITARIST, + .encounterMusic_gender = +#line 13874 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 13875 .doubleBattle = FALSE, +#line 13876 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Fabian), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13878 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13880 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13879 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13882 [TRAINER_DAYTON] = { - .trainerClass = TRAINER_CLASS_KINDLER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_KINDLER, +#line 13883 .trainerName = _("DAYTON"), - .items = {}, +#line 13884 + .trainerClass = TRAINER_CLASS_KINDLER, +#line 13885 + .trainerPic = TRAINER_PIC_KINDLER, + .encounterMusic_gender = +#line 13887 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 13888 .doubleBattle = FALSE, +#line 13889 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dayton), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13891 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13893 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13892 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13895 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13897 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13896 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13899 [TRAINER_RACHEL] = { - .trainerClass = TRAINER_CLASS_PARASOL_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_PARASOL_LADY, +#line 13900 .trainerName = _("RACHEL"), - .items = {}, +#line 13901 + .trainerClass = TRAINER_CLASS_PARASOL_LADY, +#line 13902 + .trainerPic = TRAINER_PIC_PARASOL_LADY, + .encounterMusic_gender = +#line 13903 +F_TRAINER_FEMALE | +#line 13904 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 13905 .doubleBattle = FALSE, +#line 13906 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Rachel), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13908 + .species = SPECIES_GOLDEEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13910 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13909 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13912 [TRAINER_LEONEL] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_M, +#line 13913 .trainerName = _("LEONEL"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 13914 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 13915 + .trainerPic = TRAINER_PIC_COOLTRAINER_M, + .encounterMusic_gender = +#line 13917 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 13918 + .items = { ITEM_HYPER_POTION }, +#line 13919 .doubleBattle = FALSE, +#line 13920 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Leonel), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13922 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13924 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 13923 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 13925 + MOVE_THUNDER, + MOVE_QUICK_ATTACK, + MOVE_THUNDER_WAVE, + }, + }, + }, }, - +#line 13929 [TRAINER_CALLIE] = { - .trainerClass = TRAINER_CLASS_BATTLE_GIRL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_BATTLE_GIRL, +#line 13930 .trainerName = _("CALLIE"), - .items = {}, +#line 13931 + .trainerClass = TRAINER_CLASS_BATTLE_GIRL, +#line 13932 + .trainerPic = TRAINER_PIC_BATTLE_GIRL, + .encounterMusic_gender = +#line 13933 +F_TRAINER_FEMALE | +#line 13934 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 13935 .doubleBattle = FALSE, +#line 13936 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Callie), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13938 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13940 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13939 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13942 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13944 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13943 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13946 [TRAINER_CALE] = { - .trainerClass = TRAINER_CLASS_BUG_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_BUG_MANIAC, +#line 13947 .trainerName = _("CALE"), - .items = {}, +#line 13948 + .trainerClass = TRAINER_CLASS_BUG_MANIAC, +#line 13949 + .trainerPic = TRAINER_PIC_BUG_MANIAC, + .encounterMusic_gender = +#line 13951 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 13952 .doubleBattle = FALSE, +#line 13953 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cale), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13955 + .species = SPECIES_DUSTOX, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13957 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13956 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13959 + .species = SPECIES_BEAUTIFLY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13961 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13960 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13963 [TRAINER_MYLES] = { - .trainerClass = TRAINER_CLASS_PKMN_BREEDER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M, +#line 13964 .trainerName = _("MYLES"), - .items = {}, +#line 13965 + .trainerClass = TRAINER_CLASS_PKMN_BREEDER, +#line 13966 + .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M, + .encounterMusic_gender = +#line 13968 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 13969 .doubleBattle = FALSE, +#line 13970 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Myles), + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 13972 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13974 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 13973 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13976 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13978 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 13977 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13980 + .species = SPECIES_TROPIUS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13982 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 13981 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13984 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13986 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 13985 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13988 + .species = SPECIES_ELECTRIKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13990 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 13989 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13992 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13994 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 13993 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 13996 [TRAINER_PAT] = { - .trainerClass = TRAINER_CLASS_PKMN_BREEDER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, +#line 13997 .trainerName = _("PAT"), - .items = {}, +#line 13998 + .trainerClass = TRAINER_CLASS_PKMN_BREEDER, +#line 13999 + .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, + .encounterMusic_gender = +#line 14000 +F_TRAINER_FEMALE | +#line 14001 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 14002 .doubleBattle = FALSE, +#line 14003 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Pat), + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 14005 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14007 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 14006 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 14009 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14011 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 14010 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 14013 + .species = SPECIES_ELECTRIKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14015 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 14014 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 14017 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14019 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 14018 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 14021 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14023 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 14022 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 14025 + .species = SPECIES_GULPIN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14027 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 14026 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 14029 [TRAINER_CRISTIN_1] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_F, +#line 14030 .trainerName = _("CRISTIN"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 14031 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 14032 + .trainerPic = TRAINER_PIC_COOLTRAINER_F, + .encounterMusic_gender = +#line 14033 +F_TRAINER_FEMALE | +#line 14034 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 14035 + .items = { ITEM_HYPER_POTION }, +#line 14036 .doubleBattle = FALSE, +#line 14037 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Cristin1), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 14039 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14041 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 14040 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 14043 + .species = SPECIES_VIGOROTH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14045 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 14044 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 14047 [TRAINER_MAY_RUSTBORO_TREECKO] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_MAY, +#line 14048 .trainerName = _("MAY"), - .items = {}, +#line 14049 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 14050 + .trainerPic = TRAINER_PIC_MAY, + .encounterMusic_gender = +#line 14051 +F_TRAINER_FEMALE | +#line 14052 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 14053 .doubleBattle = FALSE, +#line 14054 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_MayRustboroTreecko), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 14056 + .species = SPECIES_LOTAD, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14058 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 14057 + .lvl = 13, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 14060 + .species = SPECIES_TORCHIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14062 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 14061 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 14064 [TRAINER_MAY_RUSTBORO_TORCHIC] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_MAY, +#line 14065 .trainerName = _("MAY"), - .items = {}, +#line 14066 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 14067 + .trainerPic = TRAINER_PIC_MAY, + .encounterMusic_gender = +#line 14068 +F_TRAINER_FEMALE | +#line 14069 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 14070 .doubleBattle = FALSE, +#line 14071 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_MayRustboroTorchic), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 14073 + .species = SPECIES_TORKOAL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14075 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 14074 + .lvl = 13, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 14077 + .species = SPECIES_MUDKIP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14079 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 14078 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 14081 [TRAINER_ROXANNE_2] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LEADER_ROXANNE, +#line 14082 .trainerName = _("ROXANNE"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, +#line 14083 + .trainerClass = TRAINER_CLASS_LEADER, +#line 14084 + .trainerPic = TRAINER_PIC_LEADER_ROXANNE, + .encounterMusic_gender = +#line 14085 +F_TRAINER_FEMALE | +#line 14086 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 14087 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14088 .doubleBattle = TRUE, +#line 14089 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Roxanne2), + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 14091 + .species = SPECIES_GOLEM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14093 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14092 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14094 + MOVE_PROTECT, + MOVE_ROLLOUT, + MOVE_MAGNITUDE, + MOVE_EXPLOSION, + }, + }, + { +#line 14099 + .species = SPECIES_KABUTO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14099 + .heldItem = ITEM_SITRUS_BERRY, +#line 14101 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14100 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14102 + MOVE_SWORDS_DANCE, + MOVE_ICE_BEAM, + MOVE_SURF, + MOVE_ROCK_SLIDE, + }, + }, + { +#line 14107 + .species = SPECIES_ONIX, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14109 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14108 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14110 + MOVE_IRON_TAIL, + MOVE_EXPLOSION, + MOVE_ROAR, + MOVE_ROCK_SLIDE, + }, + }, + { +#line 14115 + .species = SPECIES_NOSEPASS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14115 + .heldItem = ITEM_SITRUS_BERRY, +#line 14117 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14116 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14118 + MOVE_DOUBLE_TEAM, + MOVE_EXPLOSION, + MOVE_PROTECT, + MOVE_ROCK_SLIDE, + }, + }, + }, }, - +#line 14123 [TRAINER_ROXANNE_3] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LEADER_ROXANNE, +#line 14124 .trainerName = _("ROXANNE"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, +#line 14125 + .trainerClass = TRAINER_CLASS_LEADER, +#line 14126 + .trainerPic = TRAINER_PIC_LEADER_ROXANNE, + .encounterMusic_gender = +#line 14127 +F_TRAINER_FEMALE | +#line 14128 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 14129 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14130 .doubleBattle = TRUE, +#line 14131 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Roxanne3), + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 14133 + .species = SPECIES_OMANYTE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14135 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14134 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14136 + MOVE_PROTECT, + MOVE_ICE_BEAM, + MOVE_ROCK_SLIDE, + MOVE_SURF, + }, + }, + { +#line 14141 + .species = SPECIES_GOLEM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14143 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14142 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14144 + MOVE_PROTECT, + MOVE_ROLLOUT, + MOVE_MAGNITUDE, + MOVE_EXPLOSION, + }, + }, + { +#line 14149 + .species = SPECIES_KABUTOPS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14149 + .heldItem = ITEM_SITRUS_BERRY, +#line 14151 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14150 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14152 + MOVE_SWORDS_DANCE, + MOVE_ICE_BEAM, + MOVE_SURF, + MOVE_ROCK_SLIDE, + }, + }, + { +#line 14157 + .species = SPECIES_ONIX, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14159 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14158 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14160 + MOVE_IRON_TAIL, + MOVE_EXPLOSION, + MOVE_ROAR, + MOVE_ROCK_SLIDE, + }, + }, + { +#line 14165 + .species = SPECIES_NOSEPASS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14165 + .heldItem = ITEM_SITRUS_BERRY, +#line 14167 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14166 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14168 + MOVE_DOUBLE_TEAM, + MOVE_EXPLOSION, + MOVE_PROTECT, + MOVE_ROCK_SLIDE, + }, + }, + }, }, - +#line 14173 [TRAINER_ROXANNE_4] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LEADER_ROXANNE, +#line 14174 .trainerName = _("ROXANNE"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, +#line 14175 + .trainerClass = TRAINER_CLASS_LEADER, +#line 14176 + .trainerPic = TRAINER_PIC_LEADER_ROXANNE, + .encounterMusic_gender = +#line 14177 +F_TRAINER_FEMALE | +#line 14178 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 14179 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14180 .doubleBattle = TRUE, +#line 14181 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Roxanne4), + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 14183 + .species = SPECIES_OMASTAR, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14185 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14184 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14186 + MOVE_PROTECT, + MOVE_ICE_BEAM, + MOVE_ROCK_SLIDE, + MOVE_SURF, + }, + }, + { +#line 14191 + .species = SPECIES_GOLEM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14193 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14192 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14194 + MOVE_PROTECT, + MOVE_ROLLOUT, + MOVE_EARTHQUAKE, + MOVE_EXPLOSION, + }, + }, + { +#line 14199 + .species = SPECIES_KABUTOPS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14199 + .heldItem = ITEM_SITRUS_BERRY, +#line 14201 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14200 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14202 + MOVE_SWORDS_DANCE, + MOVE_ICE_BEAM, + MOVE_SURF, + MOVE_ROCK_SLIDE, + }, + }, + { +#line 14207 + .species = SPECIES_ONIX, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14209 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14208 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14210 + MOVE_IRON_TAIL, + MOVE_EXPLOSION, + MOVE_ROAR, + MOVE_ROCK_SLIDE, + }, + }, + { +#line 14215 + .species = SPECIES_NOSEPASS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14215 + .heldItem = ITEM_SITRUS_BERRY, +#line 14217 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14216 + .lvl = 47, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14218 + MOVE_DOUBLE_TEAM, + MOVE_EXPLOSION, + MOVE_PROTECT, + MOVE_ROCK_SLIDE, + }, + }, + }, }, - +#line 14223 [TRAINER_ROXANNE_5] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LEADER_ROXANNE, +#line 14224 .trainerName = _("ROXANNE"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, +#line 14225 + .trainerClass = TRAINER_CLASS_LEADER, +#line 14226 + .trainerPic = TRAINER_PIC_LEADER_ROXANNE, + .encounterMusic_gender = +#line 14227 +F_TRAINER_FEMALE | +#line 14228 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 14229 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14230 .doubleBattle = TRUE, +#line 14231 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Roxanne5), + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 14233 + .species = SPECIES_AERODACTYL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14235 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14234 + .lvl = 47, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14236 + MOVE_ROCK_SLIDE, + MOVE_HYPER_BEAM, + MOVE_SUPERSONIC, + MOVE_PROTECT, + }, + }, + { +#line 14241 + .species = SPECIES_GOLEM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14243 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14242 + .lvl = 47, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14244 + MOVE_FOCUS_PUNCH, + MOVE_ROLLOUT, + MOVE_EARTHQUAKE, + MOVE_EXPLOSION, + }, + }, + { +#line 14249 + .species = SPECIES_OMASTAR, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14251 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14250 + .lvl = 47, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14252 + MOVE_PROTECT, + MOVE_ICE_BEAM, + MOVE_ROCK_SLIDE, + MOVE_SURF, + }, + }, + { +#line 14257 + .species = SPECIES_KABUTOPS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14257 + .heldItem = ITEM_SITRUS_BERRY, +#line 14259 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14258 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14260 + MOVE_SWORDS_DANCE, + MOVE_ICE_BEAM, + MOVE_SURF, + MOVE_ROCK_SLIDE, + }, + }, + { +#line 14265 + .species = SPECIES_STEELIX, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14267 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14266 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14268 + MOVE_IRON_TAIL, + MOVE_EXPLOSION, + MOVE_ROAR, + MOVE_ROCK_SLIDE, + }, + }, + { +#line 14273 + .species = SPECIES_NOSEPASS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14273 + .heldItem = ITEM_SITRUS_BERRY, +#line 14275 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14274 + .lvl = 52, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14276 + MOVE_DOUBLE_TEAM, + MOVE_EXPLOSION, + MOVE_PROTECT, + MOVE_ROCK_SLIDE, + }, + }, + }, }, - +#line 14281 [TRAINER_BRAWLY_2] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_LEADER_BRAWLY, +#line 14282 .trainerName = _("BRAWLY"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, +#line 14283 + .trainerClass = TRAINER_CLASS_LEADER, +#line 14284 + .trainerPic = TRAINER_PIC_LEADER_BRAWLY, + .encounterMusic_gender = +#line 14286 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 14287 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14288 .doubleBattle = TRUE, +#line 14289 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Brawly2), + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 14291 + .species = SPECIES_MACHAMP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14291 + .heldItem = ITEM_SITRUS_BERRY, +#line 14293 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14292 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14294 + MOVE_KARATE_CHOP, + MOVE_ROCK_SLIDE, + MOVE_FOCUS_PUNCH, + MOVE_BULK_UP, + }, + }, + { +#line 14299 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14301 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14300 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14302 + MOVE_PSYCHIC, + MOVE_LIGHT_SCREEN, + MOVE_REFLECT, + MOVE_FOCUS_PUNCH, + }, + }, + { +#line 14307 + .species = SPECIES_HITMONTOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14309 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14308 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14310 + MOVE_PURSUIT, + MOVE_COUNTER, + MOVE_PROTECT, + MOVE_TRIPLE_KICK, + }, + }, + { +#line 14315 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14315 + .heldItem = ITEM_SITRUS_BERRY, +#line 14317 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14316 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14318 + MOVE_FAKE_OUT, + MOVE_FOCUS_PUNCH, + MOVE_BELLY_DRUM, + MOVE_EARTHQUAKE, + }, + }, + }, }, - +#line 14323 [TRAINER_BRAWLY_3] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_LEADER_BRAWLY, +#line 14324 .trainerName = _("BRAWLY"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, +#line 14325 + .trainerClass = TRAINER_CLASS_LEADER, +#line 14326 + .trainerPic = TRAINER_PIC_LEADER_BRAWLY, + .encounterMusic_gender = +#line 14328 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 14329 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14330 .doubleBattle = TRUE, +#line 14331 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Brawly3), + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 14333 + .species = SPECIES_MACHAMP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14333 + .heldItem = ITEM_SITRUS_BERRY, +#line 14335 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14334 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14336 + MOVE_KARATE_CHOP, + MOVE_ROCK_SLIDE, + MOVE_FOCUS_PUNCH, + MOVE_BULK_UP, + }, + }, + { +#line 14341 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14343 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14342 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14344 + MOVE_PSYCHIC, + MOVE_LIGHT_SCREEN, + MOVE_REFLECT, + MOVE_FOCUS_PUNCH, + }, + }, + { +#line 14349 + .species = SPECIES_HITMONTOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14351 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14350 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14352 + MOVE_PURSUIT, + MOVE_COUNTER, + MOVE_PROTECT, + MOVE_TRIPLE_KICK, + }, + }, + { +#line 14357 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14357 + .heldItem = ITEM_SITRUS_BERRY, +#line 14359 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14358 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14360 + MOVE_FAKE_OUT, + MOVE_FOCUS_PUNCH, + MOVE_BELLY_DRUM, + MOVE_EARTHQUAKE, + }, + }, + }, }, - +#line 14365 [TRAINER_BRAWLY_4] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_LEADER_BRAWLY, +#line 14366 .trainerName = _("BRAWLY"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, +#line 14367 + .trainerClass = TRAINER_CLASS_LEADER, +#line 14368 + .trainerPic = TRAINER_PIC_LEADER_BRAWLY, + .encounterMusic_gender = +#line 14370 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 14371 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14372 .doubleBattle = TRUE, +#line 14373 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Brawly4), + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 14375 + .species = SPECIES_HITMONCHAN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14377 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14376 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14378 + MOVE_SKY_UPPERCUT, + MOVE_PROTECT, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + }, + }, + { +#line 14383 + .species = SPECIES_MACHAMP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14383 + .heldItem = ITEM_SITRUS_BERRY, +#line 14385 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14384 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14386 + MOVE_KARATE_CHOP, + MOVE_ROCK_SLIDE, + MOVE_FOCUS_PUNCH, + MOVE_BULK_UP, + }, + }, + { +#line 14391 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14393 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14392 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14394 + MOVE_FOCUS_PUNCH, + MOVE_LIGHT_SCREEN, + MOVE_REFLECT, + MOVE_PSYCHIC, + }, + }, + { +#line 14399 + .species = SPECIES_HITMONTOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14401 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14400 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14402 + MOVE_PURSUIT, + MOVE_COUNTER, + MOVE_PROTECT, + MOVE_TRIPLE_KICK, + }, + }, + { +#line 14407 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14407 + .heldItem = ITEM_SITRUS_BERRY, +#line 14409 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14408 + .lvl = 47, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14410 + MOVE_FAKE_OUT, + MOVE_FOCUS_PUNCH, + MOVE_BELLY_DRUM, + MOVE_EARTHQUAKE, + }, + }, + }, }, - +#line 14415 [TRAINER_BRAWLY_5] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_LEADER_BRAWLY, +#line 14416 .trainerName = _("BRAWLY"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, +#line 14417 + .trainerClass = TRAINER_CLASS_LEADER, +#line 14418 + .trainerPic = TRAINER_PIC_LEADER_BRAWLY, + .encounterMusic_gender = +#line 14420 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 14421 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14422 .doubleBattle = TRUE, +#line 14423 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Brawly5), + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 14425 + .species = SPECIES_HITMONLEE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14427 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14426 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14428 + MOVE_MEGA_KICK, + MOVE_FOCUS_PUNCH, + MOVE_EARTHQUAKE, + MOVE_BULK_UP, + }, + }, + { +#line 14433 + .species = SPECIES_HITMONCHAN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14435 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14434 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14436 + MOVE_SKY_UPPERCUT, + MOVE_PROTECT, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + }, + }, + { +#line 14441 + .species = SPECIES_MACHAMP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14441 + .heldItem = ITEM_SITRUS_BERRY, +#line 14443 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14442 + .lvl = 48, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14444 + MOVE_CROSS_CHOP, + MOVE_ROCK_SLIDE, + MOVE_FOCUS_PUNCH, + MOVE_BULK_UP, + }, + }, + { +#line 14449 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14451 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14450 + .lvl = 48, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14452 + MOVE_FOCUS_PUNCH, + MOVE_LIGHT_SCREEN, + MOVE_REFLECT, + MOVE_PSYCHIC, + }, + }, + { +#line 14457 + .species = SPECIES_HITMONTOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14459 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14458 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14460 + MOVE_PURSUIT, + MOVE_COUNTER, + MOVE_PROTECT, + MOVE_TRIPLE_KICK, + }, + }, + { +#line 14465 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14465 + .heldItem = ITEM_SITRUS_BERRY, +#line 14467 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14466 + .lvl = 52, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14468 + MOVE_FAKE_OUT, + MOVE_FOCUS_PUNCH, + MOVE_BELLY_DRUM, + MOVE_EARTHQUAKE, + }, + }, + }, }, - +#line 14473 [TRAINER_WATTSON_2] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_LEADER_WATTSON, +#line 14474 .trainerName = _("WATTSON"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, +#line 14475 + .trainerClass = TRAINER_CLASS_LEADER, +#line 14476 + .trainerPic = TRAINER_PIC_LEADER_WATTSON, + .encounterMusic_gender = +#line 14478 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 14479 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14480 .doubleBattle = TRUE, +#line 14481 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Wattson2), + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 14483 + .species = SPECIES_MAREEP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14485 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14484 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14486 + MOVE_THUNDER, + MOVE_PROTECT, + MOVE_THUNDER_WAVE, + MOVE_LIGHT_SCREEN, + }, + }, + { +#line 14491 + .species = SPECIES_ELECTRODE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14493 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14492 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14494 + MOVE_ROLLOUT, + MOVE_THUNDER, + MOVE_EXPLOSION, + MOVE_RAIN_DANCE, + }, + }, + { +#line 14499 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14499 + .heldItem = ITEM_SITRUS_BERRY, +#line 14501 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14500 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14502 + MOVE_SUPERSONIC, + MOVE_PROTECT, + MOVE_THUNDER, + MOVE_RAIN_DANCE, + }, + }, + { +#line 14507 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14507 + .heldItem = ITEM_SITRUS_BERRY, +#line 14509 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14508 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14510 + MOVE_BITE, + MOVE_THUNDER_WAVE, + MOVE_THUNDER, + MOVE_PROTECT, + }, + }, + }, }, - +#line 14515 [TRAINER_WATTSON_3] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_LEADER_WATTSON, +#line 14516 .trainerName = _("WATTSON"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, +#line 14517 + .trainerClass = TRAINER_CLASS_LEADER, +#line 14518 + .trainerPic = TRAINER_PIC_LEADER_WATTSON, + .encounterMusic_gender = +#line 14520 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 14521 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14522 .doubleBattle = TRUE, +#line 14523 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Wattson3), + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 14525 + .species = SPECIES_PIKACHU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14527 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14526 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14528 + MOVE_THUNDER, + MOVE_SLAM, + MOVE_RAIN_DANCE, + MOVE_SHOCK_WAVE, + }, + }, + { +#line 14533 + .species = SPECIES_FLAAFFY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14535 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14534 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14536 + MOVE_THUNDER, + MOVE_PROTECT, + MOVE_THUNDER_WAVE, + MOVE_LIGHT_SCREEN, + }, + }, + { +#line 14541 + .species = SPECIES_ELECTRODE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14543 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14542 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14544 + MOVE_ROLLOUT, + MOVE_THUNDER, + MOVE_EXPLOSION, + MOVE_RAIN_DANCE, + }, + }, + { +#line 14549 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14549 + .heldItem = ITEM_SITRUS_BERRY, +#line 14551 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14550 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14552 + MOVE_SUPERSONIC, + MOVE_PROTECT, + MOVE_THUNDER, + MOVE_RAIN_DANCE, + }, + }, + { +#line 14557 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14557 + .heldItem = ITEM_SITRUS_BERRY, +#line 14559 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14558 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14560 + MOVE_BITE, + MOVE_THUNDER_WAVE, + MOVE_THUNDER, + MOVE_PROTECT, + }, + }, + }, }, - +#line 14565 [TRAINER_WATTSON_4] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_LEADER_WATTSON, +#line 14566 .trainerName = _("WATTSON"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, +#line 14567 + .trainerClass = TRAINER_CLASS_LEADER, +#line 14568 + .trainerPic = TRAINER_PIC_LEADER_WATTSON, + .encounterMusic_gender = +#line 14570 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 14571 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14572 .doubleBattle = TRUE, +#line 14573 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Wattson4), + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 14575 + .species = SPECIES_RAICHU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14577 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14576 + .lvl = 44, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14578 + MOVE_THUNDER, + MOVE_SLAM, + MOVE_RAIN_DANCE, + MOVE_PROTECT, + }, + }, + { +#line 14583 + .species = SPECIES_AMPHAROS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14585 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14584 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14586 + MOVE_THUNDER, + MOVE_PROTECT, + MOVE_THUNDER_WAVE, + MOVE_LIGHT_SCREEN, + }, + }, + { +#line 14591 + .species = SPECIES_ELECTRODE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14593 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14592 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14594 + MOVE_ROLLOUT, + MOVE_THUNDER, + MOVE_EXPLOSION, + MOVE_RAIN_DANCE, + }, + }, + { +#line 14599 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14599 + .heldItem = ITEM_SITRUS_BERRY, +#line 14601 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14600 + .lvl = 48, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14602 + MOVE_SUPERSONIC, + MOVE_PROTECT, + MOVE_THUNDER, + MOVE_RAIN_DANCE, + }, + }, + { +#line 14607 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14607 + .heldItem = ITEM_SITRUS_BERRY, +#line 14609 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14608 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14610 + MOVE_BITE, + MOVE_THUNDER_WAVE, + MOVE_THUNDER, + MOVE_PROTECT, + }, + }, + }, }, - +#line 14615 [TRAINER_WATTSON_5] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_LEADER_WATTSON, +#line 14616 .trainerName = _("WATTSON"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, +#line 14617 + .trainerClass = TRAINER_CLASS_LEADER, +#line 14618 + .trainerPic = TRAINER_PIC_LEADER_WATTSON, + .encounterMusic_gender = +#line 14620 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 14621 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14622 .doubleBattle = TRUE, +#line 14623 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Wattson5), + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 14625 + .species = SPECIES_ELECTABUZZ, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14627 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14626 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14628 + MOVE_SWIFT, + MOVE_FOCUS_PUNCH, + MOVE_THUNDER_PUNCH, + MOVE_LIGHT_SCREEN, + }, + }, + { +#line 14633 + .species = SPECIES_RAICHU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14635 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14634 + .lvl = 51, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14636 + MOVE_THUNDER, + MOVE_SLAM, + MOVE_RAIN_DANCE, + MOVE_PROTECT, + }, + }, + { +#line 14641 + .species = SPECIES_AMPHAROS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14643 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14642 + .lvl = 51, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14644 + MOVE_THUNDER, + MOVE_PROTECT, + MOVE_THUNDER_WAVE, + MOVE_LIGHT_SCREEN, + }, + }, + { +#line 14649 + .species = SPECIES_ELECTRODE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14651 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14650 + .lvl = 53, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14652 + MOVE_ROLLOUT, + MOVE_THUNDER, + MOVE_EXPLOSION, + MOVE_RAIN_DANCE, + }, + }, + { +#line 14657 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14657 + .heldItem = ITEM_SITRUS_BERRY, +#line 14659 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14658 + .lvl = 53, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14660 + MOVE_SUPERSONIC, + MOVE_PROTECT, + MOVE_THUNDER, + MOVE_RAIN_DANCE, + }, + }, + { +#line 14665 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14665 + .heldItem = ITEM_SITRUS_BERRY, +#line 14667 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14666 + .lvl = 55, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14668 + MOVE_BITE, + MOVE_THUNDER_WAVE, + MOVE_THUNDER, + MOVE_PROTECT, + }, + }, + }, }, - +#line 14673 [TRAINER_FLANNERY_2] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LEADER_FLANNERY, +#line 14674 .trainerName = _("FLANNERY"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, +#line 14675 + .trainerClass = TRAINER_CLASS_LEADER, +#line 14676 + .trainerPic = TRAINER_PIC_LEADER_FLANNERY, + .encounterMusic_gender = +#line 14677 +F_TRAINER_FEMALE | +#line 14678 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 14679 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14680 .doubleBattle = TRUE, +#line 14681 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Flannery2), + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 14683 + .species = SPECIES_MAGCARGO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14683 + .heldItem = ITEM_WHITE_HERB, +#line 14685 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14684 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14686 + MOVE_OVERHEAT, + MOVE_ATTRACT, + MOVE_LIGHT_SCREEN, + MOVE_ROCK_SLIDE, + }, + }, + { +#line 14691 + .species = SPECIES_PONYTA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14693 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14692 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14694 + MOVE_FLAMETHROWER, + MOVE_ATTRACT, + MOVE_SOLAR_BEAM, + MOVE_BOUNCE, + }, + }, + { +#line 14699 + .species = SPECIES_CAMERUPT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14699 + .heldItem = ITEM_WHITE_HERB, +#line 14701 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14700 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14702 + MOVE_OVERHEAT, + MOVE_SUNNY_DAY, + MOVE_EARTHQUAKE, + MOVE_ATTRACT, + }, + }, + { +#line 14707 + .species = SPECIES_TORKOAL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14707 + .heldItem = ITEM_WHITE_HERB, +#line 14709 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14708 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14710 + MOVE_OVERHEAT, + MOVE_SUNNY_DAY, + MOVE_EXPLOSION, + MOVE_ATTRACT, + }, + }, + }, }, - +#line 14715 [TRAINER_FLANNERY_3] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LEADER_FLANNERY, +#line 14716 .trainerName = _("FLANNERY"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, +#line 14717 + .trainerClass = TRAINER_CLASS_LEADER, +#line 14718 + .trainerPic = TRAINER_PIC_LEADER_FLANNERY, + .encounterMusic_gender = +#line 14719 +F_TRAINER_FEMALE | +#line 14720 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 14721 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14722 .doubleBattle = TRUE, +#line 14723 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Flannery3), + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 14725 + .species = SPECIES_GROWLITHE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14727 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14726 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14728 + MOVE_HELPING_HAND, + MOVE_FLAMETHROWER, + MOVE_ROAR, + MOVE_SUNNY_DAY, + }, + }, + { +#line 14733 + .species = SPECIES_MAGCARGO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14733 + .heldItem = ITEM_WHITE_HERB, +#line 14735 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14734 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14736 + MOVE_OVERHEAT, + MOVE_ATTRACT, + MOVE_LIGHT_SCREEN, + MOVE_ROCK_SLIDE, + }, + }, + { +#line 14741 + .species = SPECIES_PONYTA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14743 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14742 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14744 + MOVE_FLAMETHROWER, + MOVE_ATTRACT, + MOVE_SOLAR_BEAM, + MOVE_BOUNCE, + }, + }, + { +#line 14749 + .species = SPECIES_CAMERUPT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14749 + .heldItem = ITEM_WHITE_HERB, +#line 14751 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14750 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14752 + MOVE_OVERHEAT, + MOVE_SUNNY_DAY, + MOVE_EARTHQUAKE, + MOVE_ATTRACT, + }, + }, + { +#line 14757 + .species = SPECIES_TORKOAL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14757 + .heldItem = ITEM_WHITE_HERB, +#line 14759 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14758 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14760 + MOVE_OVERHEAT, + MOVE_SUNNY_DAY, + MOVE_EXPLOSION, + MOVE_ATTRACT, + }, + }, + }, }, - +#line 14765 [TRAINER_FLANNERY_4] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LEADER_FLANNERY, +#line 14766 .trainerName = _("FLANNERY"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, +#line 14767 + .trainerClass = TRAINER_CLASS_LEADER, +#line 14768 + .trainerPic = TRAINER_PIC_LEADER_FLANNERY, + .encounterMusic_gender = +#line 14769 +F_TRAINER_FEMALE | +#line 14770 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 14771 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14772 .doubleBattle = TRUE, +#line 14773 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Flannery4), + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 14775 + .species = SPECIES_HOUNDOUR, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14777 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14776 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14778 + MOVE_ROAR, + MOVE_SOLAR_BEAM, + MOVE_TAUNT, + MOVE_SUNNY_DAY, + }, + }, + { +#line 14783 + .species = SPECIES_GROWLITHE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14785 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14784 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14786 + MOVE_HELPING_HAND, + MOVE_FLAMETHROWER, + MOVE_SUNNY_DAY, + MOVE_ROAR, + }, + }, + { +#line 14791 + .species = SPECIES_MAGCARGO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14791 + .heldItem = ITEM_WHITE_HERB, +#line 14793 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14792 + .lvl = 48, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14794 + MOVE_OVERHEAT, + MOVE_ATTRACT, + MOVE_LIGHT_SCREEN, + MOVE_ROCK_SLIDE, + }, + }, + { +#line 14799 + .species = SPECIES_RAPIDASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14801 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14800 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14802 + MOVE_FLAMETHROWER, + MOVE_ATTRACT, + MOVE_SOLAR_BEAM, + MOVE_BOUNCE, + }, + }, + { +#line 14807 + .species = SPECIES_CAMERUPT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14807 + .heldItem = ITEM_WHITE_HERB, +#line 14809 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14808 + .lvl = 48, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14810 + MOVE_OVERHEAT, + MOVE_SUNNY_DAY, + MOVE_EARTHQUAKE, + MOVE_ATTRACT, + }, + }, + { +#line 14815 + .species = SPECIES_TORKOAL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14815 + .heldItem = ITEM_WHITE_HERB, +#line 14817 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14816 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14818 + MOVE_OVERHEAT, + MOVE_SUNNY_DAY, + MOVE_EXPLOSION, + MOVE_ATTRACT, + }, + }, + }, }, - +#line 14823 [TRAINER_FLANNERY_5] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LEADER_FLANNERY, +#line 14824 .trainerName = _("FLANNERY"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, +#line 14825 + .trainerClass = TRAINER_CLASS_LEADER, +#line 14826 + .trainerPic = TRAINER_PIC_LEADER_FLANNERY, + .encounterMusic_gender = +#line 14827 +F_TRAINER_FEMALE | +#line 14828 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 14829 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14830 .doubleBattle = TRUE, +#line 14831 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Flannery5), + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 14833 + .species = SPECIES_ARCANINE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14835 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14834 + .lvl = 51, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14836 + MOVE_HELPING_HAND, + MOVE_FLAMETHROWER, + MOVE_SUNNY_DAY, + MOVE_ROAR, + }, + }, + { +#line 14841 + .species = SPECIES_MAGCARGO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14841 + .heldItem = ITEM_WHITE_HERB, +#line 14843 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14842 + .lvl = 53, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14844 + MOVE_OVERHEAT, + MOVE_ATTRACT, + MOVE_LIGHT_SCREEN, + MOVE_ROCK_SLIDE, + }, + }, + { +#line 14849 + .species = SPECIES_HOUNDOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14851 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14850 + .lvl = 51, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14852 + MOVE_ROAR, + MOVE_SOLAR_BEAM, + MOVE_TAUNT, + MOVE_SUNNY_DAY, + }, + }, + { +#line 14857 + .species = SPECIES_RAPIDASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14859 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14858 + .lvl = 51, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14860 + MOVE_FLAMETHROWER, + MOVE_ATTRACT, + MOVE_SOLAR_BEAM, + MOVE_BOUNCE, + }, + }, + { +#line 14865 + .species = SPECIES_CAMERUPT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14865 + .heldItem = ITEM_WHITE_HERB, +#line 14867 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14866 + .lvl = 53, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14868 + MOVE_OVERHEAT, + MOVE_SUNNY_DAY, + MOVE_EARTHQUAKE, + MOVE_ATTRACT, + }, + }, + { +#line 14873 + .species = SPECIES_TORKOAL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14873 + .heldItem = ITEM_WHITE_HERB, +#line 14875 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14874 + .lvl = 55, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14876 + MOVE_OVERHEAT, + MOVE_SUNNY_DAY, + MOVE_EXPLOSION, + MOVE_ATTRACT, + }, + }, + }, }, - +#line 14881 [TRAINER_NORMAN_2] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_LEADER_NORMAN, +#line 14882 .trainerName = _("NORMAN"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, +#line 14883 + .trainerClass = TRAINER_CLASS_LEADER, +#line 14884 + .trainerPic = TRAINER_PIC_LEADER_NORMAN, + .encounterMusic_gender = +#line 14886 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 14887 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14888 .doubleBattle = TRUE, +#line 14889 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Norman2), + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 14891 + .species = SPECIES_CHANSEY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14893 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14892 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14894 + MOVE_LIGHT_SCREEN, + MOVE_SING, + MOVE_SKILL_SWAP, + MOVE_FOCUS_PUNCH, + }, + }, + { +#line 14899 + .species = SPECIES_SLAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14899 + .heldItem = ITEM_SITRUS_BERRY, +#line 14901 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14900 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14902 + MOVE_BLIZZARD, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_EDGE, + MOVE_FIRE_BLAST, + }, + }, + { +#line 14907 + .species = SPECIES_SPINDA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14909 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14908 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14910 + MOVE_TEETER_DANCE, + MOVE_SKILL_SWAP, + MOVE_FACADE, + MOVE_HYPNOSIS, + }, + }, + { +#line 14915 + .species = SPECIES_SLAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14915 + .heldItem = ITEM_SITRUS_BERRY, +#line 14917 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14916 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14918 + MOVE_HYPER_BEAM, + MOVE_FLAMETHROWER, + MOVE_THUNDERBOLT, + MOVE_SHADOW_BALL, + }, + }, + }, }, - +#line 14923 [TRAINER_NORMAN_3] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_LEADER_NORMAN, +#line 14924 .trainerName = _("NORMAN"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, +#line 14925 + .trainerClass = TRAINER_CLASS_LEADER, +#line 14926 + .trainerPic = TRAINER_PIC_LEADER_NORMAN, + .encounterMusic_gender = +#line 14928 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 14929 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14930 .doubleBattle = TRUE, +#line 14931 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Norman3), + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 14933 + .species = SPECIES_SLAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14933 + .heldItem = ITEM_SITRUS_BERRY, +#line 14935 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14934 + .lvl = 47, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14936 + MOVE_BLIZZARD, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_EDGE, + MOVE_FIRE_BLAST, + }, + }, + { +#line 14941 + .species = SPECIES_CHANSEY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14943 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14942 + .lvl = 47, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14944 + MOVE_LIGHT_SCREEN, + MOVE_SING, + MOVE_SKILL_SWAP, + MOVE_FOCUS_PUNCH, + }, + }, + { +#line 14949 + .species = SPECIES_KANGASKHAN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14951 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14950 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14952 + MOVE_FAKE_OUT, + MOVE_DIZZY_PUNCH, + MOVE_ENDURE, + MOVE_REVERSAL, + }, + }, + { +#line 14957 + .species = SPECIES_SPINDA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14959 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14958 + .lvl = 48, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14960 + MOVE_TEETER_DANCE, + MOVE_SKILL_SWAP, + MOVE_FACADE, + MOVE_HYPNOSIS, + }, + }, + { +#line 14965 + .species = SPECIES_SLAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14965 + .heldItem = ITEM_SITRUS_BERRY, +#line 14967 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14966 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14968 + MOVE_HYPER_BEAM, + MOVE_FLAMETHROWER, + MOVE_THUNDERBOLT, + MOVE_SHADOW_BALL, + }, + }, + }, }, - +#line 14973 [TRAINER_NORMAN_4] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_LEADER_NORMAN, +#line 14974 .trainerName = _("NORMAN"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, +#line 14975 + .trainerClass = TRAINER_CLASS_LEADER, +#line 14976 + .trainerPic = TRAINER_PIC_LEADER_NORMAN, + .encounterMusic_gender = +#line 14978 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 14979 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14980 .doubleBattle = TRUE, +#line 14981 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Norman4), + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 14983 + .species = SPECIES_SLAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14983 + .heldItem = ITEM_SITRUS_BERRY, +#line 14985 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14984 + .lvl = 52, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14986 + MOVE_BLIZZARD, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_EDGE, + MOVE_FIRE_BLAST, + }, + }, + { +#line 14991 + .species = SPECIES_BLISSEY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14993 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14992 + .lvl = 52, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14994 + MOVE_LIGHT_SCREEN, + MOVE_SING, + MOVE_SKILL_SWAP, + MOVE_FOCUS_PUNCH, + }, + }, + { +#line 14999 + .species = SPECIES_KANGASKHAN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15001 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15000 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15002 + MOVE_FAKE_OUT, + MOVE_DIZZY_PUNCH, + MOVE_ENDURE, + MOVE_REVERSAL, + }, + }, + { +#line 15007 + .species = SPECIES_SPINDA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15009 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15008 + .lvl = 53, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15010 + MOVE_TEETER_DANCE, + MOVE_SKILL_SWAP, + MOVE_FACADE, + MOVE_HYPNOSIS, + }, + }, + { +#line 15015 + .species = SPECIES_SLAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15015 + .heldItem = ITEM_SITRUS_BERRY, +#line 15017 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15016 + .lvl = 55, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15018 + MOVE_HYPER_BEAM, + MOVE_FLAMETHROWER, + MOVE_THUNDERBOLT, + MOVE_SHADOW_BALL, + }, + }, + }, }, - +#line 15023 [TRAINER_NORMAN_5] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_LEADER_NORMAN, +#line 15024 .trainerName = _("NORMAN"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, +#line 15025 + .trainerClass = TRAINER_CLASS_LEADER, +#line 15026 + .trainerPic = TRAINER_PIC_LEADER_NORMAN, + .encounterMusic_gender = +#line 15028 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15029 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 15030 .doubleBattle = TRUE, +#line 15031 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Norman5), + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 15033 + .species = SPECIES_SLAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15033 + .heldItem = ITEM_SITRUS_BERRY, +#line 15035 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15034 + .lvl = 57, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15036 + MOVE_BLIZZARD, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_EDGE, + MOVE_FIRE_BLAST, + }, + }, + { +#line 15041 + .species = SPECIES_BLISSEY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15043 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15042 + .lvl = 57, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15044 + MOVE_PROTECT, + MOVE_SING, + MOVE_SKILL_SWAP, + MOVE_FOCUS_PUNCH, + }, + }, + { +#line 15049 + .species = SPECIES_KANGASKHAN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15051 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15050 + .lvl = 55, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15052 + MOVE_FAKE_OUT, + MOVE_DIZZY_PUNCH, + MOVE_ENDURE, + MOVE_REVERSAL, + }, + }, + { +#line 15057 + .species = SPECIES_TAUROS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15059 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15058 + .lvl = 57, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15060 + MOVE_TAKE_DOWN, + MOVE_PROTECT, + MOVE_FIRE_BLAST, + MOVE_EARTHQUAKE, + }, + }, + { +#line 15065 + .species = SPECIES_SPINDA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15067 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15066 + .lvl = 58, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15068 + MOVE_TEETER_DANCE, + MOVE_SKILL_SWAP, + MOVE_FACADE, + MOVE_HYPNOSIS, + }, + }, + { +#line 15073 + .species = SPECIES_SLAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15073 + .heldItem = ITEM_SITRUS_BERRY, +#line 15075 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15074 + .lvl = 60, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15076 + MOVE_HYPER_BEAM, + MOVE_FLAMETHROWER, + MOVE_THUNDERBOLT, + MOVE_SHADOW_BALL, + }, + }, + }, }, - +#line 15081 [TRAINER_WINONA_2] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LEADER_WINONA, +#line 15082 .trainerName = _("WINONA"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, +#line 15083 + .trainerClass = TRAINER_CLASS_LEADER, +#line 15084 + .trainerPic = TRAINER_PIC_LEADER_WINONA, + .encounterMusic_gender = +#line 15085 +F_TRAINER_FEMALE | +#line 15086 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 15087 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 15088 .doubleBattle = TRUE, +#line 15089 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_RISKY, - .party = TRAINER_PARTY(sParty_Winona2), + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 15091 + .species = SPECIES_DRATINI, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15091 + .heldItem = ITEM_SITRUS_BERRY, +#line 15093 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15092 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15094 + MOVE_THUNDER_WAVE, + MOVE_THUNDERBOLT, + MOVE_PROTECT, + MOVE_ICE_BEAM, + }, + }, + { +#line 15099 + .species = SPECIES_TROPIUS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15101 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15100 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15102 + MOVE_SUNNY_DAY, + MOVE_AERIAL_ACE, + MOVE_SOLAR_BEAM, + MOVE_EARTHQUAKE, + }, + }, + { +#line 15107 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15109 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15108 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15110 + MOVE_SURF, + MOVE_SUPERSONIC, + MOVE_PROTECT, + MOVE_AERIAL_ACE, + }, + }, + { +#line 15115 + .species = SPECIES_SKARMORY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15117 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15116 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15118 + MOVE_WHIRLWIND, + MOVE_SPIKES, + MOVE_STEEL_WING, + MOVE_AERIAL_ACE, + }, + }, + { +#line 15123 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15123 + .heldItem = ITEM_CHESTO_BERRY, +#line 15125 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15124 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15126 + MOVE_AERIAL_ACE, + MOVE_REST, + MOVE_DRAGON_DANCE, + MOVE_EARTHQUAKE, + }, + }, + }, }, - +#line 15131 [TRAINER_WINONA_3] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LEADER_WINONA, +#line 15132 .trainerName = _("WINONA"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, +#line 15133 + .trainerClass = TRAINER_CLASS_LEADER, +#line 15134 + .trainerPic = TRAINER_PIC_LEADER_WINONA, + .encounterMusic_gender = +#line 15135 +F_TRAINER_FEMALE | +#line 15136 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 15137 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 15138 .doubleBattle = TRUE, +#line 15139 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_RISKY, - .party = TRAINER_PARTY(sParty_Winona3), + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 15141 + .species = SPECIES_HOOTHOOT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15143 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15142 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15144 + MOVE_HYPNOSIS, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_DREAM_EATER, + }, + }, + { +#line 15149 + .species = SPECIES_TROPIUS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15151 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15150 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15152 + MOVE_SUNNY_DAY, + MOVE_AERIAL_ACE, + MOVE_SOLAR_BEAM, + MOVE_EARTHQUAKE, + }, + }, + { +#line 15157 + .species = SPECIES_DRAGONAIR, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15157 + .heldItem = ITEM_SITRUS_BERRY, +#line 15159 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15158 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15160 + MOVE_THUNDER_WAVE, + MOVE_THUNDERBOLT, + MOVE_PROTECT, + MOVE_ICE_BEAM, + }, + }, + { +#line 15165 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15167 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15166 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15168 + MOVE_SURF, + MOVE_SUPERSONIC, + MOVE_PROTECT, + MOVE_AERIAL_ACE, + }, + }, + { +#line 15173 + .species = SPECIES_SKARMORY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15175 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15174 + .lvl = 48, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15176 + MOVE_WHIRLWIND, + MOVE_SPIKES, + MOVE_STEEL_WING, + MOVE_AERIAL_ACE, + }, + }, + { +#line 15181 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15181 + .heldItem = ITEM_CHESTO_BERRY, +#line 15183 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15182 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15184 + MOVE_AERIAL_ACE, + MOVE_REST, + MOVE_DRAGON_DANCE, + MOVE_EARTHQUAKE, + }, + }, + }, }, - +#line 15189 [TRAINER_WINONA_4] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LEADER_WINONA, +#line 15190 .trainerName = _("WINONA"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, +#line 15191 + .trainerClass = TRAINER_CLASS_LEADER, +#line 15192 + .trainerPic = TRAINER_PIC_LEADER_WINONA, + .encounterMusic_gender = +#line 15193 +F_TRAINER_FEMALE | +#line 15194 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 15195 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 15196 .doubleBattle = TRUE, +#line 15197 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_RISKY, - .party = TRAINER_PARTY(sParty_Winona4), + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 15199 + .species = SPECIES_NOCTOWL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15201 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15200 + .lvl = 48, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15202 + MOVE_HYPNOSIS, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_DREAM_EATER, + }, + }, + { +#line 15207 + .species = SPECIES_TROPIUS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15209 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15208 + .lvl = 49, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15210 + MOVE_SUNNY_DAY, + MOVE_AERIAL_ACE, + MOVE_SOLAR_BEAM, + MOVE_EARTHQUAKE, + }, + }, + { +#line 15215 + .species = SPECIES_DRAGONAIR, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15215 + .heldItem = ITEM_SITRUS_BERRY, +#line 15217 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15216 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15218 + MOVE_THUNDER_WAVE, + MOVE_THUNDERBOLT, + MOVE_PROTECT, + MOVE_ICE_BEAM, + }, + }, + { +#line 15223 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15225 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15224 + .lvl = 51, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15226 + MOVE_SURF, + MOVE_SUPERSONIC, + MOVE_PROTECT, + MOVE_AERIAL_ACE, + }, + }, + { +#line 15231 + .species = SPECIES_SKARMORY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15233 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15232 + .lvl = 53, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15234 + MOVE_WHIRLWIND, + MOVE_SPIKES, + MOVE_STEEL_WING, + MOVE_AERIAL_ACE, + }, + }, + { +#line 15239 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15239 + .heldItem = ITEM_CHESTO_BERRY, +#line 15241 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15240 + .lvl = 55, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15242 + MOVE_AERIAL_ACE, + MOVE_REST, + MOVE_DRAGON_DANCE, + MOVE_EARTHQUAKE, + }, + }, + }, }, - +#line 15247 [TRAINER_WINONA_5] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LEADER_WINONA, +#line 15248 .trainerName = _("WINONA"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, +#line 15249 + .trainerClass = TRAINER_CLASS_LEADER, +#line 15250 + .trainerPic = TRAINER_PIC_LEADER_WINONA, + .encounterMusic_gender = +#line 15251 +F_TRAINER_FEMALE | +#line 15252 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 15253 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 15254 .doubleBattle = TRUE, +#line 15255 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_RISKY, - .party = TRAINER_PARTY(sParty_Winona5), + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 15257 + .species = SPECIES_NOCTOWL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15259 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15258 + .lvl = 53, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15260 + MOVE_HYPNOSIS, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_DREAM_EATER, + }, + }, + { +#line 15265 + .species = SPECIES_TROPIUS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15267 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15266 + .lvl = 54, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15268 + MOVE_SUNNY_DAY, + MOVE_AERIAL_ACE, + MOVE_SOLAR_BEAM, + MOVE_EARTHQUAKE, + }, + }, + { +#line 15273 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15275 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15274 + .lvl = 55, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15276 + MOVE_SURF, + MOVE_SUPERSONIC, + MOVE_PROTECT, + MOVE_AERIAL_ACE, + }, + }, + { +#line 15281 + .species = SPECIES_DRAGONITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15281 + .heldItem = ITEM_SITRUS_BERRY, +#line 15283 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15282 + .lvl = 55, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15284 + MOVE_HYPER_BEAM, + MOVE_THUNDERBOLT, + MOVE_EARTHQUAKE, + MOVE_ICE_BEAM, + }, + }, + { +#line 15289 + .species = SPECIES_SKARMORY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15291 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15290 + .lvl = 58, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15292 + MOVE_WHIRLWIND, + MOVE_SPIKES, + MOVE_STEEL_WING, + MOVE_AERIAL_ACE, + }, + }, + { +#line 15297 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15297 + .heldItem = ITEM_CHESTO_BERRY, +#line 15299 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15298 + .lvl = 60, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15300 + MOVE_SKY_ATTACK, + MOVE_REST, + MOVE_DRAGON_DANCE, + MOVE_EARTHQUAKE, + }, + }, + }, }, - +#line 15305 [TRAINER_TATE_AND_LIZA_2] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LEADER_TATE_AND_LIZA, +#line 15306 .trainerName = _("TATE&LIZA"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, +#line 15307 + .trainerClass = TRAINER_CLASS_LEADER, +#line 15308 + .trainerPic = TRAINER_PIC_LEADER_TATE_AND_LIZA, + .encounterMusic_gender = +#line 15310 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 15311 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 15312 .doubleBattle = TRUE, +#line 15313 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_TateAndLiza2), + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 15315 + .species = SPECIES_SLOWPOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15317 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15316 + .lvl = 48, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15318 + MOVE_YAWN, + MOVE_PSYCHIC, + MOVE_CALM_MIND, + MOVE_PROTECT, + }, + }, + { +#line 15323 + .species = SPECIES_CLAYDOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15325 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15324 + .lvl = 49, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15326 + MOVE_EARTHQUAKE, + MOVE_ANCIENT_POWER, + MOVE_PSYCHIC, + MOVE_LIGHT_SCREEN, + }, + }, + { +#line 15331 + .species = SPECIES_XATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15331 + .heldItem = ITEM_CHESTO_BERRY, +#line 15333 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15332 + .lvl = 49, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15334 + MOVE_PSYCHIC, + MOVE_REST, + MOVE_CONFUSE_RAY, + MOVE_CALM_MIND, + }, + }, + { +#line 15339 + .species = SPECIES_LUNATONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15339 + .heldItem = ITEM_CHESTO_BERRY, +#line 15341 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15340 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15342 + MOVE_EARTHQUAKE, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_CALM_MIND, + }, + }, + { +#line 15347 + .species = SPECIES_SOLROCK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15347 + .heldItem = ITEM_SITRUS_BERRY, +#line 15349 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15348 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15350 + MOVE_SUNNY_DAY, + MOVE_SOLAR_BEAM, + MOVE_PSYCHIC, + MOVE_FLAMETHROWER, + }, + }, + }, }, - +#line 15355 [TRAINER_TATE_AND_LIZA_3] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LEADER_TATE_AND_LIZA, +#line 15356 .trainerName = _("TATE&LIZA"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, +#line 15357 + .trainerClass = TRAINER_CLASS_LEADER, +#line 15358 + .trainerPic = TRAINER_PIC_LEADER_TATE_AND_LIZA, + .encounterMusic_gender = +#line 15360 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 15361 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 15362 .doubleBattle = TRUE, +#line 15363 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_TateAndLiza3), + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 15365 + .species = SPECIES_DROWZEE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15367 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15366 + .lvl = 53, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15368 + MOVE_HYPNOSIS, + MOVE_DREAM_EATER, + MOVE_HEADBUTT, + MOVE_PROTECT, + }, + }, + { +#line 15373 + .species = SPECIES_SLOWPOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15375 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15374 + .lvl = 53, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15376 + MOVE_YAWN, + MOVE_PSYCHIC, + MOVE_CALM_MIND, + MOVE_PROTECT, + }, + }, + { +#line 15381 + .species = SPECIES_CLAYDOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15383 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15382 + .lvl = 54, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15384 + MOVE_EARTHQUAKE, + MOVE_EXPLOSION, + MOVE_PSYCHIC, + MOVE_LIGHT_SCREEN, + }, + }, + { +#line 15389 + .species = SPECIES_XATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15389 + .heldItem = ITEM_CHESTO_BERRY, +#line 15391 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15390 + .lvl = 54, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15392 + MOVE_PSYCHIC, + MOVE_REST, + MOVE_CONFUSE_RAY, + MOVE_CALM_MIND, + }, + }, + { +#line 15397 + .species = SPECIES_LUNATONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15397 + .heldItem = ITEM_CHESTO_BERRY, +#line 15399 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15398 + .lvl = 55, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15400 + MOVE_EARTHQUAKE, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_CALM_MIND, + }, + }, + { +#line 15405 + .species = SPECIES_SOLROCK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15405 + .heldItem = ITEM_SITRUS_BERRY, +#line 15407 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15406 + .lvl = 55, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15408 + MOVE_SUNNY_DAY, + MOVE_SOLAR_BEAM, + MOVE_PSYCHIC, + MOVE_FLAMETHROWER, + }, + }, + }, }, - +#line 15413 [TRAINER_TATE_AND_LIZA_4] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LEADER_TATE_AND_LIZA, +#line 15414 .trainerName = _("TATE&LIZA"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, +#line 15415 + .trainerClass = TRAINER_CLASS_LEADER, +#line 15416 + .trainerPic = TRAINER_PIC_LEADER_TATE_AND_LIZA, + .encounterMusic_gender = +#line 15418 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 15419 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 15420 .doubleBattle = TRUE, +#line 15421 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_TateAndLiza4), + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 15423 + .species = SPECIES_HYPNO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15425 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15424 + .lvl = 58, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15426 + MOVE_HYPNOSIS, + MOVE_DREAM_EATER, + MOVE_HEADBUTT, + MOVE_PROTECT, + }, + }, + { +#line 15431 + .species = SPECIES_CLAYDOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15433 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15432 + .lvl = 59, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15434 + MOVE_EARTHQUAKE, + MOVE_EXPLOSION, + MOVE_PSYCHIC, + MOVE_LIGHT_SCREEN, + }, + }, + { +#line 15439 + .species = SPECIES_SLOWPOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15441 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15440 + .lvl = 58, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15442 + MOVE_YAWN, + MOVE_PSYCHIC, + MOVE_CALM_MIND, + MOVE_PROTECT, + }, + }, + { +#line 15447 + .species = SPECIES_XATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15447 + .heldItem = ITEM_CHESTO_BERRY, +#line 15449 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15448 + .lvl = 59, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15450 + MOVE_PSYCHIC, + MOVE_REST, + MOVE_CONFUSE_RAY, + MOVE_CALM_MIND, + }, + }, + { +#line 15455 + .species = SPECIES_LUNATONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15455 + .heldItem = ITEM_CHESTO_BERRY, +#line 15457 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15456 + .lvl = 60, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15458 + MOVE_EARTHQUAKE, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_CALM_MIND, + }, + }, + { +#line 15463 + .species = SPECIES_SOLROCK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15463 + .heldItem = ITEM_SITRUS_BERRY, +#line 15465 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15464 + .lvl = 60, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15466 + MOVE_SUNNY_DAY, + MOVE_SOLAR_BEAM, + MOVE_PSYCHIC, + MOVE_FLAMETHROWER, + }, + }, + }, }, - +#line 15471 [TRAINER_TATE_AND_LIZA_5] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_LEADER_TATE_AND_LIZA, +#line 15472 .trainerName = _("TATE&LIZA"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, +#line 15473 + .trainerClass = TRAINER_CLASS_LEADER, +#line 15474 + .trainerPic = TRAINER_PIC_LEADER_TATE_AND_LIZA, + .encounterMusic_gender = +#line 15476 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 15477 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 15478 .doubleBattle = TRUE, +#line 15479 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_TateAndLiza5), + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 15481 + .species = SPECIES_HYPNO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15483 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15482 + .lvl = 63, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15484 + MOVE_HYPNOSIS, + MOVE_DREAM_EATER, + MOVE_HEADBUTT, + MOVE_PROTECT, + }, + }, + { +#line 15489 + .species = SPECIES_CLAYDOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15491 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15490 + .lvl = 64, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15492 + MOVE_EARTHQUAKE, + MOVE_EXPLOSION, + MOVE_PSYCHIC, + MOVE_LIGHT_SCREEN, + }, + }, + { +#line 15497 + .species = SPECIES_SLOWKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15499 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15498 + .lvl = 63, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15500 + MOVE_YAWN, + MOVE_PSYCHIC, + MOVE_CALM_MIND, + MOVE_PROTECT, + }, + }, + { +#line 15505 + .species = SPECIES_XATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15505 + .heldItem = ITEM_CHESTO_BERRY, +#line 15507 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15506 + .lvl = 64, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15508 + MOVE_PSYCHIC, + MOVE_REST, + MOVE_CONFUSE_RAY, + MOVE_CALM_MIND, + }, + }, + { +#line 15513 + .species = SPECIES_LUNATONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15513 + .heldItem = ITEM_CHESTO_BERRY, +#line 15515 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15514 + .lvl = 65, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15516 + MOVE_EARTHQUAKE, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_CALM_MIND, + }, + }, + { +#line 15521 + .species = SPECIES_SOLROCK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15521 + .heldItem = ITEM_SITRUS_BERRY, +#line 15523 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15522 + .lvl = 65, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15524 + MOVE_SUNNY_DAY, + MOVE_SOLAR_BEAM, + MOVE_PSYCHIC, + MOVE_FLAMETHROWER, + }, + }, + }, }, - +#line 15529 [TRAINER_JUAN_2] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_LEADER_JUAN, +#line 15530 .trainerName = _("JUAN"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, +#line 15531 + .trainerClass = TRAINER_CLASS_LEADER, +#line 15532 + .trainerPic = TRAINER_PIC_LEADER_JUAN, + .encounterMusic_gender = +#line 15534 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15535 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 15536 .doubleBattle = TRUE, +#line 15537 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Juan2), + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 15539 + .species = SPECIES_POLIWAG, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15541 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15540 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15542 + MOVE_HYPNOSIS, + MOVE_RAIN_DANCE, + MOVE_PROTECT, + MOVE_HYDRO_PUMP, + }, + }, + { +#line 15547 + .species = SPECIES_WHISCASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15549 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15548 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15550 + MOVE_RAIN_DANCE, + MOVE_WATER_PULSE, + MOVE_DOUBLE_TEAM, + MOVE_FISSURE, + }, + }, + { +#line 15555 + .species = SPECIES_WALREIN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15557 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15556 + .lvl = 48, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15558 + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_PROTECT, + MOVE_ICE_BEAM, + }, + }, + { +#line 15563 + .species = SPECIES_CRAWDAUNT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15563 + .heldItem = ITEM_CHESTO_BERRY, +#line 15565 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15564 + .lvl = 48, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15566 + MOVE_REST, + MOVE_CRABHAMMER, + MOVE_TAUNT, + MOVE_DOUBLE_TEAM, + }, + }, + { +#line 15571 + .species = SPECIES_KINGDRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15571 + .heldItem = ITEM_CHESTO_BERRY, +#line 15573 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15572 + .lvl = 51, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15574 + MOVE_WATER_PULSE, + MOVE_DOUBLE_TEAM, + MOVE_ICE_BEAM, + MOVE_REST, + }, + }, + }, }, - +#line 15579 [TRAINER_JUAN_3] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_LEADER_JUAN, +#line 15580 .trainerName = _("JUAN"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, +#line 15581 + .trainerClass = TRAINER_CLASS_LEADER, +#line 15582 + .trainerPic = TRAINER_PIC_LEADER_JUAN, + .encounterMusic_gender = +#line 15584 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15585 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 15586 .doubleBattle = TRUE, +#line 15587 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Juan3), + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 15589 + .species = SPECIES_POLIWHIRL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15591 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15590 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15592 + MOVE_HYPNOSIS, + MOVE_RAIN_DANCE, + MOVE_PROTECT, + MOVE_HYDRO_PUMP, + }, + }, + { +#line 15597 + .species = SPECIES_WHISCASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15599 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15598 + .lvl = 51, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15600 + MOVE_RAIN_DANCE, + MOVE_WATER_PULSE, + MOVE_DOUBLE_TEAM, + MOVE_FISSURE, + }, + }, + { +#line 15605 + .species = SPECIES_WALREIN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15607 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15606 + .lvl = 53, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15608 + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_PROTECT, + MOVE_ICE_BEAM, + }, + }, + { +#line 15613 + .species = SPECIES_CRAWDAUNT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15613 + .heldItem = ITEM_CHESTO_BERRY, +#line 15615 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15614 + .lvl = 53, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15616 + MOVE_REST, + MOVE_GUILLOTINE, + MOVE_TAUNT, + MOVE_DOUBLE_TEAM, + }, + }, + { +#line 15621 + .species = SPECIES_KINGDRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15621 + .heldItem = ITEM_CHESTO_BERRY, +#line 15623 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15622 + .lvl = 56, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15624 + MOVE_WATER_PULSE, + MOVE_DOUBLE_TEAM, + MOVE_ICE_BEAM, + MOVE_REST, + }, + }, + }, }, - +#line 15629 [TRAINER_JUAN_4] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_LEADER_JUAN, +#line 15630 .trainerName = _("JUAN"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, +#line 15631 + .trainerClass = TRAINER_CLASS_LEADER, +#line 15632 + .trainerPic = TRAINER_PIC_LEADER_JUAN, + .encounterMusic_gender = +#line 15634 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15635 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 15636 .doubleBattle = TRUE, +#line 15637 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Juan4), + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 15639 + .species = SPECIES_LAPRAS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15641 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15640 + .lvl = 56, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15642 + MOVE_HYDRO_PUMP, + MOVE_PERISH_SONG, + MOVE_ICE_BEAM, + MOVE_CONFUSE_RAY, + }, + }, + { +#line 15647 + .species = SPECIES_WHISCASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15649 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15648 + .lvl = 58, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15650 + MOVE_RAIN_DANCE, + MOVE_WATER_PULSE, + MOVE_DOUBLE_TEAM, + MOVE_FISSURE, + }, + }, + { +#line 15655 + .species = SPECIES_POLIWHIRL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15657 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15656 + .lvl = 56, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15658 + MOVE_HYPNOSIS, + MOVE_RAIN_DANCE, + MOVE_PROTECT, + MOVE_HYDRO_PUMP, + }, + }, + { +#line 15663 + .species = SPECIES_WALREIN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15665 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15664 + .lvl = 58, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15666 + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_PROTECT, + MOVE_ICE_BEAM, + }, + }, + { +#line 15671 + .species = SPECIES_CRAWDAUNT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15671 + .heldItem = ITEM_CHESTO_BERRY, +#line 15673 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15672 + .lvl = 58, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15674 + MOVE_REST, + MOVE_GUILLOTINE, + MOVE_TAUNT, + MOVE_DOUBLE_TEAM, + }, + }, + { +#line 15679 + .species = SPECIES_KINGDRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15679 + .heldItem = ITEM_CHESTO_BERRY, +#line 15681 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15680 + .lvl = 61, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15682 + MOVE_WATER_PULSE, + MOVE_DOUBLE_TEAM, + MOVE_ICE_BEAM, + MOVE_REST, + }, + }, + }, }, - +#line 15687 [TRAINER_JUAN_5] = { - .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_LEADER_JUAN, +#line 15688 .trainerName = _("JUAN"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, +#line 15689 + .trainerClass = TRAINER_CLASS_LEADER, +#line 15690 + .trainerPic = TRAINER_PIC_LEADER_JUAN, + .encounterMusic_gender = +#line 15692 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15693 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 15694 .doubleBattle = TRUE, +#line 15695 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Juan5), + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 15697 + .species = SPECIES_LAPRAS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15699 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15698 + .lvl = 61, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15700 + MOVE_HYDRO_PUMP, + MOVE_PERISH_SONG, + MOVE_ICE_BEAM, + MOVE_CONFUSE_RAY, + }, + }, + { +#line 15705 + .species = SPECIES_WHISCASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15707 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15706 + .lvl = 63, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15708 + MOVE_RAIN_DANCE, + MOVE_WATER_PULSE, + MOVE_DOUBLE_TEAM, + MOVE_FISSURE, + }, + }, + { +#line 15713 + .species = SPECIES_POLITOED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15715 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15714 + .lvl = 61, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15716 + MOVE_HYPNOSIS, + MOVE_RAIN_DANCE, + MOVE_HYDRO_PUMP, + MOVE_PERISH_SONG, + }, + }, + { +#line 15721 + .species = SPECIES_WALREIN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15723 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15722 + .lvl = 63, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15724 + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_PROTECT, + MOVE_SHEER_COLD, + }, + }, + { +#line 15729 + .species = SPECIES_CRAWDAUNT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15729 + .heldItem = ITEM_CHESTO_BERRY, +#line 15731 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15730 + .lvl = 63, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15732 + MOVE_REST, + MOVE_GUILLOTINE, + MOVE_TAUNT, + MOVE_DOUBLE_TEAM, + }, + }, + { +#line 15737 + .species = SPECIES_KINGDRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15737 + .heldItem = ITEM_CHESTO_BERRY, +#line 15739 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15738 + .lvl = 66, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15740 + MOVE_WATER_PULSE, + MOVE_DOUBLE_TEAM, + MOVE_ICE_BEAM, + MOVE_REST, + }, + }, + }, }, - +#line 15745 [TRAINER_ANGELO] = { - .trainerClass = TRAINER_CLASS_BUG_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, - .trainerPic = TRAINER_PIC_BUG_MANIAC, +#line 15746 .trainerName = _("ANGELO"), - .items = {}, +#line 15747 + .trainerClass = TRAINER_CLASS_BUG_MANIAC, +#line 15748 + .trainerPic = TRAINER_PIC_BUG_MANIAC, + .encounterMusic_gender = +#line 15750 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 15751 .doubleBattle = FALSE, +#line 15752 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Angelo), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 15754 + .species = SPECIES_ILLUMISE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15756 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 15755 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15757 + MOVE_SHOCK_WAVE, + MOVE_QUICK_ATTACK, + MOVE_CHARM, + }, + }, + { +#line 15761 + .species = SPECIES_VOLBEAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15763 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 15762 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15764 + MOVE_SHOCK_WAVE, + MOVE_QUICK_ATTACK, + MOVE_CONFUSE_RAY, + }, + }, + }, }, - +#line 15768 [TRAINER_DARIUS] = { - .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_BIRD_KEEPER, +#line 15769 .trainerName = _("DARIUS"), - .items = {}, +#line 15770 + .trainerClass = TRAINER_CLASS_BIRD_KEEPER, +#line 15771 + .trainerPic = TRAINER_PIC_BIRD_KEEPER, + .encounterMusic_gender = +#line 15773 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 15774 .doubleBattle = FALSE, +#line 15775 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Darius), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 15777 + .species = SPECIES_TROPIUS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15779 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 15778 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 15781 [TRAINER_STEVEN] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_STEVEN, +#line 15782 .trainerName = _("STEVEN"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE}, +#line 15783 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 15784 + .trainerPic = TRAINER_PIC_STEVEN, + .encounterMusic_gender = +#line 15786 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15787 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 15788 .doubleBattle = FALSE, +#line 15789 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Steven), + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 15791 + .species = SPECIES_SKARMORY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15793 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15792 + .lvl = 77, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15794 + MOVE_TOXIC, + MOVE_AERIAL_ACE, + MOVE_SPIKES, + MOVE_STEEL_WING, + }, + }, + { +#line 15799 + .species = SPECIES_CLAYDOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15801 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15800 + .lvl = 75, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15802 + MOVE_REFLECT, + MOVE_LIGHT_SCREEN, + MOVE_ANCIENT_POWER, + MOVE_EARTHQUAKE, + }, + }, + { +#line 15807 + .species = SPECIES_AGGRON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15809 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15808 + .lvl = 76, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15810 + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_SOLAR_BEAM, + MOVE_DRAGON_CLAW, + }, + }, + { +#line 15815 + .species = SPECIES_CRADILY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15817 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15816 + .lvl = 76, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15818 + MOVE_GIGA_DRAIN, + MOVE_ANCIENT_POWER, + MOVE_INGRAIN, + MOVE_CONFUSE_RAY, + }, + }, + { +#line 15823 + .species = SPECIES_ARMALDO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15825 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15824 + .lvl = 76, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15826 + MOVE_WATER_PULSE, + MOVE_ANCIENT_POWER, + MOVE_AERIAL_ACE, + MOVE_SLASH, + }, + }, + { +#line 15831 + .species = SPECIES_METAGROSS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15831 + .heldItem = ITEM_SITRUS_BERRY, +#line 15833 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15832 + .lvl = 78, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15834 + MOVE_EARTHQUAKE, + MOVE_PSYCHIC, + MOVE_METEOR_MASH, + MOVE_SHADOW_BALL, + }, + }, + }, }, - +#line 15839 [TRAINER_ANABEL] = { - .trainerClass = TRAINER_CLASS_SALON_MAIDEN, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_SALON_MAIDEN_ANABEL, +#line 15840 .trainerName = _("ANABEL"), - .items = {}, +#line 15841 + .trainerClass = TRAINER_CLASS_SALON_MAIDEN, +#line 15842 + .trainerPic = TRAINER_PIC_SALON_MAIDEN_ANABEL, + .encounterMusic_gender = +#line 15843 +F_TRAINER_FEMALE | +#line 15844 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15845 .doubleBattle = FALSE, +#line 15846 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Anabel), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 15848 + .species = SPECIES_BELDUM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15850 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 15849 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 15852 [TRAINER_TUCKER] = { - .trainerClass = TRAINER_CLASS_DOME_ACE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_DOME_ACE_TUCKER, +#line 15853 .trainerName = _("TUCKER"), - .items = {}, +#line 15854 + .trainerClass = TRAINER_CLASS_DOME_ACE, +#line 15855 + .trainerPic = TRAINER_PIC_DOME_ACE_TUCKER, + .encounterMusic_gender = +#line 15857 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15858 .doubleBattle = FALSE, +#line 15859 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Tucker), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 15861 + .species = SPECIES_BELDUM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15863 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 15862 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 15865 [TRAINER_SPENSER] = { - .trainerClass = TRAINER_CLASS_PALACE_MAVEN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_PALACE_MAVEN_SPENSER, +#line 15866 .trainerName = _("SPENSER"), - .items = {}, +#line 15867 + .trainerClass = TRAINER_CLASS_PALACE_MAVEN, +#line 15868 + .trainerPic = TRAINER_PIC_PALACE_MAVEN_SPENSER, + .encounterMusic_gender = +#line 15870 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15871 .doubleBattle = FALSE, +#line 15872 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Spenser), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 15874 + .species = SPECIES_BELDUM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15876 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 15875 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 15878 [TRAINER_GRETA] = { - .trainerClass = TRAINER_CLASS_ARENA_TYCOON, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_ARENA_TYCOON_GRETA, +#line 15879 .trainerName = _("GRETA"), - .items = {}, +#line 15880 + .trainerClass = TRAINER_CLASS_ARENA_TYCOON, +#line 15881 + .trainerPic = TRAINER_PIC_ARENA_TYCOON_GRETA, + .encounterMusic_gender = +#line 15882 +F_TRAINER_FEMALE | +#line 15883 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15884 .doubleBattle = FALSE, +#line 15885 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Greta), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 15887 + .species = SPECIES_BELDUM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15889 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 15888 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 15891 [TRAINER_NOLAND] = { - .trainerClass = TRAINER_CLASS_FACTORY_HEAD, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_FACTORY_HEAD_NOLAND, +#line 15892 .trainerName = _("NOLAND"), - .items = {}, +#line 15893 + .trainerClass = TRAINER_CLASS_FACTORY_HEAD, +#line 15894 + .trainerPic = TRAINER_PIC_FACTORY_HEAD_NOLAND, + .encounterMusic_gender = +#line 15896 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15897 .doubleBattle = FALSE, +#line 15898 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Noland), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 15900 + .species = SPECIES_BELDUM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15902 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 15901 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 15904 [TRAINER_LUCY] = { - .trainerClass = TRAINER_CLASS_PIKE_QUEEN, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_PIKE_QUEEN_LUCY, +#line 15905 .trainerName = _("LUCY"), - .items = {}, +#line 15906 + .trainerClass = TRAINER_CLASS_PIKE_QUEEN, +#line 15907 + .trainerPic = TRAINER_PIC_PIKE_QUEEN_LUCY, + .encounterMusic_gender = +#line 15908 +F_TRAINER_FEMALE | +#line 15909 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15910 .doubleBattle = FALSE, +#line 15911 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Lucy), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 15913 + .species = SPECIES_BELDUM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15915 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 15914 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 15917 [TRAINER_BRANDON] = { - .trainerClass = TRAINER_CLASS_PYRAMID_KING, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_PYRAMID_KING_BRANDON, +#line 15918 .trainerName = _("BRANDON"), - .items = {}, +#line 15919 + .trainerClass = TRAINER_CLASS_PYRAMID_KING, +#line 15920 + .trainerPic = TRAINER_PIC_PYRAMID_KING_BRANDON, + .encounterMusic_gender = +#line 15922 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15923 .doubleBattle = FALSE, +#line 15924 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Brandon), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 15926 + .species = SPECIES_BELDUM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15928 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 15927 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 15930 [TRAINER_ANDRES_2] = { - .trainerClass = TRAINER_CLASS_RUIN_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_RUIN_MANIAC, +#line 15931 .trainerName = _("ANDRES"), - .items = {}, +#line 15932 + .trainerClass = TRAINER_CLASS_RUIN_MANIAC, +#line 15933 + .trainerPic = TRAINER_PIC_RUIN_MANIAC, + .encounterMusic_gender = +#line 15935 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 15936 .doubleBattle = FALSE, +#line 15937 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Andres2), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 15939 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15941 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 15940 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 15943 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15945 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 15944 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 15947 [TRAINER_ANDRES_3] = { - .trainerClass = TRAINER_CLASS_RUIN_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_RUIN_MANIAC, +#line 15948 .trainerName = _("ANDRES"), - .items = {}, +#line 15949 + .trainerClass = TRAINER_CLASS_RUIN_MANIAC, +#line 15950 + .trainerPic = TRAINER_PIC_RUIN_MANIAC, + .encounterMusic_gender = +#line 15952 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 15953 .doubleBattle = FALSE, +#line 15954 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Andres3), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 15956 + .species = SPECIES_NOSEPASS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15958 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 15957 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 15960 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15962 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 15961 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 15964 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15966 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 15965 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 15968 [TRAINER_ANDRES_4] = { - .trainerClass = TRAINER_CLASS_RUIN_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_RUIN_MANIAC, +#line 15969 .trainerName = _("ANDRES"), - .items = {}, +#line 15970 + .trainerClass = TRAINER_CLASS_RUIN_MANIAC, +#line 15971 + .trainerPic = TRAINER_PIC_RUIN_MANIAC, + .encounterMusic_gender = +#line 15973 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 15974 .doubleBattle = FALSE, +#line 15975 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Andres4), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 15977 + .species = SPECIES_NOSEPASS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15979 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 15978 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 15981 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15983 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 15982 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 15985 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15987 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 15986 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 15989 [TRAINER_ANDRES_5] = { - .trainerClass = TRAINER_CLASS_RUIN_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_RUIN_MANIAC, +#line 15990 .trainerName = _("ANDRES"), - .items = {}, +#line 15991 + .trainerClass = TRAINER_CLASS_RUIN_MANIAC, +#line 15992 + .trainerPic = TRAINER_PIC_RUIN_MANIAC, + .encounterMusic_gender = +#line 15994 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 15995 .doubleBattle = FALSE, +#line 15996 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Andres5), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 15998 + .species = SPECIES_NOSEPASS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16000 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 15999 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16002 + .species = SPECIES_SANDSLASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16004 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16003 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16006 + .species = SPECIES_SANDSLASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16008 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16007 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16010 [TRAINER_CORY_2] = { - .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_SAILOR, +#line 16011 .trainerName = _("CORY"), - .items = {}, +#line 16012 + .trainerClass = TRAINER_CLASS_SAILOR, +#line 16013 + .trainerPic = TRAINER_PIC_SAILOR, + .encounterMusic_gender = +#line 16015 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 16016 .doubleBattle = FALSE, +#line 16017 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cory2), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16019 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16021 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16020 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16023 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16025 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16024 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16027 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16029 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16028 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16031 [TRAINER_CORY_3] = { - .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_SAILOR, +#line 16032 .trainerName = _("CORY"), - .items = {}, +#line 16033 + .trainerClass = TRAINER_CLASS_SAILOR, +#line 16034 + .trainerPic = TRAINER_PIC_SAILOR, + .encounterMusic_gender = +#line 16036 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 16037 .doubleBattle = FALSE, +#line 16038 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cory3), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16040 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16042 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16041 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16044 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16046 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16045 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16048 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16050 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16049 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16052 [TRAINER_CORY_4] = { - .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_SAILOR, +#line 16053 .trainerName = _("CORY"), - .items = {}, +#line 16054 + .trainerClass = TRAINER_CLASS_SAILOR, +#line 16055 + .trainerPic = TRAINER_PIC_SAILOR, + .encounterMusic_gender = +#line 16057 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 16058 .doubleBattle = FALSE, +#line 16059 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cory4), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16061 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16063 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16062 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16065 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16067 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16066 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16069 + .species = SPECIES_TENTACRUEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16071 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16070 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16073 [TRAINER_CORY_5] = { - .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_SAILOR, +#line 16074 .trainerName = _("CORY"), - .items = {}, +#line 16075 + .trainerClass = TRAINER_CLASS_SAILOR, +#line 16076 + .trainerPic = TRAINER_PIC_SAILOR, + .encounterMusic_gender = +#line 16078 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 16079 .doubleBattle = FALSE, +#line 16080 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cory5), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16082 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16084 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16083 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16086 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16088 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16087 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16090 + .species = SPECIES_TENTACRUEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16092 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16091 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16094 [TRAINER_PABLO_2] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, +#line 16095 .trainerName = _("PABLO"), - .items = {}, +#line 16096 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 16097 + .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, + .encounterMusic_gender = +#line 16099 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 16100 .doubleBattle = FALSE, +#line 16101 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Pablo2), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 16103 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16105 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16104 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16107 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16109 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16108 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16111 [TRAINER_PABLO_3] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, +#line 16112 .trainerName = _("PABLO"), - .items = {}, +#line 16113 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 16114 + .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, + .encounterMusic_gender = +#line 16116 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 16117 .doubleBattle = FALSE, +#line 16118 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Pablo3), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16120 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16122 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16121 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16124 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16126 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16125 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16128 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16130 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16129 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16132 [TRAINER_PABLO_4] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, +#line 16133 .trainerName = _("PABLO"), - .items = {}, +#line 16134 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 16135 + .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, + .encounterMusic_gender = +#line 16137 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 16138 .doubleBattle = FALSE, +#line 16139 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Pablo4), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16141 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16143 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16142 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16145 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16147 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16146 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16149 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16151 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16150 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16153 [TRAINER_PABLO_5] = { - .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, - .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, +#line 16154 .trainerName = _("PABLO"), - .items = {}, +#line 16155 + .trainerClass = TRAINER_CLASS_TRIATHLETE, +#line 16156 + .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, + .encounterMusic_gender = +#line 16158 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 16159 .doubleBattle = FALSE, +#line 16160 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Pablo5), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16162 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16164 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16163 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16166 + .species = SPECIES_STARMIE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16168 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16167 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16170 + .species = SPECIES_STARMIE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16172 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16171 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16174 [TRAINER_KOJI_2] = { - .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_BLACK_BELT, +#line 16175 .trainerName = _("KOJI"), - .items = {}, +#line 16176 + .trainerClass = TRAINER_CLASS_BLACK_BELT, +#line 16177 + .trainerPic = TRAINER_PIC_BLACK_BELT, + .encounterMusic_gender = +#line 16179 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 16180 .doubleBattle = FALSE, +#line 16181 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Koji2), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 16183 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16185 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16184 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16187 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16189 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16188 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16191 [TRAINER_KOJI_3] = { - .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_BLACK_BELT, +#line 16192 .trainerName = _("KOJI"), - .items = {}, +#line 16193 + .trainerClass = TRAINER_CLASS_BLACK_BELT, +#line 16194 + .trainerPic = TRAINER_PIC_BLACK_BELT, + .encounterMusic_gender = +#line 16196 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 16197 .doubleBattle = FALSE, +#line 16198 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Koji3), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16200 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16202 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16201 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16204 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16206 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16205 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16208 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16210 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16209 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16212 [TRAINER_KOJI_4] = { - .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_BLACK_BELT, +#line 16213 .trainerName = _("KOJI"), - .items = {}, +#line 16214 + .trainerClass = TRAINER_CLASS_BLACK_BELT, +#line 16215 + .trainerPic = TRAINER_PIC_BLACK_BELT, + .encounterMusic_gender = +#line 16217 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 16218 .doubleBattle = FALSE, +#line 16219 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Koji4), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16221 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16223 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16222 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16225 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16227 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16226 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16229 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16231 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16230 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16233 [TRAINER_KOJI_5] = { - .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_BLACK_BELT, +#line 16234 .trainerName = _("KOJI"), - .items = {}, +#line 16235 + .trainerClass = TRAINER_CLASS_BLACK_BELT, +#line 16236 + .trainerPic = TRAINER_PIC_BLACK_BELT, + .encounterMusic_gender = +#line 16238 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 16239 .doubleBattle = FALSE, +#line 16240 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Koji5), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16242 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16244 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16243 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16246 + .species = SPECIES_MACHAMP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16248 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16247 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16250 + .species = SPECIES_MACHAMP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16252 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16251 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16254 [TRAINER_CRISTIN_2] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_F, +#line 16255 .trainerName = _("CRISTIN"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 16256 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 16257 + .trainerPic = TRAINER_PIC_COOLTRAINER_F, + .encounterMusic_gender = +#line 16258 +F_TRAINER_FEMALE | +#line 16259 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 16260 + .items = { ITEM_HYPER_POTION }, +#line 16261 .doubleBattle = FALSE, +#line 16262 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Cristin2), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 16264 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16266 + .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), +#line 16265 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16268 + .species = SPECIES_VIGOROTH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16270 + .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), +#line 16269 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16272 [TRAINER_CRISTIN_3] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_F, +#line 16273 .trainerName = _("CRISTIN"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 16274 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 16275 + .trainerPic = TRAINER_PIC_COOLTRAINER_F, + .encounterMusic_gender = +#line 16276 +F_TRAINER_FEMALE | +#line 16277 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 16278 + .items = { ITEM_HYPER_POTION }, +#line 16279 .doubleBattle = FALSE, +#line 16280 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Cristin3), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16282 + .species = SPECIES_SPINDA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16284 + .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), +#line 16283 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16286 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16288 + .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), +#line 16287 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16290 + .species = SPECIES_VIGOROTH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16292 + .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), +#line 16291 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16294 [TRAINER_CRISTIN_4] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_F, +#line 16295 .trainerName = _("CRISTIN"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 16296 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 16297 + .trainerPic = TRAINER_PIC_COOLTRAINER_F, + .encounterMusic_gender = +#line 16298 +F_TRAINER_FEMALE | +#line 16299 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 16300 + .items = { ITEM_HYPER_POTION }, +#line 16301 .doubleBattle = FALSE, +#line 16302 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Cristin4), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16304 + .species = SPECIES_SPINDA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16306 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 16305 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16308 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16310 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 16309 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16312 + .species = SPECIES_VIGOROTH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16314 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 16313 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16316 [TRAINER_CRISTIN_5] = { - .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, - .trainerPic = TRAINER_PIC_COOLTRAINER_F, +#line 16317 .trainerName = _("CRISTIN"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, +#line 16318 + .trainerClass = TRAINER_CLASS_COOLTRAINER, +#line 16319 + .trainerPic = TRAINER_PIC_COOLTRAINER_F, + .encounterMusic_gender = +#line 16320 +F_TRAINER_FEMALE | +#line 16321 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 16322 + .items = { ITEM_HYPER_POTION }, +#line 16323 .doubleBattle = FALSE, +#line 16324 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Cristin5), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16326 + .species = SPECIES_SPINDA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16328 + .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), +#line 16327 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16330 + .species = SPECIES_EXPLOUD, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16332 + .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), +#line 16331 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16334 + .species = SPECIES_SLAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16336 + .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), +#line 16335 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16338 [TRAINER_FERNANDO_2] = { - .trainerClass = TRAINER_CLASS_GUITARIST, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_GUITARIST, +#line 16339 .trainerName = _("FERNANDO"), - .items = {}, +#line 16340 + .trainerClass = TRAINER_CLASS_GUITARIST, +#line 16341 + .trainerPic = TRAINER_PIC_GUITARIST, + .encounterMusic_gender = +#line 16343 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 16344 .doubleBattle = FALSE, +#line 16345 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Fernando2), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16347 + .species = SPECIES_ELECTRIKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16349 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16348 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16351 + .species = SPECIES_ELECTRIKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16353 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16352 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16355 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16357 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16356 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16359 [TRAINER_FERNANDO_3] = { - .trainerClass = TRAINER_CLASS_GUITARIST, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_GUITARIST, +#line 16360 .trainerName = _("FERNANDO"), - .items = {}, +#line 16361 + .trainerClass = TRAINER_CLASS_GUITARIST, +#line 16362 + .trainerPic = TRAINER_PIC_GUITARIST, + .encounterMusic_gender = +#line 16364 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 16365 .doubleBattle = FALSE, +#line 16366 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Fernando3), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16368 + .species = SPECIES_ELECTRIKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16370 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16369 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16372 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16374 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16373 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16376 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16378 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16377 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16380 [TRAINER_FERNANDO_4] = { - .trainerClass = TRAINER_CLASS_GUITARIST, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_GUITARIST, +#line 16381 .trainerName = _("FERNANDO"), - .items = {}, +#line 16382 + .trainerClass = TRAINER_CLASS_GUITARIST, +#line 16383 + .trainerPic = TRAINER_PIC_GUITARIST, + .encounterMusic_gender = +#line 16385 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 16386 .doubleBattle = FALSE, +#line 16387 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Fernando4), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16389 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16391 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16390 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16393 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16395 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16394 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16397 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16399 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16398 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16401 [TRAINER_FERNANDO_5] = { - .trainerClass = TRAINER_CLASS_GUITARIST, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_GUITARIST, +#line 16402 .trainerName = _("FERNANDO"), - .items = {}, +#line 16403 + .trainerClass = TRAINER_CLASS_GUITARIST, +#line 16404 + .trainerPic = TRAINER_PIC_GUITARIST, + .encounterMusic_gender = +#line 16406 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 16407 .doubleBattle = FALSE, +#line 16408 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Fernando5), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16410 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16412 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16411 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16414 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16416 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16415 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16418 + .species = SPECIES_EXPLOUD, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16420 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16419 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16422 [TRAINER_SAWYER_2] = { - .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_HIKER, +#line 16423 .trainerName = _("SAWYER"), - .items = {}, +#line 16424 + .trainerClass = TRAINER_CLASS_HIKER, +#line 16425 + .trainerPic = TRAINER_PIC_HIKER, + .encounterMusic_gender = +#line 16427 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 16428 .doubleBattle = FALSE, +#line 16429 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Sawyer2), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 16431 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16433 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16432 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16435 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16437 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16436 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16439 [TRAINER_SAWYER_3] = { - .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_HIKER, +#line 16440 .trainerName = _("SAWYER"), - .items = {}, +#line 16441 + .trainerClass = TRAINER_CLASS_HIKER, +#line 16442 + .trainerPic = TRAINER_PIC_HIKER, + .encounterMusic_gender = +#line 16444 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 16445 .doubleBattle = FALSE, +#line 16446 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Sawyer3), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16448 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16450 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16449 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16452 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16454 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16453 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16456 + .species = SPECIES_GRAVELER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16458 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16457 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16460 [TRAINER_SAWYER_4] = { - .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_HIKER, +#line 16461 .trainerName = _("SAWYER"), - .items = {}, +#line 16462 + .trainerClass = TRAINER_CLASS_HIKER, +#line 16463 + .trainerPic = TRAINER_PIC_HIKER, + .encounterMusic_gender = +#line 16465 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 16466 .doubleBattle = FALSE, +#line 16467 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Sawyer4), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16469 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16471 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16470 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16473 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16475 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16474 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16477 + .species = SPECIES_GRAVELER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16479 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16478 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16481 [TRAINER_SAWYER_5] = { - .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_HIKER, +#line 16482 .trainerName = _("SAWYER"), - .items = {}, +#line 16483 + .trainerClass = TRAINER_CLASS_HIKER, +#line 16484 + .trainerPic = TRAINER_PIC_HIKER, + .encounterMusic_gender = +#line 16486 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 16487 .doubleBattle = FALSE, +#line 16488 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Sawyer5), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16490 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16492 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16491 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16494 + .species = SPECIES_CAMERUPT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16496 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16495 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16498 + .species = SPECIES_GOLEM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16500 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16499 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16502 [TRAINER_GABRIELLE_2] = { - .trainerClass = TRAINER_CLASS_PKMN_BREEDER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, +#line 16503 .trainerName = _("GABRIELLE"), - .items = {}, +#line 16504 + .trainerClass = TRAINER_CLASS_PKMN_BREEDER, +#line 16505 + .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, + .encounterMusic_gender = +#line 16506 +F_TRAINER_FEMALE | +#line 16507 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 16508 .doubleBattle = FALSE, +#line 16509 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Gabrielle2), + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 16511 + .species = SPECIES_SKITTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16513 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16512 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16515 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16517 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16516 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16519 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16521 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16520 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16523 + .species = SPECIES_LOTAD, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16525 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16524 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16527 + .species = SPECIES_SEEDOT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16529 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16528 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16531 + .species = SPECIES_TAILLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16533 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16532 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16535 [TRAINER_GABRIELLE_3] = { - .trainerClass = TRAINER_CLASS_PKMN_BREEDER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, +#line 16536 .trainerName = _("GABRIELLE"), - .items = {}, +#line 16537 + .trainerClass = TRAINER_CLASS_PKMN_BREEDER, +#line 16538 + .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, + .encounterMusic_gender = +#line 16539 +F_TRAINER_FEMALE | +#line 16540 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 16541 .doubleBattle = FALSE, +#line 16542 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Gabrielle3), + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 16544 + .species = SPECIES_SKITTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16546 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16545 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16548 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16550 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16549 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16552 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16554 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16553 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16556 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16558 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16557 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16560 + .species = SPECIES_NUZLEAF, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16562 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16561 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16564 + .species = SPECIES_TAILLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16566 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16565 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16568 [TRAINER_GABRIELLE_4] = { - .trainerClass = TRAINER_CLASS_PKMN_BREEDER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, +#line 16569 .trainerName = _("GABRIELLE"), - .items = {}, +#line 16570 + .trainerClass = TRAINER_CLASS_PKMN_BREEDER, +#line 16571 + .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, + .encounterMusic_gender = +#line 16572 +F_TRAINER_FEMALE | +#line 16573 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 16574 .doubleBattle = FALSE, +#line 16575 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Gabrielle4), + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 16577 + .species = SPECIES_DELCATTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16579 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16578 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16581 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16583 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16582 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16585 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16587 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16586 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16589 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16591 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16590 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16593 + .species = SPECIES_NUZLEAF, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16595 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16594 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16597 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16599 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16598 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16601 [TRAINER_GABRIELLE_5] = { - .trainerClass = TRAINER_CLASS_PKMN_BREEDER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, +#line 16602 .trainerName = _("GABRIELLE"), - .items = {}, +#line 16603 + .trainerClass = TRAINER_CLASS_PKMN_BREEDER, +#line 16604 + .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, + .encounterMusic_gender = +#line 16605 +F_TRAINER_FEMALE | +#line 16606 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 16607 .doubleBattle = FALSE, +#line 16608 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Gabrielle5), + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 16610 + .species = SPECIES_DELCATTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16612 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16611 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16614 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16616 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16615 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16618 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16620 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16619 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16622 + .species = SPECIES_LUDICOLO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16624 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16623 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16626 + .species = SPECIES_SHIFTRY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16628 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16627 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16630 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16632 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16631 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16634 [TRAINER_THALIA_2] = { - .trainerClass = TRAINER_CLASS_BEAUTY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_BEAUTY, +#line 16635 .trainerName = _("THALIA"), - .items = {}, +#line 16636 + .trainerClass = TRAINER_CLASS_BEAUTY, +#line 16637 + .trainerPic = TRAINER_PIC_BEAUTY, + .encounterMusic_gender = +#line 16638 +F_TRAINER_FEMALE | +#line 16639 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 16640 .doubleBattle = FALSE, +#line 16641 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Thalia2), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 16643 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16645 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16644 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16647 + .species = SPECIES_HORSEA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16649 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16648 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16651 [TRAINER_THALIA_3] = { - .trainerClass = TRAINER_CLASS_BEAUTY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_BEAUTY, +#line 16652 .trainerName = _("THALIA"), - .items = {}, +#line 16653 + .trainerClass = TRAINER_CLASS_BEAUTY, +#line 16654 + .trainerPic = TRAINER_PIC_BEAUTY, + .encounterMusic_gender = +#line 16655 +F_TRAINER_FEMALE | +#line 16656 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 16657 .doubleBattle = FALSE, +#line 16658 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Thalia3), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16660 + .species = SPECIES_LUVDISC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16662 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16661 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16664 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16666 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16665 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16668 + .species = SPECIES_SEADRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16670 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16669 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16672 [TRAINER_THALIA_4] = { - .trainerClass = TRAINER_CLASS_BEAUTY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_BEAUTY, +#line 16673 .trainerName = _("THALIA"), - .items = {}, +#line 16674 + .trainerClass = TRAINER_CLASS_BEAUTY, +#line 16675 + .trainerPic = TRAINER_PIC_BEAUTY, + .encounterMusic_gender = +#line 16676 +F_TRAINER_FEMALE | +#line 16677 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 16678 .doubleBattle = FALSE, +#line 16679 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Thalia4), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16681 + .species = SPECIES_LUVDISC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16683 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16682 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16685 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16687 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16686 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16689 + .species = SPECIES_SEADRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16691 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16690 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16693 [TRAINER_THALIA_5] = { - .trainerClass = TRAINER_CLASS_BEAUTY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, - .trainerPic = TRAINER_PIC_BEAUTY, +#line 16694 .trainerName = _("THALIA"), - .items = {}, +#line 16695 + .trainerClass = TRAINER_CLASS_BEAUTY, +#line 16696 + .trainerPic = TRAINER_PIC_BEAUTY, + .encounterMusic_gender = +#line 16697 +F_TRAINER_FEMALE | +#line 16698 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 16699 .doubleBattle = FALSE, +#line 16700 .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Thalia5), + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16702 + .species = SPECIES_LUVDISC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16704 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16703 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16706 + .species = SPECIES_WAILORD, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16708 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16707 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16710 + .species = SPECIES_KINGDRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16712 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16711 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16714 [TRAINER_MARIELA] = { - .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_PSYCHIC_F, +#line 16715 .trainerName = _("MARIELA"), - .items = {}, +#line 16716 + .trainerClass = TRAINER_CLASS_PSYCHIC, +#line 16717 + .trainerPic = TRAINER_PIC_PSYCHIC_F, + .encounterMusic_gender = +#line 16718 +F_TRAINER_FEMALE | +#line 16719 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 16720 .doubleBattle = FALSE, - .aiFlags = 0, - .party = TRAINER_PARTY(sParty_Mariela), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 16722 + .species = SPECIES_CHIMECHO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16724 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 16723 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16726 [TRAINER_ALVARO] = { - .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_PSYCHIC_M, +#line 16727 .trainerName = _("ALVARO"), - .items = {}, +#line 16728 + .trainerClass = TRAINER_CLASS_PSYCHIC, +#line 16729 + .trainerPic = TRAINER_PIC_PSYCHIC_M, + .encounterMusic_gender = +#line 16731 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 16732 .doubleBattle = FALSE, - .aiFlags = 0, - .party = TRAINER_PARTY(sParty_Alvaro), + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 16734 + .species = SPECIES_BANETTE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16736 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 16735 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16738 + .species = SPECIES_KADABRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16740 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 16739 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16742 [TRAINER_EVERETT] = { - .trainerClass = TRAINER_CLASS_GENTLEMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, - .trainerPic = TRAINER_PIC_GENTLEMAN, +#line 16743 .trainerName = _("EVERETT"), - .items = {}, +#line 16744 + .trainerClass = TRAINER_CLASS_GENTLEMAN, +#line 16745 + .trainerPic = TRAINER_PIC_GENTLEMAN, + .encounterMusic_gender = +#line 16747 + TRAINER_ENCOUNTER_MUSIC_RICH, +#line 16748 .doubleBattle = FALSE, - .aiFlags = 0, - .party = TRAINER_PARTY(sParty_Everett), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 16750 + .species = SPECIES_WOBBUFFET, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16752 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 16751 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16754 [TRAINER_RED] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_RED, +#line 16755 .trainerName = _("RED"), - .items = {}, +#line 16756 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 16757 + .trainerPic = TRAINER_PIC_RED, + .encounterMusic_gender = +#line 16759 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 16760 .doubleBattle = FALSE, - .aiFlags = 0, - .party = TRAINER_PARTY(sParty_Red), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 16762 + .species = SPECIES_CHARMANDER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16764 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 16763 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16766 [TRAINER_LEAF] = { - .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_LEAF, +#line 16767 .trainerName = _("LEAF"), - .items = {}, +#line 16768 + .trainerClass = TRAINER_CLASS_RIVAL, +#line 16769 + .trainerPic = TRAINER_PIC_LEAF, + .encounterMusic_gender = +#line 16770 +F_TRAINER_FEMALE | +#line 16771 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 16772 .doubleBattle = FALSE, - .aiFlags = 0, - .party = TRAINER_PARTY(sParty_Leaf), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 16774 + .species = SPECIES_BULBASAUR, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16776 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 16775 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16778 [TRAINER_BRENDAN_PLACEHOLDER] = { - .trainerClass = TRAINER_CLASS_RS_PROTAG, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_RS_BRENDAN, +#line 16779 .trainerName = _("BRENDAN"), - .items = {}, +#line 16780 + .trainerClass = TRAINER_CLASS_RS_PROTAG, +#line 16781 + .trainerPic = TRAINER_PIC_RS_BRENDAN, + .encounterMusic_gender = +#line 16783 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 16784 .doubleBattle = FALSE, - .aiFlags = 0, - .party = TRAINER_PARTY(sParty_BrendanLinkPlaceholder), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 16786 + .species = SPECIES_GROUDON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16788 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 16787 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, - +#line 16790 [TRAINER_MAY_PLACEHOLDER] = { - .trainerClass = TRAINER_CLASS_RS_PROTAG, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_RS_MAY, +#line 16791 .trainerName = _("MAY"), - .items = {}, +#line 16792 + .trainerClass = TRAINER_CLASS_RS_PROTAG, +#line 16793 + .trainerPic = TRAINER_PIC_RS_MAY, + .encounterMusic_gender = +#line 16794 +F_TRAINER_FEMALE | +#line 16795 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 16796 .doubleBattle = FALSE, - .aiFlags = 0, - .party = TRAINER_PARTY(sParty_MayLinkPlaceholder), + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 16798 + .species = SPECIES_KYOGRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16800 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 16799 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, -}; diff --git a/src/data/trainers.party b/src/data/trainers.party new file mode 100644 index 0000000000..74a981ad1a --- /dev/null +++ b/src/data/trainers.party @@ -0,0 +1,16800 @@ +=== 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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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 / 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 / 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 / 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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability / 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: Check Bad Move / Try To Faint / Check Viability +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: Check Bad Move / Try To Faint / Check Viability +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: Check Bad Move / Try To Faint / Check Viability +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability / 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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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 / 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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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 / 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: Check Bad Move / Try To Faint / Check Viability + +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 / 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: Check Bad Move / Try To Faint / Check Viability + +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 / 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 / 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: Check Bad Move / Try To Faint / Check Viability + +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 / 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: Check Bad Move / Try To Faint / Check Viability + +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 / 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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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 / 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: Check Bad Move / Try To Faint / Check Viability + +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 / 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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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 / 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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability / 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: Check Bad Move / Try To Faint / Check Viability / 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: Check Bad Move / Try To Faint / Check Viability / 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: Check Bad Move / Try To Faint / Check Viability / 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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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: Check Bad Move / Try To Faint / Check Viability + +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/src/daycare.c b/src/daycare.c index 6e9304f2a0..b3131772be 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -713,10 +713,10 @@ static void InheritPokeball(struct Pokemon *egg, struct BoxPokemon *father, stru static void InheritAbility(struct Pokemon *egg, struct BoxPokemon *father, struct BoxPokemon *mother) { - u8 fatherAbility = GetBoxMonData(father, MON_DATA_ABILITY_NUM); - u8 motherAbility = GetBoxMonData(mother, MON_DATA_ABILITY_NUM); - u8 motherSpecies = GetBoxMonData(mother, MON_DATA_SPECIES); - u8 inheritAbility = motherAbility; + u16 fatherAbility = GetBoxMonData(father, MON_DATA_ABILITY_NUM); + u16 motherAbility = GetBoxMonData(mother, MON_DATA_ABILITY_NUM); + u16 motherSpecies = GetBoxMonData(mother, MON_DATA_SPECIES); + u16 inheritAbility = motherAbility; if (motherSpecies == SPECIES_DITTO) { diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 3de6799743..7e03e8596e 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -170,9 +170,9 @@ static u8 FindObjectEventPaletteIndexByTag(u16); static void _PatchObjectPalette(u16, u8); static bool8 ObjectEventDoesElevationMatch(struct ObjectEvent *, u8); static void SpriteCB_CameraObject(struct Sprite *); -static void CameraObject_0(struct Sprite *); -static void CameraObject_1(struct Sprite *); -static void CameraObject_2(struct Sprite *); +static void CameraObject_Init(struct Sprite *); +static void CameraObject_UpdateMove(struct Sprite *); +static void CameraObject_UpdateFrozen(struct Sprite *); static const struct ObjectEventTemplate *FindObjectEventTemplateByLocalId(u8, const struct ObjectEventTemplate *, u8); static void ObjectEventSetSingleMovement(struct ObjectEvent *, struct Sprite *, u8); static void SetSpriteDataForNormalStep(struct Sprite *, u8, u8); @@ -226,10 +226,16 @@ static const struct SpriteTemplate sCameraSpriteTemplate = { .callback = SpriteCB_CameraObject }; +enum { + CAMERA_STATE_INIT, + CAMERA_STATE_MOVE, + CAMERA_STATE_FROZEN, +}; + static void (*const sCameraObjectFuncs[])(struct Sprite *) = { - CameraObject_0, - CameraObject_1, - CameraObject_2, + [CAMERA_STATE_INIT] = CameraObject_Init, + [CAMERA_STATE_MOVE] = CameraObject_UpdateMove, + [CAMERA_STATE_FROZEN] = CameraObject_UpdateFrozen, }; #include "data/object_events/object_event_graphics.h" @@ -2627,7 +2633,7 @@ static void ObjectEventSetGraphics(struct ObjectEvent *objectEvent, const struct sprite->x += 8; sprite->y += 16 + sprite->centerToCornerVecY; if (objectEvent->trackedByCamera) - CameraObjectReset1(); + CameraObjectReset(); } void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u16 graphicsId) @@ -2687,7 +2693,7 @@ static void SetBerryTreeGraphics(struct ObjectEvent *objectEvent, u8 berryId, u8 sprite->x += 8; sprite->y += 16 + sprite->centerToCornerVecY; if (objectEvent->trackedByCamera) - CameraObjectReset1(); + CameraObjectReset(); } static void get_berry_tree_graphics(struct ObjectEvent *objectEvent, struct Sprite *sprite) @@ -2967,7 +2973,7 @@ void MoveObjectEventToMapCoords(struct ObjectEvent *objectEvent, s16 x, s16 y) sprite->y += 16 + sprite->centerToCornerVecY; ResetObjectEventFldEffData(objectEvent); if (objectEvent->trackedByCamera) - CameraObjectReset1(); + CameraObjectReset(); } void TryMoveObjectEventToMapCoords(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y) @@ -3043,15 +3049,15 @@ void UpdateObjectEventsForCameraUpdate(s16 x, s16 y) RemoveObjectEventsOutsideView(); } -#define sLinkedSpriteId data[0] -#define sState data[1] - -u8 AddCameraObject(u8 linkedSpriteId) +// The "CameraObject" functions below are responsible for an invisible sprite +// that follows the movements of a different sprite (normally the player's sprite) +// and tracks x/y movement distances for the camera so it knows where to move. +u8 AddCameraObject(u8 followSpriteId) { u8 spriteId = CreateSprite(&sCameraSpriteTemplate, 0, 0, 4); gSprites[spriteId].invisible = TRUE; - gSprites[spriteId].sLinkedSpriteId = linkedSpriteId; + gSprites[spriteId].sCamera_FollowSpriteId = followSpriteId; return spriteId; } @@ -3060,35 +3066,37 @@ static void SpriteCB_CameraObject(struct Sprite *sprite) void (*callbacks[ARRAY_COUNT(sCameraObjectFuncs)])(struct Sprite *); memcpy(callbacks, sCameraObjectFuncs, sizeof sCameraObjectFuncs); - callbacks[sprite->sState](sprite); + callbacks[sprite->sCamera_State](sprite); } -static void CameraObject_0(struct Sprite *sprite) +static void CameraObject_Init(struct Sprite *sprite) { - sprite->x = gSprites[sprite->sLinkedSpriteId].x; - sprite->y = gSprites[sprite->sLinkedSpriteId].y; + sprite->x = gSprites[sprite->sCamera_FollowSpriteId].x; + sprite->y = gSprites[sprite->sCamera_FollowSpriteId].y; sprite->invisible = TRUE; - sprite->sState = 1; - CameraObject_1(sprite); + sprite->sCamera_State = CAMERA_STATE_MOVE; + CameraObject_UpdateMove(sprite); } -static void CameraObject_1(struct Sprite *sprite) +static void CameraObject_UpdateMove(struct Sprite *sprite) { - s16 x = gSprites[sprite->sLinkedSpriteId].x; - s16 y = gSprites[sprite->sLinkedSpriteId].y; + s16 x = gSprites[sprite->sCamera_FollowSpriteId].x; + s16 y = gSprites[sprite->sCamera_FollowSpriteId].y; - sprite->data[2] = x - sprite->x; - sprite->data[3] = y - sprite->y; + sprite->sCamera_MoveX = x - sprite->x; + sprite->sCamera_MoveY = y - sprite->y; sprite->x = x; sprite->y = y; } -static void CameraObject_2(struct Sprite *sprite) +// Invisible sprite will continue to follow the parent sprite, +// but no corresponding camera movement will be shown. +static void CameraObject_UpdateFrozen(struct Sprite *sprite) { - sprite->x = gSprites[sprite->sLinkedSpriteId].x; - sprite->y = gSprites[sprite->sLinkedSpriteId].y; - sprite->data[2] = 0; - sprite->data[3] = 0; + sprite->x = gSprites[sprite->sCamera_FollowSpriteId].x; + sprite->y = gSprites[sprite->sCamera_FollowSpriteId].y; + sprite->sCamera_MoveX = 0; + sprite->sCamera_MoveY = 0; } static struct Sprite *FindCameraSprite(void) @@ -3103,51 +3111,43 @@ static struct Sprite *FindCameraSprite(void) return NULL; } -void CameraObjectReset1(void) +void CameraObjectReset(void) { - struct Sprite *camera; - - camera = FindCameraSprite(); + struct Sprite *camera = FindCameraSprite(); if (camera != NULL) { - camera->sState = 0; + camera->sCamera_State = CAMERA_STATE_INIT; camera->callback(camera); } } void CameraObjectSetFollowedSpriteId(u8 spriteId) { - struct Sprite *camera; - - camera = FindCameraSprite(); + struct Sprite *camera = FindCameraSprite(); if (camera != NULL) { - camera->sLinkedSpriteId = spriteId; - CameraObjectReset1(); + camera->sCamera_FollowSpriteId = spriteId; + CameraObjectReset(); } } static u8 UNUSED CameraObjectGetFollowedSpriteId(void) { - struct Sprite *camera; - - camera = FindCameraSprite(); + struct Sprite *camera = FindCameraSprite(); if (camera == NULL) return MAX_SPRITES; - return camera->sLinkedSpriteId; + return camera->sCamera_FollowSpriteId; } -void CameraObjectReset2(void) +void CameraObjectFreeze(void) { - // UB: Possible null dereference -#ifdef UBFIX struct Sprite *camera = FindCameraSprite(); - if (camera) - camera->sState = 2; -#else - FindCameraSprite()->sState = 2; -#endif // UBFIX +#ifdef UBFIX // Possible null dereference + if (camera == NULL) + return; +#endif + camera->sCamera_State = CAMERA_STATE_FROZEN; } u8 CopySprite(struct Sprite *sprite, s16 x, s16 y, u8 subpriority) @@ -9653,7 +9653,11 @@ static void DoGroundEffects_OnSpawn(struct ObjectEvent *objEvent, struct Sprite { u32 flags; +#ifdef BUGFIX + if (objEvent->triggerGroundEffectsOnMove && objEvent->localId != OBJ_EVENT_ID_CAMERA) +#else if (objEvent->triggerGroundEffectsOnMove) +#endif { flags = 0; #if LARGE_OW_SUPPORT @@ -9663,7 +9667,7 @@ static void DoGroundEffects_OnSpawn(struct ObjectEvent *objEvent, struct Sprite GetAllGroundEffectFlags_OnSpawn(objEvent, &flags); SetObjectEventSpriteOamTableForLongGrass(objEvent, sprite); DoFlaggedGroundEffects(objEvent, sprite, flags); - objEvent->triggerGroundEffectsOnMove = 0; + objEvent->triggerGroundEffectsOnMove = FALSE; objEvent->disableCoveringGroundEffects = 0; } } @@ -9672,7 +9676,11 @@ static void DoGroundEffects_OnBeginStep(struct ObjectEvent *objEvent, struct Spr { u32 flags; +#ifdef BUGFIX + if (objEvent->triggerGroundEffectsOnMove && objEvent->localId != OBJ_EVENT_ID_CAMERA) +#else if (objEvent->triggerGroundEffectsOnMove) +#endif { flags = 0; #if LARGE_OW_SUPPORT @@ -9683,7 +9691,7 @@ static void DoGroundEffects_OnBeginStep(struct ObjectEvent *objEvent, struct Spr SetObjectEventSpriteOamTableForLongGrass(objEvent, sprite); filters_out_some_ground_effects(objEvent, &flags); DoFlaggedGroundEffects(objEvent, sprite, flags); - objEvent->triggerGroundEffectsOnMove = 0; + objEvent->triggerGroundEffectsOnMove = FALSE; objEvent->disableCoveringGroundEffects = 0; } } @@ -9692,7 +9700,11 @@ static void DoGroundEffects_OnFinishStep(struct ObjectEvent *objEvent, struct Sp { u32 flags; +#ifdef BUGFIX + if (objEvent->triggerGroundEffectsOnStop && objEvent->localId != OBJ_EVENT_ID_CAMERA) +#else if (objEvent->triggerGroundEffectsOnStop) +#endif { flags = 0; UpdateObjectEventElevationAndPriority(objEvent, sprite); diff --git a/src/field_camera.c b/src/field_camera.c index 3f7e29208c..31ebc63c05 100644 --- a/src/field_camera.c +++ b/src/field_camera.c @@ -331,8 +331,8 @@ static void CameraUpdateCallback(struct CameraObject *fieldCamera) { if (fieldCamera->spriteId != 0) { - fieldCamera->movementSpeedX = gSprites[fieldCamera->spriteId].data[2]; - fieldCamera->movementSpeedY = gSprites[fieldCamera->spriteId].data[3]; + fieldCamera->movementSpeedX = gSprites[fieldCamera->spriteId].sCamera_MoveX; + fieldCamera->movementSpeedY = gSprites[fieldCamera->spriteId].sCamera_MoveY; } } diff --git a/src/field_effect.c b/src/field_effect.c index 5fb105df70..8314b00332 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -1450,7 +1450,7 @@ static bool8 FallWarpEffect_Init(struct Task *task) struct Sprite *playerSprite; playerObject = &gObjectEvents[gPlayerAvatar.objectEventId]; playerSprite = &gSprites[gPlayerAvatar.spriteId]; - CameraObjectReset2(); + CameraObjectFreeze(); gObjectEvents[gPlayerAvatar.objectEventId].invisible = TRUE; gPlayerAvatar.preventStep = TRUE; ObjectEventSetHeldMovement(playerObject, GetFaceDirectionMovementAction(GetPlayerFacingDirection())); @@ -1546,7 +1546,7 @@ static bool8 FallWarpEffect_End(struct Task *task) { gPlayerAvatar.preventStep = FALSE; UnlockPlayerFieldControls(); - CameraObjectReset1(); + CameraObjectReset(); UnfreezeObjectEvents(); InstallCameraPanAheadCallback(); DestroyTask(FindTaskIdByFunc(Task_FallWarpFieldEffect)); @@ -1594,7 +1594,7 @@ static void Task_EscalatorWarpOut(u8 taskId) static bool8 EscalatorWarpOut_Init(struct Task *task) { FreezeObjectEvents(); - CameraObjectReset2(); + CameraObjectFreeze(); StartEscalator(task->tGoingUp); HideFollowerForFieldEffect(); // Hide follower before warping task->tState++; @@ -1727,7 +1727,7 @@ static bool8 EscalatorWarpIn_Init(struct Task *task) s16 x; s16 y; u8 behavior; - CameraObjectReset2(); + CameraObjectFreeze(); objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(DIR_EAST)); PlayerGetDestCoords(&x, &y); @@ -1827,7 +1827,7 @@ static bool8 EscalatorWarpIn_End(struct Task *task) objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; if (ObjectEventClearHeldMovementIfFinished(objectEvent)) { - CameraObjectReset1(); + CameraObjectReset(); UnlockPlayerFieldControls(); ObjectEventSetHeldMovement(objectEvent, GetWalkNormalMovementAction(DIR_EAST)); DestroyTask(FindTaskIdByFunc(Task_EscalatorWarpIn)); @@ -1973,7 +1973,7 @@ static void Task_LavaridgeGymB1FWarp(u8 taskId) static bool8 LavaridgeGymB1FWarpEffect_Init(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite) { FreezeObjectEvents(); - CameraObjectReset2(); + CameraObjectFreeze(); SetCameraPanningCallback(NULL); gPlayerAvatar.preventStep = TRUE; objectEvent->fixedPriority = 1; @@ -2090,7 +2090,7 @@ static void Task_LavaridgeGymB1FWarpExit(u8 taskId) static bool8 LavaridgeGymB1FWarpExitEffect_Init(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite) { - CameraObjectReset2(); + CameraObjectFreeze(); FreezeObjectEvents(); gPlayerAvatar.preventStep = TRUE; objectEvent->invisible = TRUE; @@ -2119,7 +2119,7 @@ static bool8 LavaridgeGymB1FWarpExitEffect_PopOut(struct Task *task, struct Obje { task->data[0]++; objectEvent->invisible = FALSE; - CameraObjectReset1(); + CameraObjectReset(); PlaySE(SE_M_DIG); ObjectEventSetHeldMovement(objectEvent, GetJumpMovementAction(DIR_EAST)); } @@ -2168,7 +2168,7 @@ static void Task_LavaridgeGym1FWarp(u8 taskId) static bool8 LavaridgeGym1FWarpEffect_Init(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite) { FreezeObjectEvents(); - CameraObjectReset2(); + CameraObjectFreeze(); gPlayerAvatar.preventStep = TRUE; objectEvent->fixedPriority = 1; task->data[0]++; @@ -2391,7 +2391,7 @@ static void TeleportWarpOutFieldEffect_Init(struct Task *task) { LockPlayerFieldControls(); FreezeObjectEvents(); - CameraObjectReset2(); + CameraObjectFreeze(); task->data[15] = GetPlayerFacingDirection(); task->tState++; } @@ -2473,7 +2473,7 @@ static void FieldCallback_TeleportWarpIn(void) FreezeObjectEvents(); gFieldCallback = NULL; gObjectEvents[gPlayerAvatar.objectEventId].invisible = TRUE; - CameraObjectReset2(); + CameraObjectFreeze(); CreateTask(Task_TeleportWarpIn, 0); } @@ -2517,7 +2517,7 @@ static void TeleportWarpInFieldEffect_SpinEnter(struct Task *task) if (task->data[13] == 0) { task->data[13]++; - objectEvent->triggerGroundEffectsOnMove = 1; + objectEvent->triggerGroundEffectsOnMove = TRUE; sprite->subspriteMode = task->data[14]; } } else @@ -2557,7 +2557,7 @@ static void TeleportWarpInFieldEffect_SpinGround(struct Task *task) if ((++task->data[2]) > 4 && task->data[14] == objectEvent->facingDirection) { UnlockPlayerFieldControls(); - CameraObjectReset1(); + CameraObjectReset(); UnfreezeObjectEvents(); DestroyTask(FindTaskIdByFunc(Task_TeleportWarpIn)); } @@ -3293,7 +3293,7 @@ static void FlyOutFieldEffect_FlyOffWithBird(struct Task *task) objectEvent->inanimate = FALSE; objectEvent->hasShadow = FALSE; SetFlyBirdPlayerSpriteId(task->tBirdSpriteId, objectEvent->spriteId); - CameraObjectReset2(); + CameraObjectFreeze(); task->tState++; } } @@ -3508,7 +3508,7 @@ static void FlyInFieldEffect_BirdSwoopDown(struct Task *task) SetSurfBlob_BobState(objectEvent->fieldEffectSpriteId, BOB_NONE); } ObjectEventSetGraphicsId(objectEvent, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_SURFING)); - CameraObjectReset2(); + CameraObjectFreeze(); ObjectEventTurn(objectEvent, DIR_WEST); StartSpriteAnim(&gSprites[objectEvent->spriteId], ANIM_GET_ON_OFF_POKEMON_WEST); objectEvent->invisible = FALSE; diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index 75d998fae0..82532881f2 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -129,7 +129,9 @@ static u8 Fishing_InitDots(struct Task *); static u8 Fishing_ShowDots(struct Task *); static u8 Fishing_CheckForBite(struct Task *); static u8 Fishing_GotBite(struct Task *); +static u8 Fishing_ChangeMinigame(struct Task *); static u8 Fishing_WaitForA(struct Task *); +static u8 Fishing_APressNoMinigame(struct Task *); static u8 Fishing_CheckMoreDots(struct Task *); static u8 Fishing_MonOnHook(struct Task *); static u8 Fishing_StartEncounter(struct Task *); @@ -139,6 +141,18 @@ static u8 Fishing_NoMon(struct Task *); static u8 Fishing_PutRodAway(struct Task *); static u8 Fishing_EndNoMon(struct Task *); static void AlignFishingAnimationFrames(void); +static bool32 DoesFishingMinigameAllowCancel(void); +static bool32 Fishing_DoesFirstMonInPartyHaveSuctionCupsOrStickyHold(void); +static bool32 Fishing_RollForBite(bool32); +static u32 CalculateFishingBiteOdds(bool32); +static u32 CalculateFishingProximityBoost(u32 odds); +static void GetCoordinatesAroundBobber(s16[], s16[][AXIS_COUNT], u32); +static u32 CountQualifyingTiles(s16[][AXIS_COUNT], s16 player[], u8 facingDirection, struct ObjectEvent *objectEvent, bool32 isTileLand[]); +static bool32 CheckTileQualification(s16 tile[], s16 player[], u32 facingDirection, struct ObjectEvent* objectEvent, bool32 isTileLand[], u32 direction); +static u32 CountLandTiles(bool32 isTileLand[]); +static bool32 IsPlayerHere(s16, s16, s16, s16); +static bool32 IsMetatileBlocking(s16, s16, u32); +static bool32 IsMetatileLand(s16, s16, u32); static u8 TrySpinPlayerForWarp(struct ObjectEvent *, s16 *); @@ -1647,6 +1661,10 @@ static void Task_WaitStopSurfing(u8 taskId) gPlayerAvatar.preventStep = FALSE; UnlockPlayerFieldControls(); DestroySprite(&gSprites[playerObjEvent->fieldEffectSpriteId]); +#ifdef BUGFIX + // If this is not defined but the player steps into grass from surfing, they will appear over the grass instead of in the grass. + playerObjEvent->triggerGroundEffectsOnMove = TRUE; +#endif DestroyTask(taskId); } } @@ -1660,32 +1678,52 @@ static void Task_WaitStopSurfing(u8 taskId) #define tPlayerGfxId data[14] #define tFishingRod data[15] -// Some states are jumped to directly, labeled below -#define FISHING_START_ROUND 3 -#define FISHING_GOT_BITE 6 -#define FISHING_ON_HOOK 9 -#define FISHING_NO_BITE 11 -#define FISHING_GOT_AWAY 12 -#define FISHING_SHOW_RESULT 13 +#define FISHING_PROXIMITY_BOOST 4 +#define FISHING_STICKY_BOOST 36 +#define FISHING_DEFAULT_ODDS 50 + +enum +{ + FISHING_INIT, + FISHING_GET_ROD_OUT, + FISHING_WAIT_BEFORE_DOTS, + FISHING_START_ROUND, + FISHING_SHOW_DOTS, + FISHING_CHECK_FOR_BITE, + FISHING_GOT_BITE, + FISHING_CHANGE_MINIGAME, + FISHING_WAIT_FOR_A, + FISHING_A_PRESS_NO_MINIGAME, + FISHING_CHECK_MORE_DOTS, + FISHING_ON_HOOK, + FISHING_START_ENCOUNTER, + FISHING_NO_BITE, + FISHING_GOT_AWAY, + FISHING_SHOW_RESULT, + FISHING_PUT_ROD_AWAY, + FISHING_END_NO_MON, +}; static bool8 (*const sFishingStateFuncs[])(struct Task *) = { - Fishing_Init, - Fishing_GetRodOut, - Fishing_WaitBeforeDots, - Fishing_InitDots, // FISHING_START_ROUND - Fishing_ShowDots, - Fishing_CheckForBite, - Fishing_GotBite, // FISHING_GOT_BITE - Fishing_WaitForA, - Fishing_CheckMoreDots, - Fishing_MonOnHook, // FISHING_ON_HOOK - Fishing_StartEncounter, - Fishing_NotEvenNibble, // FISHING_NO_BITE - Fishing_GotAway, // FISHING_GOT_AWAY - Fishing_NoMon, // FISHING_SHOW_RESULT - Fishing_PutRodAway, - Fishing_EndNoMon, + Fishing_Init, // FISHING_INIT, + Fishing_GetRodOut, // FISHING_GET_ROD_OUT, + Fishing_WaitBeforeDots, // FISHING_WAIT_BEFORE_DOTS, + Fishing_InitDots, // FISHING_START_ROUND, + Fishing_ShowDots, // FISHING_SHOW_DOTS, + Fishing_CheckForBite, // FISHING_CHECK_FOR_BITE, + Fishing_GotBite, // FISHING_GOT_BITE, + Fishing_ChangeMinigame, // FISHING_CHANGE_MINIGAME, + Fishing_WaitForA, // FISHING_WAIT_FOR_A, + Fishing_APressNoMinigame, // FISHING_A_PRESS_NO_MINIGAME, + Fishing_CheckMoreDots, // FISHING_CHECK_MORE_DOTS, + Fishing_MonOnHook, // FISHING_ON_HOOK, + Fishing_StartEncounter, // FISHING_START_ENCOUNTER, + Fishing_NotEvenNibble, // FISHING_NO_BITE, + Fishing_GotAway, // FISHING_GOT_AWAY, + Fishing_NoMon, // FISHING_SHOW_RESULT, + Fishing_PutRodAway, // FISHING_PUT_ROD_AWAY, + Fishing_EndNoMon, // FISHING_END_NO_MON, }; void StartFishing(u8 rod) @@ -1772,6 +1810,9 @@ static bool8 Fishing_ShowDots(struct Task *task) task->tFrameCounter++; if (JOY_NEW(A_BUTTON)) { + if (!DoesFishingMinigameAllowCancel()) + return FALSE; + task->tStep = FISHING_NO_BITE; if (task->tRoundsPlayed != 0) task->tStep = FISHING_GOT_AWAY; @@ -1801,7 +1842,7 @@ static bool8 Fishing_ShowDots(struct Task *task) static bool8 Fishing_CheckForBite(struct Task *task) { - bool8 bite; + bool32 bite, firstMonHasSuctionOrSticky; AlignFishingAnimationFrames(); task->tStep++; @@ -1810,30 +1851,23 @@ static bool8 Fishing_CheckForBite(struct Task *task) if (!DoesCurrentMapHaveFishingMons()) { task->tStep = FISHING_NO_BITE; + return TRUE; } - else - { - if (!GetMonData(&gPlayerParty[0], MON_DATA_SANITY_IS_EGG)) - { - u16 ability = GetMonAbility(&gPlayerParty[0]); - if (ability == ABILITY_SUCTION_CUPS || ability == ABILITY_STICKY_HOLD) - { - if (Random() % 100 > 14) - bite = TRUE; - } - } - if (!bite) - { - if (Random() & 1) - task->tStep = FISHING_NO_BITE; - else - bite = TRUE; - } + firstMonHasSuctionOrSticky = Fishing_DoesFirstMonInPartyHaveSuctionCupsOrStickyHold(); + + if(firstMonHasSuctionOrSticky) + bite = Fishing_RollForBite(firstMonHasSuctionOrSticky); + + if (!bite) + bite = Fishing_RollForBite(FALSE); + + if (!bite) + task->tStep = FISHING_NO_BITE; + + if (bite) + StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], GetFishingBiteDirectionAnimNum(GetPlayerFacingDirection())); - if (bite == TRUE) - StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], GetFishingBiteDirectionAnimNum(GetPlayerFacingDirection())); - } return TRUE; } @@ -1846,6 +1880,22 @@ static bool8 Fishing_GotBite(struct Task *task) return FALSE; } +static u8 Fishing_ChangeMinigame(struct Task *task) +{ + switch (I_FISHING_MINIGAME) + { + case GEN_1: + case GEN_2: + task->tStep = FISHING_A_PRESS_NO_MINIGAME; + break; + case GEN_3: + default: + task->tStep = FISHING_WAIT_FOR_A; + break; + } + return TRUE; +} + // We have a bite. Now, wait for the player to press A, or the timer to expire. static bool8 Fishing_WaitForA(struct Task *task) { @@ -1864,6 +1914,14 @@ static bool8 Fishing_WaitForA(struct Task *task) return FALSE; } +static bool8 Fishing_APressNoMinigame(struct Task *task) +{ + AlignFishingAnimationFrames(); + if (JOY_NEW(A_BUTTON)) + task->tStep = FISHING_ON_HOOK; + return FALSE; +} + // Determine if we're going to play the dot game again static bool8 Fishing_CheckMoreDots(struct Task *task) { @@ -1939,6 +1997,7 @@ static bool8 Fishing_StartEncounter(struct Task *task) static bool8 Fishing_NotEvenNibble(struct Task *task) { + ResetChainFishingDexNavStreak(); AlignFishingAnimationFrames(); StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], GetFishingNoCatchDirectionAnimNum(GetPlayerFacingDirection())); FillWindowPixelBuffer(0, PIXEL_FILL(1)); @@ -1949,6 +2008,7 @@ static bool8 Fishing_NotEvenNibble(struct Task *task) static bool8 Fishing_GotAway(struct Task *task) { + ResetChainFishingDexNavStreak(); AlignFishingAnimationFrames(); StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], GetFishingNoCatchDirectionAnimNum(GetPlayerFacingDirection())); FillWindowPixelBuffer(0, PIXEL_FILL(1)); @@ -1997,6 +2057,168 @@ static bool8 Fishing_EndNoMon(struct Task *task) return FALSE; } +static bool32 DoesFishingMinigameAllowCancel(void) +{ + switch(I_FISHING_MINIGAME) + { + case GEN_1: + case GEN_2: + return FALSE; + case GEN_3: + default: + return TRUE; + } +} + +static bool32 Fishing_DoesFirstMonInPartyHaveSuctionCupsOrStickyHold(void) +{ + u32 ability; + + if (GetMonData(&gPlayerParty[0], MON_DATA_SANITY_IS_EGG)) + return FALSE; + + ability = GetMonAbility(&gPlayerParty[0]); + + return (ability == ABILITY_SUCTION_CUPS || ability == ABILITY_STICKY_HOLD); +} + +static bool32 Fishing_RollForBite(bool32 isStickyHold) +{ + return ((Random() % 100) > CalculateFishingBiteOdds(isStickyHold)); +} + +static u32 CalculateFishingBiteOdds(bool32 isStickyHold) +{ + u32 odds = FISHING_DEFAULT_ODDS; + + if (isStickyHold) + odds -= FISHING_STICKY_BOOST; + + odds -= CalculateFishingProximityBoost(odds); + return odds; +} + +static u32 CalculateFishingProximityBoost(u32 odds) +{ + s16 player[AXIS_COUNT], bobber[AXIS_COUNT]; + s16 surroundingTile[CARDINAL_DIRECTION_COUNT][AXIS_COUNT] = {{0, 0}}; + bool32 isTileLand[CARDINAL_DIRECTION_COUNT] = {FALSE}; + u32 facingDirection, numQualifyingTile = 0; + struct ObjectEvent *objectEvent; + + if (!I_FISHING_PROXIMITY) + return 0; + + objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; + + player[AXIS_X] = objectEvent->currentCoords.x; + player[AXIS_Y] = objectEvent->currentCoords.y; + bobber[AXIS_X] = objectEvent->currentCoords.x; + bobber[AXIS_Y] = objectEvent->currentCoords.y; + + facingDirection = GetPlayerFacingDirection(); + MoveCoords(facingDirection, &bobber[AXIS_X], &bobber[AXIS_Y]); + + GetCoordinatesAroundBobber(bobber, surroundingTile, facingDirection); + numQualifyingTile = CountQualifyingTiles(surroundingTile, player, facingDirection, objectEvent, isTileLand); + + numQualifyingTile += CountLandTiles(isTileLand); + + return (numQualifyingTile == 3) ? odds : (numQualifyingTile * FISHING_PROXIMITY_BOOST); +} + +static void GetCoordinatesAroundBobber(s16 bobber[], s16 surroundingTile[][AXIS_COUNT], u32 facingDirection) +{ + u32 direction; + + for (direction = DIR_SOUTH; direction < CARDINAL_DIRECTION_COUNT; direction++) + { + surroundingTile[direction][AXIS_X] = bobber[AXIS_X]; + surroundingTile[direction][AXIS_Y] = bobber[AXIS_Y]; + MoveCoords(direction, &surroundingTile[direction][AXIS_X], &surroundingTile[direction][AXIS_Y]); + } +} + +static u32 CountQualifyingTiles(s16 surroundingTile[][AXIS_COUNT], s16 player[], u8 facingDirection, struct ObjectEvent *objectEvent, bool32 isTileLand[]) +{ + u32 numQualifyingTile = 0; + s16 tile[AXIS_COUNT]; + u8 direction = DIR_SOUTH; + + for (direction = DIR_SOUTH; direction < CARDINAL_DIRECTION_COUNT; direction++) + { + tile[AXIS_X] = surroundingTile[direction][AXIS_X]; + tile[AXIS_Y] = surroundingTile[direction][AXIS_Y]; + + if (!CheckTileQualification(tile, player, facingDirection, objectEvent, isTileLand, direction)) + continue; + + numQualifyingTile++; + } + return numQualifyingTile; +} + +static bool32 CheckTileQualification(s16 tile[], s16 player[], u32 facingDirection, struct ObjectEvent* objectEvent, bool32 isTileLand[], u32 direction) +{ + u32 collison = GetCollisionAtCoords(objectEvent, tile[AXIS_X], tile[AXIS_Y], facingDirection); + + if (IsPlayerHere(tile[AXIS_X], tile[AXIS_Y], player[AXIS_X], player[AXIS_Y])) + return FALSE; + else if (IsMetatileBlocking(tile[AXIS_X], tile[AXIS_Y], collison)) + return TRUE; + else if (MetatileBehavior_IsSurfableFishableWater(MapGridGetMetatileBehaviorAt(tile[AXIS_X], tile[AXIS_Y]))) + return FALSE; + else if (IsMetatileLand(tile[AXIS_X], tile[AXIS_Y], collison)) + isTileLand[direction] = TRUE; + + return FALSE; +} + +static u32 CountLandTiles(bool32 isTileLand[]) +{ + u32 direction, numQualifyingTile = 0; + + for (direction = DIR_SOUTH; direction < CARDINAL_DIRECTION_COUNT; direction++) + if (isTileLand[direction]) + numQualifyingTile++; + + return (numQualifyingTile < 2) ? 0 : numQualifyingTile; +} + +static bool32 IsPlayerHere(s16 x, s16 y, s16 playerX, s16 playerY) +{ + return ((x == playerX) && (y == playerY)); +} + +static bool32 IsMetatileBlocking(s16 x, s16 y, u32 collison) +{ + switch(collison) + { + case COLLISION_NONE: + case COLLISION_STOP_SURFING: + case COLLISION_ELEVATION_MISMATCH: + return FALSE; + default: + return TRUE; + case COLLISION_OBJECT_EVENT: + return (gObjectEvents[GetObjectEventIdByXY(x,y)].inanimate); + } + return TRUE; +} + +static bool32 IsMetatileLand(s16 x, s16 y, u32 collison) +{ + switch(collison) + { + case COLLISION_NONE: + case COLLISION_STOP_SURFING: + case COLLISION_ELEVATION_MISMATCH: + return TRUE; + default: + return FALSE; + } +} + #undef tStep #undef tFrameCounter #undef tFishingRod @@ -2077,7 +2299,7 @@ static void Task_DoPlayerSpinExit(u8 taskId) tSpeed = 1; tCurY = (u16)(sprite->y + sprite->y2) << 4; sprite->y2 = 0; - CameraObjectReset2(); + CameraObjectFreeze(); object->fixedPriority = TRUE; sprite->oam.priority = 0; sprite->subpriority = 0; @@ -2146,7 +2368,7 @@ static void Task_DoPlayerSpinEntrance(u8 taskId) tSubpriority = sprite->subpriority; tCurY = -((u16)sprite->y2 + 32) * 16; sprite->y2 = 0; - CameraObjectReset2(); + CameraObjectFreeze(); object->fixedPriority = TRUE; sprite->oam.priority = 1; sprite->subpriority = 0; @@ -2181,7 +2403,7 @@ static void Task_DoPlayerSpinEntrance(u8 taskId) object->fixedPriority = 0; sprite->oam.priority = tPriority; sprite->subpriority = tSubpriority; - CameraObjectReset1(); + CameraObjectReset(); DestroyTask(taskId); } break; diff --git a/src/field_weather.c b/src/field_weather.c index 13ef7aae3e..fea1e30358 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -280,7 +280,6 @@ static void BuildColorMaps(void) u16 brightnessDelta; u16 colorMapIndex; u16 baseBrightness; - u32 remainingBrightness; s16 diff; sPaletteColorMapTypes = sBasePaletteColorMapTypes; @@ -308,11 +307,7 @@ static void BuildColorMaps(void) } baseBrightness = curBrightness; - remainingBrightness = 0x1f00 - curBrightness; - if ((0x1f00 - curBrightness) < 0) - remainingBrightness += 0xf; - - brightnessDelta = remainingBrightness / (NUM_WEATHER_COLOR_MAPS - 3); + brightnessDelta = (0x1f00 - curBrightness) / (NUM_WEATHER_COLOR_MAPS - 3); if (colorVal < 12) { // For shadows (color values < 12), the remaining color mappings are diff --git a/src/fieldmap.c b/src/fieldmap.c index 5e8ffec4aa..28c9602688 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -16,6 +16,7 @@ #include "tv.h" #include "constants/rgb.h" #include "constants/metatile_behaviors.h" +#include "wild_encounter.h" struct ConnectionFlags { @@ -66,6 +67,7 @@ const struct MapHeader *const GetMapHeaderFromConnection(const struct MapConnect void InitMap(void) { + ResetChainFishingDexNavStreak(); InitMapLayoutData(&gMapHeader); SetOccupiedSecretBaseEntranceMetatiles(gMapHeader.events); RunOnLoadMapScript(); diff --git a/src/international_string_util.c b/src/international_string_util.c index 160e201b60..feba03c97f 100644 --- a/src/international_string_util.c +++ b/src/international_string_util.c @@ -75,10 +75,7 @@ int Intl_GetListMenuWidth(const struct ListMenuTemplate *listMenu) } finalWidth = maxWidth + listMenu->item_X + 9; - if (finalWidth < 0) - finalWidth += 7; - - finalWidth >>= 3; + finalWidth /= 8; if (finalWidth > 28) finalWidth = 28; diff --git a/src/level_caps.c b/src/level_caps.c index 9a51edccb0..81ffa7b090 100644 --- a/src/level_caps.c +++ b/src/level_caps.c @@ -65,7 +65,13 @@ u32 GetSoftLevelCapExpValue(u32 level, u32 expValue) else return expValue / sExpScalingDown[levelDifference]; } + else if (level < currentLevelCap) + { + return expValue; + } else + { return 0; + } } diff --git a/src/main.c b/src/main.c index 32e103b6e8..0d508104ed 100644 --- a/src/main.c +++ b/src/main.c @@ -455,7 +455,18 @@ static void IntrDummy(void) static void WaitForVBlank(void) { gMain.intrCheck &= ~INTR_FLAG_VBLANK; - VBlankIntrWait(); + + if (gWirelessCommType != 0) + { + // Desynchronization may occur if wireless adapter is connected + // and we call VBlankIntrWait(); + while (!(gMain.intrCheck & INTR_FLAG_VBLANK)) + ; + } + else + { + VBlankIntrWait(); + } } void SetTrainerHillVBlankCounter(u32 *counter) diff --git a/src/overworld.c b/src/overworld.c index 6e0338da0f..15f0c10812 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -852,9 +852,17 @@ if (I_VS_SEEKER_CHARGING != 0) ResetFieldTasksArgs(); RunOnResumeMapScript(); - if (gMapHeader.regionMapSectionId != MAPSEC_BATTLE_FRONTIER - || gMapHeader.regionMapSectionId != sLastMapSectionId) - ShowMapNamePopup(); + if (OW_HIDE_REPEAT_MAP_POPUP) + { + if (gMapHeader.regionMapSectionId != sLastMapSectionId) + ShowMapNamePopup(); + } + else + { + if (gMapHeader.regionMapSectionId != MAPSEC_BATTLE_FRONTIER + || gMapHeader.regionMapSectionId != sLastMapSectionId) + ShowMapNamePopup(); + } } static void LoadMapFromWarp(bool32 a1) @@ -3094,7 +3102,7 @@ static void SetPlayerFacingDirection(u8 linkPlayerId, u8 facing) { if (facing > FACING_FORCED_RIGHT) { - objEvent->triggerGroundEffectsOnMove = 1; + objEvent->triggerGroundEffectsOnMove = TRUE; } else { @@ -3243,7 +3251,7 @@ static void CreateLinkPlayerSprite(u8 linkPlayerId, u8 gameVersion) sprite = &gSprites[objEvent->spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->data[0] = linkPlayerId; - objEvent->triggerGroundEffectsOnMove = 0; + objEvent->triggerGroundEffectsOnMove = FALSE; } } diff --git a/src/party_menu.c b/src/party_menu.c index 3de2a7b4c3..69e78b08fe 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -2094,7 +2094,7 @@ u8 GetAilmentFromStatus(u32 status) if (status & STATUS1_BURN) return AILMENT_BRN; if (status & STATUS1_FROSTBITE) - return AILMENT_FSB; + return AILMENT_FRB; return AILMENT_NONE; } diff --git a/src/pokedex_plus_hgss.c b/src/pokedex_plus_hgss.c index 6a2d16caee..78b97303a4 100644 --- a/src/pokedex_plus_hgss.c +++ b/src/pokedex_plus_hgss.c @@ -4549,6 +4549,8 @@ static u8 PrintCryScreenSpeciesName(u8 windowId, u16 num, u8 left, u8 top) return i; } +#define MALE_PERSONALITY 0xFE + // Unown and Spinda use the personality of the first seen individual of that species // All others use personality 0 static u32 GetPokedexMonPersonality(u16 species) @@ -4562,7 +4564,7 @@ static u32 GetPokedexMonPersonality(u16 species) } else { - return 0; + return MALE_PERSONALITY; } } @@ -4926,9 +4928,11 @@ static void Task_LoadStatsScreen(u8 taskId) if (gTasks[taskId].data[1] == 0) { //Icon + u32 species = NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum); + u32 personality = GetPokedexMonPersonality(species); FreeMonIconPalettes(); //Free space for new pallete - LoadMonIconPalette(NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum)); //Loads pallete for current mon - gTasks[taskId].data[6] = CreateMonIcon(NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum), SpriteCB_MonIcon, 18, 31, 4, 0); //Create pokemon sprite + LoadMonIconPalettePersonality(species, personality); //Loads pallete for current mon + gTasks[taskId].data[6] = CreateMonIcon(species, SpriteCB_MonIcon, 18, 31, 4, personality); //Create pokemon sprite gSprites[gTasks[taskId].data[4]].oam.priority = 0; } gMain.state++; @@ -6060,13 +6064,15 @@ static void Task_LoadEvolutionScreen(u8 taskId) case 3: if (gTasks[taskId].data[1] == 0) { + u32 species = NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum); + u32 personality = GetPokedexMonPersonality(species); sPokedexView->selectedScreen = EVO_SCREEN; ResetEvoScreenDataStruct(); //Icon FreeMonIconPalettes(); //Free space for new pallete - LoadMonIconPalette(NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum)); //Loads pallete for current mon - PrintPreEvolutions(taskId, NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum)); - gTasks[taskId].data[4] = CreateMonIcon(NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum), SpriteCB_MonIcon, 18 + 32*sPokedexView->numPreEvolutions, 31, 4, 0); //Create pokemon sprite + LoadMonIconPalettePersonality(species, personality); //Loads pallete for current mon + PrintPreEvolutions(taskId, species); + gTasks[taskId].data[4] = CreateMonIcon(species, SpriteCB_MonIcon, 18 + 32*sPokedexView->numPreEvolutions, 31, 4, personality); //Create pokemon sprite EvoFormsPage_PrintNavigationButtons(); // Navigation buttons gSprites[gTasks[taskId].data[4]].oam.priority = 0; } @@ -6248,11 +6254,12 @@ static void HandleTargetSpeciesPrint(u8 taskId, u16 targetSpecies, u16 previousT if (base_i < iterations) { - LoadMonIconPalette(targetSpecies); //Loads pallete for current mon + u32 personality = GetPokedexMonPersonality(targetSpecies); + LoadMonIconPalettePersonality(targetSpecies, personality); //Loads pallete for current mon if (isEevee) - gTasks[taskId].data[4+base_i] = CreateMonIcon(targetSpecies, SpriteCB_MonIcon, 45 + 26*base_i, 31, 4, 0); //Create pokemon sprite + gTasks[taskId].data[4+base_i] = CreateMonIcon(targetSpecies, SpriteCB_MonIcon, 45 + 26*base_i, 31, 4, personality); //Create pokemon sprite else - gTasks[taskId].data[4+base_i] = CreateMonIcon(targetSpecies, SpriteCB_MonIcon, 50 + 32*base_i, 31, 4, 0); //Create pokemon sprite + gTasks[taskId].data[4+base_i] = CreateMonIcon(targetSpecies, SpriteCB_MonIcon, 50 + 32*base_i, 31, 4, personality); //Create pokemon sprite gSprites[gTasks[taskId].data[4+base_i]].oam.priority = 0; } } @@ -6293,8 +6300,9 @@ static void HandlePreEvolutionSpeciesPrint(u8 taskId, u16 preSpecies, u16 specie if (base_i < 3) { - LoadMonIconPalette(preSpecies); //Loads pallete for current mon - gTasks[taskId].data[4+base_i] = CreateMonIcon(preSpecies, SpriteCB_MonIcon, 18 + 32*base_i, 31, 4, 0); //Create pokemon sprite + u32 personality = GetPokedexMonPersonality(preSpecies); + LoadMonIconPalettePersonality(preSpecies, personality); //Loads pallete for current mon + gTasks[taskId].data[4+base_i] = CreateMonIcon(preSpecies, SpriteCB_MonIcon, 18 + 32*base_i, 31, 4, personality); //Create pokemon sprite gSprites[gTasks[taskId].data[4+base_i]].oam.priority = 0; } } @@ -6771,9 +6779,11 @@ static void Task_LoadFormsScreen(u8 taskId) if (gTasks[taskId].data[1] == 0) { //Icon + u32 species = NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum); + u32 personality = GetPokedexMonPersonality(species); FreeMonIconPalettes(); //Free space for new pallete - LoadMonIconPalette(NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum)); //Loads pallete for current mon - gTasks[taskId].data[4] = CreateMonIcon(NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum), SpriteCB_MonIcon, 18, 31, 4, 0); //Create pokemon sprite + LoadMonIconPalettePersonality(species, personality); //Loads pallete for current mon + gTasks[taskId].data[4] = CreateMonIcon(species, SpriteCB_MonIcon, 18, 31, 4, personality); //Create pokemon sprite gSprites[gTasks[taskId].data[4]].oam.priority = 0; } EvoFormsPage_PrintNavigationButtons(); // Navigation buttons @@ -6952,13 +6962,14 @@ static void PrintForms(u8 taskId, u16 species) continue; else { + u32 personality = GetPokedexMonPersonality(speciesForm); sPokedexView->sFormScreenData.formIds[j++] = i; times += 1; - LoadMonIconPalette(speciesForm); //Loads pallete for current mon + LoadMonIconPalettePersonality(speciesForm, personality); //Loads pallete for current mon if (times < 7) - gTasks[taskId].data[4+times] = CreateMonIcon(speciesForm, SpriteCB_MonIcon, 52 + 34*(times-1), 31, 4, 0); //Create pokemon sprite + gTasks[taskId].data[4+times] = CreateMonIcon(speciesForm, SpriteCB_MonIcon, 52 + 34*(times-1), 31, 4, personality); //Create pokemon sprite else if (times < 14) - gTasks[taskId].data[4+times] = CreateMonIcon(speciesForm, SpriteCB_MonIcon, 18 + 34*(times-7), 70 - y_offset_icons, 4, 0); //Create pokemon sprite + gTasks[taskId].data[4+times] = CreateMonIcon(speciesForm, SpriteCB_MonIcon, 18 + 34*(times-7), 70 - y_offset_icons, 4, personality); //Create pokemon sprite gSprites[gTasks[taskId].data[4+times]].oam.priority = 0; } } diff --git a/src/pokemon.c b/src/pokemon.c index 31c06cc3c6..68d5a42437 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -58,6 +58,7 @@ #include "constants/trainers.h" #include "constants/union_room.h" #include "constants/weather.h" +#include "wild_encounter.h" #define FRIENDSHIP_EVO_THRESHOLD ((P_FRIENDSHIP_EVO_THRESHOLD >= GEN_9) ? 160 : 220) @@ -746,6 +747,20 @@ static const u32 sCompressedStatuses[] = // - The maximum PP. // - The maximum HP. // - The maximum form countdown. + +// The following STATIC_ASSERT will prevent developers from compiling the game if the value of the constant on the left does not fit within the number of bits defined in PokemonSubstruct0 (currently located in include/pokemon.h). + +// To successfully compile, developers will need to do one of the following: +// 1) Decrease the size of the constant. +// 2) Increase the number of bits both on the struct AND in the corresponding assert. This will likely break user's saves unless there is free space after the member that is being adjsted. +// 3) Repurpose unused IDs. + +// EXAMPLES +// If a developer has added enough new items so that ITEMS_COUNT now equals 1200, they could... +// 1) remove new items until ITEMS_COUNT is 1023, the max value that will fit in 10 bits. +// 2) change heldItem:10 to heldItem:11 AND change the below assert for ITEMS_COUNT to check for (1 << 11). +// 3) repurpose IDs from other items that aren't being used, like ITEM_GOLD_TEETH or ITEM_SS_TICKET until ITEMS_COUNT equals 1023, the max value that will fit in 10 bits. + STATIC_ASSERT(NUM_SPECIES < (1 << 11), PokemonSubstruct0_species_TooSmall); STATIC_ASSERT(NUMBER_OF_MON_TYPES + 1 <= (1 << 5), PokemonSubstruct0_teraType_TooSmall); STATIC_ASSERT(ITEMS_COUNT < (1 << 10), PokemonSubstruct0_heldItem_TooSmall); @@ -880,6 +895,8 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV, totalRerolls += I_SHINY_CHARM_ADDITIONAL_ROLLS; if (LURE_STEP_COUNT != 0) totalRerolls += 1; + if (IsCurrentEncounterFishing()) + totalRerolls += CalculateChainFishingShinyRolls(); while (GET_SHINY_VALUE(value, personality) >= SHINY_ODDS && totalRerolls > 0) { @@ -1692,25 +1709,43 @@ void GiveBoxMonInitialMoveset_Fast(struct BoxPokemon *boxMon) //Credit: Asparagu u16 species = GetBoxMonData(boxMon, MON_DATA_SPECIES, NULL); s32 level = GetLevelFromBoxMonExp(boxMon); s32 i; - u16 levelMoveCount = 0; u16 moves[MAX_MON_MOVES] = {0}; u8 addedMoves = 0; const struct LevelUpMove *learnset = GetSpeciesLevelUpLearnset(species); for (i = 0; learnset[i].move != LEVEL_UP_MOVE_END; i++) - levelMoveCount++; - - for (i = levelMoveCount; (i >= 0 && addedMoves < MAX_MON_MOVES); i--) { + s32 j; + bool32 alreadyKnown = FALSE; + if (learnset[i].level > level) - continue; + break; if (learnset[i].level == 0) continue; - if (moves[addedMoves] != learnset[i].move) - moves[addedMoves++] = learnset[i].move; + for (j = 0; j < addedMoves + 1; j++) + if (moves[j] == learnset[i].move) + { + alreadyKnown = TRUE; + break; + } + + if (!alreadyKnown) + { + if (addedMoves < MAX_MON_MOVES) + { + moves[addedMoves] = learnset[i].move; + addedMoves++; + } + else + { + for (j = 0; j < MAX_MON_MOVES - 1; j++) + moves[j] = moves[j + 1]; + moves[MAX_MON_MOVES - 1] = learnset[i].move; + } + } } - for (i = MAX_MON_MOVES - 1; i >= 0; i--) + for (i = 0; i < MAX_MON_MOVES; i++) { SetBoxMonData(boxMon, MON_DATA_MOVE1 + i, &moves[i]); SetBoxMonData(boxMon, MON_DATA_PP1 + i, &gMovesInfo[moves[i]].pp); @@ -4578,7 +4613,7 @@ u16 NationalPokedexNumToSpecies(u16 nationalNum) if (species == NUM_SPECIES) return NATIONAL_DEX_NONE; - return species; + return GET_BASE_SPECIES_ID(species); } u16 NationalToHoennOrder(u16 nationalNum) @@ -5640,9 +5675,9 @@ static inline bool32 CanFirstMonBoostHeldItemRarity(void) return FALSE; ability = GetMonAbility(&gPlayerParty[0]); - if ((OW_COMPOUND_EYES < GEN_9) && ability == ABILITY_COMPOUND_EYES) + if (ability == ABILITY_COMPOUND_EYES) return TRUE; - else if ((OW_SUPER_LUCK == GEN_8) && ability == ABILITY_SUPER_LUCK) + else if ((OW_SUPER_LUCK >= GEN_8) && ability == ABILITY_SUPER_LUCK) return TRUE; return FALSE; } diff --git a/src/pokemon_animation.c b/src/pokemon_animation.c index 69f6003a4e..acf3d4b91f 100644 --- a/src/pokemon_animation.c +++ b/src/pokemon_animation.c @@ -4583,29 +4583,24 @@ static void ShrinkGrowVibrate(struct Sprite *sprite) } else { - u8 posY_unsigned; - s8 posY_signed; - s32 posY; - s16 index = (u16)(sprite->data[2] % sprite->data[6] * 256) / sprite->data[6] % 256; + s8 sinY; + u16 y; + s16 index = ((u16)(sprite->data[2] % sprite->data[6] * 256) / sprite->data[6]) % 256; if (sprite->data[2] % 2 == 0) { sprite->data[4] = Sin(index, 32) + 256; sprite->data[5] = Sin(index, 32) + 256; - posY_unsigned = Sin(index, 32); - posY_signed = posY_unsigned; + sinY = Sin(index, 32); } else { sprite->data[4] = Sin(index, 8) + 256; sprite->data[5] = Sin(index, 8) + 256; - posY_unsigned = Sin(index, 8); - posY_signed = posY_unsigned; + sinY = Sin(index, 8); } - posY = posY_signed; - if (posY < 0) - posY += 7; - sprite->y2 = (u32)(posY) >> 3; + y = sinY / 8; + sprite->y2 = y; HandleSetAffineData(sprite, sprite->data[4], sprite->data[5], 0); } diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index 8f981ed854..013f7e21b4 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -52,9 +52,19 @@ // PC main menu options enum { +#if OW_PC_MOVE_ORDER <= GEN_3 OPTION_WITHDRAW, OPTION_DEPOSIT, OPTION_MOVE_MONS, +#elif OW_PC_MOVE_ORDER >= GEN_4 && OW_PC_MOVE_ORDER <= GEN_6_XY + OPTION_DEPOSIT, + OPTION_WITHDRAW, + OPTION_MOVE_MONS, +#elif OW_PC_MOVE_ORDER >= GEN_7 + OPTION_MOVE_MONS, + OPTION_DEPOSIT, + OPTION_WITHDRAW, +#endif OPTION_MOVE_ITEMS, OPTION_EXIT, OPTIONS_COUNT diff --git a/src/scrcmd.c b/src/scrcmd.c index 9d75627805..d59bb42d6c 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -2370,7 +2370,7 @@ bool8 ScrCmd_lockfortrainer(struct ScriptContext *ctx) } // This command will set a Pokémon's modernFatefulEncounter bit; there is no similar command to clear it. -bool8 ScrCmd_setmonmodernfatefulencounter(struct ScriptContext *ctx) +bool8 ScrCmd_setmodernfatefulencounter(struct ScriptContext *ctx) { bool8 isModernFatefulEncounter = TRUE; u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); @@ -2379,7 +2379,7 @@ bool8 ScrCmd_setmonmodernfatefulencounter(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_checkmonmodernfatefulencounter(struct ScriptContext *ctx) +bool8 ScrCmd_checkmodernfatefulencounter(struct ScriptContext *ctx) { u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); diff --git a/src/script_pokemon_util.c b/src/script_pokemon_util.c index a0bc7d8e16..31e40fa31a 100644 --- a/src/script_pokemon_util.c +++ b/src/script_pokemon_util.c @@ -347,7 +347,9 @@ u32 ScriptGiveMonParameterized(u16 species, u8 level, u16 item, u8 ball, u8 natu // moves for (i = 0; i < MAX_MON_MOVES; i++) { - if (moves[i] == MOVE_NONE || moves[i] >= MOVES_COUNT) + if (moves[0] == MOVE_NONE) + break; + if (moves[i] >= MOVES_COUNT) continue; SetMonMoveSlot(&mon, moves[i], i); } @@ -400,7 +402,7 @@ u32 ScriptGiveMonParameterized(u16 species, u8 level, u16 item, u8 ball, u8 natu } // set pokédex flags - nationalDexNum = SpeciesToNationalPokedexNum(species); + nationalDexNum = SpeciesToNationalPokedexNum(species); switch (sentToPc) { case MON_GIVEN_TO_PARTY: @@ -514,7 +516,7 @@ void Script_SetStatus1(struct ScriptContext *ctx) } } else - { + { SetMonData(&gPlayerParty[slot], MON_DATA_STATUS, &status1); } } diff --git a/src/trainer_see.c b/src/trainer_see.c index 8e95c7e5bd..2836756a6b 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -769,7 +769,7 @@ static bool8 JumpInPlaceBuriedTrainer(u8 taskId, struct Task *task, struct Objec if (gSprites[task->tOutOfAshSpriteId].animCmdIndex == 2) { trainerObj->fixedPriority = 0; - trainerObj->triggerGroundEffectsOnMove = 1; + trainerObj->triggerGroundEffectsOnMove = TRUE; sprite = &gSprites[trainerObj->spriteId]; sprite->oam.priority = 2; diff --git a/src/wild_encounter.c b/src/wild_encounter.c index 474c5ef560..221d92d3e5 100644 --- a/src/wild_encounter.c +++ b/src/wild_encounter.c @@ -51,6 +51,15 @@ enum { static u16 FeebasRandom(void); static void FeebasSeedRng(u16 seed); +static u32 GetLastFishingSpecies(void); +static bool32 DoesSpeciesMatchLastFishingSpecies(u32 species); +static u32 GetCurrentChainFishingDexNavStreak(void); +static bool32 IsChainFishingStreakAtMax(void); +static void IncrementChainFishingDexNavStreak(void); +static void SetEncounterFishing(void); +static void SetLastFishingSpecies(u32 species); +static void HandleChainFishingStreak(u32 species); +static void UpdateChainFishingSpeciesAndStreak(u32 species); static bool8 IsWildLevelAllowedByRepel(u8 level); static void ApplyFluteEncounterRateMod(u32 *encRate); static void ApplyCleanseTagEncounterRateMod(u32 *encRate); @@ -67,6 +76,11 @@ EWRAM_DATA static u32 sFeebasRngValue = 0; EWRAM_DATA bool8 gIsFishingEncounter = 0; EWRAM_DATA bool8 gIsSurfingEncounter = 0; +#ifdef I_FISHING_CHAIN +EWRAM_DATA u8 gChainFishingDexNavStreak = 0; +EWRAM_DATA static u16 sLastFishingSpecies = 0; +#endif + #include "data/wild_encounters.h" static const struct WildPokemon sWildFeebas = {20, 25, SPECIES_FEEBAS}; @@ -404,10 +418,9 @@ u8 PickWildMonNature(void) } } // check synchronize for a Pokémon with the same ability - if (OW_SYNCHRONIZE_NATURE < GEN_9 - && !GetMonData(&gPlayerParty[0], MON_DATA_SANITY_IS_EGG) + if (!GetMonData(&gPlayerParty[0], MON_DATA_SANITY_IS_EGG) && GetMonAbility(&gPlayerParty[0]) == ABILITY_SYNCHRONIZE - && (OW_SYNCHRONIZE_NATURE == GEN_8 || Random() % 2 == 0)) + && (OW_SYNCHRONIZE_NATURE >= GEN_8 || Random() % 2 == 0)) { return GetMonData(&gPlayerParty[0], MON_DATA_PERSONALITY) % NUM_NATURES; } @@ -418,10 +431,9 @@ u8 PickWildMonNature(void) static void CreateWildMon(u16 species, u8 level) { - bool32 checkCuteCharm; + bool32 checkCuteCharm = TRUE; ZeroEnemyPartyMons(); - checkCuteCharm = OW_CUTE_CHARM < GEN_9; switch (gSpeciesInfo[species].genderRatio) { @@ -467,33 +479,33 @@ static bool8 TryGenerateWildMon(const struct WildPokemonInfo *wildMonInfo, u8 ar switch (area) { case WILD_AREA_LAND: - if (OW_MAGNET_PULL < GEN_9 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_STEEL, ABILITY_MAGNET_PULL, &wildMonIndex, LAND_WILD_COUNT)) + if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_STEEL, ABILITY_MAGNET_PULL, &wildMonIndex, LAND_WILD_COUNT)) break; - if (OW_STATIC < GEN_9 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_STATIC, &wildMonIndex, LAND_WILD_COUNT)) + if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_STATIC, &wildMonIndex, LAND_WILD_COUNT)) break; - if (OW_LIGHTNING_ROD == GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_LIGHTNING_ROD, &wildMonIndex, LAND_WILD_COUNT)) + if (OW_LIGHTNING_ROD >= GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_LIGHTNING_ROD, &wildMonIndex, LAND_WILD_COUNT)) break; - if (OW_FLASH_FIRE == GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_FIRE, ABILITY_FLASH_FIRE, &wildMonIndex, LAND_WILD_COUNT)) + if (OW_FLASH_FIRE >= GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_FIRE, ABILITY_FLASH_FIRE, &wildMonIndex, LAND_WILD_COUNT)) break; - if (OW_HARVEST == GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_GRASS, ABILITY_HARVEST, &wildMonIndex, LAND_WILD_COUNT)) + if (OW_HARVEST >= GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_GRASS, ABILITY_HARVEST, &wildMonIndex, LAND_WILD_COUNT)) break; - if (OW_STORM_DRAIN == GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_WATER, ABILITY_STORM_DRAIN, &wildMonIndex, LAND_WILD_COUNT)) + if (OW_STORM_DRAIN >= GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_WATER, ABILITY_STORM_DRAIN, &wildMonIndex, LAND_WILD_COUNT)) break; wildMonIndex = ChooseWildMonIndex_Land(); break; case WILD_AREA_WATER: - if (OW_MAGNET_PULL < GEN_9 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_STEEL, ABILITY_MAGNET_PULL, &wildMonIndex, WATER_WILD_COUNT)) + if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_STEEL, ABILITY_MAGNET_PULL, &wildMonIndex, WATER_WILD_COUNT)) break; - if (OW_STATIC < GEN_9 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_STATIC, &wildMonIndex, WATER_WILD_COUNT)) + if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_STATIC, &wildMonIndex, WATER_WILD_COUNT)) break; - if (OW_LIGHTNING_ROD == GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_LIGHTNING_ROD, &wildMonIndex, WATER_WILD_COUNT)) + if (OW_LIGHTNING_ROD >= GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_LIGHTNING_ROD, &wildMonIndex, WATER_WILD_COUNT)) break; - if (OW_FLASH_FIRE == GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_FIRE, ABILITY_FLASH_FIRE, &wildMonIndex, WATER_WILD_COUNT)) + if (OW_FLASH_FIRE >= GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_FIRE, ABILITY_FLASH_FIRE, &wildMonIndex, WATER_WILD_COUNT)) break; - if (OW_HARVEST == GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_GRASS, ABILITY_HARVEST, &wildMonIndex, WATER_WILD_COUNT)) + if (OW_HARVEST >= GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_GRASS, ABILITY_HARVEST, &wildMonIndex, WATER_WILD_COUNT)) break; - if (OW_STORM_DRAIN == GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_WATER, ABILITY_STORM_DRAIN, &wildMonIndex, WATER_WILD_COUNT)) + if (OW_STORM_DRAIN >= GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_WATER, ABILITY_STORM_DRAIN, &wildMonIndex, WATER_WILD_COUNT)) break; wildMonIndex = ChooseWildMonIndex_WaterRock(); @@ -516,10 +528,12 @@ static bool8 TryGenerateWildMon(const struct WildPokemonInfo *wildMonInfo, u8 ar static u16 GenerateFishingWildMon(const struct WildPokemonInfo *wildMonInfo, u8 rod) { u8 wildMonIndex = ChooseWildMonIndex_Fishing(rod); + u16 wildMonSpecies = wildMonInfo->wildPokemon[wildMonIndex].species; u8 level = ChooseWildMonLevel(wildMonInfo->wildPokemon, wildMonIndex, WILD_AREA_FISHING); - CreateWildMon(wildMonInfo->wildPokemon[wildMonIndex].species, level); - return wildMonInfo->wildPokemon[wildMonIndex].species; + UpdateChainFishingSpeciesAndStreak(wildMonSpecies); + CreateWildMon(wildMonSpecies, level); + return wildMonSpecies; } static bool8 SetUpMassOutbreakEncounter(u8 flags) @@ -574,7 +588,7 @@ static bool8 WildEncounterCheck(u32 encounterRate, bool8 ignoreAbility) encounterRate = encounterRate * 3 / 4; else if (ability == ABILITY_STENCH) encounterRate /= 2; - else if (ability == ABILITY_ILLUMINATE && OW_ILLUMINATE < GEN_9) + else if (ability == ABILITY_ILLUMINATE) encounterRate *= 2; else if (ability == ABILITY_WHITE_SMOKE) encounterRate /= 2; @@ -586,7 +600,7 @@ static bool8 WildEncounterCheck(u32 encounterRate, bool8 ignoreAbility) encounterRate /= 2; else if (ability == ABILITY_QUICK_FEET) encounterRate /= 2; - else if (ability == ABILITY_INFILTRATOR && OW_INFILTRATOR == GEN_8) + else if (ability == ABILITY_INFILTRATOR && OW_INFILTRATOR >= GEN_8) encounterRate /= 2; else if (ability == ABILITY_NO_GUARD) encounterRate *= 2; @@ -866,10 +880,84 @@ bool8 DoesCurrentMapHaveFishingMons(void) return FALSE; } +static u32 GetLastFishingSpecies(void) +{ + return sLastFishingSpecies; +} + +static bool32 DoesSpeciesMatchLastFishingSpecies(u32 species) +{ + return (species == GetLastFishingSpecies()); +} + +static u32 GetCurrentChainFishingDexNavStreak(void) +{ + return gChainFishingDexNavStreak; +} + +static bool32 IsChainFishingStreakAtMax(void) +{ + return (GetCurrentChainFishingDexNavStreak() >= FISHING_CHAIN_LENGTH_MAX); +} + +static void IncrementChainFishingDexNavStreak(void) +{ + gChainFishingDexNavStreak++; +} + +void ResetChainFishingDexNavStreak(void) +{ + gChainFishingDexNavStreak = 0; +} + +bool32 IsCurrentEncounterFishing(void) +{ + return gIsFishingEncounter; +} + +static void SetEncounterFishing(void) +{ + gIsFishingEncounter = TRUE; +} + +u32 CalculateChainFishingShinyRolls(void) +{ + return (1 + (2 * GetCurrentChainFishingDexNavStreak())); +} + +static void SetLastFishingSpecies(u32 species) +{ + sLastFishingSpecies = species; +} + +static void HandleChainFishingStreak(u32 species) +{ + if (!DoesSpeciesMatchLastFishingSpecies(species)) + { + ResetChainFishingDexNavStreak(); + return; + } + + if (IsChainFishingStreakAtMax()) + return; + + IncrementChainFishingDexNavStreak(); +} + +static void UpdateChainFishingSpeciesAndStreak(u32 species) +{ + if (!I_FISHING_CHAIN) + return; + + HandleChainFishingStreak(species); + SetLastFishingSpecies(species); +} + void FishingWildEncounter(u8 rod) { u16 species; + SetEncounterFishing(); if (CheckFeebas() == TRUE) { u8 level = ChooseWildMonLevel(&sWildFeebas, 0, WILD_AREA_FISHING); @@ -881,9 +969,9 @@ void FishingWildEncounter(u8 rod) { species = GenerateFishingWildMon(gWildMonHeaders[GetCurrentMapWildMonHeaderId()].fishingMonsInfo, rod); } + IncrementGameStat(GAME_STAT_FISHING_ENCOUNTERS); SetPokemonAnglerSpecies(species); - gIsFishingEncounter = TRUE; BattleSetup_StartWildBattle(); } diff --git a/test/battle/ability/booster_energy.c b/test/battle/ability/booster_energy.c new file mode 100644 index 0000000000..6d08659781 --- /dev/null +++ b/test/battle/ability/booster_energy.c @@ -0,0 +1,211 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gItemsInfo[ITEM_BOOSTER_ENERGY].holdEffect == HOLD_EFFECT_BOOSTER_ENERGY); +} + +SINGLE_BATTLE_TEST("Booster Energy will activate Quark Drive after Electric Terrain ends") +{ + GIVEN { + PLAYER(SPECIES_IRON_MOTH) { Attack(100); Defense(100); Speed(100); SpAttack(110); SpDefense(100); Ability(ABILITY_QUARK_DRIVE); Item(ITEM_BOOSTER_ENERGY); } + OPPONENT(SPECIES_TAPU_KOKO) { Speed(100); Ability(ABILITY_ELECTRIC_SURGE); }; + } WHEN { + TURN {} + TURN {} + TURN {} + TURN {} + TURN {} + } SCENE { + ABILITY_POPUP(opponent, ABILITY_ELECTRIC_SURGE); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Iron Moth used its Booster Energy to activate Quark Drive!"); + MESSAGE("Iron Moth's Sp. Atk was heightened!"); + } + ABILITY_POPUP(player, ABILITY_QUARK_DRIVE); + MESSAGE("The Electric Terrain activated Iron Moth's Quark Drive!"); + MESSAGE("Iron Moth's Sp. Atk was heightened!"); + MESSAGE("The electricity disappeared from the battlefield."); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + ABILITY_POPUP(player, ABILITY_QUARK_DRIVE); + MESSAGE("Iron Moth used its Booster Energy to activate Quark Drive!"); + MESSAGE("Iron Moth's Sp. Atk was heightened!"); + } +} + +SINGLE_BATTLE_TEST("Booster Energy will activate Protosynthesis after harsh sunlight ends") +{ + GIVEN { + PLAYER(SPECIES_RAGING_BOLT) { Attack(100); Defense(100); Speed(100); SpAttack(110); SpDefense(100); Ability(ABILITY_PROTOSYNTHESIS); Item(ITEM_BOOSTER_ENERGY); } + OPPONENT(SPECIES_TORKOAL) { Speed(100); Ability(ABILITY_DROUGHT); }; + } WHEN { + TURN {} + TURN {} + TURN {} + TURN {} + TURN {} + } SCENE { + ABILITY_POPUP(opponent, ABILITY_DROUGHT); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("RagingBolt used its Booster Energy to activate Protosynthesis!"); + MESSAGE("RagingBolt's Sp. Atk was heightened!"); + } + ABILITY_POPUP(player, ABILITY_PROTOSYNTHESIS); + MESSAGE("The harsh sunlight activated RagingBolt's Protosynthesis!"); + MESSAGE("RagingBolt's Sp. Atk was heightened!"); + MESSAGE("The sunlight faded."); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + ABILITY_POPUP(player, ABILITY_PROTOSYNTHESIS); + MESSAGE("RagingBolt used its Booster Energy to activate Protosynthesis!"); + MESSAGE("RagingBolt's Sp. Atk was heightened!"); + } +} + +SINGLE_BATTLE_TEST("Booster Energy activates Protosynthesis and increases highest stat") +{ + u32 attack, defense, speed, spAttack, spDefense; + + PARAMETRIZE { attack = 110; defense = 100; speed = 100; spAttack = 100; spDefense = 100; } + PARAMETRIZE { attack = 100; defense = 110; speed = 100; spAttack = 100; spDefense = 100; } + PARAMETRIZE { attack = 100; defense = 100; speed = 110; spAttack = 100; spDefense = 100; } + PARAMETRIZE { attack = 100; defense = 100; speed = 100; spAttack = 110; spDefense = 100; } + PARAMETRIZE { attack = 100; defense = 100; speed = 100; spAttack = 100; spDefense = 110; } + + GIVEN { + PLAYER(SPECIES_RAGING_BOLT) { Attack(attack); Defense(defense); Speed(speed); SpAttack(spAttack); SpDefense(spDefense); Ability(ABILITY_PROTOSYNTHESIS); Item(ITEM_BOOSTER_ENERGY); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(50); }; + } WHEN { + TURN { } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + ABILITY_POPUP(player, ABILITY_PROTOSYNTHESIS); + MESSAGE("RagingBolt used its Booster Energy to activate Protosynthesis!"); + if (attack == 110) + MESSAGE("RagingBolt's Attack was heightened!"); + else if (defense == 110) + MESSAGE("RagingBolt's Defense was heightened!"); + else if (speed == 110) + MESSAGE("RagingBolt's Speed was heightened!"); + else if (spAttack == 110) + MESSAGE("RagingBolt's Sp. Atk was heightened!"); + else if (spDefense == 110) + MESSAGE("RagingBolt's Sp. Def was heightened!"); + } THEN { + EXPECT(player->item == ITEM_NONE); + } +} + +SINGLE_BATTLE_TEST("Booster Energy activates Quark Drive and increases highest stat") +{ + u32 attack, defense, speed, spAttack, spDefense; + + PARAMETRIZE { attack = 110; defense = 100; speed = 100; spAttack = 100; spDefense = 100; } + PARAMETRIZE { attack = 100; defense = 110; speed = 100; spAttack = 100; spDefense = 100; } + PARAMETRIZE { attack = 100; defense = 100; speed = 110; spAttack = 100; spDefense = 100; } + PARAMETRIZE { attack = 100; defense = 100; speed = 100; spAttack = 110; spDefense = 100; } + PARAMETRIZE { attack = 100; defense = 100; speed = 100; spAttack = 100; spDefense = 110; } + + GIVEN { + PLAYER(SPECIES_IRON_MOTH) { Attack(attack); Defense(defense); Speed(speed); SpAttack(spAttack); SpDefense(spDefense); Ability(ABILITY_QUARK_DRIVE); Item(ITEM_BOOSTER_ENERGY); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(50); }; + } WHEN { + TURN { } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + if (attack == 110) + MESSAGE("Iron Moth's Attack was heightened!"); + else if (defense == 110) + MESSAGE("Iron Moth's Defense was heightened!"); + else if (speed == 110) + MESSAGE("Iron Moth's Speed was heightened!"); + else if (spAttack == 110) + MESSAGE("Iron Moth's Sp. Atk was heightened!"); + else if (spDefense == 110) + MESSAGE("Iron Moth's Sp. Def was heightened!"); + } THEN { + EXPECT(player->item == ITEM_NONE); + } +} + +SINGLE_BATTLE_TEST("Booster Energy increases special attack by 30% if it is the highest stat", s16 damage) +{ + u32 species; + u32 ability; + u32 item; + + PARAMETRIZE { species = SPECIES_RAGING_BOLT; ability = ABILITY_PROTOSYNTHESIS; item = ITEM_NONE; } + PARAMETRIZE { species = SPECIES_RAGING_BOLT; ability = ABILITY_PROTOSYNTHESIS; item = ITEM_BOOSTER_ENERGY; } + + PARAMETRIZE { species = SPECIES_IRON_MOTH; ability = ABILITY_QUARK_DRIVE; item = ITEM_NONE; } + PARAMETRIZE { species = SPECIES_IRON_MOTH; ability = ABILITY_QUARK_DRIVE; item = ITEM_BOOSTER_ENERGY; } + + GIVEN { + ASSUME(gMovesInfo[MOVE_ROUND].category == DAMAGE_CATEGORY_SPECIAL); + PLAYER(species) { Attack(100); Defense(100); Speed(100); SpAttack(110); SpDefense(100); Ability(ability); Item(item); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(100); }; + } WHEN { + TURN { MOVE(player, MOVE_ROUND); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_ROUND, player); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.3), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Booster Energy increases special defense by 30% if it is the highest stat", s16 damage) +{ + u32 species; + u32 ability; + u32 item; + + PARAMETRIZE { species = SPECIES_RAGING_BOLT; ability = ABILITY_PROTOSYNTHESIS; item = ITEM_NONE; } + PARAMETRIZE { species = SPECIES_RAGING_BOLT; ability = ABILITY_PROTOSYNTHESIS; item = ITEM_BOOSTER_ENERGY; } + + PARAMETRIZE { species = SPECIES_IRON_MOTH; ability = ABILITY_QUARK_DRIVE; item = ITEM_NONE; } + PARAMETRIZE { species = SPECIES_IRON_MOTH; ability = ABILITY_QUARK_DRIVE; item = ITEM_BOOSTER_ENERGY; } + + GIVEN { + ASSUME(gMovesInfo[MOVE_ROUND].category == DAMAGE_CATEGORY_SPECIAL); + PLAYER(species) { Attack(100); Defense(100); Speed(100); SpAttack(100); SpDefense(110); Ability(ability); Item(item); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(100); }; + } WHEN { + TURN { MOVE(opponent, MOVE_ROUND); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_ROUND, opponent); + HP_BAR(player, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.7), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Booster Energy can't be flung if a Paradox species is involved") +{ + GIVEN { + ASSUME(gSpeciesInfo[SPECIES_IRON_MOTH].isParadoxForm == TRUE); + PLAYER(SPECIES_IRON_MOTH); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_BOOSTER_ENERGY); } + } WHEN { + TURN { MOVE(opponent, MOVE_FLING); } + } SCENE { + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_FLING, opponent); + MESSAGE("But it failed!"); + } +} + +SINGLE_BATTLE_TEST("Booster Energy can't be tricked if a Paradox species is involved") +{ + GIVEN { + ASSUME(gSpeciesInfo[SPECIES_IRON_MOTH].isParadoxForm == TRUE); + PLAYER(SPECIES_IRON_MOTH) { Item(ITEM_BERRY_JUICE); } + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_BOOSTER_ENERGY); } + } WHEN { + TURN { MOVE(opponent, MOVE_TRICK); } + } SCENE { + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_TRICK, opponent); + MESSAGE("But it failed!"); + } +} diff --git a/test/battle/ability/defiant.c b/test/battle/ability/defiant.c index 3463cad18d..d464dd2443 100644 --- a/test/battle/ability/defiant.c +++ b/test/battle/ability/defiant.c @@ -175,3 +175,104 @@ DOUBLE_BATTLE_TEST("Defiant is activated by Cotton Down for non-ally pokemon") EXPECT_EQ(playerRight->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 2); } } + +SINGLE_BATTLE_TEST("Defiant activates before White Herb") +{ + u32 move; + + PARAMETRIZE { move = MOVE_LEER; } + PARAMETRIZE { move = MOVE_GROWL; } + + GIVEN { + PLAYER(SPECIES_MANKEY) { Ability(ABILITY_DEFIANT); Item(ITEM_WHITE_HERB); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, move); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, move, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + + ABILITY_POPUP(player, ABILITY_DEFIANT); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Mankey's Attack sharply rose!"); + + if (move == MOVE_LEER) { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Mankey's White Herb restored its status!"); + } else { + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Mankey's White Herb restored its status!"); + } + } + } THEN { + if (move == MOVE_LEER) { + EXPECT_EQ(player->statStages[STAT_DEF], DEFAULT_STAT_STAGE); + EXPECT_EQ(player->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 2); + } else { + EXPECT_EQ(player->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 1); + } + } +} + +SINGLE_BATTLE_TEST("Defiant activates for each stat that is lowered") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_TICKLE].effect == EFFECT_TICKLE); + PLAYER(SPECIES_MANKEY) { Ability(ABILITY_DEFIANT); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_TICKLE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TICKLE, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + + MESSAGE("Mankey's Attack fell!"); + ABILITY_POPUP(player, ABILITY_DEFIANT); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Mankey's Attack sharply rose!"); + + MESSAGE("Mankey's Defense fell!"); + ABILITY_POPUP(player, ABILITY_DEFIANT); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Mankey's Attack sharply rose!"); + + } THEN { + EXPECT_EQ(player->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 3); + } +} + +SINGLE_BATTLE_TEST("Defiant doesn't activate if the pokemon lowers it's own stats") +{ + u32 move; + + PARAMETRIZE { move = MOVE_SUPERPOWER; } + PARAMETRIZE { move = MOVE_CLOSE_COMBAT; } + PARAMETRIZE { move = MOVE_MAKE_IT_RAIN; } + PARAMETRIZE { move = MOVE_SPIN_OUT; } + + GIVEN { + ASSUME(MoveHasAdditionalEffectSelf(MOVE_SUPERPOWER, MOVE_EFFECT_ATK_DEF_DOWN)); + ASSUME(MoveHasAdditionalEffectSelf(MOVE_CLOSE_COMBAT, MOVE_EFFECT_DEF_SPDEF_DOWN)); + ASSUME(MoveHasAdditionalEffectSelf(MOVE_MAKE_IT_RAIN, MOVE_EFFECT_SP_ATK_MINUS_1)); + ASSUME(MoveHasAdditionalEffectSelf(MOVE_SPIN_OUT, MOVE_EFFECT_SPD_MINUS_2)); + PLAYER(SPECIES_MANKEY) { Ability(ABILITY_DEFIANT); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, move); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, move, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + + NONE_OF { + ABILITY_POPUP(player, ABILITY_DEFIANT); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Mankey's Attack sharply rose!"); + } + } THEN { + if (move == MOVE_SUPERPOWER) + EXPECT_EQ(player->statStages[STAT_ATK], DEFAULT_STAT_STAGE - 1); + else + EXPECT_EQ(player->statStages[STAT_ATK], DEFAULT_STAT_STAGE); + } +} diff --git a/test/battle/ability/disguise.c b/test/battle/ability/disguise.c new file mode 100644 index 0000000000..7d3e36bf78 --- /dev/null +++ b/test/battle/ability/disguise.c @@ -0,0 +1,123 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gMovesInfo[MOVE_AERIAL_ACE].category == DAMAGE_CATEGORY_PHYSICAL); +} + +SINGLE_BATTLE_TEST("Disguised Mimikyu will lose 1/8 of its max HP upon changing to its busted form") +{ + s16 disguiseDamage; + + GIVEN { + PLAYER(SPECIES_MIMIKYU_DISGUISED) { Ability(ABILITY_DISGUISE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_AERIAL_ACE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_AERIAL_ACE, opponent); + ABILITY_POPUP(player, ABILITY_DISGUISE); + HP_BAR(player, captureDamage: &disguiseDamage); + } THEN { + EXPECT_EQ(player->species, SPECIES_MIMIKYU_BUSTED); + EXPECT_EQ(disguiseDamage, player->maxHP / 8); + } +} + +SINGLE_BATTLE_TEST("Disguised Mimikyu takes no damage from a confusion hit and changes to its busted form") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_CONFUSE_RAY].effect == EFFECT_CONFUSE); + PLAYER(SPECIES_MIMIKYU_DISGUISED) { Ability(ABILITY_DISGUISE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_CONFUSE_RAY); } + TURN { } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, opponent); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, player); + MESSAGE("Mimikyu became confused!"); + MESSAGE("Mimikyu is confused!"); + MESSAGE("It hurt itself in its confusion!"); + NOT HP_BAR(player); + ABILITY_POPUP(player, ABILITY_DISGUISE); + } THEN { + EXPECT_EQ(player->species, SPECIES_MIMIKYU_BUSTED); + } +} + +SINGLE_BATTLE_TEST("Disguised Mimikyu's Air Balloon will pop upon changing to its busted form") +{ + GIVEN { + ASSUME(gItemsInfo[ITEM_AIR_BALLOON].holdEffect == HOLD_EFFECT_AIR_BALLOON); + PLAYER(SPECIES_MIMIKYU_DISGUISED) { Ability(ABILITY_DISGUISE); Item(ITEM_AIR_BALLOON); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_AERIAL_ACE); } + } SCENE { + MESSAGE("Mimikyu floats in the air with its Air Balloon!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_AERIAL_ACE, opponent); + NOT HP_BAR(player); + ABILITY_POPUP(player, ABILITY_DISGUISE); + MESSAGE("Mimikyu's Air Balloon popped!"); + } THEN { + EXPECT_EQ(player->species, SPECIES_MIMIKYU_BUSTED); + } +} + +SINGLE_BATTLE_TEST("Disguised Mimikyu takes damage from secondary damage without breaking the disguise") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_STEALTH_ROCK].effect == EFFECT_STEALTH_ROCK); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_MIMIKYU_DISGUISED) { Ability(ABILITY_DISGUISE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_STEALTH_ROCK); } + TURN { SWITCH(player, 1); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_STEALTH_ROCK, opponent); + HP_BAR(player); + MESSAGE("Pointed stones dug into Mimikyu!"); + } THEN { + EXPECT_EQ(player->species, SPECIES_MIMIKYU_DISGUISED); + } +} + +SINGLE_BATTLE_TEST("Disguised Mimikyu takes damage from Rocky Helmet without breaking the disguise") +{ + GIVEN { + ASSUME(gItemsInfo[ITEM_ROCKY_HELMET].holdEffect == HOLD_EFFECT_ROCKY_HELMET); + PLAYER(SPECIES_MIMIKYU_DISGUISED) { Ability(ABILITY_DISGUISE); } + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_ROCKY_HELMET); } + } WHEN { + TURN { MOVE(player, MOVE_AERIAL_ACE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_AERIAL_ACE, player); + HP_BAR(opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + HP_BAR(player); + MESSAGE("Mimikyu was hurt by Foe Wobbuffet's Rocky Helmet!"); + } THEN { + EXPECT_EQ(player->species, SPECIES_MIMIKYU_DISGUISED); + } +} + +SINGLE_BATTLE_TEST("Disguised Mimikyu takes damage from Rough Skin without breaking the disguise") +{ + GIVEN { + PLAYER(SPECIES_MIMIKYU_DISGUISED) { Ability(ABILITY_DISGUISE); } + OPPONENT(SPECIES_CARVANHA) { Ability(ABILITY_ROUGH_SKIN); } + } WHEN { + TURN { MOVE(player, MOVE_AERIAL_ACE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_AERIAL_ACE, player); + HP_BAR(opponent); + ABILITY_POPUP(opponent, ABILITY_ROUGH_SKIN); + HP_BAR(player); + MESSAGE("Mimikyu was hurt by Foe Carvanha's Rough Skin!"); + } THEN { + EXPECT_EQ(player->species, SPECIES_MIMIKYU_DISGUISED); + } +} diff --git a/test/battle/ability/forecast.c b/test/battle/ability/forecast.c index df7ecd00a4..f87e34a532 100644 --- a/test/battle/ability/forecast.c +++ b/test/battle/ability/forecast.c @@ -266,7 +266,6 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform back to normal when Sandstorm i SINGLE_BATTLE_TEST("Forecast transforms Castform back to normal under Air Lock") { - KNOWN_FAILING; GIVEN { PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } OPPONENT(SPECIES_WOBBUFFET); diff --git a/test/battle/ability/gastro_acid.c b/test/battle/ability/gastro_acid.c new file mode 100644 index 0000000000..a9fba14f89 --- /dev/null +++ b/test/battle/ability/gastro_acid.c @@ -0,0 +1,41 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gMovesInfo[MOVE_GASTRO_ACID].effect == EFFECT_GASTRO_ACID); +} + +SINGLE_BATTLE_TEST("Gastro Acid fails if target has a banned ability") +{ + u32 species, ability; + + PARAMETRIZE { species = SPECIES_ARCEUS; ability = ABILITY_MULTITYPE; } + PARAMETRIZE { species = SPECIES_AEGISLASH; ability = ABILITY_STANCE_CHANGE; } + PARAMETRIZE { species = SPECIES_WISHIWASHI; ability = ABILITY_SCHOOLING; } + PARAMETRIZE { species = SPECIES_KOMALA; ability = ABILITY_COMATOSE; } + PARAMETRIZE { species = SPECIES_MINIOR; ability = ABILITY_SHIELDS_DOWN; } + PARAMETRIZE { species = SPECIES_MIMIKYU; ability = ABILITY_DISGUISE; } + PARAMETRIZE { species = SPECIES_SILVALLY; ability = ABILITY_RKS_SYSTEM; } + PARAMETRIZE { species = SPECIES_GRENINJA_BATTLE_BOND; ability = ABILITY_BATTLE_BOND; } + PARAMETRIZE { species = SPECIES_ZYGARDE; ability = ABILITY_POWER_CONSTRUCT; } + PARAMETRIZE { species = SPECIES_EISCUE; ability = ABILITY_ICE_FACE; } + PARAMETRIZE { species = SPECIES_CRAMORANT; ability = ABILITY_GULP_MISSILE; } + PARAMETRIZE { species = SPECIES_PALAFIN_ZERO; ability = ABILITY_ZERO_TO_HERO; } + PARAMETRIZE { species = SPECIES_TATSUGIRI; ability = ABILITY_COMMANDER; } + // Needs confirmation since those abilities can be surpressed by Neutralizing Gas + // PARAMETRIZE { species = SPECIES_IRON_MOTH; ability = ABILITY_QUARK_DRIVE; } + // PARAMETRIZE { species = SPECIES_WALKING_WAKE; ability = ABILITY_PROTOSYNTHESIS; } + PARAMETRIZE { species = SPECIES_CALYREX_SHADOW_RIDER; ability = ABILITY_AS_ONE_SHADOW_RIDER; } + PARAMETRIZE { species = SPECIES_CALYREX_ICE_RIDER; ability = ABILITY_AS_ONE_ICE_RIDER; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(species) { Ability(ability); } + } WHEN { + TURN { MOVE(player, MOVE_GASTRO_ACID); } + } SCENE { + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_GASTRO_ACID, player); + MESSAGE("But it failed!"); + } +} diff --git a/test/battle/ability/gulp_missile.c b/test/battle/ability/gulp_missile.c new file mode 100644 index 0000000000..680208506d --- /dev/null +++ b/test/battle/ability/gulp_missile.c @@ -0,0 +1,137 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + // ASSUME(gMovesInfo[MOVE_AERIAL_ACE].category == DAMAGE_CATEGORY_PHYSICAL); +} + +SINGLE_BATTLE_TEST("(Gulp Missile) If base Cramorant hits target with Surf it transforms into Gulping form if max HP is over 1/2") +{ + GIVEN { + PLAYER(SPECIES_CRAMORANT) { Ability(ABILITY_GULP_MISSILE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SURF); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SURF, player); + HP_BAR(opponent); + ABILITY_POPUP(player, ABILITY_GULP_MISSILE); + } THEN { + EXPECT_EQ(player->species, SPECIES_CRAMORANT_GULPING); + } +} + +SINGLE_BATTLE_TEST("(Gulp Missile) If base Cramorant hits target with Surf it transforms into Gorging form if max HP is under 1/2") +{ + GIVEN { + PLAYER(SPECIES_CRAMORANT) { HP(120); MaxHP(250); Ability(ABILITY_GULP_MISSILE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SURF); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SURF, player); + HP_BAR(opponent); + ABILITY_POPUP(player, ABILITY_GULP_MISSILE); + } THEN { + EXPECT_EQ(player->species, SPECIES_CRAMORANT_GORGING); + } +} + +SINGLE_BATTLE_TEST("(Gulp Missile) If base Cramorant is under water it transforms into one of its forms") +{ + GIVEN { + PLAYER(SPECIES_CRAMORANT) { Ability(ABILITY_GULP_MISSILE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_DIVE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DIVE, player); + NOT HP_BAR(opponent); + ABILITY_POPUP(player, ABILITY_GULP_MISSILE); + } THEN { + EXPECT_EQ(player->species, SPECIES_CRAMORANT_GULPING); + } +} + +SINGLE_BATTLE_TEST("(Gulp Missile) Power Herb does not prevent Cramaront from transforming") +{ + GIVEN { + PLAYER(SPECIES_CRAMORANT) { Ability(ABILITY_GULP_MISSILE); Item(ITEM_POWER_HERB); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_DIVE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DIVE, player); + MESSAGE("Cramorant became fully charged due to its Power Herb!"); + ABILITY_POPUP(player, ABILITY_GULP_MISSILE); + HP_BAR(opponent); + } THEN { + EXPECT_EQ(player->species, SPECIES_CRAMORANT_GULPING); + } +} + +SINGLE_BATTLE_TEST("(Gulp Missile) Transformed Cramorant deal 1/4 of damage opposing mon if hit by a damaging move, Gulping also lowers defense") +{ + s16 gulpMissileDamage; + + GIVEN { + PLAYER(SPECIES_CRAMORANT) { Ability(ABILITY_GULP_MISSILE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SURF); MOVE(opponent, MOVE_TACKLE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SURF, player); + HP_BAR(opponent); + ABILITY_POPUP(player, ABILITY_GULP_MISSILE); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player); + ABILITY_POPUP(player, ABILITY_GULP_MISSILE); + HP_BAR(opponent, captureDamage: &gulpMissileDamage); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's Defense fell!"); + } THEN { + EXPECT_EQ(gulpMissileDamage, opponent->maxHP / 4); + } +} + +SINGLE_BATTLE_TEST("(Gulp Missile) Cramorant in Gorging paralyzes the target if hit by a damaging move") +{ + GIVEN { + PLAYER(SPECIES_CRAMORANT) { HP(120); MaxHP(250); Ability(ABILITY_GULP_MISSILE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SURF); MOVE(opponent, MOVE_TACKLE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SURF, player); + HP_BAR(opponent); + ABILITY_POPUP(player, ABILITY_GULP_MISSILE); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player); + ABILITY_POPUP(player, ABILITY_GULP_MISSILE); + HP_BAR(opponent); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, opponent); + STATUS_ICON(opponent, paralysis: TRUE); + } +} + +SINGLE_BATTLE_TEST("(Gulp Missile) triggers even if the user is fainted by opposing mon") +{ + // See: https://github.com/rh-hideout/pokeemerald-expansion/issues/4143 + KNOWN_FAILING; + GIVEN { + PLAYER(SPECIES_CRAMORANT) { HP(1); MaxHP(250); Ability(ABILITY_GULP_MISSILE); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SURF); MOVE(opponent, MOVE_TACKLE); SEND_OUT(player, 1); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SURF, player); + HP_BAR(opponent); + ABILITY_POPUP(player, ABILITY_GULP_MISSILE); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, opponent); + STATUS_ICON(opponent, paralysis: TRUE); + } +} diff --git a/test/battle/ability/role_play.c b/test/battle/ability/role_play.c new file mode 100644 index 0000000000..46452ec3ff --- /dev/null +++ b/test/battle/ability/role_play.c @@ -0,0 +1,76 @@ +#include "global.h" +#include "test/battle.h" + +// Technically also covers Skill Swap and Doodle since both moves use the same command as Role Play +ASSUMPTIONS +{ + ASSUME(gMovesInfo[MOVE_ROLE_PLAY].effect == EFFECT_ROLE_PLAY); +} + +SINGLE_BATTLE_TEST("Role Play fails if target has a banned ability") +{ + u32 species, ability; + + PARAMETRIZE { species = SPECIES_SHEDINJA; ability = ABILITY_WONDER_GUARD; } + PARAMETRIZE { species = SPECIES_CASTFORM; ability = ABILITY_FORECAST; } + PARAMETRIZE { species = SPECIES_CHERRIM; ability = ABILITY_FLOWER_GIFT; } + PARAMETRIZE { species = SPECIES_ARCEUS; ability = ABILITY_MULTITYPE; } + PARAMETRIZE { species = SPECIES_ZORUA; ability = ABILITY_ILLUSION; } + PARAMETRIZE { species = SPECIES_DARMANITAN; ability = ABILITY_ZEN_MODE; } + PARAMETRIZE { species = SPECIES_DITTO; ability = ABILITY_IMPOSTER; } + PARAMETRIZE { species = SPECIES_AEGISLASH; ability = ABILITY_STANCE_CHANGE; } + PARAMETRIZE { species = SPECIES_MUK_ALOLAN; ability = ABILITY_POWER_OF_ALCHEMY; } + PARAMETRIZE { species = SPECIES_PASSIMIAN; ability = ABILITY_RECEIVER; } + PARAMETRIZE { species = SPECIES_WISHIWASHI; ability = ABILITY_SCHOOLING; } + PARAMETRIZE { species = SPECIES_KOMALA; ability = ABILITY_COMATOSE; } + PARAMETRIZE { species = SPECIES_MINIOR; ability = ABILITY_SHIELDS_DOWN; } + PARAMETRIZE { species = SPECIES_MIMIKYU; ability = ABILITY_DISGUISE; } + PARAMETRIZE { species = SPECIES_SILVALLY; ability = ABILITY_RKS_SYSTEM; } + PARAMETRIZE { species = SPECIES_ZYGARDE; ability = ABILITY_POWER_CONSTRUCT; } + PARAMETRIZE { species = SPECIES_GRENINJA_BATTLE_BOND; ability = ABILITY_BATTLE_BOND; } + PARAMETRIZE { species = SPECIES_EISCUE; ability = ABILITY_ICE_FACE; } + PARAMETRIZE { species = SPECIES_CRAMORANT; ability = ABILITY_GULP_MISSILE; } + PARAMETRIZE { species = SPECIES_KOFFING; ability = ABILITY_NEUTRALIZING_GAS; } + PARAMETRIZE { species = SPECIES_PALAFIN_ZERO; ability = ABILITY_ZERO_TO_HERO; } + PARAMETRIZE { species = SPECIES_TATSUGIRI; ability = ABILITY_COMMANDER; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_TELEPATHY); } + OPPONENT(species) { Ability(ability); } + } WHEN { + TURN { MOVE(player,MOVE_ROLE_PLAY); } + } SCENE { + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_ROLE_PLAY, player); + MESSAGE("But it failed!"); + } +} + +SINGLE_BATTLE_TEST("Role Play fails if user has a banned ability") +{ + u32 species, ability; + + PARAMETRIZE { species = SPECIES_ARCEUS; ability = ABILITY_MULTITYPE; } + PARAMETRIZE { species = SPECIES_DARMANITAN; ability = ABILITY_ZEN_MODE; } + PARAMETRIZE { species = SPECIES_AEGISLASH; ability = ABILITY_STANCE_CHANGE; } + PARAMETRIZE { species = SPECIES_WISHIWASHI; ability = ABILITY_SCHOOLING; } + PARAMETRIZE { species = SPECIES_KOMALA; ability = ABILITY_COMATOSE; } + PARAMETRIZE { species = SPECIES_MINIOR; ability = ABILITY_SHIELDS_DOWN; } + PARAMETRIZE { species = SPECIES_MIMIKYU; ability = ABILITY_DISGUISE; } + PARAMETRIZE { species = SPECIES_SILVALLY; ability = ABILITY_RKS_SYSTEM; } + PARAMETRIZE { species = SPECIES_ZYGARDE; ability = ABILITY_POWER_CONSTRUCT; } + PARAMETRIZE { species = SPECIES_GRENINJA_BATTLE_BOND; ability = ABILITY_BATTLE_BOND; } + PARAMETRIZE { species = SPECIES_EISCUE; ability = ABILITY_ICE_FACE; } + PARAMETRIZE { species = SPECIES_CRAMORANT; ability = ABILITY_GULP_MISSILE; } + PARAMETRIZE { species = SPECIES_PALAFIN_ZERO; ability = ABILITY_ZERO_TO_HERO; } + PARAMETRIZE { species = SPECIES_TATSUGIRI; ability = ABILITY_COMMANDER; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_TELEPATHY); } + OPPONENT(species) { Ability(ability); } + } WHEN { + TURN { MOVE(opponent,MOVE_ROLE_PLAY); } + } SCENE { + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_ROLE_PLAY, opponent); + MESSAGE("But it failed!"); + } +} diff --git a/test/battle/ability/zero_to_hero.c b/test/battle/ability/zero_to_hero.c index 8fb901c1c3..4a186661a6 100644 --- a/test/battle/ability/zero_to_hero.c +++ b/test/battle/ability/zero_to_hero.c @@ -96,28 +96,6 @@ SINGLE_BATTLE_TEST("Gastro Acid, Worry Seed, and Simple Beam fail if the target } } -SINGLE_BATTLE_TEST("Role Play, Skill Swap, and Entrainment fail if either Pokémon has Zero to Hero") -{ - u16 move; - - PARAMETRIZE { move = MOVE_ROLE_PLAY; } - PARAMETRIZE { move = MOVE_SKILL_SWAP; } - PARAMETRIZE { move = MOVE_ENTRAINMENT; } - - GIVEN { - ASSUME(gMovesInfo[MOVE_ROLE_PLAY].effect == EFFECT_ROLE_PLAY); - ASSUME(gMovesInfo[MOVE_SKILL_SWAP].effect == EFFECT_SKILL_SWAP); - ASSUME(gMovesInfo[MOVE_ENTRAINMENT].effect == EFFECT_ENTRAINMENT); - PLAYER(SPECIES_PALAFIN_ZERO) { Ability(ABILITY_ZERO_TO_HERO); } - OPPONENT(SPECIES_WOBBUFFET); - } WHEN { - TURN { MOVE(player, move); } - } SCENE { - NOT ANIMATION(ANIM_TYPE_MOVE, move, player); - MESSAGE("But it failed!"); - } -} - SINGLE_BATTLE_TEST("Transform doesn't apply the heroic transformation message when copying Palafin") { GIVEN { diff --git a/test/battle/ai.c b/test/battle/ai.c index b52400acc9..0597925356 100644 --- a/test/battle/ai.c +++ b/test/battle/ai.c @@ -526,6 +526,41 @@ AI_SINGLE_BATTLE_TEST("AI will choose either Rock Tomb or Bulldoze if Stat drop } } +AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: Number of hits to KO calculation checks whether incoming damage is less than recurring healing to avoid an infinite loop") +{ + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_SMART_SWITCHING | AI_FLAG_SMART_MON_CHOICES); + PLAYER(SPECIES_VENUSAUR) { Level(30); Moves(MOVE_TACKLE); } + // Opponent party courtesy of Skolgrahd, who triggered the bug in the first place + OPPONENT(SPECIES_PIKACHU) { Level(100); Moves(MOVE_ZIPPY_ZAP, MOVE_EXTREME_SPEED, MOVE_IRON_TAIL, MOVE_KNOCK_OFF); } + OPPONENT(SPECIES_NINETALES_ALOLAN) { Level(100); Moves(MOVE_AURORA_VEIL, MOVE_BLIZZARD, MOVE_MOONBLAST, MOVE_DISABLE); } + OPPONENT(SPECIES_WEAVILE) { Level(100); Moves(MOVE_NIGHT_SLASH, MOVE_TRIPLE_AXEL, MOVE_ICE_SHARD, MOVE_FAKE_OUT); } + OPPONENT(SPECIES_DITTO) { Level(100); Moves(MOVE_TRANSFORM); } + OPPONENT(SPECIES_TYPHLOSION) { Level(100); Moves(MOVE_ERUPTION, MOVE_HEAT_WAVE, MOVE_FOCUS_BLAST, MOVE_EXTRASENSORY); } + OPPONENT(SPECIES_UMBREON) { Level(100); Item(ITEM_LEFTOVERS); Moves(MOVE_FOUL_PLAY, MOVE_SNARL, MOVE_HELPING_HAND, MOVE_THUNDER_WAVE); } + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); EXPECT_MOVES(opponent, MOVE_ZIPPY_ZAP, MOVE_EXTREME_SPEED, MOVE_IRON_TAIL, MOVE_KNOCK_OFF); } + } SCENE { + MESSAGE("Venusaur fainted!"); + } +} + +AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: Number of hits to KO calculation checks whether incoming damage is zero to avoid an infinite loop") +{ + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_SMART_SWITCHING | AI_FLAG_SMART_MON_CHOICES); + PLAYER(SPECIES_BULBASAUR) { Level(5); Moves(MOVE_SWORDS_DANCE, MOVE_WHIRLWIND, MOVE_SAND_ATTACK, MOVE_TAIL_WHIP); } + // Scenario courtesy of Duke, who triggered the bug in the first place + OPPONENT(SPECIES_GEODUDE) { Level(100); Moves(MOVE_TACKLE); } + OPPONENT(SPECIES_GEODUDE) { Level(100); Moves(MOVE_TACKLE); } + OPPONENT(SPECIES_NOSEPASS) { Level(100); Moves(MOVE_TACKLE); } + } WHEN { + TURN { MOVE(player, MOVE_SWORDS_DANCE); EXPECT_MOVES(opponent, MOVE_TACKLE); } + } SCENE { + MESSAGE("Bulbasaur fainted!"); + } +} + AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: AI will not switch in a Pokemon which is slower and gets 1HKOed after fainting") { bool32 alakazamFirst; diff --git a/test/battle/hold_effect/ability_shield.c b/test/battle/hold_effect/ability_shield.c new file mode 100644 index 0000000000..c84397abfa --- /dev/null +++ b/test/battle/hold_effect/ability_shield.c @@ -0,0 +1,34 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gItemsInfo[ITEM_ABILITY_SHIELD].holdEffect == HOLD_EFFECT_ABILITY_SHIELD); +} + +SINGLE_BATTLE_TEST("Ability Shield prevents Neutralizing Gas") +{ + u32 item; + + PARAMETRIZE { item = ITEM_ABILITY_SHIELD; } + PARAMETRIZE { item = ITEM_NONE; } + + GIVEN { + PLAYER(SPECIES_TORKOAL) { Ability(ABILITY_DROUGHT); Item(item); } + OPPONENT(SPECIES_KOFFING) { Ability(ABILITY_NEUTRALIZING_GAS); } + } WHEN { + TURN { } + } SCENE { + ABILITY_POPUP(opponent, ABILITY_NEUTRALIZING_GAS); + MESSAGE("Neutralizing Gas filled the area!"); + if (item == ITEM_ABILITY_SHIELD) { + ABILITY_POPUP(player, ABILITY_DROUGHT); + MESSAGE("Torkoal's Drought intensified the sun's rays!"); + } else { + NONE_OF { + ABILITY_POPUP(player, ABILITY_DROUGHT); + MESSAGE("Torkoal's Drought intensified the sun's rays!"); + } + } + } +} diff --git a/test/battle/hold_effect/eject_pack.c b/test/battle/hold_effect/eject_pack.c index 940824da5d..1a54d5a2e9 100644 --- a/test/battle/hold_effect/eject_pack.c +++ b/test/battle/hold_effect/eject_pack.c @@ -24,3 +24,20 @@ SINGLE_BATTLE_TEST("Eject Pack does not cause the new pokemon to lose hp due to NOT MESSAGE("Wynaut was hurt by its Life Orb!"); } } + +SINGLE_BATTLE_TEST("Eject Pack does not activate if there are no pokemon left to battle") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_EJECT_PACK); } + PLAYER(SPECIES_WOBBUFFET) { HP(0); } + OPPONENT(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); } + } WHEN { + TURN { } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Wobbuffet is switched out with the Eject Pack!"); + } + } +} diff --git a/test/battle/hold_effect/protective_pads.c b/test/battle/hold_effect/protective_pads.c new file mode 100644 index 0000000000..914118d2d8 --- /dev/null +++ b/test/battle/hold_effect/protective_pads.c @@ -0,0 +1,75 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gItemsInfo[ITEM_PROTECTIVE_PADS].holdEffect == HOLD_EFFECT_PROTECTIVE_PADS); + ASSUME(gMovesInfo[MOVE_TACKLE].makesContact == TRUE); +} + +SINGLE_BATTLE_TEST("Protective Pads protected moves still make direct contact", s16 damage) +{ + u32 ability; + PARAMETRIZE { ability = ABILITY_KLUTZ; } + PARAMETRIZE { ability = ABILITY_FLUFFY; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_PROTECTIVE_PADS); } + OPPONENT(SPECIES_STUFFUL) { Ability(ability); } + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); } + } SCENE { + MESSAGE("Wobbuffet used Tackle!"); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, UQ_4_12(0.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Protective Pads doesn't reduce tough claws damage", s16 damage) +{ + u32 item; + PARAMETRIZE { item = ITEM_NONE; } + PARAMETRIZE { item = ITEM_PROTECTIVE_PADS; } + GIVEN { + PLAYER(SPECIES_BINACLE) { Ability(ABILITY_TOUGH_CLAWS); Item(item); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); } + } SCENE { + MESSAGE("Binacle used Tackle!"); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_EQ(results[0].damage, results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Protective Pads doesn't invalid unseen fist") +{ + GIVEN { + PLAYER(SPECIES_URSHIFU_RAPID_STRIKE_STYLE) { Ability(ABILITY_UNSEEN_FIST); Item(ITEM_PROTECTIVE_PADS); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_PROTECT); MOVE(player, MOVE_TACKLE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_PROTECT, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + HP_BAR(opponent); + } +} + +SINGLE_BATTLE_TEST("Protective Pads protects from Rocly Helmet Damage") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_PROTECTIVE_PADS); } + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_ROCKY_HELMET); } + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + HP_BAR(opponent); + NONE_OF { + HP_BAR(player); + MESSAGE("Wobbuffet was hurt by Foe Wobbuffet's Rocky Helmet!"); + } + } +} diff --git a/test/battle/hold_effect/white_herb.c b/test/battle/hold_effect/white_herb.c index 0103115658..fb455f47c6 100644 --- a/test/battle/hold_effect/white_herb.c +++ b/test/battle/hold_effect/white_herb.c @@ -55,10 +55,10 @@ DOUBLE_BATTLE_TEST("White Herb restores stats after Attack was lowered by Intimi ABILITY_POPUP(playerLeft, ABILITY_INTIMIDATE); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponentLeft); MESSAGE("Foe Wobbuffet's White Herb restored its status!"); + + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponentRight); MESSAGE("Foe Wynaut's White Herb restored its status!"); } THEN { @@ -71,7 +71,6 @@ DOUBLE_BATTLE_TEST("White Herb restores stats after Attack was lowered by Intimi SINGLE_BATTLE_TEST("White Herb restores stats after Attack was lowered by Intimidate while switching in") { - KNOWN_FAILING; GIVEN { PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_WHITE_HERB); } OPPONENT(SPECIES_WOBBUFFET); @@ -95,7 +94,6 @@ SINGLE_BATTLE_TEST("White Herb restores stats after Attack was lowered by Intimi } } - SINGLE_BATTLE_TEST("White Herb restores stats after all hits of a multi hit move happened") { u16 species; @@ -104,7 +102,6 @@ SINGLE_BATTLE_TEST("White Herb restores stats after all hits of a multi hit move PARAMETRIZE { species = SPECIES_SLIGGOO_HISUIAN; ability = ABILITY_GOOEY; } PARAMETRIZE { species = SPECIES_DUGTRIO_ALOLAN; ability = ABILITY_TANGLING_HAIR; } - KNOWN_FAILING; GIVEN { ASSUME(gMovesInfo[MOVE_DUAL_WINGBEAT].strikeCount == 2); PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_WHITE_HERB); } @@ -114,10 +111,11 @@ SINGLE_BATTLE_TEST("White Herb restores stats after all hits of a multi hit move } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_DUAL_WINGBEAT, player); ABILITY_POPUP(opponent, ability); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); MESSAGE("Wobbuffet's Speed fell!"); ABILITY_POPUP(opponent, ability); - MESSAGE("Wobbuffet's Speed fell!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Wobbuffet's Speed fell!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Wobbuffet's White Herb restored its status!"); } THEN { @@ -133,7 +131,6 @@ SINGLE_BATTLE_TEST("White Herb wont have time to activate if it is knocked off o PARAMETRIZE { move = MOVE_THIEF; } PARAMETRIZE { move = MOVE_KNOCK_OFF; } - KNOWN_FAILING; // Knock off fails, Thief is fine GIVEN { ASSUME(MoveHasAdditionalEffect(MOVE_THIEF, MOVE_EFFECT_STEAL_ITEM) == TRUE); ASSUME(gMovesInfo[MOVE_KNOCK_OFF].effect == EFFECT_KNOCK_OFF); @@ -143,14 +140,16 @@ SINGLE_BATTLE_TEST("White Herb wont have time to activate if it is knocked off o TURN { MOVE(opponent, move); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, move, opponent); - if (move == MOVE_THIEF) + if (move == MOVE_THIEF) { MESSAGE("Foe Wobbuffet stole Slugma's White Herb!"); - else - MESSAGE("Foe Wobbuffet knocked off Slugma's White Herb!"); + } ABILITY_POPUP(player, ABILITY_WEAK_ARMOR); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); MESSAGE("Slugma's Weak Armor lowered its Defense!"); MESSAGE("Slugma's Weak Armor raised its Speed!"); + if (move == MOVE_KNOCK_OFF) { + MESSAGE("Foe Wobbuffet knocked off Slugma's White Herb!"); + } NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Wobbuffet's White Herb restored its status!"); @@ -163,7 +162,6 @@ SINGLE_BATTLE_TEST("White Herb wont have time to activate if it is knocked off o SINGLE_BATTLE_TEST("White Herb wont have time to activate if Magician steals it") { - KNOWN_FAILING; // White Herb is activated GIVEN { PLAYER(SPECIES_SLUGMA) { Ability(ABILITY_WEAK_ARMOR); Item(ITEM_WHITE_HERB); } OPPONENT(SPECIES_FENNEKIN) { Ability(ABILITY_MAGICIAN); } @@ -171,11 +169,12 @@ SINGLE_BATTLE_TEST("White Herb wont have time to activate if Magician steals it" TURN { MOVE(opponent, MOVE_TACKLE); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ABILITY_POPUP(player, ABILITY_WEAK_ARMOR); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Slugma's Weak Armor lowered its Defense!"); + MESSAGE("Slugma's Weak Armor raised its Speed!"); ABILITY_POPUP(opponent, ABILITY_MAGICIAN); - ABILITY_POPUP(player, ABILITY_WEAK_ARMOR); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); - MESSAGE("Slugma's Weak Armor lowered its Defense!"); - MESSAGE("Slugma's Weak Armor raised its Speed!"); + MESSAGE("Foe Fennekin stole Slugma's White Herb!"); NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Wobbuffet's White Herb restored its status!"); @@ -186,33 +185,7 @@ SINGLE_BATTLE_TEST("White Herb wont have time to activate if Magician steals it" } } -SINGLE_BATTLE_TEST("White Herb wont have time to activate if Pickpocket steals it") -{ - KNOWN_FAILING; // White Herb is activated - GIVEN { - ASSUME(MoveHasAdditionalEffectSelf(MOVE_LEAF_STORM, MOVE_EFFECT_SP_ATK_TWO_DOWN)); - PLAYER(SPECIES_SLUGMA) { Ability(ABILITY_WEAK_ARMOR); Item(ITEM_WHITE_HERB); } - OPPONENT(SPECIES_SNEASEL) { Ability(ABILITY_PICKPOCKET); } - } WHEN { - TURN { MOVE(player, MOVE_LEAF_STORM); } - } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_LEAF_STORM, player); - ABILITY_POPUP(player, ABILITY_PICKPOCKET); - ABILITY_POPUP(player, ABILITY_WEAK_ARMOR); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); - MESSAGE("Slugma's Weak Armor lowered its Defense!"); - MESSAGE("Slugma's Weak Armor raised its Speed!"); - NONE_OF { - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); - MESSAGE("Wobbuffet's White Herb restored its status!"); - } - } THEN { - EXPECT(player->statStages[STAT_DEF] = DEFAULT_STAT_STAGE - 1); - EXPECT(player->statStages[STAT_SPEED] = DEFAULT_STAT_STAGE + 1); - } -} - -SINGLE_BATTLE_TEST("White Herb restores stats after Defiant or Competitive were triggered") +SINGLE_BATTLE_TEST("White Herb has correct interactions with Intimidate triggered Defiant and Competitive") { u16 species; u16 ability; @@ -220,7 +193,6 @@ SINGLE_BATTLE_TEST("White Herb restores stats after Defiant or Competitive were PARAMETRIZE { species = SPECIES_IGGLYBUFF; ability = ABILITY_COMPETITIVE; } PARAMETRIZE { species = SPECIES_MANKEY; ability = ABILITY_DEFIANT; } - KNOWN_FAILING; GIVEN { PLAYER(species) { Ability(ability); Item(ITEM_WHITE_HERB); } OPPONENT(SPECIES_ARBOK) { Ability(ABILITY_INTIMIDATE); } @@ -230,16 +202,18 @@ SINGLE_BATTLE_TEST("White Herb restores stats after Defiant or Competitive were ABILITY_POPUP(opponent, ABILITY_INTIMIDATE); ABILITY_POPUP(player, ability); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); - ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); - MESSAGE("Wobbuffet's White Herb restored its status!"); + // Defiant activates first, so White Herb doesn't have a chance to trigger. + if (ability == ABILITY_COMPETITIVE) { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Igglybuff's White Herb restored its status!"); + } } THEN { - EXPECT(player->item == ITEM_NONE); - if (species == SPECIES_IGGLYBUFF) - { + if (ability == ABILITY_COMPETITIVE) { + EXPECT(player->item == ITEM_NONE); EXPECT(player->statStages[STAT_ATK] = DEFAULT_STAT_STAGE); EXPECT(player->statStages[STAT_SPATK] = DEFAULT_STAT_STAGE + 2); + } else { + EXPECT(player->statStages[STAT_ATK] = DEFAULT_STAT_STAGE + 1); } - else - EXPECT(player->statStages[STAT_ATK] = DEFAULT_STAT_STAGE + 3); } } diff --git a/test/battle/move_effect/body_press.c b/test/battle/move_effect/body_press.c new file mode 100644 index 0000000000..a88a9bcaa5 --- /dev/null +++ b/test/battle/move_effect/body_press.c @@ -0,0 +1,29 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gMovesInfo[MOVE_BODY_PRESS].effect == EFFECT_BODY_PRESS); +} + +SINGLE_BATTLE_TEST("Body Press uses physical defense stat of target", s16 damage) +{ + u32 move; + + PARAMETRIZE { move = MOVE_DRILL_PECK; } + PARAMETRIZE { move = MOVE_BODY_PRESS; } + + GIVEN { + ASSUME(gMovesInfo[MOVE_DRILL_PECK].power == gMovesInfo[MOVE_BODY_PRESS].power); + ASSUME(gMovesInfo[MOVE_CHARM].effect == EFFECT_ATTACK_DOWN_2); + PLAYER(SPECIES_MEW); + OPPONENT(SPECIES_SHELLDER); + } WHEN { + TURN { MOVE(opponent, MOVE_CHARM); MOVE(player, move); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, move, player); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(2.0), results[1].damage); + } +} diff --git a/test/battle/move_effect/cud_chuw.c b/test/battle/move_effect/cud_chuw.c new file mode 100644 index 0000000000..ba59d355a4 --- /dev/null +++ b/test/battle/move_effect/cud_chuw.c @@ -0,0 +1,49 @@ +#include "global.h" +#include "test/battle.h" + +SINGLE_BATTLE_TEST("Cud Chuw will activate Kee Berry effect again on the next turn") +{ + GIVEN { + ASSUME(gItemsInfo[ITEM_KEE_BERRY].holdEffect == HOLD_EFFECT_KEE_BERRY); + ASSUME(gMovesInfo[MOVE_TACKLE].category == DAMAGE_CATEGORY_PHYSICAL); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_TAUROS_PALDEAN_COMBAT_BREED) { Ability(ABILITY_CUD_CHEW); Item(ITEM_KEE_BERRY); } + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_CELEBRATE);} + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + HP_BAR(opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player); + ABILITY_POPUP(opponent, ABILITY_CUD_CHEW); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + } THEN { + EXPECT_EQ(opponent->statStages[STAT_DEF], DEFAULT_STAT_STAGE + 2); + } +} + +SINGLE_BATTLE_TEST("Cud Chuw will activate Oran Berry effect again on the next turn") +{ + GIVEN { + ASSUME(gItemsInfo[ITEM_ORAN_BERRY].holdEffect == HOLD_EFFECT_RESTORE_HP); + ASSUME(gItemsInfo[ITEM_ORAN_BERRY].holdEffectParam == 10); + ASSUME(gMovesInfo[MOVE_DRAGON_RAGE].effect == EFFECT_FIXED_DAMAGE_ARG); + ASSUME(gMovesInfo[MOVE_DRAGON_RAGE].argument == 40); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_TAUROS_PALDEAN_COMBAT_BREED) { MaxHP(60); HP(60); Ability(ABILITY_CUD_CHEW); Item(ITEM_ORAN_BERRY); } + } WHEN { + TURN { MOVE(player, MOVE_DRAGON_RAGE); } + TURN { MOVE(player, MOVE_CELEBRATE);} + TURN {} + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_RAGE, player); + HP_BAR(opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player); + ABILITY_POPUP(opponent, ABILITY_CUD_CHEW); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + } THEN { + EXPECT_EQ(opponent->hp, 40); + } +} diff --git a/test/battle/move_effect/foul_play.c b/test/battle/move_effect/foul_play.c new file mode 100644 index 0000000000..cc853b48de --- /dev/null +++ b/test/battle/move_effect/foul_play.c @@ -0,0 +1,29 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gMovesInfo[MOVE_FOUL_PLAY].effect == EFFECT_FOUL_PLAY); +} + +SINGLE_BATTLE_TEST("Foul Play uses physical attack stat of target", s16 damage) +{ + u32 move; + + PARAMETRIZE { move = MOVE_HIGH_HORSEPOWER; } + PARAMETRIZE { move = MOVE_FOUL_PLAY; } + + GIVEN { + ASSUME(gMovesInfo[MOVE_HIGH_HORSEPOWER].power == gMovesInfo[MOVE_FOUL_PLAY].power); + ASSUME(gMovesInfo[MOVE_SWORDS_DANCE].effect == EFFECT_ATTACK_UP_2); + PLAYER(SPECIES_SHELLDER); + OPPONENT(SPECIES_SHELLDER); + } WHEN { + TURN { MOVE(opponent, MOVE_SWORDS_DANCE); MOVE(player, move); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, move, player); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(2.0), results[1].damage); + } +} diff --git a/test/battle/move_effect/future_sight.c b/test/battle/move_effect/future_sight.c new file mode 100644 index 0000000000..6a163a736d --- /dev/null +++ b/test/battle/move_effect/future_sight.c @@ -0,0 +1,134 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gMovesInfo[MOVE_SEED_FLARE].power == gMovesInfo[MOVE_FUTURE_SIGHT].power); + ASSUME(gMovesInfo[MOVE_SEED_FLARE].category == gMovesInfo[MOVE_FUTURE_SIGHT].category); +} + +SINGLE_BATTLE_TEST("Future Sight uses Sp. Atk stat of the original user without modifiers") +{ + u32 item; + s16 seedFlareDmg; + s16 futureSightDmg; + + PARAMETRIZE { item = ITEM_TWISTED_SPOON; } + PARAMETRIZE { item = ITEM_PSYCHIC_GEM; } + + GIVEN { + PLAYER(SPECIES_PIKACHU) { Item(item); } + PLAYER(SPECIES_RAICHU) { Item(item); } + OPPONENT(SPECIES_REGICE); + } WHEN { + TURN { MOVE(player, MOVE_SEED_FLARE, WITH_RNG(RNG_SECONDARY_EFFECT, FALSE)); } + TURN { MOVE(player, MOVE_FUTURE_SIGHT); } + TURN { SWITCH(player, 1); } + TURN { } + TURN { } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SEED_FLARE, player); + HP_BAR(opponent, captureDamage: &seedFlareDmg); + ANIMATION(ANIM_TYPE_MOVE, MOVE_FUTURE_SIGHT, player); + MESSAGE("Foe Regice took the Future Sight attack!"); + HP_BAR(opponent, captureDamage: &futureSightDmg); + } THEN { + EXPECT_EQ(seedFlareDmg, futureSightDmg); + } +} + +SINGLE_BATTLE_TEST("Future Sight is not boosted by Life Orb is original user if not on the field") +{ + s16 seedFlareDmg; + s16 futureSightDmg; + + GIVEN { + PLAYER(SPECIES_PIKACHU); + PLAYER(SPECIES_RAICHU) { Item(ITEM_LIFE_ORB); } + OPPONENT(SPECIES_REGICE); + } WHEN { + TURN { MOVE(player, MOVE_SEED_FLARE, WITH_RNG(RNG_SECONDARY_EFFECT, FALSE)); } + TURN { MOVE(player, MOVE_FUTURE_SIGHT); } + TURN { SWITCH(player, 1); } + TURN { } + TURN { } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SEED_FLARE, player); + HP_BAR(opponent, captureDamage: &seedFlareDmg); + ANIMATION(ANIM_TYPE_MOVE, MOVE_FUTURE_SIGHT, player); + MESSAGE("Foe Regice took the Future Sight attack!"); + HP_BAR(opponent, captureDamage: &futureSightDmg); + NOT MESSAGE("Raichu was hurt by its Life Orb!"); + } THEN { + EXPECT_EQ(seedFlareDmg, futureSightDmg); + } +} + +SINGLE_BATTLE_TEST("Future Sight receives STAB from party mon") +{ + s16 seedFlareDmg; + s16 futureSightDmg; + + GIVEN { + PLAYER(SPECIES_RALTS); + PLAYER(SPECIES_RAICHU); + OPPONENT(SPECIES_REGICE); + } WHEN { + TURN { MOVE(player, MOVE_SEED_FLARE, WITH_RNG(RNG_SECONDARY_EFFECT, FALSE)); } + TURN { MOVE(player, MOVE_FUTURE_SIGHT); } + TURN { SWITCH(player, 1); } + TURN { } + TURN { } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SEED_FLARE, player); + HP_BAR(opponent, captureDamage: &seedFlareDmg); + ANIMATION(ANIM_TYPE_MOVE, MOVE_FUTURE_SIGHT, player); + HP_BAR(opponent, captureDamage: &futureSightDmg); + } THEN { + EXPECT_MUL_EQ(seedFlareDmg, Q_4_12(1.5), futureSightDmg); + } +} + +SINGLE_BATTLE_TEST("Future Sight is affected by type effectiveness") +{ + GIVEN { + PLAYER(SPECIES_PIKACHU); + PLAYER(SPECIES_RAICHU); + OPPONENT(SPECIES_HOUNDOOM); + } WHEN { + TURN { MOVE(player, MOVE_SEED_FLARE, WITH_RNG(RNG_SECONDARY_EFFECT, FALSE)); } + TURN { MOVE(player, MOVE_FUTURE_SIGHT); } + TURN { SWITCH(player, 1); } + TURN { } + TURN { } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SEED_FLARE, player); + HP_BAR(opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_FUTURE_SIGHT, player); + MESSAGE("Foe Houndoom took the Future Sight attack!"); + MESSAGE("It doesn't affect Foe Houndoom…"); + NOT HP_BAR(opponent); + } +} + +SINGLE_BATTLE_TEST("Future Sight will miss timing if target faints before it is about to get hit") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(player, MOVE_FUTURE_SIGHT); } + TURN { MOVE(player, MOVE_CELEBRATE); } + TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_MEMENTO); SEND_OUT(opponent, 1); } + TURN { } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_FUTURE_SIGHT, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_MEMENTO, opponent); + MESSAGE("Foe Wobbuffet fainted!"); + MESSAGE("2 sent out Wynaut!"); + NOT MESSAGE("Foe Wynaut took the Future Sight attack!"); + } +} diff --git a/test/battle/move_effect/knock_off.c b/test/battle/move_effect/knock_off.c index 863cf165d3..177e3b18c1 100644 --- a/test/battle/move_effect/knock_off.c +++ b/test/battle/move_effect/knock_off.c @@ -21,6 +21,8 @@ SINGLE_BATTLE_TEST("Knock Off knocks a healing berry before it has the chance to } ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ITEM_KNOCKOFF); MESSAGE("Wobbuffet knocked off Foe Wobbuffet's Sitrus Berry!"); + } THEN { + EXPECT(opponent->item == ITEM_NONE); } } @@ -49,5 +51,145 @@ SINGLE_BATTLE_TEST("Knock Off activates after Rocky Helmet and Weakness Policy") ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ITEM_KNOCKOFF); MESSAGE("Wobbuffet knocked off Foe Wobbuffet's Rocky Helmet!"); } + } THEN { + EXPECT(opponent->item == ITEM_NONE); + } +} + +SINGLE_BATTLE_TEST("Knock Off deals additional damage to opponents holding an item in Gen 6+", s16 damage) +{ + u16 item = 0; + + PARAMETRIZE { item = ITEM_NONE; } + PARAMETRIZE { item = ITEM_LEFTOVERS; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(item); }; + } WHEN { + TURN { MOVE(player, MOVE_KNOCK_OFF); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_KNOCK_OFF, player); + HP_BAR(opponent, captureDamage: &results[i].damage); + if (item != ITEM_NONE) + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ITEM_KNOCKOFF); + } FINALLY { + if (B_KNOCK_OFF_DMG >= GEN_6) + EXPECT_MUL_EQ(results[0].damage, UQ_4_12(1.5), results[1].damage); + else + EXPECT_EQ(results[0].damage, results[1].damage); + } THEN { + EXPECT(opponent->item == ITEM_NONE); + } +} + + +SINGLE_BATTLE_TEST("Knock Off does not remove items through Substitute") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_LEFTOVERS); }; + } WHEN { + TURN { MOVE(opponent, MOVE_SUBSTITUTE); + MOVE(player, MOVE_KNOCK_OFF); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_KNOCK_OFF, player); + NOT { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ITEM_KNOCKOFF); } + } THEN { + EXPECT(opponent->item == ITEM_NONE); + } +} + +SINGLE_BATTLE_TEST("Recycle cannot recover an item removed by Knock Off") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_LEFTOVERS); } + } WHEN { + TURN { MOVE(player, MOVE_KNOCK_OFF); + MOVE(opponent, MOVE_RECYCLE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_KNOCK_OFF, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ITEM_KNOCKOFF); + MESSAGE("Wobbuffet knocked off Foe Wobbuffet's Leftovers!"); + + MESSAGE("Foe Wobbuffet used Recycle!"); + MESSAGE("But it failed!"); + } THEN { + EXPECT(opponent->item == ITEM_NONE); + } +} + +SINGLE_BATTLE_TEST("Knock Off does not prevent targets from receiving another item in Gen 5+") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_LEFTOVERS); } + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_LEFTOVERS); } + } WHEN { + TURN { MOVE(player, MOVE_KNOCK_OFF); } + TURN { MOVE(player, MOVE_BESTOW); } + } SCENE { + // turn 1 + ANIMATION(ANIM_TYPE_MOVE, MOVE_KNOCK_OFF, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ITEM_KNOCKOFF); + MESSAGE("Wobbuffet knocked off Foe Wobbuffet's Leftovers!"); + // turn 2 + if (B_KNOCK_OFF_REMOVAL >= GEN_5) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_BESTOW, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT); + MESSAGE("Foe Wobbuffet's Leftovers restored its HP a little!"); + } else { + NOT { ANIMATION(ANIM_TYPE_MOVE, MOVE_BESTOW, player); } + MESSAGE("But it failed!"); + } + } THEN { + if (B_KNOCK_OFF_REMOVAL >= GEN_5) + EXPECT(opponent->item == ITEM_LEFTOVERS); + else + EXPECT(opponent->item == ITEM_NONE); + } +} + +// Knock Off triggers Unburden regardless of whether the item is fully removed (Gen 5+) or not. +SINGLE_BATTLE_TEST("Knock Off triggers Unburden") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Speed(60); } + OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_UNBURDEN); Item(ITEM_LEFTOVERS); Speed(50); } + } WHEN { + TURN { MOVE(player, MOVE_KNOCK_OFF); } + TURN { MOVE(player, MOVE_CELEBRATE); } + } SCENE { + // turn 1 + ANIMATION(ANIM_TYPE_MOVE, MOVE_KNOCK_OFF, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ITEM_KNOCKOFF); + MESSAGE("Wobbuffet knocked off Foe Wobbuffet's Leftovers!"); + // turn 2 + MESSAGE("Foe Wobbuffet used Celebrate!"); + MESSAGE("Wobbuffet used Celebrate!"); + } THEN { + EXPECT(opponent->item == ITEM_NONE); + } +} + +DOUBLE_BATTLE_TEST("Knock Off does not trigger the opposing ally's Symbiosis") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_LEFTOVERS); } + PLAYER(SPECIES_FLORGES) { Item(ITEM_LEFTOVERS); } + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponentLeft, MOVE_KNOCK_OFF, target: playerLeft); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_KNOCK_OFF, opponentLeft); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ITEM_KNOCKOFF); + MESSAGE("Foe Wobbuffet knocked off Wobbuffet's Leftovers!"); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT); + MESSAGE("Wobbuffet's Leftovers restored health!"); + } + } THEN { + EXPECT(playerLeft->item == ITEM_NONE); } } diff --git a/test/battle/move_effect/stuff_cheeks.c b/test/battle/move_effect/stuff_cheeks.c index c9a8b325e2..a7a4ab1d34 100644 --- a/test/battle/move_effect/stuff_cheeks.c +++ b/test/battle/move_effect/stuff_cheeks.c @@ -104,3 +104,28 @@ SINGLE_BATTLE_TEST("Stuff Cheeks fails if the user's berry is removed before the } } +SINGLE_BATTLE_TEST("Belch cannot be used if the user has not eaten a berry") +{ + u16 item = 0; + PARAMETRIZE { item = ITEM_NONE; } + PARAMETRIZE { item = ITEM_ORAN_BERRY; } + GIVEN { + PLAYER(SPECIES_SKWOVET) { Item(item); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + if (item == ITEM_NONE) + TURN { MOVE(player, MOVE_BELCH, allowed: FALSE); MOVE(player, MOVE_CELEBRATE); } + else { + TURN { MOVE(player, MOVE_STUFF_CHEEKS); } + TURN { MOVE(player, MOVE_BELCH); } + } + } SCENE { + if (item == ITEM_NONE) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player); + } + else { + ANIMATION(ANIM_TYPE_MOVE, MOVE_STUFF_CHEEKS, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BELCH, player); + } + } +} diff --git a/test/battle/move_effect/super_effective_on_arg.c b/test/battle/move_effect/super_effective_on_arg.c new file mode 100644 index 0000000000..d10b8a2231 --- /dev/null +++ b/test/battle/move_effect/super_effective_on_arg.c @@ -0,0 +1,21 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gMovesInfo[MOVE_FREEZE_DRY].effect == EFFECT_SUPER_EFFECTIVE_ON_ARG); +} + +SINGLE_BATTLE_TEST("Freeze Dry is super effective on water types") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_SHELLDER); + } WHEN { + TURN { MOVE(player, MOVE_FREEZE_DRY); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_FREEZE_DRY, player); + HP_BAR(opponent); + MESSAGE("It's super effective!"); + } +} diff --git a/test/battle/trainer_control.c b/test/battle/trainer_control.c index 9415360948..231de3ad8c 100644 --- a/test/battle/trainer_control.c +++ b/test/battle/trainer_control.c @@ -11,47 +11,16 @@ #include "constants/trainers.h" #include "constants/battle.h" - -static const struct TrainerMon sTestParty1[] = +static const struct Trainer sTestTrainers[] = { - { - .species = SPECIES_WOBBUFFET, - .ball = ITEM_MASTER_BALL, - .ability = ABILITY_TELEPATHY, - .friendship = 42, - .gender = TRAINER_MON_FEMALE, - .heldItem = ITEM_ASSAULT_VEST, - .isShiny = TRUE, - .iv = TRAINER_PARTY_IVS(25,26,27,28,29,30), - .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 4, 0), - .lvl = 67, - .moves = {MOVE_AIR_SLASH, MOVE_BARRIER, MOVE_SOLAR_BEAM, MOVE_EXPLOSION}, - .nature = NATURE_HASTY, - .nickname = COMPOUND_STRING("Bubbles"), - .dynamaxLevel = 5, - }, - { - .species = SPECIES_WOBBUFFET, - .ability = ABILITY_SHADOW_TAG, - .lvl = 5, - }, - { - .species = SPECIES_WYNAUT, - .lvl = 5, - }, -}; - -static const struct Trainer sTestTrainer1 = -{ - .trainerName = _("Test1"), - .party = TRAINER_PARTY(sTestParty1), +#include "trainer_control.h" }; TEST("CreateNPCTrainerPartyForTrainer generates customized Pokémon") { struct Pokemon *testParty = Alloc(6 * sizeof(struct Pokemon)); u8 nickBuffer[20]; - CreateNPCTrainerPartyFromTrainer(testParty, &sTestTrainer1, TRUE, BATTLE_TYPE_TRAINER); + CreateNPCTrainerPartyFromTrainer(testParty, &sTestTrainers[0], TRUE, BATTLE_TYPE_TRAINER); EXPECT(IsMonShiny(&testParty[0])); EXPECT(!IsMonShiny(&testParty[1])); @@ -118,7 +87,7 @@ TEST("CreateNPCTrainerPartyForTrainer generates customized Pokémon") EXPECT(GetNature(&testParty[1]) == NATURE_HARDY); EXPECT_EQ(GetMonData(&testParty[0], MON_DATA_DYNAMAX_LEVEL), 5); - EXPECT_EQ(GetMonData(&testParty[1], MON_DATA_DYNAMAX_LEVEL), 0); + EXPECT_EQ(GetMonData(&testParty[1], MON_DATA_DYNAMAX_LEVEL), 10); Free(testParty); } @@ -126,7 +95,7 @@ TEST("CreateNPCTrainerPartyForTrainer generates customized Pokémon") TEST("CreateNPCTrainerPartyForTrainer generates different personalities for different mons") { struct Pokemon *testParty = Alloc(6 * sizeof(struct Pokemon)); - CreateNPCTrainerPartyFromTrainer(testParty, &sTestTrainer1, TRUE, BATTLE_TYPE_TRAINER); + CreateNPCTrainerPartyFromTrainer(testParty, &sTestTrainers[0], TRUE, BATTLE_TYPE_TRAINER); EXPECT(testParty[0].box.personality != testParty[1].box.personality); Free(testParty); } diff --git a/test/battle/trainer_control.h b/test/battle/trainer_control.h new file mode 100644 index 0000000000..b0f417bb4d --- /dev/null +++ b/test/battle/trainer_control.h @@ -0,0 +1,88 @@ +// +// DO NOT MODIFY THIS FILE! It is auto-generated from test/battle/trainer_control.party +// +// If you want to modify this file set COMPETITIVE_PARTY_SYNTAX to FALSE +// in include/config.h and remove this notice. +// Use sed -i '/^#line/d' 'test/battle/trainer_control.h' to remove #line markers. +// + +#line 1 "test/battle/trainer_control.party" + +#line 1 + [0] = + { +#line 2 + .trainerName = _("Test1"), +#line 3 + .trainerClass = TRAINER_CLASS_PKMN_TRAINER_1, +#line 4 + .trainerPic = TRAINER_PIC_RED, + .encounterMusic_gender = +#line 6 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 7 + .doubleBattle = FALSE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 9 + .nickname = COMPOUND_STRING("Bubbles"), +#line 9 + .species = SPECIES_WOBBUFFET, +#line 9 + .gender = TRAINER_MON_FEMALE, +#line 9 + .heldItem = ITEM_ASSAULT_VEST, +#line 14 + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 4, 0), +#line 13 + .iv = TRAINER_PARTY_IVS(25, 26, 27, 28, 29, 30), +#line 12 + .ability = ABILITY_TELEPATHY, +#line 11 + .lvl = 67, +#line 17 + .ball = ITEM_MASTER_BALL, +#line 15 + .friendship = 42, +#line 10 + .nature = NATURE_HASTY, +#line 16 + .isShiny = TRUE, +#line 18 + .dynamaxLevel = 5, + .moves = { +#line 19 + MOVE_AIR_SLASH, + MOVE_BARRIER, + MOVE_SOLAR_BEAM, + MOVE_EXPLOSION, + }, + }, + { +#line 24 + .species = SPECIES_WOBBUFFET, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 27 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 26 + .ability = ABILITY_SHADOW_TAG, +#line 25 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 29 + .species = SPECIES_WYNAUT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 31 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 30 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, diff --git a/test/battle/trainer_control.party b/test/battle/trainer_control.party new file mode 100644 index 0000000000..8ebfc0e664 --- /dev/null +++ b/test/battle/trainer_control.party @@ -0,0 +1,31 @@ +=== 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 diff --git a/test/pokemon.c b/test/pokemon.c index 7cd2ab5769..1ae655ab3c 100644 --- a/test/pokemon.c +++ b/test/pokemon.c @@ -193,6 +193,22 @@ TEST("givemon [simple]") EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_LEVEL), 100); } +TEST("givemon [moves]") +{ + ZeroPlayerPartyMons(); + + RUN_OVERWORLD_SCRIPT( + givemon SPECIES_WOBBUFFET, 100, move1=MOVE_TACKLE, move2=MOVE_SPLASH, move3=MOVE_NONE, move4=MOVE_NONE; + ); + + EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_SPECIES), SPECIES_WOBBUFFET); + EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_LEVEL), 100); + EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_MOVE1), MOVE_TACKLE); + EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_MOVE2), MOVE_SPLASH); + EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_MOVE3), MOVE_NONE); + EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_MOVE4), MOVE_NONE); +} + TEST("givemon [all]") { ZeroPlayerPartyMons(); diff --git a/test/test_runner_battle.c b/test/test_runner_battle.c index 68a83321fe..b800f9099f 100644 --- a/test/test_runner_battle.c +++ b/test/test_runner_battle.c @@ -808,7 +808,7 @@ void TestRunner_Battle_CheckChosenMove(u32 battlerId, u32 moveId, u32 target) bool32 movePasses = FALSE; if (expectedAction->type != B_ACTION_USE_MOVE) - Test_ExitWithResult(TEST_RESULT_FAIL, "%s:%d: Expected MOVE, got %s", filename, expectedAction->sourceLine, sBattleActionNames[expectedAction->type]); + Test_ExitWithResult(TEST_RESULT_FAIL, "%s:%d: Expected %s, got MOVE", filename, expectedAction->sourceLine, sBattleActionNames[expectedAction->type]); if (expectedAction->explicitTarget && expectedAction->target != target) Test_ExitWithResult(TEST_RESULT_FAIL, "%s:%d: Expected target %s, got %s", filename, expectedAction->sourceLine, BattlerIdentifier(expectedAction->target), BattlerIdentifier(target)); @@ -874,7 +874,7 @@ void TestRunner_Battle_CheckSwitch(u32 battlerId, u32 partyIndex) if (!expectedAction->pass) { if (expectedAction->type != B_ACTION_SWITCH) - Test_ExitWithResult(TEST_RESULT_FAIL, "%s:%d: Expected SWITCH/SEND_OUT, got %s", filename, expectedAction->sourceLine, sBattleActionNames[expectedAction->type]); + Test_ExitWithResult(TEST_RESULT_FAIL, "%s:%d: Expected %s, got SWITCH/SEND_OUT", filename, expectedAction->sourceLine, sBattleActionNames[expectedAction->type]); if (expectedAction->target != partyIndex) Test_ExitWithResult(TEST_RESULT_FAIL, "%s:%d: Expected partyIndex %d, got %d", filename, expectedAction->sourceLine, expectedAction->target, partyIndex); diff --git a/tools/learnset_helpers/teachable.py b/tools/learnset_helpers/teachable.py index 03d3729ef6..92ed8562d8 100644 --- a/tools/learnset_helpers/teachable.py +++ b/tools/learnset_helpers/teachable.py @@ -5,14 +5,14 @@ import os # before all else, abort if the config is off with open("./include/config/pokemon.h", "r") as file: - learnset_config = re.findall("#define P_LEARNSET_HELPER_TEACHABLE *([^ ]*)", file.read()) + 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('(?!^)([A-Z]+)', r'_\1', name).upper() + return re.sub(r'(?!^)([A-Z]+)', r'_\1', name).upper() tm_moves = [] tutor_moves = [] @@ -28,20 +28,20 @@ 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('setvar VAR_0x8005, (MOVE_.*)', 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('F\((.*)\)', file.read()): + 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("static const u16 sUniversalMoves\[\] =(.|\n)*?{((.|\n)*?)};", file.read())[0]: + 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() @@ -79,7 +79,7 @@ def construct_compatibility_dict(force_custom_check): 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("static const u16 s(.*)TeachableLearnset\[\] = {\n((.|\n)*?)\n};", raw): + 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 @@ -128,7 +128,7 @@ 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('static const u16 s(.*)TeachableLearnset', out) + 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 = [] @@ -161,7 +161,7 @@ for mon in list_of_mons: if len(tm_learnset) > 0: repl += ",\n ".join(tm_learnset) + ",\n " repl += "MOVE_UNAVAILABLE,\n};" - newout = re.sub('static const u16 s%sTeachableLearnset\[\] = {[\s\S]*?};' % mon, repl, out) + newout = re.sub(r'static const u16 s%sTeachableLearnset\[\] = {[\s\S]*?};' % mon, repl, out) if newout != out: out = newout print("Updated %s" % mon) @@ -208,7 +208,7 @@ header += "// " + longest_move_name * "*" + " //\n\n" if not "// DO NOT MODIFY THIS FILE!" in out: out = header + out else: - out = re.sub("\/\/\n\/\/ DO NOT MODIFY THIS FILE!(.|\n)*\* \/\/\n\n", header, out) + 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/trainerproc/.gitignore b/tools/trainerproc/.gitignore new file mode 100644 index 0000000000..d0c3d3d011 --- /dev/null +++ b/tools/trainerproc/.gitignore @@ -0,0 +1 @@ +trainerproc diff --git a/tools/trainerproc/Makefile b/tools/trainerproc/Makefile new file mode 100644 index 0000000000..4513a6ad79 --- /dev/null +++ b/tools/trainerproc/Makefile @@ -0,0 +1,20 @@ +.PHONY: all clean + +CFLAGS := -Wall -O2 + +SRCS := main.c + +ifeq ($(OS),Windows_NT) +EXE := .exe +else +EXE := +endif + +all: trainerproc$(EXE) + @: + +trainerproc$(EXE): $(SRCS) + $(CC) $(CFLAGS) $(SRCS) -o $@ $(LDFLAGS) + +clean: + $(RM) trainerproc$(EXE) diff --git a/tools/trainerproc/main.c b/tools/trainerproc/main.c new file mode 100644 index 0000000000..5b0fbfc3f4 --- /dev/null +++ b/tools/trainerproc/main.c @@ -0,0 +1,1990 @@ +/* trainerprpc + * Parses teams in the competitive format (as used by Showdown) and + * converts them into the internal team format. */ + +/* To add a new member to 'TrainerMon': + * 1. Add the same member to 'Pokemon'. + * 2. Parse that member in 'parse_trainer', probably in the 'parse_attribute' loop. + * 3. Format that member in 'fprint_trainers'. */ +#include +#include +#include +#include +#include +#include +#include + +#define MAX_TRAINER_AI_FLAGS 32 +#define MAX_TRAINER_ITEMS 4 +#define PARTY_SIZE 6 +#define MAX_MON_MOVES 4 + +struct String +{ + const unsigned char *string; + int string_n; +}; + +struct Stats +{ + int hp, attack, defense, special_attack, special_defense, speed; +}; + +enum Gender +{ + GENDER_ANY, + GENDER_MALE, + GENDER_FEMALE, +}; + +// TODO: Support Hidden Power. +struct Pokemon +{ + struct String nickname; + struct String species; + enum Gender gender; + struct String item; + int header_line; + + struct Stats evs; + int evs_line; + + struct Stats ivs; + int ivs_line; + + struct String ability; + int ability_line; + + int level; + int level_line; + + struct String ball; + int ball_line; + + int friendship; + int friendship_line; + + struct String nature; + int nature_line; + + bool shiny; + int shiny_line; + + int dynamax_level; + int dynamax_level_line; + + bool gigantamax_factor; + bool gigantamax_factor_line; + + struct String tera_type; + int tera_type_line; + + struct String moves[MAX_MON_MOVES]; + int moves_n; + int move1_line; +}; + +struct Trainer +{ + struct String id; + int id_line; + + struct String ai_flags[MAX_TRAINER_AI_FLAGS]; + int ai_flags_n; + int ai_flags_line; + + struct String items[MAX_TRAINER_ITEMS]; + int items_n; + int items_line; + + struct String class; + int class_line; + + struct String encounter_music; + int encounter_music_line; + + enum Gender gender; + int gender_line; + + struct String pic; + int pic_line; + + struct String name; + int name_line; + + bool double_battle; + int double_battle_line; + + struct Pokemon pokemon[PARTY_SIZE]; + int pokemon_n; + + struct String mugshot; + int mugshot_line; + + struct String starting_status; + int starting_status_line; +}; + +static bool is_empty_string(struct String s) +{ + return s.string_n == 0; +} + +static bool is_literal_string(struct String s1, const char *s2) +{ + for (int i = 0;; i++) + { + if (i == s1.string_n && s2[i] == '\0') + return true; + else if (i == s1.string_n || s2[i] == '\0') + return false; + else if (s1.string[i] != s2[i]) + return false; + } +} + +static bool ends_with(struct String s, const char *suffix) +{ + int n = strlen(suffix); + if (n > s.string_n) + { + return false; + } + else + { + for (int i = 0; i < n; i++) + { + if (s.string[s.string_n - i - 1] != suffix[n - i - 1]) + return false; + } + return true; + } +} + +static struct String literal_string(const char *s) +{ + return (struct String) { + .string = (const unsigned char *)s, + .string_n = strlen(s), + }; +} + +struct Source +{ + const char *path; + const unsigned char *buffer; + int buffer_n; +}; + +struct SourceLocation +{ + int line; + int column; +}; + +struct Token +{ + const struct Source *source; + struct SourceLocation location; + int begin; + int end; +}; + +static bool is_empty_token(const struct Token *t) +{ + return t->begin == t->end; +} + +// TODO: Make case-insensitive? +static bool is_literal_token(const struct Token *t, const char *s) +{ + int i = t->begin; + for (;;) + { + if (*s == '\0' && i == t->end) + return true; + else if (*s == '\0' || i == t->end) + return false; + else if (*s != t->source->buffer[i]) + return false; + i++; + s++; + } +} + +struct Parser +{ + struct Source *source; + struct SourceLocation location; + int offset; + struct SourceLocation error_location; + const char *error; + bool fatal_error; +}; + +struct Parsed +{ + const struct Source *source; + + struct Trainer *trainers; + int trainers_n; + + struct Stats default_ivs; + int default_ivs_line; + bool default_ivs_off; + + int default_level; + int default_level_line; + bool default_level_off; +}; + +static bool set_parse_error(struct Parser *p, struct SourceLocation location, const char *error) +{ + p->error = error; + p->error_location = location; + return false; +} + +static bool show_parse_error(struct Parser *p) +{ + // Print error message. + int n = fprintf(stderr, "%s:%d: ", p->source->path, p->error_location.line); + fprintf(stderr, "error: %s\n", p->error); + + // Seek to the line. + int line, begin, end; + for (line = 1, begin = 0; begin < p->source->buffer_n; begin++) + { + if (p->error_location.line == line) + break; + if (p->source->buffer[begin] == '\n') + line++; + } + for (end = begin; end < p->source->buffer_n; end++) + { + if (p->source->buffer[end] == '\n') + break; + } + + // Print the source line. + fprintf(stderr, "%s:%d: %.*s\n", p->source->path, p->error_location.line, end - begin, &p->source->buffer[begin]); + + // Print caret pointing at the column. + fprintf(stderr, "%*s", n, ""); + for (int column = 1; column < p->error_location.column && begin + column < end; column++) + { + unsigned char c = p->source->buffer[begin + column]; + fputc(c == '\t' ? c : ' ', stderr); + } + fprintf(stderr, "^\n"); + + p->error = NULL; + p->fatal_error = true; + + return false; +} + +static bool set_show_parse_error(struct Parser *p, struct SourceLocation location, const char *error) +{ + set_parse_error(p, location, error); + return show_parse_error(p); +} + +__attribute__((warn_unused_result)) +static bool peek_char(struct Parser *p, unsigned char *c) +{ + assert(p && c); + if (p->offset == p->source->buffer_n) + return false; + *c = p->source->buffer[p->offset]; + return true; +} + +__attribute__((warn_unused_result)) +static bool pop_char(struct Parser *p, unsigned char *c) +{ + assert(p && c); + if (p->offset == p->source->buffer_n) + return false; + *c = p->source->buffer[p->offset++]; + if (*c == '\n') + { + p->location.line++; + p->location.column = 1; + } + else + { + p->location.column++; + } + return true; +} + +static void skip_whitespace(struct Parser *p) +{ + assert(p); + unsigned char c; + for (;;) + { + if (!peek_char(p, &c)) + break; + if (c != ' ' && c != '\t') + break; + if (!pop_char(p, &c)) + assert(false); + } +} + +static void skip_line(struct Parser *p) +{ + assert(p); + unsigned char c; + for (;;) + { + if (!pop_char(p, &c)) + break; + if (c == '\n') + break; + } +} + +__attribute__((warn_unused_result)) +static bool match_eof(struct Parser *p) +{ + return p->offset == p->source->buffer_n; +} + +__attribute__((warn_unused_result)) +static bool match_exact(struct Parser *p, const char *s) +{ + assert(p && s); + struct Parser p_ = *p; + unsigned char c; + + for (; *s != '\0'; s++) + { + if (!pop_char(&p_, &c)) + return false; + if (*s != c) + return false; + } + + *p = p_; + return true; +} + +static void match_until_eol(struct Parser *p, struct Token *t) +{ + assert(p && t); + unsigned char c; + + skip_whitespace(p); + + t->source = p->source; + t->location = p->location; + t->begin = p->offset; + t->end = p->offset; + + for (;;) + { + if (!peek_char(p, &c)) + break; + if (c == '\n') + break; + if (!pop_char(p, &c)) + assert(false); + if (c != ' ' && c != '\t') + t->end = p->offset; + } +} + +__attribute__((warn_unused_result)) +static bool match_eol(struct Parser *p) +{ + struct Parser p_ = *p; + unsigned char c; + + skip_whitespace(&p_); + for (;;) + { + if (!pop_char(&p_, &c)) + return false; + + if (c == '\n') + break; + else + return false; + } + + *p = p_; + return true; +} + +__attribute__((warn_unused_result)) +static bool match_empty_line(struct Parser *p) +{ + return match_eol(p); +} + +__attribute__((warn_unused_result)) +static bool match_int(struct Parser *p, int *i) +{ + assert(p && i); + struct Parser p_ = *p; + unsigned char c; + + *i = 0; + for (;;) + { + if (!peek_char(&p_, &c)) + break; + if (!('0' <= c && c <= '9')) + break; + *i = *i * 10 + (c - '0'); + if (!pop_char(&p_, &c)) + assert(false); + } + + if (p->offset == p_.offset) + return false; + + *p = p_; + return true; +} + +__attribute__((warn_unused_result)) +static bool match_identifier(struct Parser *p, struct Token *t) +{ + assert(p && t); + struct Parser p_ = *p; + unsigned char c; + + t->source = p->source; + t->location = p->location; + t->begin = p->offset; + + for (;;) + { + if (!peek_char(&p_, &c)) + break; + + if (('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z') || ('0' <= c && c <= '9') || c == '_') + ; + else + break; + + if (!pop_char(&p_, &c)) + assert(false); + } + + t->end = p_.offset; + if (t->begin == t->end) + return false; + + *p = p_; + return true; +} + +__attribute__((warn_unused_result)) +static bool match_human_identifier(struct Parser *p, struct Token *t) +{ + assert(p && t); + struct Parser p_ = *p, q = *p; + unsigned char c; + + t->source = p->source; + t->location = p->location; + t->begin = p->offset; + t->end = p->offset; + + for (;;) + { + if (!peek_char(&p_, &c)) + break; + + if (('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z') || c == '_' || c == '-' || c == ' ') + ; + else if (p_.offset > t->begin && ('0' <= c && c <= '9')) + ; + else + break; + + if (!pop_char(&p_, &c)) + assert(false); + + if (c != ' ') + q = p_; + } + + t->end = q.offset; + if (t->begin == t->end) + return false; + + *p = q; + return true; +} + +// Like 'match_human_identifier' but parses ':', for 'Type: Null', among +// other exceptions. +__attribute__((warn_unused_result)) +static bool match_species_identifier(struct Parser *p, struct Token *t) +{ + assert(p && t); + struct Parser p_ = *p, q = *p; + unsigned char c; + + t->source = p->source; + t->location = p->location; + t->begin = p->offset; + t->end = p->offset; + + for (;;) + { + if (!peek_char(&p_, &c)) + break; + + if (('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z') || ('0' <= c && c <= '9') || c == '_' || c == '-' || c == ' ' || c == ':' || c == '.' || c == '\'' || c >= 0x80) + ; + else + break; + + if (!pop_char(&p_, &c)) + assert(false); + + if (c != ' ') + q = p_; + } + + t->end = q.offset; + if (t->begin == t->end) + return false; + + *p = q; + return true; +} + +// Like 'match_human_identifier' but parses '10,000,000 Volt Thunderbolt' +// among other exceptions. +__attribute__((warn_unused_result)) +static bool match_move_identifier(struct Parser *p, struct Token *t) +{ + assert(p && t); + struct Parser p_ = *p, q = *p; + unsigned char c; + + t->source = p->source; + t->location = p->location; + t->begin = p->offset; + t->end = p->offset; + + for (;;) + { + if (!peek_char(&p_, &c)) + break; + + if (('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z') || ('0' <= c && c <= '9') || c == '_' || c == '-' || c == ' ' || c == ',') + ; + else + break; + + if (!pop_char(&p_, &c)) + assert(false); + + if (c != ' ') + q = p_; + } + + t->end = q.offset; + if (t->begin == t->end) + return false; + + *p = q; + return true; +} + +__attribute__((warn_unused_result)) +static bool parse_section(struct Parser *p, struct Token *section) +{ + assert(p && section); + struct Parser p_ = *p; + + if (!match_exact(&p_, "===")) + return false; + + skip_whitespace(&p_); + if (!match_identifier(&p_, section)) + return set_parse_error(p, p_.location, "expected identifier"); + + skip_whitespace(&p_); + if (!match_exact(&p_, "===")) + return set_parse_error(p, p_.location, "expected '==='"); + + skip_whitespace(&p_); + if (!match_eol(&p_)) + return set_parse_error(p, p_.location, "unexpected character in section"); + + *p = p_; + return true; +} + +__attribute__((warn_unused_result)) +static bool parse_pokemon_header(struct Parser *p, struct Token *nickname, struct Token *species, struct Token *gender, struct Token *item) +{ + assert(p && nickname && species && gender && item); + struct Parser p_ = *p; + struct Token first = {}, second = {}, third = {}; + + if (!match_species_identifier(&p_, &first)) + return false; + + skip_whitespace(&p_); + if (match_exact(&p_, "(")) + { + if (!match_species_identifier(&p_, &second)) + return set_parse_error(p, p_.location, "expected species or gender"); + if (!match_exact(&p_, ")")) + return set_parse_error(p, p_.location, "expected ')'"); + + skip_whitespace(&p_); + if (match_exact(&p_, "(")) + { + if (!match_human_identifier(&p_, &third)) + return set_parse_error(p, p_.location, "expected gender"); + if (!match_exact(&p_, ")")) + return set_parse_error(p, p_.location, "expected ')'"); + + *nickname = first; + *species = second; + *gender = third; + } + else + { + if (second.begin + 1 == second.end) // Single letter. + { + *nickname = (struct Token) {}; + *species = first; + *gender = second; + } + else + { + *nickname = first; + *species = second; + *gender = (struct Token) {}; + } + } + } + else + { + *nickname = (struct Token) {}; + *species = first; + *gender = (struct Token) {}; + } + + skip_whitespace(&p_); + if (match_exact(&p_, "@")) + { + skip_whitespace(&p_); + if (!match_human_identifier(&p_, item)) + return set_parse_error(p, p_.location, "expected item"); + } + else + { + *item = (struct Token) {}; + } + + skip_whitespace(&p_); + if (!match_eol(&p_)) + return set_parse_error(p, p_.location, "unexpected character in Pokemon header"); + + *p = p_; + return true; +} + +__attribute__((warn_unused_result)) +static bool parse_pokemon_nature(struct Parser *p, struct Token *nature) +{ + assert(p && nature); + struct Parser p_ = *p; + + if (!match_identifier(&p_, nature)) + return false; + + skip_whitespace(&p_); + if (!match_exact(&p_, "Nature")) + return false; + + skip_whitespace(&p_); + if (!match_eol(&p_)) + return set_parse_error(p, p_.location, "unexpected character in nature"); + + *p = p_; + return true; +} + +__attribute__((warn_unused_result)) +static bool parse_attribute(struct Parser *p, struct Token *key, struct Token *value) +{ + assert(p && key && value); + + if (parse_pokemon_nature(p, value)) + { + static const struct Source nature_source = { .path=NULL, .buffer=(unsigned char *)"Nature", .buffer_n=6 }; + key->source = &nature_source; + key->location = p->location; + key->begin = 0; + key->end = nature_source.buffer_n; + return true; + } + + struct Parser p_ = *p; + + if (!match_human_identifier(&p_, key)) + return false; + + skip_whitespace(&p_); + if (match_exact(&p_, ":")) + { + skip_whitespace(&p_); + match_until_eol(&p_, value); + if (!match_eol(&p_)) + return set_parse_error(p, p_.location, "unexpected character in attribute"); + } + else + { + return set_parse_error(p, p_.location, "expected ':' or 'Nature'"); + } + + *p = p_; + return true; +} + +__attribute__((warn_unused_result)) +static bool parse_pokemon_move(struct Parser *p, struct Token *move) +{ + assert(p && move); + struct Parser p_ = *p; + + if (!match_exact(&p_, "-")) + return false; + skip_whitespace(&p_); + if (!match_move_identifier(&p_, move)) + return set_parse_error(p, p_.location, "expected move"); + skip_whitespace(&p_); + if (!match_eol(&p_)) + return set_parse_error(p, p_.location, "unexpected character in move"); + + *p = p_; + return true; +} + +static struct String token_string(const struct Token *t) +{ + if (t->source) + { + return (struct String) { + .string = &t->source->buffer[t->begin], + .string_n = t->end - t->begin, + }; + } + else + { + return (struct String) { + .string = NULL, + .string_n = 0, + }; + } +} + +static bool token_gender(struct Parser *p, const struct Token *t, enum Gender *g) +{ + if (is_empty_token(t)) + { + *g = GENDER_ANY; + return true; + } + else if (is_literal_token(t, "M") || is_literal_token(t, "Male")) + { + *g = GENDER_MALE; + return true; + } + else if (is_literal_token(t, "F") || is_literal_token(t, "Female")) + { + *g = GENDER_FEMALE; + return true; + } + else + { + return set_parse_error(p, t->location, "invalid gender"); + } +} + +static bool token_stats(struct Parser *p, const struct Token *t, struct Stats *stats, bool require_all) +{ + struct Source source = { + .path = p->source->path, + .buffer = p->source->buffer, + .buffer_n = t->end, + }; + struct Parser p_ = { + .source = &source, + .location = t->location, + .offset = t->begin, + }; + bool has_hp = false, has_atk = false, has_def = false, has_spa = false, has_spd = false, has_spe = false; + for (;;) + { + int value; + skip_whitespace(&p_); + if (!match_int(&p_, &value)) + return set_parse_error(p, p_.location, "expected integer"); + + struct Token stat; + skip_whitespace(&p_); + struct SourceLocation stat_location = p_.location; + if (!match_identifier(&p_, &stat)) + return set_parse_error(p, p_.location, "expected 'HP', 'Atk', 'Def', 'SpA', 'SpD', or 'Spe'"); + if (is_literal_token(&stat, "HP")) + { + stats->hp = value; + has_hp = true; + } + else if (is_literal_token(&stat, "Atk")) + { + stats->attack = value; + has_atk = true; + } + else if (is_literal_token(&stat, "Def")) + { + stats->defense = value; + has_def = true; + } + else if (is_literal_token(&stat, "SpA")) + { + stats->special_attack = value; + has_spa = true; + } + else if (is_literal_token(&stat, "SpD")) + { + stats->special_defense = value; + has_spd = true; + } + else if (is_literal_token(&stat, "Spe")) + { + stats->speed = value; + has_spe = true; + } + else + { + return set_parse_error(p, stat_location, "expected 'HP', 'Atk', 'Def', 'SpA', 'SpD', or 'Spe'"); + } + + skip_whitespace(&p_); + if (match_eof(&p_)) + break; + else if (!match_exact(&p_, "/")) + return set_parse_error(p, p_.location, "expected '/' or newline"); + } + if (require_all && !(has_hp && has_atk && has_def && has_spa && has_spd && has_spe)) + return set_parse_error(p, p_.location, "expected all of 'HP', 'Atk', 'Def', 'SpA', 'SpD', and 'Spe'"); + return true; +} + +// '/'-separated strings. +static bool token_human_identifiers(struct Parser *p, const struct Token *t, struct String *ids, int *ids_n, int max_ids_n) +{ + struct Source source = { + .path = p->source->path, + .buffer = p->source->buffer, + .buffer_n = t->end, + }; + struct Parser p_ = { + .source = &source, + .location = t->location, + .offset = t->begin, + }; + int n = 0; + while (*ids_n < max_ids_n) + { + skip_whitespace(&p_); + struct Token id; + if (!match_human_identifier(&p_, &id)) + return set_parse_error(p, p_.location, "expected identifier"); + ids[n++] = token_string(&id); + skip_whitespace(&p_); + if (match_eof(&p_)) + break; + else if (!match_exact(&p_, "/")) + return set_parse_error(p, p_.location, "expected '/' or newline"); + } + *ids_n = n; + return true; +} + +static bool token_int(struct Parser *p, const struct Token *t, int *i) +{ + char *end; + long l = strtol((const char *)&t->source->buffer[t->begin], &end, 10); + if ((unsigned char *)end != &t->source->buffer[t->end]) + return set_parse_error(p, t->location, "invalid integer"); + if (!(INT_MIN <= l && l <= INT_MAX)) + return set_parse_error(p, t->location, "integer too large"); + *i = l; + return true; +} + +static bool token_bool(struct Parser *p, const struct Token *t, bool *b) +{ + if (is_literal_token(t, "Yes")) + { + *b = true; + return true; + } + else if (is_literal_token(t, "No")) + { + *b = false; + return true; + } + else + { + return set_parse_error(p, t->location, "invalid boolean"); + } +} + +static bool parse_pragma(struct Parser *p, struct Parsed *parsed) +{ + assert(p && parsed); + struct Parser p_ = *p; + + if (!match_exact(&p_, "#pragma")) + return false; + + // TODO: Require _a_ space between #pragma and trainerproc. + struct Token id; + skip_whitespace(&p_); + if (!match_identifier(&p_, &id)) + return set_show_parse_error(p, p_.location, "expected 'trainerproc'"); + if (!is_literal_token(&id, "trainerproc")) + return set_show_parse_error(p, id.location, "expected 'trainerproc'"); + + skip_whitespace(&p_); + if (!match_identifier(&p_, &id)) + { + return set_show_parse_error(p, p_.location, "expected identifier"); + } + else if (is_literal_token(&id, "ivs")) + { + if (parsed->default_ivs_line) + return set_show_parse_error(p, p_.location, "duplicate #pragma trainerproc ivs"); + parsed->default_ivs_line = p_.location.line; + skip_whitespace(&p_); + struct Token t; + match_until_eol(&p_, &t); + if (is_literal_token(&t, "explicit")) + parsed->default_ivs_off = true; + else if (!token_stats(p, &t, &parsed->default_ivs, true)) + return show_parse_error(p); + } + else if (is_literal_token(&id, "level")) + { + if (parsed->default_level_line) + return set_show_parse_error(p, p_.location, "duplicate #pragma trainerproc level"); + parsed->default_level_line = p_.location.line; + skip_whitespace(&p_); + struct Token t; + match_until_eol(&p_, &t); + if (is_literal_token(&t, "explicit")) + parsed->default_level_off = true; + else if (!token_int(p, &t, &parsed->default_level)) + return show_parse_error(p); + } + else + { + return set_show_parse_error(p, id.location, "unknown pragma"); + } + + if (!match_eol(&p_)) + return set_show_parse_error(p, p_.location, "expected newline"); + + *p = p_; + return true; +} + +// Species that are selected based on the explicit gender. +// e.g. 'Nidoran (M)' becomes 'Nidoran-M'. +static const struct { + const char *species; + const char *male_species; + const char *female_species; +} gendered_species[] = { + { "Basculegion", "Basculegion-M", "Basculegion-F" }, + { "Indeedee", "Indeedee-M", "Indeedee-F" }, + { "Oinkologne", "Oinkologne-M", "Oinkologne-F" }, + { "Meowstic", "Meowstic-M", "Meowstic-F" }, + { "Nidoran", "Nidoran-M", "Nidoran-F" }, + { NULL, NULL, NULL } +}; + +// Items that are selected based on the explicit form. +// e.g. 'Arceus-Fire' becomes 'Arceus @ Flame Plate'. +static const struct { + const char *form; + const char *species; + const char *item; +} itemed_species[] = { + { "Arceus-Bug", "Arceus", "Insect Plate" }, + { "Arceus-Dark", "Arceus", "Dread Plate" }, + { "Arceus-Dragon", "Arceus", "Draco Plate" }, + { "Arceus-Electric", "Arceus", "Zap Plate" }, + { "Arceus-Fairy", "Arceus", "Pixie Plate" }, + { "Arceus-Fighting", "Arceus", "Fist Plate" }, + { "Arceus-Fire", "Arceus", "Flame Plate" }, + { "Arceus-Flying", "Arceus", "Sky Plate" }, + { "Arceus-Ghost", "Arceus", "Spooky Plate" }, + { "Arceus-Grass", "Arceus", "Meadow Plate" }, + { "Arceus-Ground", "Arceus", "Earth Plate" }, + { "Arceus-Ice", "Arceus", "Icicle Plate" }, + { "Arceus-Poison", "Arceus", "Toxic Plate" }, + { "Arceus-Psychic", "Arceus", "Mind Plate" }, + { "Arceus-Rock", "Arceus", "Stone Plate" }, + { "Arceus-Steel", "Arceus", "Iron Plate" }, + { "Arceus-Water", "Arceus", "Splash Plate" }, + { "Genesect-Burn", "Genesect", "Burn Drive" }, + { "Genesect-Chill", "Genesect", "Chill Drive" }, + { "Genesect-Douse", "Genesect", "Douse Drive" }, + { "Genesect-Shock", "Genesect", "Shock Drive" }, + { "Silvally-Bug", "Silvally", "Bug Memory" }, + { "Silvally-Dark", "Silvally", "Dark Memory" }, + { "Silvally-Dragon", "Silvally", "Dragon Memory" }, + { "Silvally-Electric", "Silvally", "Electric Memory" }, + { "Silvally-Fairy", "Silvally", "Fairy Memory" }, + { "Silvally-Fighting", "Silvally", "Fighting Memory" }, + { "Silvally-Fire", "Silvally", "Fire Memory" }, + { "Silvally-Flying", "Silvally", "Flying Memory" }, + { "Silvally-Ghost", "Silvally", "Ghost Memory" }, + { "Silvally-Grass", "Silvally", "Grass Memory" }, + { "Silvally-Ground", "Silvally", "Ground Memory" }, + { "Silvally-Ice", "Silvally", "Ice Memory" }, + { "Silvally-Poison", "Silvally", "Poison Memory" }, + { "Silvally-Psychic", "Silvally", "Psychic Memory" }, + { "Silvally-Rock", "Silvally", "Rock Memory" }, + { "Silvally-Steel", "Silvally", "Steel Memory" }, + { "Silvally-Water", "Silvally", "Water Memory" }, + { NULL, NULL, NULL } +}; + +static bool parse_trainer(struct Parser *p, const struct Parsed *parsed, struct Trainer *trainer) +{ + bool any_error = false; + *trainer = (struct Trainer) {}; + + while (match_empty_line(p)) {} + struct Token id; + struct Token nickname, species, gender, item; + if (!parse_section(p, &id)) + { + if (!p->error) + set_parse_error(p, p->location, "expected '==='"); + show_parse_error(p); + return false; + } + trainer->id = token_string(&id); + trainer->id_line = id.location.line; + + // Parse trainer attributes. + struct Token key, value; + while (parse_attribute(p, &key, &value)) + { + if (is_literal_token(&key, "AI")) + { + if (trainer->ai_flags_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'AI'"); + trainer->ai_flags_line = value.location.line; + if (!token_human_identifiers(p, &value, trainer->ai_flags, &trainer->ai_flags_n, MAX_TRAINER_AI_FLAGS)) + any_error = !show_parse_error(p); + } + else if (is_literal_token(&key, "Items")) + { + if (trainer->items_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'Items'"); + trainer->items_line = value.location.line; + if (!token_human_identifiers(p, &value, trainer->items, &trainer->items_n, MAX_TRAINER_ITEMS)) + any_error = !show_parse_error(p); + } + else if (is_literal_token(&key, "Class")) + { + if (trainer->class_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'Class'"); + trainer->class_line = value.location.line; + trainer->class = token_string(&value); + } + else if (is_literal_token(&key, "Music")) + { + if (trainer->encounter_music_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'Music'"); + trainer->encounter_music_line = value.location.line; + trainer->encounter_music = token_string(&value); + } + else if (is_literal_token(&key, "Gender")) + { + if (trainer->gender_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'Gender'"); + trainer->gender_line = value.location.line; + if (!token_gender(p, &value, &trainer->gender)) + any_error = !show_parse_error(p); + } + else if (is_literal_token(&key, "Pic")) + { + if (trainer->pic_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'Pic'"); + trainer->pic_line = value.location.line; + trainer->pic = token_string(&value); + } + else if (is_literal_token(&key, "Name")) + { + if (trainer->name_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'Name'"); + trainer->name_line = value.location.line; + trainer->name = token_string(&value); + } + else if (is_literal_token(&key, "Double Battle")) + { + if (trainer->double_battle_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'Double Battle'"); + trainer->double_battle_line = value.location.line; + if (!token_bool(p, &value, &trainer->double_battle)) + any_error = !show_parse_error(p); + } + else if (is_literal_token(&key, "Mugshot")) + { + if (trainer->mugshot_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'Mugshot'"); + trainer->mugshot_line = value.location.line; + trainer->mugshot = token_string(&value); + } + else if (is_literal_token(&key, "Starting Status")) + { + if (trainer->starting_status_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'Starting Status'"); + trainer->starting_status_line = value.location.line; + trainer->starting_status = token_string(&value); + } + else + { + any_error = !set_show_parse_error(p, key.location, "expected one of 'Name', 'Class', 'Pic', 'Gender', 'Music', 'Items', 'Double Battle', or 'AI'"); + } + } + if (!trainer->pic_line) + any_error = !set_show_parse_error(p, p->location, "expected 'Pic' before Pokemon"); + if (!trainer->name_line) + any_error = !set_show_parse_error(p, p->location, "expected 'Name' before Pokemon"); + if (!match_empty_line(p)) + { + set_show_parse_error(p, p->location, "expected empty line"); + + // Continue if the line is the start of a new Pokemon. + struct Parser p_ = *p; + if (!parse_pokemon_header(&p_, &nickname, &species, &gender, &item)) + return false; + } + + for (int i = 0; i < PARTY_SIZE; i++) + { + struct Pokemon *pokemon = &trainer->pokemon[i]; + + // Parse first line. + while (match_empty_line(p)) {} + if (!parse_pokemon_header(p, &nickname, &species, &gender, &item)) + { + if (i > 0 || is_literal_string(trainer->id, "TRAINER_NONE")) + break; + if (!p->error) + set_parse_error(p, p->location, "expected nickname or species"); + show_parse_error(p); + + // TODO: Continue if a Pokemon starts before the next section. + // This is difficult to do, because 'Type: Null' is the name + // of a species, and so 'X: Y' is being parsed as a Pokemon + // header. + return false; + } + trainer->pokemon_n++; + + pokemon->nickname = token_string(&nickname); + pokemon->species = token_string(&species); + if (!token_gender(p, &gender, &pokemon->gender)) + any_error = !show_parse_error(p); + pokemon->item = token_string(&item); + pokemon->header_line = species.location.line; + + for (int i = 0; gendered_species[i].species; i++) + { + if (is_literal_string(pokemon->species, gendered_species[i].species)) + { + switch (pokemon->gender) + { + case GENDER_ANY: + break; + case GENDER_MALE: + pokemon->species = literal_string(gendered_species[i].male_species); + break; + case GENDER_FEMALE: + pokemon->species = literal_string(gendered_species[i].female_species); + break; + } + pokemon->gender = GENDER_ANY; + break; + } + } + + for (int i = 0; itemed_species[i].species; i++) + { + if (is_literal_string(pokemon->species, itemed_species[i].form) + && is_empty_string(pokemon->item)) + { + pokemon->species = literal_string(itemed_species[i].species); + pokemon->item = literal_string(itemed_species[i].item); + } + } + + // Parse Pokemon attributes. + while (parse_attribute(p, &key, &value)) + { + if (is_literal_token(&key, "EVs")) + { + if (pokemon->evs_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'EVs'"); + pokemon->evs_line = value.location.line; + if (!token_stats(p, &value, &pokemon->evs, false)) + any_error = !show_parse_error(p); + } + else if (is_literal_token(&key, "IVs")) + { + if (pokemon->ivs_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'IVs'"); + pokemon->ivs_line = value.location.line; + pokemon->ivs = parsed->default_ivs; + if (!token_stats(p, &value, &pokemon->ivs, parsed->default_ivs_off)) + any_error = !show_parse_error(p); + } + else if (is_literal_token(&key, "Ability")) + { + if (pokemon->ability_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'Ability'"); + pokemon->ability_line = value.location.line; + pokemon->ability = token_string(&value); + } + else if (is_literal_token(&key, "Level")) + { + if (pokemon->level_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'Level'"); + pokemon->level_line = value.location.line; + if (!token_int(p, &value, &pokemon->level)) + any_error = !show_parse_error(p); + } + else if (is_literal_token(&key, "Ball")) + { + if (pokemon->ball_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'Ball'"); + pokemon->ball_line = value.location.line; + pokemon->ball = token_string(&value); + } + else if (is_literal_token(&key, "Happiness")) + { + if (pokemon->friendship_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'Happiness'"); + pokemon->friendship_line = value.location.line; + if (!token_int(p, &value, &pokemon->friendship)) + any_error = !show_parse_error(p); + } + else if (is_literal_token(&key, "Nature")) + { + if (pokemon->nature_line) + any_error = !set_show_parse_error(p, value.location, "duplicate 'Nature'"); + pokemon->nature_line = value.location.line; + pokemon->nature = token_string(&value); + } + else if (is_literal_token(&key, "Shiny")) + { + if (pokemon->shiny_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'Shiny'"); + pokemon->shiny_line = value.location.line; + if (!token_bool(p, &value, &pokemon->shiny)) + any_error = !show_parse_error(p); + } + else if (is_literal_token(&key, "Dynamax Level")) + { + if (pokemon->dynamax_level_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'Dynamax Level'"); + pokemon->dynamax_level_line = value.location.line; + if (!token_int(p, &value, &pokemon->dynamax_level)) + any_error = !show_parse_error(p); + } + else if (is_literal_token(&key, "Gigantamax")) + { + if (pokemon->gigantamax_factor_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'Gigantamax'"); + pokemon->gigantamax_factor_line = value.location.line; + if (!token_bool(p, &value, &pokemon->gigantamax_factor)) + any_error = !show_parse_error(p); + } + else if (is_literal_token(&key, "Tera Type")) + { + if (pokemon->tera_type_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'Tera Type'"); + pokemon->tera_type_line = value.location.line; + pokemon->tera_type = token_string(&value); + } + else + { + any_error = !set_show_parse_error(p, key.location, "expected one of 'EVs', 'IVs', 'Ability', 'Level', 'Ball', 'Happiness', 'Nature', 'Shiny', 'Dynamax Level', 'Gigantamax', or 'Tera Type'"); + } + } + + if (!pokemon->level_line) + { + if (!parsed->default_level_off) + { + pokemon->level = parsed->default_level; + pokemon->level_line = p->location.line; + } + else + { + any_error = !set_show_parse_error(p, p->location, "expected 'Level' before moves"); + } + } + if (!pokemon->ivs_line) + { + if (!parsed->default_ivs_off) + { + pokemon->ivs = parsed->default_ivs; + pokemon->ivs_line = p->location.line; + } + else + { + any_error = !set_show_parse_error(p, p->location, "expected 'IVs' before moves"); + } + } + + // Parse moves. + for (int j = 0; j < MAX_MON_MOVES; j++) + { + struct Token move; + if (!parse_pokemon_move(p, &move)) + { + struct Parser p_ = *p; + if (match_eof(&p_) || match_empty_line(&p_)) + break; + } + else + { + if (pokemon->moves_n == 0) + pokemon->move1_line = move.location.line; + pokemon->moves[pokemon->moves_n] = token_string(&move); + pokemon->moves_n++; + } + } + + if (match_eof(p)) + break; + if (!match_empty_line(p)) + { + set_show_parse_error(p, p->location, "expected empty line"); + + // Continue if the line is the start of a new Pokemon. + struct Parser p_ = *p; + if (!parse_pokemon_header(&p_, &nickname, &species, &gender, &item)) + return false; + } + } + + return !any_error; +} + +static void parse(struct Parser *p, struct Parsed *parsed) +{ + parsed->source = p->source; + int trainers_c = 256; + parsed->trainers = malloc(sizeof(*parsed->trainers) * trainers_c); + parsed->trainers_n = 0; + assert(parsed->trainers); + for (;;) + { + while (match_empty_line(p)) {} + if (!parse_pragma(p, parsed)) + break; + } + for (;;) + { + if (parsed->trainers_n == trainers_c) + { + trainers_c *= 2; + struct Trainer *trainers_ = realloc(parsed->trainers, sizeof(*parsed->trainers) * trainers_c); + assert(trainers_); + parsed->trainers = trainers_; + } + struct Trainer *trainer = &parsed->trainers[parsed->trainers_n]; + while (match_empty_line(p)) {} + if (match_eof(p)) + break; + if (!parse_trainer(p, parsed, trainer)) + { + struct Token t; + // Skip to the next trainer. + for (;;) + { + struct Parser p_ = *p; + if (match_eof(&p_) || parse_section(&p_, &t)) + break; + skip_line(p); + } + } + else + { + parsed->trainers_n++; + } + } +} + +static void fprint_string(FILE *f, struct String s) +{ + fprintf(f, "%.*s", s.string_n, s.string); +} + +static void fprint_bool(FILE *f, bool b) +{ + fprintf(f, b ? "TRUE" : "FALSE"); +} + +static void fprint_stats(FILE *f, const char *macro, struct Stats stats) +{ + fprintf(f, "%s(%d, %d, %d, %d, %d, %d)", macro, stats.hp, stats.attack, stats.defense, stats.speed, stats.special_attack, stats.special_defense); +} + +static bool is_constant(struct String s, const char *prefix) +{ + for (int i = 0;; i++) + { + if (i == s.string_n) + return false; + else if (prefix[i] == '\0') + return s.string[i] == '_'; + else if (prefix[i] != s.string[i]) + return false; + } +} + +static void fprint_constant(FILE *f, const char *prefix, struct String s) +{ + if (!is_constant(s, prefix)) fprintf(f, "%s_", prefix); + if (s.string_n > 0) + { + for (int i = 0; i < s.string_n; i++) + { + unsigned char c = s.string[i]; + if (('A' <= c && c <= 'Z') || ('0' <= c && c <= '9')) + fputc(c, f); + else if ('a' <= c && c <= 'z') + fputc(c - 'a' + 'A', f); + else + fputc('_', f); + } + } + else + { + fprintf(f, "NONE"); + } +} + +// This is a really stupid helper for 'fprint_species'. +static bool is_utf8_character(struct String s, int *i, const unsigned char *utf8) +{ + for (int j = *i;; j++, utf8++) + { + if (*utf8 == '\0') + { + *i = j - 1; // '- 1' because of the '++' in 'fprint_species'. + return true; + } + else if (j == s.string_n || s.string[j] != *utf8) + { + return false; + } + } +} + +static void fprint_species(FILE *f, const char *prefix, struct String s) +{ + if (!is_constant(s, prefix)) fprintf(f, "%s_", prefix); + + if (s.string_n == 0) + { + fprintf(f, "NONE"); + } + else + { + bool underscore = false; + static const unsigned char *male = (unsigned char *)u8"♂"; + static const unsigned char *female = (unsigned char *)u8"♀"; + static const unsigned char *e_diacritic = (unsigned char *)u8"é"; + for (int i = 0; i < s.string_n; i++) + { + unsigned char c = s.string[i]; + if (('A' <= c && c <= 'Z') || ('0' <= c && c <= '9')) + { + if (underscore) + fputc('_', f); + underscore = false; + fputc(c, f); + } + else if ('a' <= c && c <= 'z') + { + if (underscore) + fputc('_', f); + underscore = false; + fputc(c - 'a' + 'A', f); + } + else if (c == '\'' || c == '%') + { + // Do nothing. + } + else if (is_utf8_character(s, &i, male)) + { + underscore = false; + fprintf(f, "_M"); + } + else if (is_utf8_character(s, &i, female)) + { + underscore = false; + fprintf(f, "_F"); + } + else if (is_utf8_character(s, &i, e_diacritic)) + { + if (underscore) + fputc('_', f); + underscore = false; + fputc('E', f); + } + else + { + underscore = true; + } + } + } +} + +static void fprint_trainers(const char *output_path, FILE *f, struct Parsed *parsed) +{ + fprintf(f, "//\n"); + fprintf(f, "// DO NOT MODIFY THIS FILE! It is auto-generated from %s\n", parsed->source->path); + fprintf(f, "//\n"); + fprintf(f, "// If you want to modify this file set COMPETITIVE_PARTY_SYNTAX to FALSE\n"); + fprintf(f, "// in include/config.h and remove this notice.\n"); + fprintf(f, "// Use sed -i '/^#line/d' '%s' to remove #line markers.\n", output_path); + fprintf(f, "//\n"); + fprintf(f, "\n"); + + fprintf(f, "#line 1 \"%s\"\n", parsed->source->path); + fprintf(f, "\n"); + + for (int i = 0; i < parsed->trainers_n; i++) + { + struct Trainer *trainer = &parsed->trainers[i]; + fprintf(f, "#line %d\n", trainer->id_line); + fprintf(f, " ["); + fprint_string(f, trainer->id); + fprintf(f, "] =\n"); + fprintf(f, " {\n"); + + if (!is_empty_string(trainer->name)) + { + fprintf(f, "#line %d\n", trainer->name_line); + fprintf(f, " .trainerName = _(\""); + fprint_string(f, trainer->name); + fprintf(f, "\"),\n"); + } + + if (!is_empty_string(trainer->class)) + { + fprintf(f, "#line %d\n", trainer->class_line); + fprintf(f, " .trainerClass = "); + fprint_constant(f, "TRAINER_CLASS", trainer->class); + fprintf(f, ",\n"); + } + + if (!is_empty_string(trainer->pic)) + { + fprintf(f, "#line %d\n", trainer->pic_line); + fprintf(f, " .trainerPic = "); + fprint_constant(f, "TRAINER_PIC", trainer->pic); + fprintf(f, ",\n"); + } + + fprintf(f, " .encounterMusic_gender = \n"); + if (trainer->gender == GENDER_FEMALE) + { + fprintf(f, "#line %d\n", trainer->gender_line); + fprintf(f, "F_TRAINER_FEMALE | \n"); + } + if (!is_empty_string(trainer->encounter_music)) + { + fprintf(f, "#line %d\n", trainer->encounter_music_line); + fprintf(f, " "); + fprint_constant(f, "TRAINER_ENCOUNTER_MUSIC", trainer->encounter_music); + } + else + { + fprintf(f, "0"); + } + fprintf(f, ",\n"); + + if (trainer->items_n > 0) + { + fprintf(f, "#line %d\n", trainer->items_line); + fprintf(f, " .items = { "); + for (int i = 0; i < trainer->items_n; i++) + { + if (i > 0) + fprintf(f, ", "); + fprint_constant(f, "ITEM", trainer->items[i]); + } + fprintf(f, " },\n"); + } + + if (trainer->double_battle_line) + { + fprintf(f, "#line %d\n", trainer->double_battle_line); + fprintf(f, " .doubleBattle = "); + fprint_bool(f, trainer->double_battle); + fprintf(f, ",\n"); + } + + if (trainer->ai_flags_n > 0) + { + fprintf(f, "#line %d\n", trainer->ai_flags_line); + fprintf(f, " .aiFlags = "); + for (int i = 0; i < trainer->ai_flags_n; i++) + { + if (i > 0) + fprintf(f, " | "); + fprint_constant(f, "AI_FLAG", trainer->ai_flags[i]); + } + fprintf(f, ",\n"); + } + + if (!is_empty_string(trainer->mugshot)) + { + fprintf(f, "#line %d\n", trainer->mugshot_line); + fprintf(f, " .mugshotEnabled = TRUE,\n"); + fprintf(f, " .mugshotColor = "); + fprint_constant(f, "MUGSHOT_COLOR", trainer->mugshot); + fprintf(f, ",\n"); + } + + if (!is_empty_string(trainer->starting_status)) + { + fprintf(f, "#line %d\n", trainer->starting_status_line); + fprintf(f, " .startingStatus = "); + fprint_constant(f, "STARTING_STATUS", trainer->starting_status); + fprintf(f, ",\n"); + } + + fprintf(f, " .partySize = %d,\n", trainer->pokemon_n); + fprintf(f, " .party = (const struct TrainerMon[])\n"); + fprintf(f, " {\n"); + for (int j = 0; j < trainer->pokemon_n; j++) + { + struct Pokemon *pokemon = &trainer->pokemon[j]; + fprintf(f, " {\n"); + + if (!is_empty_string(pokemon->nickname)) + { + fprintf(f, "#line %d\n", pokemon->header_line); + fprintf(f, " .nickname = COMPOUND_STRING(\""); + fprint_string(f, pokemon->nickname); + fprintf(f, "\"),\n"); + } + + fprintf(f, "#line %d\n", pokemon->header_line); + fprintf(f, " .species = "); + fprint_species(f, "SPECIES", pokemon->species); + fprintf(f, ",\n"); + + switch (pokemon->gender) + { + case GENDER_ANY: + fprintf(f, " .gender = TRAINER_MON_RANDOM_GENDER,\n"); + break; + case GENDER_MALE: + fprintf(f, "#line %d\n", pokemon->header_line); + fprintf(f, " .gender = TRAINER_MON_MALE,\n"); + break; + case GENDER_FEMALE: + fprintf(f, "#line %d\n", pokemon->header_line); + fprintf(f, " .gender = TRAINER_MON_FEMALE,\n"); + break; + } + + if (!is_empty_string(pokemon->item)) + { + fprintf(f, "#line %d\n", pokemon->header_line); + fprintf(f, " .heldItem = "); + fprint_constant(f, "ITEM", pokemon->item); + fprintf(f, ",\n"); + } + + if (pokemon->evs_line) + { + fprintf(f, "#line %d\n", pokemon->evs_line); + fprintf(f, " .ev = "); + fprint_stats(f, "TRAINER_PARTY_EVS", pokemon->evs); + fprintf(f, ",\n"); + } + + if (pokemon->ivs_line) + { + fprintf(f, "#line %d\n", pokemon->ivs_line); + fprintf(f, " .iv = "); + fprint_stats(f, "TRAINER_PARTY_IVS", pokemon->ivs); + fprintf(f, ",\n"); + } + + if (pokemon->ability_line) + { + fprintf(f, "#line %d\n", pokemon->ability_line); + fprintf(f, " .ability = "); + fprint_constant(f, "ABILITY", pokemon->ability); + fprintf(f, ",\n"); + } + + if (pokemon->level_line) + { + fprintf(f, "#line %d\n", pokemon->level_line); + fprintf(f, " .lvl = %d,\n", pokemon->level); + } + + if (pokemon->ball_line) + { + fprintf(f, "#line %d\n", pokemon->ball_line); + fprintf(f, " .ball = "); + fprint_constant(f, "ITEM", pokemon->ball); + fprintf(f, ",\n"); + } + + if (pokemon->friendship_line) + { + fprintf(f, "#line %d\n", pokemon->friendship_line); + fprintf(f, " .friendship = %d,\n", pokemon->friendship); + } + + if (pokemon->nature_line) + { + fprintf(f, "#line %d\n", pokemon->nature_line); + fprintf(f, " .nature = "); + fprint_constant(f, "NATURE", pokemon->nature); + fprintf(f, ",\n"); + } + else + { + fprintf(f, " .nature = NATURE_HARDY,\n"); + } + + if (pokemon->shiny_line) + { + fprintf(f, "#line %d\n", pokemon->shiny_line); + fprintf(f, " .isShiny = "); + fprint_bool(f, pokemon->shiny); + fprintf(f, ",\n"); + } + + if (pokemon->dynamax_level_line) + { + fprintf(f, "#line %d\n", pokemon->dynamax_level_line); + fprintf(f, " .dynamaxLevel = %d,\n", pokemon->dynamax_level); + } + else + { + fprintf(f, " .dynamaxLevel = MAX_DYNAMAX_LEVEL,\n"); + } + + if (pokemon->gigantamax_factor_line) + { + fprintf(f, "#line %d\n", pokemon->gigantamax_factor_line); + fprintf(f, " .gigantamaxFactor = "); + fprint_bool(f, pokemon->gigantamax_factor); + fprintf(f, ",\n"); + } + + if (pokemon->tera_type_line) + { + fprintf(f, "#line %d\n", pokemon->tera_type_line); + fprintf(f, " .teraType = "); + fprint_constant(f, "TYPE", pokemon->tera_type); + fprintf(f, ",\n"); + } + + if (pokemon->moves_n > 0) + { + fprintf(f, " .moves = {\n"); + fprintf(f, "#line %d\n", pokemon->move1_line); + for (int k = 0; k < pokemon->moves_n; k++) + { + fprintf(f, " "); + fprint_constant(f, "MOVE", pokemon->moves[k]); + fprintf(f, ",\n"); + } + fprintf(f, " },\n"); + } + + fprintf(f, " },\n"); + } + fprintf(f, " },\n"); + fprintf(f, " },\n"); + } +} + +static void usage(FILE *file, char *argv0) +{ + fprintf(file, "Usage: %s -o \n", argv0); +} + +int main(int argc, char *argv[]) +{ + int status = 1; + FILE *source_file = NULL; + FILE *output_file = NULL; + unsigned char *source_buffer = NULL; + struct Parsed parsed = { + .default_ivs = { 31, 31, 31, 31, 31, 31 }, + .default_level = 100, + }; + + const char *source_path = NULL; + const char *output_path = NULL; + const char *real_source_path = NULL; + + int opt; + while ((opt = getopt(argc, argv, "i:o:")) != -1) + { + switch (opt) + { + case 'i': + real_source_path = optarg; + break; + case 'o': + output_path = optarg; + break; + default: + fprintf(stderr, "unknown option '%c'\n", opt); + usage(stderr, argv[0]); + goto exit; + } + } + + if (!output_path) + { + usage(stderr, argv[0]); + goto exit; + } + + if (optind != argc - 1) + { + usage(stderr, argv[0]); + goto exit; + } + source_path = argv[optind++]; + + int source_buffer_n; + if (strcmp(source_path, "-") == 0) + { + source_file = stdin; + source_path = ""; + + int source_buffer_c = 4096; + source_buffer_n = 0; + for (;;) + { + if (!(source_buffer = realloc(source_buffer, source_buffer_c))) + { + fprintf(stderr, "could not allocate %d bytes\n", source_buffer_c); + goto exit; + } + + source_buffer_n += fread(&source_buffer[source_buffer_n], 1, source_buffer_c - source_buffer_n, source_file); + if (source_buffer_n < source_buffer_c) + break; + + source_buffer_c += source_buffer_n / 2; // 1.5x growth rate. + } + } + else + { + source_file = fopen(source_path, "r"); + if (source_file == NULL) + { + fprintf(stderr, "could not open '%s' for reading\n", source_path); + goto exit; + } + + fseek(source_file, 0, SEEK_END); + long source_buffer_n_ = ftell(source_file); + if (source_buffer_n_ > INT_MAX) + { + fprintf(stderr, "could not read '%s': too big\n", source_path); + goto exit; + } + + source_buffer_n = source_buffer_n_; + + if (!(source_buffer = malloc(source_buffer_n))) + { + fprintf(stderr, "could not allocate %d bytes\n", source_buffer_n); + goto exit; + } + rewind(source_file); + if (fread(source_buffer, 1, source_buffer_n, source_file) < source_buffer_n) + { + fprintf(stderr, "could not read '%s'\n", source_path); + goto exit; + } + } + + struct Source source = { + .path = real_source_path ? real_source_path : source_path, + .buffer = source_buffer, + .buffer_n = source_buffer_n, + }; + struct Parser parser = { + .source = &source, + .location = { .line = 1, .column = 1 }, + .offset = 0, + }; + parse(&parser, &parsed); + if (parser.fatal_error) + { + goto exit; + } + + if (strcmp(output_path, "-") == 0) + { + source_file = stdout; + output_path = ""; + } + else + { + output_file = fopen(output_path, "w"); + if (output_file == NULL) + { + fprintf(stderr, "could not open '%s' for writing\n", output_path); + goto exit; + } + } + fprint_trainers(output_path, output_file, &parsed); + + status = 0; + +exit: + if (output_file) fclose(output_file); + if (parsed.trainers) free(parsed.trainers); + if (source_buffer) free(source_buffer); + if (source_file) fclose(source_file); + return status; +}